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/
[](https://pidgin.im/) # Purple and Pidgin libpurple is a library intended to be used by programmers seeking to write an IM client that connects to many IM networks. It comes with support for Bonjour, IRC, and XMPP, among others and there are many more networks supported via [third party plugins](https://pidgin.im/plugins/). Pidgin is a graphical IM client written in C, which uses the GTK toolkit. These programs are not endorsed by, nor affiliated with, any proprietary instant messaging company in any way. ## Contributors See AUTHORS and COPYRIGHT for the list of contributors. ## Building There are two main ways you can build Pidgin. If you are on Linux you may use [Flatpak](https://www.flatpak.org/) to get going quickly. The other option is to do a normal build. ### Flatpak Building with Flatpak is very straight forward. To get started you'll need to make sure that you have the `flatpak` and `flatpak-builder` packages installed. You may find the official [Flatpak Setup page](https://flathub.org/setup) useful here. Once Flatpak is setup, you can install the `flatpak-builder` flatpak to make sure you have the most recent version. You can install it with the following command: ``` flatpak install --user org.flatpak.Builder ``` Now that you have `flatpak` and `flatpak-builder` installed, you can build and install Pidgin3 with this command: ``` flatpak run org.flatpak.Builder --user --force-clean --sandbox --install-deps-from=flathub --repo=repo build-flatpak --install im.pidgin.Pidgin3.yml ``` Once that's successful, you can run it with `flatpak run im.pidgin.Pidgin3` ### Meson Pidgin uses [Meson](https://mesonbuild.com) as its build system. There is a long list of dependencies that is not currently documented here due to differences in package names across operating systems. We plan to fix this soon, if you have any suggestions on how to handle this, please let us know. You can quickly build Pidgin with the following commands: ``` meson setup build cd build ninja ``` There are quite a few options for the build that you can view by running `meson configure` in your build directory. You can specify the options when running meson like the following: ``` meson setup -Ddebug=true build ``` If you have already run `meson setup` you can use `meson configure`: ``` cd build meson configure -Ddebug=true ``` Previously while developing in our code base you would need to install everything to be able to run or test anything. With meson this is no longer the case. You can compile via the steps above, and then run directly from the build directory with the following command to run Pidgin 3: ``` cd build meson devenv pidgin3 ``` Obviously you're still free to install into your system directly, but then you'll most likely end up having orphaned files laying around that our build system doesn't know how to remove once they're removed from our code base. This is one of the primary reasons we recommend building and running from a devenv. Another benefit is that the devenv uses a configuration directory inside of the build directory rather than in your home directory. If you come across a bug, please report it at: [issues.imfreedom.org/issues/PIDGIN](https://issues.imfreedom.org/issues/PIDGIN) ## Plugins libpurple and Pidgin ship with a number of plugins, but you can find additional third party plugins at [pidgin.im/plugins](https://pidgin.im/plugins). ## Developing You can find more information about Pidgin development in the [development section](https://pidgin.im/development/) of our website. ## Sponsors Pidgin is supported by DigitalOcean who graciously sponsors all of our infrastructure. [](https://www.digitalocean.com/?refcode=b69e5dddf595&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge)