Sat, 09 Aug 2025 18:21:54 -0500
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