From 132a43d4a6c83315d9bff9b3af871fc5957d37db Mon Sep 17 00:00:00 2001 From: vxtls <187420201+vxtls@users.noreply.github.com> Date: Wed, 11 Mar 2026 11:17:42 -0400 Subject: [PATCH] fix(guile-gnutls): drop static-only patches and rely on shared bindings --- steps-guix/gnutls-3.8.12/pass1.sh | 4 +- steps-guix/guile-avahi-0.4.1/pass1.sh | 66 +++++++-------- steps-guix/guile-gnutls-v5.0.1/pass1.sh | 32 ++++---- ...uild-target-depends-on-built-sources.patch | 82 ------------------- .../static-init-from-main-program.patch | 55 ------------- steps-guix/guix-1.5.0/pass1.sh | 2 +- steps-guix/improve/guix-daemon-and-pull.sh | 5 ++ 7 files changed, 54 insertions(+), 192 deletions(-) delete mode 100644 steps-guix/guile-gnutls-v5.0.1/patches/build-target-depends-on-built-sources.patch delete mode 100644 steps-guix/guile-gnutls-v5.0.1/patches/static-init-from-main-program.patch diff --git a/steps-guix/gnutls-3.8.12/pass1.sh b/steps-guix/gnutls-3.8.12/pass1.sh index f525f586..8ff0cbef 100644 --- a/steps-guix/gnutls-3.8.12/pass1.sh +++ b/steps-guix/gnutls-3.8.12/pass1.sh @@ -16,8 +16,8 @@ src_configure() { --includedir="${PREFIX}/include" \ --host="${host_triplet}" \ --build="${host_triplet}" \ - --enable-static \ - --disable-shared \ + --enable-shared \ + --disable-static \ --disable-doc \ --disable-tests \ --disable-tools \ diff --git a/steps-guix/guile-avahi-0.4.1/pass1.sh b/steps-guix/guile-avahi-0.4.1/pass1.sh index 076a7a6b..a8ee9fdb 100755 --- a/steps-guix/guile-avahi-0.4.1/pass1.sh +++ b/steps-guix/guile-avahi-0.4.1/pass1.sh @@ -6,18 +6,18 @@ src_prepare() { } src_configure() { - local host_triplet pkg_config_path guile_cflags guile_static_libs - local avahi_cflags avahi_static_libs + local host_triplet pkg_config_path guile_cflags guile_libs + local avahi_cflags avahi_libs host_triplet="$(gcc -dumpmachine)" 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)" - guile_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs guile-3.0)" + guile_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs guile-3.0)" avahi_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ /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)" + avahi_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs avahi-client)" PATH="${PREFIX}/bin:/usr/bin:/bin" \ PKG_CONFIG="/usr/bin/pkg-config" \ @@ -25,68 +25,62 @@ src_configure() { PKG_CONFIG_PATH="${pkg_config_path}" \ LD_LIBRARY_PATH="${LIBDIR}:${PREFIX}/lib:${LD_LIBRARY_PATH}" \ GUILE_CFLAGS="${guile_cflags}" \ - GUILE_LDFLAGS="${guile_static_libs}" \ + GUILE_LDFLAGS="${guile_libs}" \ AVAHI_CFLAGS="${avahi_cflags}" \ - AVAHI_LIBS="${avahi_static_libs}" \ + AVAHI_LIBS="${avahi_libs}" \ ./configure \ --prefix="${PREFIX}" \ --libdir="${LIBDIR}" \ --host="${host_triplet}" \ --build="${host_triplet}" \ - --enable-static \ - --disable-shared \ + --enable-shared \ + --disable-static \ '--with-guilemoduledir=$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)' } src_compile() { - local pkg_config_path guile_cflags guile_static_libs avahi_cflags avahi_static_libs - local gnutls_static_libs guile_gnutls_static_lib + local pkg_config_path guile_cflags guile_libs avahi_cflags avahi_libs gnutls_libs 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)" - guile_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs guile-3.0)" + guile_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs guile-3.0)" avahi_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ /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" + avahi_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs avahi-client)" + gnutls_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs gnutls)" CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \ GUILE_CFLAGS="${guile_cflags}" \ - GUILE_LDFLAGS="${guile_static_libs}" \ + GUILE_LDFLAGS="${guile_libs}" \ AVAHI_CFLAGS="${avahi_cflags}" \ - AVAHI_LIBS="${avahi_static_libs}" \ - GNUTLS_LIBS="${gnutls_static_libs}" \ - GUILE_GNUTLS_STATIC_LIB="${guile_gnutls_static_lib}" \ + AVAHI_LIBS="${avahi_libs}" \ + GNUTLS_LIBS="${gnutls_libs}" \ 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 + local pkg_config_path guile_cflags guile_libs avahi_cflags avahi_libs gnutls_libs 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)" - guile_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs guile-3.0)" + guile_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs guile-3.0)" avahi_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ /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" + avahi_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs avahi-client)" + gnutls_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs gnutls)" CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \ GUILE_CFLAGS="${guile_cflags}" \ - GUILE_LDFLAGS="${guile_static_libs}" \ + GUILE_LDFLAGS="${guile_libs}" \ AVAHI_CFLAGS="${avahi_cflags}" \ - AVAHI_LIBS="${avahi_static_libs}" \ - GNUTLS_LIBS="${gnutls_static_libs}" \ - GUILE_GNUTLS_STATIC_LIB="${guile_gnutls_static_lib}" \ + AVAHI_LIBS="${avahi_libs}" \ + GNUTLS_LIBS="${gnutls_libs}" \ default_src_install } diff --git a/steps-guix/guile-gnutls-v5.0.1/pass1.sh b/steps-guix/guile-gnutls-v5.0.1/pass1.sh index 42d03202..6260934f 100644 --- a/steps-guix/guile-gnutls-v5.0.1/pass1.sh +++ b/steps-guix/guile-gnutls-v5.0.1/pass1.sh @@ -6,15 +6,15 @@ src_prepare() { } src_configure() { - local host_triplet pkg_config_path guile_cflags guile_static_libs gnutls_static_libs + local host_triplet pkg_config_path guile_cflags guile_libs gnutls_libs host_triplet="$(gcc -dumpmachine)" 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)" - guile_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs guile-3.0)" - gnutls_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs gnutls)" + guile_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs guile-3.0)" + gnutls_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs gnutls)" PATH="${PREFIX}/bin:/usr/bin:/bin" \ PKG_CONFIG="/usr/bin/pkg-config" \ @@ -24,38 +24,38 @@ src_configure() { CXXFLAGS="-fPIC" \ LD_LIBRARY_PATH="${LIBDIR}:${PREFIX}/lib:${LD_LIBRARY_PATH}" \ GUILE_CFLAGS="${guile_cflags}" \ - GUILE_LIBS="${guile_static_libs}" \ - GNUTLS_LIBS="${gnutls_static_libs}" \ + GUILE_LIBS="${guile_libs}" \ + GNUTLS_LIBS="${gnutls_libs}" \ ./configure \ --prefix="${PREFIX}" \ --libdir="${LIBDIR}" \ --host="${host_triplet}" \ --build="${host_triplet}" \ - --enable-static \ - --disable-shared \ + --enable-shared \ + --disable-static \ '--with-guile-site-dir=$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)' \ '--with-guile-site-ccache-dir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache' \ '--with-guile-extension-dir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions' } src_compile() { - local pkg_config_path guile_cflags guile_static_libs gnutls_cflags gnutls_static_libs + local pkg_config_path guile_cflags guile_libs gnutls_cflags gnutls_libs 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)" - guile_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs guile-3.0)" + guile_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs guile-3.0)" gnutls_cflags="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ /usr/bin/pkg-config --cflags gnutls)" - gnutls_static_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ - /usr/bin/pkg-config --static --libs gnutls)" + gnutls_libs="$(PKG_CONFIG_LIBDIR="${pkg_config_path}" PKG_CONFIG_PATH="${pkg_config_path}" \ + /usr/bin/pkg-config --libs gnutls)" CPPFLAGS="${guile_cflags} ${gnutls_cflags} ${CPPFLAGS:-}" \ GUILE_CFLAGS="${guile_cflags}" \ - GUILE_LDFLAGS="${guile_static_libs}" \ + GUILE_LDFLAGS="${guile_libs}" \ GNUTLS_CFLAGS="${gnutls_cflags}" \ - GNUTLS_LIBS="${gnutls_static_libs}" \ + GNUTLS_LIBS="${gnutls_libs}" \ default_src_compile } diff --git a/steps-guix/guile-gnutls-v5.0.1/patches/build-target-depends-on-built-sources.patch b/steps-guix/guile-gnutls-v5.0.1/patches/build-target-depends-on-built-sources.patch deleted file mode 100644 index 25515348..00000000 --- a/steps-guix/guile-gnutls-v5.0.1/patches/build-target-depends-on-built-sources.patch +++ /dev/null @@ -1,82 +0,0 @@ ---- guile-gnutls-v5.0.1/guile/src/Makefile.am -+++ guile-gnutls-v5.0.1/guile/src/Makefile.am -@@ -23,7 +23,8 @@ - - EXTRA_DIST = \ - make-enum-map.scm make-smob-types.scm \ -- make-enum-header.scm make-smob-header.scm -+ make-enum-header.scm make-smob-header.scm \ -+ guile-static-main.c - - # Files generated by the (gnutls build ...) modules. - GENERATED_BINDINGS = \ -@@ -35,6 +36,10 @@ - - CLEANFILES = $(BUILT_SOURCES) - -+guile_gnutls_common_cflags = \ -+ $(AM_CFLAGS) $(GNULIB_CFLAGS) $(GUILE_CFLAGS) $(GNUTLS_CFLAGS) -+ -+if ENABLE_SHARED - guileextension_LTLIBRARIES = guile-gnutls-v-2.la - - # Use '-module' to build a "dlopenable module", in Libtool terms. -@@ -43,12 +48,26 @@ - guile_gnutls_v_2_la_LDFLAGS = -module -no-undefined - - guile_gnutls_v_2_la_SOURCES = core.c errors.c utils.c --guile_gnutls_v_2_la_CFLAGS = \ -- $(AM_CFLAGS) $(GNULIB_CFLAGS) $(GUILE_CFLAGS) $(GNUTLS_CFLAGS) -+guile_gnutls_v_2_la_CFLAGS = $(guile_gnutls_common_cflags) -+guile_gnutls_v_2_la_DEPENDENCIES = $(BUILT_SOURCES) - guile_gnutls_v_2_la_LIBADD = \ - $(GNUTLS_LIBS) \ - $(GUILE_LDFLAGS) -+else -+lib_LIBRARIES = libguile-gnutls-static.a -+libguile_gnutls_static_a_SOURCES = core.c errors.c utils.c -+libguile_gnutls_static_a_CPPFLAGS = $(AM_CPPFLAGS) -+libguile_gnutls_static_a_CFLAGS = $(guile_gnutls_common_cflags) -+libguile_gnutls_static_a_DEPENDENCIES = $(BUILT_SOURCES) - -+bin_PROGRAMS = guile -+guile_SOURCES = guile-static-main.c -+guile_CPPFLAGS = $(AM_CPPFLAGS) -+guile_CFLAGS = $(guile_gnutls_common_cflags) -+guile_LDFLAGS = -static -+guile_LDADD = libguile-gnutls-static.a $(GUILE_LDFLAGS) $(GNUTLS_LIBS) -+endif -+ - AM_CPPFLAGS = \ - -I$(top_srcdir)/lib/includes \ - -I$(top_builddir)/lib/includes \ -@@ -102,7 +121,7 @@ - # `$(GUILE_CFLAGS)' may contain a series of `-I' switches so it must be - # included here, even though we'd really want `$(GUILE_CPPFLAGS)'. - snarfcppopts = $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -- $(CFLAGS) $(guile_gnutls_v_2_la_CFLAGS) -+ $(CFLAGS) $(guile_gnutls_common_cflags) - - # Note: we cannot use the portable ".c.x" form, since that leads - # prerequisites to be ignored: ---- /dev/null -+++ guile-gnutls-v5.0.1/guile/src/guile-static-main.c -@@ -0,0 +1,18 @@ -+#include -+ -+void scm_init_gnutls(void); -+ -+static void -+inner_main(void *closure, int argc, char **argv) -+{ -+ (void) closure; -+ scm_init_gnutls(); -+ scm_shell(argc, argv); -+} -+ -+int -+main(int argc, char **argv) -+{ -+ scm_boot_guile(argc, argv, inner_main, NULL); -+ return 0; -+} diff --git a/steps-guix/guile-gnutls-v5.0.1/patches/static-init-from-main-program.patch b/steps-guix/guile-gnutls-v5.0.1/patches/static-init-from-main-program.patch deleted file mode 100644 index cc66cc75..00000000 --- a/steps-guix/guile-gnutls-v5.0.1/patches/static-init-from-main-program.patch +++ /dev/null @@ -1,55 +0,0 @@ -SPDX-License-Identifier: GPL-3.0-or-later - -Make static/shared initialization deterministic from the build system only. -Do not patch Scheme sources; rewrite generated gnutls.scm at build time. - ---- guile-gnutls-v5.0.1/configure.ac -+++ guile-gnutls-v5.0.1/configure.ac -@@ -508,6 +508,7 @@ - fi - - AC_SUBST([maybe_guileextensiondir]) -+AM_CONDITIONAL([ENABLE_SHARED], [test "x$enable_shared" != "xno"]) - AM_CONDITIONAL([HAVE_GUILD], [test "x$GUILD" != "x"]) - AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"]) - AM_CONDITIONAL(HAVE_GCC_GNU89_INLINE_OPTION, test "$gnu89_inline" = "yes"]) ---- guile-gnutls-v5.0.1/guile/Makefile.am -+++ guile-gnutls-v5.0.1/guile/Makefile.am -@@ -43,11 +43,21 @@ - - CLEANFILES = modules/gnutls.scm - -+if ENABLE_SHARED - .in.scm: - $(AM_V_GEN)$(MKDIR_P) "`dirname "$@"`" ; cat "$^" | \ - $(SED) -e's|[@]maybe_guileextensiondir[@]|$(maybe_guileextensiondir)|g' \ - > "$@.tmp" - $(AM_V_at)mv "$@.tmp" "$@" -+else -+.in.scm: -+ $(AM_V_GEN)$(MKDIR_P) "`dirname "$@"`" ; cat "$^" | \ -+ $(SED) -e's|[@]maybe_guileextensiondir[@]|$(maybe_guileextensiondir)|g' \ -+ -e '1,/(unless (getenv "GNUTLS_GUILE_CROSS_COMPILING")/s|(unless (getenv "GNUTLS_GUILE_CROSS_COMPILING")|(when #f|' \ -+ -e "s|(unless (getenv \\\"GNUTLS_GUILE_CROSS_COMPILING\\\")|(when (module-variable (current-module) 'protocol/ssl3)|" \ -+ > "$@.tmp" -+ $(AM_V_at)mv "$@.tmp" "$@" -+endif - - - # -@@ -56,6 +66,7 @@ - - if HAVE_GUILD - -+if ENABLE_SHARED - guilesiteccachesubdir = $(guilesiteccachedir)/gnutls - nodist_guilesiteccache_DATA = modules/gnutls.go - nodist_guilesiteccachesub_DATA = modules/gnutls/extra.go -@@ -94,6 +105,7 @@ - -o "$@" "$<" >&$$out - - SUFFIXES = .go -+endif ENABLE_SHARED - - endif HAVE_GUILD - diff --git a/steps-guix/guix-1.5.0/pass1.sh b/steps-guix/guix-1.5.0/pass1.sh index 05c49a7e..f2517de2 100755 --- a/steps-guix/guix-1.5.0/pass1.sh +++ b/steps-guix/guix-1.5.0/pass1.sh @@ -113,7 +113,7 @@ probe_guile_module() { probe_pkg_config="gnutls" find_name='libguile-gnutls*' find_module='gnutls' - probe_expression="(use-modules (gnutls)) (display \"gnutls-module-ok\\n\")" + probe_expression="(use-modules (gnutls)) (if (module-variable (resolve-module '(gnutls)) 'make-session) (display \"gnutls-module-ok\\n\") (begin (display \"gnutls-make-session-missing\\n\") (exit 1)))" ;; *) probe_label="${module_name}-related" diff --git a/steps-guix/improve/guix-daemon-and-pull.sh b/steps-guix/improve/guix-daemon-and-pull.sh index c8cb2bde..2d13e187 100644 --- a/steps-guix/improve/guix-daemon-and-pull.sh +++ b/steps-guix/improve/guix-daemon-and-pull.sh @@ -231,4 +231,9 @@ EOF chmod 0644 "${channels_file}" +if ! guile -c '(use-modules (gnutls)) (if (module-variable (resolve-module (quote (gnutls))) (quote make-session)) (exit 0) (exit 1))'; then + echo "Guile GnuTLS bindings are incomplete: (gnutls) is missing make-session." >&2 + exit 1 +fi + guix pull --bootstrap --no-substitutes --channels="${channels_file}" --disable-authentication