mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-23 11:36:32 +01:00
fix(guile-avahi): build static Guile bindings instead of dlopenable avahi extension
This commit is contained in:
parent
74da573c33
commit
49537b4100
2 changed files with 249 additions and 10 deletions
|
|
@ -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")'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 <libguile.h>
|
||||
+
|
||||
+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;
|
||||
+}
|
||||
Loading…
Add table
Add a link
Reference in a new issue