aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2016-01-11 09:27:17 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-22 23:42:53 +0000
commit31ee3460c3a0578ed36f3f5a940617ccb873c721 (patch)
treeaef5782945162bf59e9e1f474ca4b8087d153595
parent8fea65047519a4d84183571e09d3f3f559d9e164 (diff)
downloadopenembedded-core-contrib-31ee3460c3a0578ed36f3f5a940617ccb873c721.tar.gz
openembedded-core-contrib-31ee3460c3a0578ed36f3f5a940617ccb873c721.tar.bz2
openembedded-core-contrib-31ee3460c3a0578ed36f3f5a940617ccb873c721.zip
guile: Fix build with musl
strol_l is not available on musl delete charset.alias as well its not needed Use internal gc function on musl We get errors on certain functions not being available in boeheme gc when built with musl. Therefore use the internal versions e.g. Undefined gc_set_finalizer_notifier Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch56
-rw-r--r--meta/recipes-devtools/guile/guile_2.0.11.bb12
2 files changed, 68 insertions, 0 deletions
diff --git a/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch b/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch
new file mode 100644
index 0000000000..24f073f9fb
--- /dev/null
+++ b/meta/recipes-devtools/guile/files/0001-libguile-Check-for-strtol_l-during-configure.patch
@@ -0,0 +1,56 @@
+From 814d6fb6c1f4a544c8fd37f5a390ba020c2d8c85 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 10 Jan 2016 22:28:17 +0000
+Subject: [PATCH] libguile: Check for strtol_l during configure
+
+strtol_l is a gnu extention which may not be available on other linux
+libc implementations e.g. musl. Therefore check for this funciton and
+conditionalize the use of it.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ configure.ac | 5 +++--
+ libguile/i18n.c | 2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3969929..f8a6a1a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -752,7 +752,8 @@ AC_CHECK_HEADERS([assert.h crt_externs.h])
+ # truncate - not in mingw
+ # isblank - available as a GNU extension or in C99
+ # _NSGetEnviron - Darwin specific
+-# strcoll_l, newlocale - GNU extensions (glibc), also available on Darwin
++# strcoll_l, newlocale, strtol_l - GNU extensions (glibc),
++# also available on Darwin
+ # fork - unavailable on Windows
+ # utimensat - posix.1-2008
+ # sched_getaffinity, sched_setaffinity - GNU extensions (glibc)
+@@ -768,7 +769,7 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid \
+ getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp \
+ index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron \
+ strcoll strcoll_l newlocale utimensat sched_getaffinity \
+- sched_setaffinity sendfile])
++ sched_setaffinity sendfile strtol_l])
+
+ AM_CONDITIONAL([BUILD_ICE_9_POPEN],
+ [test "x$enable_posix" = "xyes" && test "x$ac_cv_func_fork" = "xyes"])
+diff --git a/libguile/i18n.c b/libguile/i18n.c
+index 97d44b0..9fb6976 100644
+--- a/libguile/i18n.c
++++ b/libguile/i18n.c
+@@ -1352,7 +1352,7 @@ SCM_DEFINE (scm_locale_string_to_integer, "locale-string->integer",
+
+ if (c_locale != NULL)
+ {
+-#ifdef USE_GNU_LOCALE_API
++#if defined(USE_GNU_LOCALE_API) && defined(HAVE_STRTOL_L)
+ c_result = strtol_l (c_str, &c_endptr, c_base, c_locale);
+ #else
+ RUN_IN_LOCALE_SECTION (c_locale,
+--
+2.7.0
+
diff --git a/meta/recipes-devtools/guile/guile_2.0.11.bb b/meta/recipes-devtools/guile/guile_2.0.11.bb
index 413c81daac..6815e257d9 100644
--- a/meta/recipes-devtools/guile/guile_2.0.11.bb
+++ b/meta/recipes-devtools/guile/guile_2.0.11.bb
@@ -24,6 +24,7 @@ SRC_URI = "${GNU_MIRROR}/guile/guile-${PV}.tar.xz \
file://libguile-Makefile.am-hook.patch \
file://libguile-VM-ASM_MUL-for-ARM-Add-earlyclobber.patch \
file://remove_strcase_l_funcs.patch \
+ file://0001-libguile-Check-for-strtol_l-during-configure.patch \
"
# file://debian/0001-Change-guile-to-guile-X.Y-for-info-pages.patch
@@ -52,6 +53,13 @@ EXTRA_OECONF_append_class-target = " --with-libunistring-prefix=${STAGING_LIBDIR
--with-libgmp-prefix=${STAGING_LIBDIR} \
--with-libltdl-prefix=${STAGING_LIBDIR}"
EXTRA_OECONF_append_libc-uclibc = " guile_cv_use_csqrt=no "
+
+CFLAGS_append_libc-musl = " -DHAVE_GC_SET_FINALIZER_NOTIFIER \
+ -DHAVE_GC_GET_HEAP_USAGE_SAFE \
+ -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
+ -DHAVE_GC_SET_FINALIZE_ON_DEMAND \
+ "
+
do_configure_prepend() {
mkdir -p po
}
@@ -77,6 +85,10 @@ do_install_append_class-target() {
sed -i -e 's:${STAGING_DIR_TARGET}::g' ${D}${libdir}/pkgconfig/guile-2.0.pc
}
+do_install_append_libc-musl() {
+ rm -f ${D}${libdir}/charset.alias
+}
+
SYSROOT_PREPROCESS_FUNCS = "guile_cross_config"
guile_cross_config() {