fix(guile-bootstrap): fall back to compat locale API on musl

This commit is contained in:
vxtls 2026-03-29 09:44:51 -04:00
parent 369477a22c
commit b28f1eb4e0
2 changed files with 43 additions and 0 deletions

View file

@ -5,6 +5,8 @@ SEED_PREFIX="/bootstrap-seeds/guile-2.0.9"
src_prepare() {
default
AUTOPOINT=true autoreconf -fi
# Match Guix's static bootstrap Guile approach: force the final `guile`
# executable to be linked through libtool with -all-static.
sed -i \

View file

@ -0,0 +1,41 @@
diff --git a/configure.ac b/configure.ac
index 27f1463..9b16da7 100644
--- guile-2.0.9/configure.ac
+++ guile-2.0.9/configure.ac
@@ -741,7 +741,9 @@ 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, strtol_l, strtod_l, nl_langinfo_l, toupper_l, tolower_l,
+# newlocale - GNU/POSIX locale APIs used together by libguile/i18n.c;
+# if some are missing, Guile must fall back to the compatibility path
# fork - unavailable on Windows
# utimensat - posix.1-2008
# sched_getaffinity, sched_setaffinity - GNU extensions (glibc)
@@ -756,7 +758,8 @@ AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid \
strptime symlink sync sysconf tcgetpgrp tcsetpgrp uname waitpid \
strdup system usleep atexit on_exit chown link fcntl ttyname getpwent \
getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp \
- index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron \
+ index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron \
+ nl_langinfo_l strtod_l strtol_l tolower_l toupper_l \
strcoll strcoll_l newlocale utimensat sched_getaffinity \
sched_setaffinity sendfile])
diff --git a/libguile/i18n.c b/libguile/i18n.c
index 09524e6..8b9534a 100644
--- guile-2.0.9/libguile/i18n.c
+++ guile-2.0.9/libguile/i18n.c
@@ -40,7 +40,10 @@
#include <unicase.h>
#include <unistr.h>
-#if (defined HAVE_NEWLOCALE) && (defined HAVE_STRCOLL_L)
+#if defined HAVE_NEWLOCALE && defined HAVE_NL_LANGINFO_L \
+ && defined HAVE_STRCOLL_L && defined HAVE_STRTOD_L \
+ && defined HAVE_STRTOL_L && defined HAVE_TOLOWER_L \
+ && defined HAVE_TOUPPER_L
/* The GNU thread-aware locale API is documented in ``Thread-Aware Locale
Model, a Proposal'', by Ulrich Drepper: