[Buildroot] [PATCH v4 4/4] guile: new package
Yann E. MORIN
yann.morin.1998 at free.fr
Tue Nov 18 21:18:19 UTC 2014
Pedro, All,
On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:
> Guile is an interpreter and compiler for the Scheme programming
> language, a clean and elegant dialect of Lisp.
>
> Signed-off-by: Pedro Aguilar <paguilar at paguilar.org>
[--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
[--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?
> +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.
[--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'.
> + 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... :-/
[--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)"
Regards,
Yann E. MORIN.
> +$(eval $(autotools-package))
> +$(eval $(host-autotools-package))
> --
> 1.9.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list