From 0cddd2d38ae518320f464a651e8dc4983c60247b Mon Sep 17 00:00:00 2001 From: eldritch horrors Date: Sat, 20 Jun 2026 21:54:37 +0200 Subject: [PATCH] build: always link plugins with unresolved symbols allowed we're quite surprised that this hasn't caused problems sooner. Change-Id: I33b779c1563e15db715c7fd4d3cb6516cf34391d --- contrib/plugins/meson.build | 20 +++++++------------- meson.build | 8 +++----- tests/functional/plugins/meson.build | 8 ++++---- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/contrib/plugins/meson.build b/contrib/plugins/meson.build index 94ce0afd5..3bb6fe171 100644 --- a/contrib/plugins/meson.build +++ b/contrib/plugins/meson.build @@ -1,19 +1,13 @@ -# Darwin: don't link liblix* into plugins (host process provides them at runtime). -# Explicitly link curl so it binds to Nix-store libcurl, not /usr/lib/libcurl. -if is_darwin - plugin_deps = [ - liblix.partial_dependency(includes : true, compile_args : true), - curl, - ] -else - plugin_deps = [liblix, curl] -endif - plugin_mtls_store = shared_module( 'plugin_mtls_store', 'plugin_mtls_store.cc', - dependencies : plugin_deps, + # don't link liblix* into plugins (host process provides them at runtime). + # Explicitly link curl so it binds to Nix-store libcurl, not /usr/lib/libcurl. + dependencies : [ + liblix.partial_dependency(includes : true, compile_args : true), + curl, + ], install : false, build_by_default : true, - link_args : is_darwin ? shared_module_link_args : strict_shared_module_link_args, + link_args : plugin_link_args, ) diff --git a/meson.build b/meson.build index d56b8eebe..7ad10b9c2 100644 --- a/meson.build +++ b/meson.build @@ -246,13 +246,11 @@ endif # allows unresolved symbols to be resolved from the host process at runtime, avoiding the # symbol binding issues that occur with -flat_namespace (where plugin curl_* calls could # resolve to /usr/lib/libcurl instead of the Nix-store libcurl used by the host). -shared_module_link_args = [] -# This is a stricter additional set of link flags (for non-plugin shared modules). -strict_shared_module_link_args = [] +plugin_link_args = [] if is_darwin - shared_module_link_args += ['-Wl,-undefined,dynamic_lookup'] + plugin_link_args += ['-Wl,-undefined,dynamic_lookup'] elif is_linux - strict_shared_module_link_args += ['-Wl,-z,defs'] + plugin_link_args += ['-Wl,-z,undefs'] endif configdata = configuration_data() diff --git a/tests/functional/plugins/meson.build b/tests/functional/plugins/meson.build index 3b59a2990..439b17b47 100644 --- a/tests/functional/plugins/meson.build +++ b/tests/functional/plugins/meson.build @@ -2,10 +2,10 @@ libplugintest = shared_module( 'plugintest', 'plugintest.cc', dependencies : [ - liblix, + liblix.partial_dependency(includes : true, compile_args : true), ], build_by_default : false, - link_args : shared_module_link_args, + link_args : plugin_link_args, ) libplugintestfail_link_args = [] @@ -17,9 +17,9 @@ libplugintestfail = shared_module( 'plugintestfail', 'plugintestfail.cc', dependencies : [ - liblix, + liblix.partial_dependency(includes : true, compile_args : true), ], cpp_args : ['-DMISSING_REFERENCE'], - link_args : shared_module_link_args + libplugintestfail_link_args, + link_args : plugin_link_args + libplugintestfail_link_args, build_by_default : false, )