Add builtin library dependency for introspection default

Sat, 09 Aug 2025 18:21:54 -0500

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sat, 09 Aug 2025 18:21:54 -0500
changeset 43308
6a22b547f0c8
parent 43307
d8fa7059d11b
child 43309
099e1dfb856b

Add builtin library dependency for introspection

Without specifying, gir defaults to the system pidgin/purple libraries by default,
which fails the build when new symbols were added and gir failed to link for them.

The failed build log before patch:
```
FAILED: pidgin/Pidgin-3.0.gir
...
/usr/bin/ld: /usr/local/lib/x86_64-linux-gnu/libpidgin3.so: undefined reference to `purple_image_get_filename'
collect2: error: ld returned 1 exit status
linking of temporary binary failed: Command '['ccache', 'cc', '-o', '/home/goodspeed/Development/pidgin/build/tmp-introspectineovzv0/Pidgin-3.0', '/home/goodspeed/Development/pidgin/build/tmp-introspectineovzv0/Pidgin-3.0.o', '-L.', '-Wl,-rpath,.', '-Wl,--no-as-needed', '-L/home/goodspeed/Development/pidgin/build/libpurple', '-Wl,-rpath,/home/goodspeed/Development/pidgin/build/libpurple', '-L/usr/local/lib/x86_64-linux-gnu', '-Wl,-rpath,/usr/local/lib/x86_64-linux-gnu', '-L/home/goodspeed/Development/pidgin/build/pidgin', '-Wl,-rpath,/home/goodspeed/Development/pidgin/build/pidgin', '-L/home/goodspeed/Development/pidgin/build/libpurple', '-Wl,-rpath,/home/goodspeed/Development/pidgin/build/libpurple', '-L/usr/local/lib/x86_64-linux-gnu', '-Wl,-rpath,/usr/local/lib/x86_64-linux-gnu', '-L/usr/local/lib/x86_64-linux-gnu', '-Wl,-rpath,/usr/local/lib/x86_64-linux-gnu', '-lpidgin3', '-lpurple3', '-lglib-2.0', '-lgplugin-gtk4', '-lgplugin', '-lgmodule-2.0', '-lgtk-4', '-lpangocairo-1.0', '-lpango-1.0', '-lharfbuzz', '-lgdk_pixbuf-2.0', '-lcairo-gobject', '-lcairo', '-lvulkan', '-lgraphene-1.0', '-lgio-2.0', '-lgobject-2.0', '-lgtksourceview-5', '-ljson-glib-1.0', '-ladwaita-1', '-lspelling-1', '-lm', '-lbirb', '-lgstreamer-1.0', '-lsoup-3.0', '-lxml2', '-lgstapp-1.0', '-lgstbase-1.0', '-lseagull', '-lsqlite3', '-lgirepository-1.0', '-lgio-2.0', '-lgobject-2.0', '-Wl,--export-dynamic', '-lgmodule-2.0', '-pthread', '-lglib-2.0', '-lglib-2.0']' returned non-zero exit status 1.
ninja: build stopped: subcommand failed.
```

Testing Done:
Succeed building pidgin with an out-of-date pidgin installed on system. Introspection no longer uses the system library and links fine now.

Reviewed at https://reviews.imfreedom.org/r/4098/

libpurple/meson.build file | annotate | diff | comparison | revisions
pidgin/meson.build file | annotate | diff | comparison | revisions
--- a/libpurple/meson.build	Sat Aug 09 18:15:57 2025 -0500
+++ b/libpurple/meson.build	Sat Aug 09 18:21:54 2025 -0500
@@ -331,6 +331,13 @@
       f'plugindir=${libdir}/@purple_filebase@',
     ])
 
+libpurple_dep = declare_dependency(
+    # Ensure purple headers built before any dependencies:
+    sources : [purple_builtheaders] + purple_generated_sources,
+    include_directories : [toplevel_inc, libpurple_inc],
+    link_with : libpurple,
+    dependencies : [birb_dep, gdk_pixbuf, gstreamer, gplugin_dep, glib, gio, pango_dep])
+
 if enable_introspection
 	introspection_sources = (purple_coresources + purple_coreheaders +
 	                         purple_builtheaders + purple_request_headers)
@@ -344,20 +351,13 @@
 	    identifier_prefix : 'Purple',
 	    export_packages : purple_filebase,
 	    nsversion : f'@purple_api_major_version@.@purple_api_minor_version@',
-	    dependencies: [birb_dep, gplugin_dep],
+	    dependencies: [birb_dep, gplugin_dep, libpurple_dep],
 	    install : true,
 	    extra_args : ['-DPURPLE_COMPILATION', '--quiet'])
 
 	purple_generated_sources += libpurple_gir
 endif
 
-libpurple_dep = declare_dependency(
-    # Ensure purple headers built before any dependencies:
-    sources : [purple_builtheaders] + purple_generated_sources,
-    include_directories : [toplevel_inc, libpurple_inc],
-    link_with : libpurple,
-    dependencies : [birb_dep, gdk_pixbuf, gstreamer, gplugin_dep, glib, gio, pango_dep])
-
 meson.override_dependency(purple_filebase, libpurple_dep)
 
 subdir('tests')
--- a/pidgin/meson.build	Sat Aug 09 18:15:57 2025 -0500
+++ b/pidgin/meson.build	Sat Aug 09 18:21:54 2025 -0500
@@ -250,7 +250,7 @@
 		identifier_prefix : 'Pidgin',
 		export_packages : f'pidgin-@purple_api_major_version@',
 		nsversion : f'@purple_api_major_version@.@purple_api_minor_version@',
-		dependencies : _libpidgin_dependencies,
+		dependencies : [_libpidgin_dependencies, libpidgin_dep],
 		install : true,
 		extra_args : ['-DPIDGIN_COMPILATION', '--quiet'])
 endif

mercurial