[Buildroot] [PATCH v4 4/4] guile: new package

Pedro Aguilar paguilar at paguilar.org
Thu Nov 20 23:02:12 UTC 2014


Hi Yann,

On 18/11/2014 22:18, Yann E. MORIN wrote:
[--SNIP--]
>> diff --git a/package/guile/Config.in b/package/guile/Config.in
>> new file mode 100644
>> index 0000000..85671e0
>> --- /dev/null
>> +++ b/package/guile/Config.in
>> @@ -0,0 +1,15 @@
>> +config BR2_PACKAGE_GUILE
>> +	bool "guile"
>> +	depends on BR2_TOOLCHAIN_HAS_THREADS
>> +	select BR2_PACKAGE_LIBUNISTRING
>> +	select BR2_PACKAGE_LIBFFI
>> +	select BR2_PACKAGE_GMP
>> +	select BR2_PACKAGE_BDWGC
>
> Since you select bdwgc, you must also inherot from its dependencies:
>
>      depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # bdwgc

Ok, I'll add it below "depends on BR2_TOOLCHAIN_HAS_THREADS"

[--SNIP--]
>> diff --git a/package/guile/guile-01-fix_arm_endianness.patch b/package/guile/guile-01-fix_arm_endianness.patch
>> new file mode 100644
>> index 0000000..a30a241
>> --- /dev/null
>> +++ b/package/guile/guile-01-fix_arm_endianness.patch
>> @@ -0,0 +1,25 @@
>> +Fix support for ARM endianness, otherwise it gives the error
>> +"unknown CPU endianness"
>> +
>> +Signed-off-by: Pedro Aguilar <paguilar at paguilar.org>
>
> Did you try to send that patch upstream?

They already fixed it in git, but there isn't any stable release with 
this fix.

>> +diff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm
>> +--- guile-2.0.11.orig/module/system/base/target.scm	2013-02-28 09:42:45.000000000 +0100
>> ++++ guile-2.0.11/module/system/base/target.scm	2014-11-03 23:05:01.789338997 +0100
>> +@@ -70,7 +70,15 @@
>> +             ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu"
>> +                            "mips" "mips64"))
>> +              (endianness big))
>> +-            ((string-match "^arm.*el" cpu)
>> ++           ((string-match "^arm.*el" cpu)
>
> Nit-picking: that replacement line is not properly aligned.

Ok, fixed.

> [--SNIP--]
>> diff --git a/package/guile/guile-02-calculate-csqrt_manually.patch b/package/guile/guile-02-calculate-csqrt_manually.patch
>> new file mode 100644
>> index 0000000..98bb0b6
>> --- /dev/null
>> +++ b/package/guile/guile-02-calculate-csqrt_manually.patch
>> @@ -0,0 +1,16 @@
>> +Avoid using scm_from_complex_double(csqrt()) when building with uclibc.
>> +
>> +Signed-off-by: Pedro Aguilar <paguilar at paguilar.org>
>> +
>> +diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
>> +--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
>> ++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
>> +@@ -862,7 +862,7 @@
>> + }]])],
>> +     [guile_cv_use_csqrt=yes],
>> +     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
>> +-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
>> ++    [guile_cv_use_csqrt="no (cross-compiling)"])])
>
> Not OK: it is possible to be cross-compiling with glibc, in which
> case the result should be 'yes'.

Using csqrt() is OK only for some versions of glib. If we use the 
fallback code, we're sure that it will work properly even with recent 
versions of glib.

>> +   case $guile_cv_use_csqrt in
>> +     yes*)
>> +       AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])
>> diff --git a/package/guile/guile-03-remove_unused_funcs.patch b/package/guile/guile-03-remove_unused_funcs.patch
>> new file mode 100644
>> index 0000000..3d70ee9
>> --- /dev/null
>> +++ b/package/guile/guile-03-remove_unused_funcs.patch
>> @@ -0,0 +1,36 @@
>> +Remove unused static inline functions str_upcase_l() and
>> +str_downcase_l() that cause the compilation error:
>> +'dereferencing pointer to incomplete type'.
>> +
>> +Signed-off-by: Pedro Aguilar <paguilar at paguilar.org>
>
> Indeed, those functions are never called. WTF... :-/

I'll send a patch for this :)

> [--SNIP--]
>> diff --git a/package/guile/guile.mk b/package/guile/guile.mk
>> new file mode 100644
>> index 0000000..e0d7e80
>> --- /dev/null
>> +++ b/package/guile/guile.mk
>> @@ -0,0 +1,25 @@
>> +################################################################################
>> +#
>> +# guile
>> +#
>> +################################################################################
>> +
>> +GUILE_VERSION = 2.0.11
>> +GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz
>> +GUILE_SITE = $(BR2_GNU_MIRROR)/guile
>> +GUILE_INSTALL_STAGING = YES
>> +GUILE_LICENSE = LGPLv3+
>> +GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER
>> +GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc
>> +
>> +HOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-libtool
>> +
>> +# The HAVE_GC* CFLAGS specify that we wil use internal callbacks instead
>> +# of the ones provided by bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies
>> +# that we won't use bdwgc's GC_finalizer_notifier callback.
>> +# Trying to use these specific bdwgc's callbacks breaks guile's building.
>> +GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/usr/bin/guile \
>> +	CFLAGS="$(TARGET_CFLAGS) -DHAVE_GC_SET_FINALIZER_NOTIFIER -DHAVE_GC_GET_HEAP_USAGE_SAFE -DHAVE_GC_GET_FREE_SPACE_DIVISOR -DHAVE_GC_SET_FINALIZE_ON_DEMAND"
>
> This line is overly long. What about (with tabs, not spaces):
>
>      GUILE_CFLAGS = \
>          -DHAVE_GC_SET_FINALIZER_NOTIFIER \
>          -DHAVE_GC_GET_HEAP_USAGE_SAFE \
>          -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
>          -DHAVE_GC_SET_FINALIZE_ON_DEMAND
>
>      GUILE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)"

Fixed it. I'll send the patch shortly.

Thanks!

Regards.
-- 
Pedro Aguilar
http://paguilar.org


More information about the buildroot mailing list