diff --git a/steps-guix/guile-avahi-0.4.1/pass1.sh b/steps-guix/guile-avahi-0.4.1/pass1.sh index 46dfded3..3e66653b 100755 --- a/steps-guix/guile-avahi-0.4.1/pass1.sh +++ b/steps-guix/guile-avahi-0.4.1/pass1.sh @@ -2,30 +2,101 @@ src_prepare() { default + autoreconf -fi } src_configure() { - local host_triplet pkg_config_path + local host_triplet pkg_config_path guile_cflags guile_static_libs + local avahi_cflags avahi_static_libs host_triplet="$(gcc -dumpmachine)" - pkg_config_path="${LIBDIR}/pkgconfig" + 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)" + 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)" PATH="${PREFIX}/bin:/usr/bin:/bin" \ - PKG_CONFIG_LIBDIR="${pkg_config_path}:${PREFIX}/lib/pkgconfig" \ - PKG_CONFIG_PATH="${pkg_config_path}:${PREFIX}/lib/pkgconfig" \ - LD_LIBRARY_PATH="${LIBDIR}:${LD_LIBRARY_PATH}" \ + PKG_CONFIG="/usr/bin/pkg-config" \ + PKG_CONFIG_LIBDIR="${pkg_config_path}" \ + PKG_CONFIG_PATH="${pkg_config_path}" \ + LD_LIBRARY_PATH="${LIBDIR}:${PREFIX}/lib:${LD_LIBRARY_PATH}" \ + GUILE_CFLAGS="${guile_cflags}" \ + GUILE_LDFLAGS="${guile_static_libs}" \ + AVAHI_CFLAGS="${avahi_cflags}" \ + AVAHI_LIBS="${avahi_static_libs}" \ ./configure \ --prefix="${PREFIX}" \ --libdir="${LIBDIR}" \ --host="${host_triplet}" \ - --build="${host_triplet}" + --build="${host_triplet}" \ + --enable-static \ + --disable-shared \ + '--with-guilemoduledir=$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)' } src_compile() { - make "${MAKEJOBS}" -f Makefile PREFIX="${PREFIX}" \ - CROSS_COMPILING_VARIABLE="AVAHI_GUILE_CROSS_COMPILING=yes" + local pkg_config_path guile_cflags guile_static_libs avahi_cflags avahi_static_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)" + 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)" + + CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \ + GUILE_CFLAGS="${guile_cflags}" \ + GUILE_LDFLAGS="${guile_static_libs}" \ + AVAHI_CFLAGS="${avahi_cflags}" \ + AVAHI_LIBS="${avahi_static_libs}" \ + default_src_compile } src_install() { - make -f Makefile install PREFIX="${PREFIX}" DESTDIR="${DESTDIR}" \ - CROSS_COMPILING_VARIABLE="AVAHI_GUILE_CROSS_COMPILING=yes" + local pkg_config_path guile_cflags guile_static_libs avahi_cflags avahi_static_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)" + 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)" + + CPPFLAGS="${guile_cflags} ${avahi_cflags} ${CPPFLAGS:-}" \ + GUILE_CFLAGS="${guile_cflags}" \ + GUILE_LDFLAGS="${guile_static_libs}" \ + AVAHI_CFLAGS="${avahi_cflags}" \ + AVAHI_LIBS="${avahi_static_libs}" \ + default_src_install +} + +src_postprocess() { + local guile_site_path guile_core_site guile_site_ccache guile_core_ccache + + default_src_postprocess + + if find "${DESTDIR}" -type f \( -name '*.so' -o -name '*.so.*' \) | grep -q .; then + echo "guile-avahi: shared objects are forbidden in static profile." >&2 + false + fi + + guile_site_path="${DESTDIR}${PREFIX}/share/guile/site/3.0" + guile_core_site="${PREFIX}/share/guile/3.0" + guile_site_ccache="${DESTDIR}${LIBDIR}/guile/3.0/site-ccache" + guile_core_ccache="${LIBDIR}/guile/3.0/ccache" + + PATH="${DESTDIR}${PREFIX}/bin:${PREFIX}/bin:/usr/bin:/bin" \ + GUILE_LOAD_PATH="${guile_site_path}:${guile_core_site}" \ + 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")' } diff --git a/steps-guix/guile-avahi-0.4.1/patches/static-link-avahi-bindings.patch b/steps-guix/guile-avahi-0.4.1/patches/static-link-avahi-bindings.patch new file mode 100644 index 00000000..41d75fb7 --- /dev/null +++ b/steps-guix/guile-avahi-0.4.1/patches/static-link-avahi-bindings.patch @@ -0,0 +1,168 @@ +diff -urN guile-avahi-0.4.1/Makefile.am guile-avahi-0.4.1/Makefile.am +--- guile-avahi-0.4.1/Makefile.am 2023-01-15 17:29:00 ++++ guile-avahi-0.4.1/Makefile.am 2026-03-08 10:22:35 +@@ -37,6 +37,7 @@ + EXTRA_DIST += \ + src/make-enum-map.scm src/make-smob-types.scm \ + src/make-enum-header.scm src/make-smob-header.scm \ ++ src/guile-static-main.c \ + src/make-callback-header.scm src/make-callback-trampolines.scm + + # Files generated by (avahi build ...). +@@ -61,6 +62,11 @@ + src/common.c.x src/watch.c.x src/client.c.x \ + src/errors.c.x src/publish.c.x src/lookup.c.x + ++guile_avahi_common_cflags = \ ++ $(AVAHI_CFLAGS) $(GUILE_CFLAGS) $(AM_CFLAGS) ++ ++if ENABLE_SHARED ++ + nobase_guileextension_LTLIBRARIES = guile-avahi-v-0.la + + # Use '-module' to build a "dlopenable module", in Libtool terms. +@@ -72,11 +78,28 @@ + src/utils.c src/errors.c src/watch.c \ + src/common.c src/client.c \ + src/publish.c src/lookup.c +-guile_avahi_v_0_la_CFLAGS = \ +- $(AVAHI_CFLAGS) $(GUILE_CFLAGS) $(AM_CFLAGS) ++guile_avahi_v_0_la_CFLAGS = $(guile_avahi_common_cflags) ++guile_avahi_v_0_la_DEPENDENCIES = $(BUILT_SOURCES) + guile_avahi_v_0_la_LIBADD = \ + $(AVAHI_LIBS) $(GUILE_LDFLAGS) ++else ++lib_LIBRARIES = libguile-avahi-static.a ++libguile_avahi_static_a_SOURCES = \ ++ src/utils.c src/errors.c src/watch.c \ ++ src/common.c src/client.c \ ++ src/publish.c src/lookup.c ++libguile_avahi_static_a_CPPFLAGS = $(AM_CPPFLAGS) ++libguile_avahi_static_a_CFLAGS = $(guile_avahi_common_cflags) ++libguile_avahi_static_a_DEPENDENCIES = $(BUILT_SOURCES) + ++bin_PROGRAMS = guile ++guile_SOURCES = src/guile-static-main.c ++guile_CPPFLAGS = $(AM_CPPFLAGS) ++guile_CFLAGS = $(guile_avahi_common_cflags) ++guile_LDFLAGS = -static ++guile_LDADD = libguile-avahi-static.a $(GUILE_LDFLAGS) $(AVAHI_LIBS) $(LIBS) ++endif ++ + AM_CFLAGS = $(GCC_CFLAGS) + AM_CPPFLAGS = -I$(builddir)/src -I$(srcdir)/src \ + -I$(top_srcdir)/lib -I$(top_builddir)/lib +@@ -173,6 +196,8 @@ + gosubdir = $(godir)/avahi + goclientdir = $(gosubdir)/client + ++if ENABLE_SHARED ++ + nodist_go_DATA = \ + modules/avahi.go + nodist_gosub_DATA = \ +@@ -213,6 +238,7 @@ + SUFFIXES += .go + + CLEANFILES += $(GOBJECTS) ++endif ENABLE_SHARED + + + # +diff -urN guile-avahi-0.4.1/configure.ac guile-avahi-0.4.1/configure.ac +--- guile-avahi-0.4.1/configure.ac 2023-01-15 17:30:33 ++++ guile-avahi-0.4.1/configure.ac 2026-03-08 10:22:35 +@@ -27,7 +27,8 @@ + + # Libtool. + LT_PREREQ([2.2.6]) +-LT_INIT([disable-static dlopen]) ++LT_INIT([dlopen]) ++AM_CONDITIONAL([ENABLE_SHARED], [test "x$enable_shared" != "xno"]) + + # Checks for programs. + AC_PROG_CC +diff -urN guile-avahi-0.4.1/modules/avahi.in guile-avahi-0.4.1/modules/avahi.in +--- guile-avahi-0.4.1/modules/avahi.in 2023-01-15 16:21:01 ++++ guile-avahi-0.4.1/modules/avahi.in 2026-03-08 10:22:35 +@@ -110,7 +110,8 @@ + (string-append %libdir "/guile-avahi-v-0") + "guile-avahi-v-0")) + +- (unless (getenv "AVAHI_GUILE_CROSS_COMPILING") ++ (unless (or (getenv "AVAHI_GUILE_CROSS_COMPILING") ++ (module-variable (current-module) 'watch?)) + (load-extension %avahi-extension "scm_avahi_common_init"))) + + ;; Optional bindings, depending on the configuration. +diff -urN guile-avahi-0.4.1/modules/avahi/client/lookup.scm guile-avahi-0.4.1/modules/avahi/client/lookup.scm +--- guile-avahi-0.4.1/modules/avahi/client/lookup.scm 2023-01-15 16:21:14 ++++ guile-avahi-0.4.1/modules/avahi/client/lookup.scm 2026-03-08 10:22:35 +@@ -63,7 +63,8 @@ + resolver-event->string + resolver-event/found resolver-event/failure)) + +-(unless (getenv "AVAHI_GUILE_CROSS_COMPILING") +- (load-extension %avahi-extension "scm_avahi_lookup_init")) ++(unless (or (getenv "AVAHI_GUILE_CROSS_COMPILING") ++ (module-variable (current-module) 'domain-browser?)) ++ (load-extension %avahi-extension "scm_avahi_lookup_init")) + + ;;; arch-tag: 9ab68bd4-4705-42e5-89c3-e02551be4d09 +diff -urN guile-avahi-0.4.1/modules/avahi/client/publish.scm guile-avahi-0.4.1/modules/avahi/client/publish.scm +--- guile-avahi-0.4.1/modules/avahi/client/publish.scm 2023-01-15 16:21:20 ++++ guile-avahi-0.4.1/modules/avahi/client/publish.scm 2026-03-08 10:22:35 +@@ -39,7 +39,8 @@ + publish-flag/no-cookie publish-flag/update + publish-flag/use-wide-area publish-flag/use-multicast)) + +-(unless (getenv "AVAHI_GUILE_CROSS_COMPILING") +- (load-extension %avahi-extension "scm_avahi_publish_init")) ++(unless (or (getenv "AVAHI_GUILE_CROSS_COMPILING") ++ (module-variable (current-module) 'entry-group?)) ++ (load-extension %avahi-extension "scm_avahi_publish_init")) + + ;;; arch-tag: 36180c98-3262-40a6-a90c-eb8f283e628e +diff -urN guile-avahi-0.4.1/modules/avahi/client.scm guile-avahi-0.4.1/modules/avahi/client.scm +--- guile-avahi-0.4.1/modules/avahi/client.scm 2023-01-15 16:21:09 ++++ guile-avahi-0.4.1/modules/avahi/client.scm 2026-03-08 10:22:35 +@@ -29,8 +29,9 @@ + client-flag->string + client-flag/ignore-user-config client-flag/no-fail)) + +-(unless (getenv "AVAHI_GUILE_CROSS_COMPILING") +- (load-extension %avahi-extension "scm_avahi_client_init")) ++(unless (or (getenv "AVAHI_GUILE_CROSS_COMPILING") ++ (module-variable (current-module) 'client?)) ++ (load-extension %avahi-extension "scm_avahi_client_init")) + + ;; Optional bindings, depending on the configuration. + (if (defined? 'set-client-host-name!) (export set-client-host-name!)) +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 @@ ++#include ++ ++void scm_avahi_common_init(void); ++void scm_avahi_client_init(void); ++void scm_avahi_lookup_init(void); ++void scm_avahi_publish_init(void); ++ ++static void ++inner_main(void *closure, int argc, char **argv) ++{ ++ (void) closure; ++ scm_avahi_common_init(); ++ scm_avahi_client_init(); ++ scm_avahi_lookup_init(); ++ scm_avahi_publish_init(); ++ scm_shell(argc, argv); ++} ++ ++int ++main(int argc, char **argv) ++{ ++ scm_boot_guile(argc, argv, inner_main, NULL); ++ return 0; ++}