package/guile: New package
v5 cover package/guile: New package
These are the full series needed for adding guile.
It contains all the suggestions made in the previous patch versions.
Pedro Aguilar (4):
libatomic_ops: Add host-libatomic_ops
bdwgc: Add new package
libunistring: host-libunistring is needed by guile
guile: Add new package
package/Config.in | 2 ++ package/bdwgc/Config.in | 10 ++++++ package/bdwgc/bdwgc.mk | 20 ++++++++++++ package/guile/Config.in | 17 ++++++++++ package/guile/guile-01-fix_arm_endianness.patch | 25 +++++++++++++++ .../guile/guile-02-calculate-csqrt_manually.patch | 16 ++++++++++ package/guile/guile-03-remove_unused_funcs.patch | 36 ++++++++++++++++++++++ package/guile/guile.mk | 31 +++++++++++++++++++ package/libatomic_ops/libatomic_ops.mk | 1 + package/libunistring/libunistring.mk | 1 + 10 files changed, 159 insertions(+) create mode 100644 package/bdwgc/Config.in create mode 100644 package/bdwgc/bdwgc.mk create mode 100644 package/guile/Config.in create mode 100644 package/guile/guile-01-fix_arm_endianness.patch create mode 100644 package/guile/guile-02-calculate-csqrt_manually.patch create mode 100644 package/guile/guile-03-remove_unused_funcs.patch create mode 100644 package/guile/guile.mk
Signature · 1 line
1.9.1
PATCH v5 1/4 libatomic_ops: Add host-libatomic_ops
The host-libatomic_ops is needed by host-bdwgc that is needed in turn by guile.
---
Changes v1 -> v2:
- Add host-libatomic_ops (suggested by Yann Morin)
--- package/libatomic_ops/libatomic_ops.mk | 1 + 1 file changed, 1 insertion(+)
package/libatomic_ops/libatomic_ops.mk +1 -0
@@ -20,3 +20,4 @@ LIBATOMIC_OPS_LICENSE_FILES = doc/LICENSING.txt COPYING LIBATOMIC_OPS_INSTALL_STAGING = YES $(eval $(autotools-package)) +$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
Thomas Petazzoni
AppliedPATCH v5 1/4 libatomic_ops: Add host-libatomic_ops
Dear Pedro Aguilar,
Quoted 4 lines · Pedro Aguilar
The host-libatomic_ops is needed by host-bdwgc that is needed in turn by guile.
Signed-off-by Pedro Aguilar <[email protected]>
Applied to next, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 2/4 bdwgc: Add new package
In reply to Pedro Aguilarbdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.
---
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)
Changes v2 -> v3:
- bdwgc belongs to Libraries/Other
- Fix license file name
- Comment options properly
- Fix a formatting issue
(All changes suggested by Arnout Vandecappelle)
Changes v1 -> v2:
- Add external default dependency on libatomic_ops
- Fix several formatting issues
(All changes suggested by Yann Morin)
--- package/Config.in | 1 + package/bdwgc/Config.in | 10 ++++++++++ package/bdwgc/bdwgc.mk | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 package/bdwgc/Config.in create mode 100644 package/bdwgc/bdwgc.mk
package/Config.in +1 -0
@@ -848,6 +848,7 @@ menu "Other" source "package/apr-util/Config.in" source "package/argp-standalone/Config.in" source "package/armadillo/Config.in" + source "package/bdwgc/Config.in" source "package/boost/Config.in" source "package/clapack/Config.in" source "package/classpath/Config.in"
package/bdwgc/Config.in new file +10 -0
@@ -0,0 +1,10 @@ +config BR2_PACKAGE_BDWGC + bool "bdwgc" + depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + The Boehm-Demers-Weiser conservative garbage collector can + be used as a garbage collecting replacement for C 'malloc' + or C++ 'new'. + + http://www.hboehm.info/gc/
package/bdwgc/bdwgc.mk new file +20 -0
@@ -0,0 +1,20 @@ +################################################################################ +# +# bdwgc +# +################################################################################ + +BDWGC_VERSION = 7.2f +BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz +BDWGC_SITE = http://www.hboehm.info/gc/gc_source +BDWGC_INSTALL_STAGING = YES +BDWGC_LICENSE = bdwgc license +BDWGC_LICENSE_FILES = README.QUICK + +# Patching libtool breaks build +BDWGC_LIBTOOL_PATCH = NO + +BDWGC_DEPENDENCIES = host-bdwgc libatomic_ops + +$(eval $(autotools-package)) +$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
Thomas Petazzoni
AppliedPATCH v5 2/4 bdwgc: Add new package
Dear Pedro Aguilar,
Quoted 5 lines · Pedro Aguilar
bdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.
Signed-off-by Pedro Aguilar <[email protected]>
Applied to next, but after doing quite a number of changes:
[Thomas:
- drop the dependency on host-bdwgc, since it is not needed. Only host-guile will need host-bdwgc, but bdwgc itself doesn't need host-bdwgc.
- add dependency on host-pkgconf, needed to detect libatomic_ops
- add --with-libatomic-ops=yes to force bdwgc to use the system libatomic_ops, and not the internal one.
- instead of using BDWGC_LIBTOOL_PATCH = NO (needed to avoid patching libtool because the libtool version used by bdwgc does not have a corresponding patch in Buildroot), use BDWGC_AUTORECONF = YES, which generates a proper libtool (without this, some -L/usr/lib flags are added by libtool).]
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 3/4 libunistring: host-libunistring is needed by guile
In reply to Pedro Aguilar---
Changes v1 -> v2:
- Add host-libunistring (suggested by Yann Morin)
--- package/libunistring/libunistring.mk | 1 + 1 file changed, 1 insertion(+)
package/libunistring/libunistring.mk +1 -0
@@ -17,3 +17,4 @@ LIBUNISTRING_CONF_OPTS += --disable-threads endif $(eval $(autotools-package)) +$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
Thomas Petazzoni
AppliedPATCH v5 3/4 libunistring: host-libunistring is needed by guile
Dear Pedro Aguilar,
Quoted 15 lines · Pedro Aguilar
Signed-off-by Pedro Aguilar <[email protected]>---
Changes v1 -> v2:
- Add host-libunistring (suggested by Yann Morin)--- package/libunistring/libunistring.mk | 1 + 1 file changed, 1 insertion(+)package/libunistring/libunistring.mk +0
-0
package/libunistring/libunistring.mk LIBUNISTRING_CONF_OPTS += --disable-threads · line 20
Quoted 4 lines
package/libunistring/libunistring.mk +1
-0@@ -17,3 +17,4 @@ LIBUNISTRING_CONF_OPTS += --disable-threads endif $(eval $(autotools-package)) +$(eval $(host-autotools-package))
Applied to next. Note that I had to add another commit, which adds a dependency of libunistring on wchar: libunistring uses functions like wctomb(), which are only available on wchar capable toolchains.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 4/4 guile: Add new package
In reply to Pedro AguilarGuile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.
The patch guile-01-fix_arm_endianness.patch is based on guile's git commit ^ffd3e55cfd
---
Changes v4 -> v5:
- Add depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # bdwgc
- Break long line GUILE_CFLAGS to improve readability (All changes suggested by Yann Morin)
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)
Changes v2 -> v3:
- Improve patches
- Remove unused dependencies
- Fix patches formatting
(All changes suggested by Thomas Petazzoni)
Changes v1 -> v2:
- Add all needed dependencies
- Explain GUILE_CONF_ENV arguments
- Remove PKG_CONFIG_HOST_BINARY
- Fix patches formatting
- Add thread comments in Config.in
(All changes suggested by Yann Morin)
--- package/Config.in | 1 + package/guile/Config.in | 17 ++++++++++ package/guile/guile-01-fix_arm_endianness.patch | 25 +++++++++++++++ .../guile/guile-02-calculate-csqrt_manually.patch | 16 ++++++++++ package/guile/guile-03-remove_unused_funcs.patch | 36 ++++++++++++++++++++++ package/guile/guile.mk | 31 +++++++++++++++++++ 6 files changed, 126 insertions(+) create mode 100644 package/guile/Config.in create mode 100644 package/guile/guile-01-fix_arm_endianness.patch create mode 100644 package/guile/guile-02-calculate-csqrt_manually.patch create mode 100644 package/guile/guile-03-remove_unused_funcs.patch create mode 100644 package/guile/guile.mk
package/Config.in +1 -0
@@ -391,6 +391,7 @@ endmenu menu "Interpreter languages and scripting" source "package/enscript/Config.in" source "package/erlang/Config.in" + source "package/guile/Config.in" source "package/haserl/Config.in" source "package/jamvm/Config.in" source "package/jimtcl/Config.in"
package/guile/Config.in new file +17 -0
@@ -0,0 +1,17 @@ +config BR2_PACKAGE_GUILE + bool "guile" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # bdwgc + select BR2_PACKAGE_LIBUNISTRING + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_GMP + select BR2_PACKAGE_BDWGC + help + Guile is an interpreter and compiler for the Scheme + programming language, a clean and elegant dialect of Lisp. + + http://www.gnu.org/software/guile + +comment "guile needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS +
package/guile/guile-01-fix_arm_endianness.patch new file +25 -0
@@ -0,0 +1,25 @@ +Fix support for ARM endianness, otherwise it gives the error +"unknown CPU endianness" + +Signed-off-by: Pedro Aguilar <[email protected]> + +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) ++ (endianness little)) ++ ((string-match "^arm.*eb" cpu) ++ (endianness big)) ++ ((string-prefix? "arm" cpu) ;ARMs are LE by default ++ (endianness little)) ++ ((string-match "^aarch64.*be" cpu) ++ (endianness big)) ++ ((string=? "aarch64" cpu) + (endianness little)) + (else + (error "unknown CPU endianness" cpu)))))
package/guile/guile-02-calculate-csqrt_manually.patch new file +16 -0
@@ -0,0 +1,16 @@ +Avoid using scm_from_complex_double(csqrt()) when building with uclibc. + +Signed-off-by: Pedro Aguilar <[email protected]> + +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)"])]) + case $guile_cv_use_csqrt in + yes*) + AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])
package/guile/guile-03-remove_unused_funcs.patch new file +36 -0
@@ -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 <[email protected]> + +diff -Nau guile-2.0.11.orig/libguile/i18n.c guile-2.0.11/libguile/i18n.c +--- guile-2.0.11.orig/libguile/i18n.c 2014-01-21 22:25:11.000000000 +0100 ++++ guile-2.0.11/libguile/i18n.c 2014-11-04 23:18:52.675435613 +0100 +@@ -851,26 +851,6 @@ + *dst = '\0'; + } + +-#ifdef USE_GNU_LOCALE_API +-static inline void +-str_upcase_l (register char *dst, register const char *src, +- scm_t_locale locale) +-{ +- for (; *src != '\0'; src++, dst++) +- *dst = toupper_l (*src, locale); +- *dst = '\0'; +-} +- +-static inline void +-str_downcase_l (register char *dst, register const char *src, +- scm_t_locale locale) +-{ +- for (; *src != '\0'; src++, dst++) +- *dst = tolower_l (*src, locale); +- *dst = '\0'; +-} +-#endif +- + + SCM_DEFINE (scm_string_locale_lt, "string-locale<?", 2, 1, 0, + (SCM s1, SCM s2, SCM locale),
package/guile/guile.mk new file +31 -0
@@ -0,0 +1,31 @@ +################################################################################ +# +# 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_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 += GUILE_FOR_BUILD=$(HOST_DIR)/usr/bin/guile \ + CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
Thomas Petazzoni
AppliedPATCH v5 4/4 guile: Add new package
Dear Pedro Aguilar,
Quoted 7 lines · Pedro Aguilar
Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.
The patch guile-01-fix_arm_endianness.patch is based on guile's git commit ^ffd3e55cfd
Signed-off-by Pedro Aguilar <[email protected]>
Applied to next, with a few changes:
[Thomas:
- rewrap comments and help text.
- add missing host-gettext dependency, since gettext.m4 is needed for the package to autoreconf.
- add missing host-pkgconf dependency.
- add dependency on wchar, inherited from libunistring.]
Don't hesitate to test the next branch, and verify that guile is building fine for you.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 4/4 guile: Add new package
Hi Thomas,
Thanks for helping me to fix and apply the patches!
I confirm you that guile is building and running fine for me, I used an Atmel SAMA5 processor.
Btw, do you use any script/tool for catching some of the missed things such as adding the wchar dependency to libunistring because it uses functions like wctomb()?
I would like to detect and fix these things before sending a patch so you don't have to check it again.
Regards,
Quoted 27 lines · Thomas Petazzoni
Dear Pedro Aguilar,
Quoted 7 lines · Pedro Aguilar
Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.
The patch guile-01-fix_arm_endianness.patch is based on guile's git commit ^ffd3e55cfd
Signed-off-by Pedro Aguilar <[email protected]>Applied to next, with a few changes:
[Thomas:
- rewrap comments and help text.
- add missing host-gettext dependency, since gettext.m4 is needed for the package to autoreconf.
- add missing host-pkgconf dependency.
- add dependency on wchar, inherited from libunistring.]Don't hesitate to test the next branch, and verify that guile is building fine for you.
Thanks!
Thomas
Signature · 2 lines
Pedro Aguilar http://paguilar.org
PATCH v5 4/4 guile: Add new package
Dear Pedro Aguilar,
Quoted 1 line · Pedro Aguilar
Thanks for helping me to fix and apply the patches!
You're welcome! Contributions are definitely welcome, and for a first contribution, packaging guile was not the easiest task to tackle!
Quoted 2 lines
I confirm you that guile is building and running fine for me, I used an Atmel SAMA5 processor.
Thanks for testing again!
Quoted 6 lines
Btw, do you use any script/tool for catching some of the missed things such as adding the wchar dependency to libunistring because it uses functions like
wctomb()?I would like to detect and fix these things before sending a patch so you don't have to check it again.
I simply use the toolchain configurations available at
http://autobuild.buildroot.org/toolchains/configs/, which offer a variety of configurations. Not all possible situations, but a few of them, which allow to find certain problematic cases.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v5 4/4 guile: Add new package
In reply to Pedro AguilarPedro, All,
On 2014-11-30 23:28 +0100, Pedro Aguilar spake thusly:
Quoted 2 lines
I confirm you that guile is building and running fine for me, I used an Atmel SAMA5 processor.
I already noticed at least one build failure with bdwgc:
http://autobuild.buildroot.net/results/529/529b0b6dd47744c13f56e59a4c669a3f5d56530d/
;-p
I have a fix I'll be sending sonish.
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | 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. | '------------------------------^-------^------------------^--------------------'