fix(guile): preserve gnutls init in final static guile wrapper

This commit is contained in:
vxtls 2026-03-08 22:43:54 -04:00
parent 66a66651b8
commit 6b8aa73507
8 changed files with 104 additions and 6 deletions

View file

@ -40,6 +40,7 @@ src_configure() {
src_compile() {
local pkg_config_path guile_cflags guile_static_libs avahi_cflags avahi_static_libs
local gnutls_static_libs guile_gnutls_static_lib
pkg_config_path="${LIBDIR}/pkgconfig:${PREFIX}/lib/pkgconfig:${PREFIX}/share/pkgconfig"
guile_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --cflags guile-3.0)"
@ -49,17 +50,23 @@ src_compile() {
/usr/bin/pkg-config --cflags avahi-client)"
avahi_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --static --libs avahi-client)"
gnutls_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --static --libs gnutls)"
guile_gnutls_static_lib="${LIBDIR}/libguile-gnutls-static.a"
CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \
GUILE_CFLAGS="${guile_cflags}" \
GUILE_LDFLAGS="${guile_static_libs}" \
AVAHI_CFLAGS="${avahi_cflags}" \
AVAHI_LIBS="${avahi_static_libs}" \
GNUTLS_LIBS="${gnutls_static_libs}" \
GUILE_GNUTLS_STATIC_LIB="${guile_gnutls_static_lib}" \
default_src_compile
}
src_install() {
local pkg_config_path guile_cflags guile_static_libs avahi_cflags avahi_static_libs
local gnutls_static_libs guile_gnutls_static_lib
pkg_config_path="${LIBDIR}/pkgconfig:${PREFIX}/lib/pkgconfig:${PREFIX}/share/pkgconfig"
guile_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --cflags guile-3.0)"
@ -69,12 +76,17 @@ src_install() {
/usr/bin/pkg-config --cflags avahi-client)"
avahi_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --static --libs avahi-client)"
gnutls_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \
/usr/bin/pkg-config --static --libs gnutls)"
guile_gnutls_static_lib="${LIBDIR}/libguile-gnutls-static.a"
CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \
GUILE_CFLAGS="${guile_cflags}" \
GUILE_LDFLAGS="${guile_static_libs}" \
AVAHI_CFLAGS="${avahi_cflags}" \
AVAHI_LIBS="${avahi_static_libs}" \
GNUTLS_LIBS="${gnutls_static_libs}" \
GUILE_GNUTLS_STATIC_LIB="${guile_gnutls_static_lib}" \
default_src_install
}
@ -98,5 +110,9 @@ src_postprocess() {
GUILE_LOAD_COMPILED_PATH="${guile_site_ccache}:${guile_core_ccache}" \
GUILE_SYSTEM_PATH="${guile_site_path}:${guile_core_site}" \
GUILE_SYSTEM_COMPILED_PATH="${guile_site_ccache}:${guile_core_ccache}" \
"${DESTDIR}${PREFIX}/bin/guile" -c '(use-modules (avahi) (avahi client)) (display "avahi-module-ok\n")'
"${DESTDIR}${PREFIX}/bin/guile" -c '
(use-modules (avahi) (avahi client) (gnutls))
(unless (session? (make-session connection-end/client))
(error "gnutls session init failed"))
(display "avahi+gnutls-modules-ok\n")'
}

View file

@ -21,7 +21,7 @@ diff -urN guile-avahi-0.4.1/Makefile.am guile-avahi-0.4.1/Makefile.am
nobase_guileextension_LTLIBRARIES = guile-avahi-v-0.la
# Use '-module' to build a "dlopenable module", in Libtool terms.
@@ -72,11 +78,28 @@
@@ -72,11 +78,29 @@
src/utils.c src/errors.c src/watch.c \
src/common.c src/client.c \
src/publish.c src/lookup.c
@ -46,7 +46,8 @@ diff -urN guile-avahi-0.4.1/Makefile.am guile-avahi-0.4.1/Makefile.am
+guile_CPPFLAGS = $(AM_CPPFLAGS)
+guile_CFLAGS = $(guile_avahi_common_cflags)
+guile_LDFLAGS = -static
+guile_LDADD = libguile-avahi-static.a $(GUILE_LDFLAGS) $(AVAHI_LIBS) $(LIBS)
+guile_LDADD = libguile-avahi-static.a $(GUILE_GNUTLS_STATIC_LIB) \
+ $(GUILE_LDFLAGS) $(AVAHI_LIBS) $(GNUTLS_LIBS) $(LIBS)
+endif
+
AM_CFLAGS = $(GCC_CFLAGS)
@ -141,9 +142,10 @@ diff -urN guile-avahi-0.4.1/modules/avahi/client.scm guile-avahi-0.4.1/modules/a
diff -urN guile-avahi-0.4.1/src/guile-static-main.c guile-avahi-0.4.1/src/guile-static-main.c
--- guile-avahi-0.4.1/src/guile-static-main.c 1969-12-31 19:00:00
+++ guile-avahi-0.4.1/src/guile-static-main.c 2026-03-08 10:22:35
@@ -0,0 +1,24 @@
@@ -0,0 +1,26 @@
+#include <libguile.h>
+
+void scm_init_gnutls(void);
+void scm_avahi_common_init(void);
+void scm_avahi_client_init(void);
+void scm_avahi_lookup_init(void);
@ -153,6 +155,7 @@ diff -urN guile-avahi-0.4.1/src/guile-static-main.c guile-avahi-0.4.1/src/guile-
+inner_main(void *closure, int argc, char **argv)
+{
+ (void) closure;
+ scm_init_gnutls();
+ scm_avahi_common_init();
+ scm_avahi_client_init();
+ scm_avahi_lookup_init();