hugo/content/development/building/2.x.y/_index.md

Fri, 12 Jul 2024 00:14:47 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 12 Jul 2024 00:14:47 -0500
changeset 538
24fe83c549b1
parent 466
9209c7e3a493
permissions
-rw-r--r--

Sort the plugins list by the heading attribute

Previously we depended on the sorting of the json file, but that's difficult
and error prone considering that we can just let hugo do it.

Testing Done:
Ran the site locally and verified that the sorting worked.

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

---
title: 2.x.y
date: 2019-01-11T03:13:47.000Z
anchor: 2.x.y
lastmod: 2019-09-04T03:20:39.000Z
---

## Building

If you're building for Windows you'll want to have a look at
[the building on Windows page]({{< ref "development/building/2.x.y/windows" >}})
instead.

Pidgin's default build has a lot of dependencies.  This document will hopefully
help you find and install them all.

### Packaged Dependencies

These dependencies are ones that should be found in your distribution's package
manager.

### I have the source; how do I build this thing?

Assuming you have all of the necessary libraries and their headers installed
(see the next few questions), you compile libpurple, Pidgin and Finch just like
most applications:

    $ tar xjvf pidgin-2.x.y.tar.bz2
    $ cd pidgin-2.x.y
    $ ./configure && make && sudo make install

This will install libpurple, Pidgin and Finch to `/usr/local`. If you want to
install it elsewhere, pass `--prefix=/some/other/prefix` to `./configure`. (You
really don't want to install it to `/usr`.) See `./configure --help` for other
options you can change at compile-time.

If you got the source tree from our Mercurial database (which you probably
shouldn't have), you'll need to run `./autogen.sh` instead of `./configure` the
first time around. If you get an error like the following, you may need a newer
version of automake.

    running /usr/bin/automake -a -c --gnu... failed.
    Makefile.am:79: directory should not contain `/'
    pidgin/pixmaps/Makefile.am:4: directory should not contain `/'

If you are trying to compile on Windows, you need the answer to a different
question.

### Why can't I compile Pidgin?

You're probably missing some dependencies. The `configure` script will tell you
when you are missing required dependencies. Remember that if you're using an
RPM-based (RedHat Enterprise Linux, CentOS, SUSE, Mandriva, etc.) or
Debian-based system (Debian, Ubuntu, etc.) that having just a library's package
installed is not sufficient--you must also have the `-devel` (RPM systems) or
`-dev` (Debian-based systems) package for each library installed. If `configure`
is succeeding, but `make` fails, this is harder to diagnose and you will
probably want to drop by the IRC channel or XMPP conference listed on
the [Contact]({{< ref "contact" >}}) page to get help.

### How do I install the dependencies on Debian or Ubuntu?

You need to install the development headers; these are the `-dev` packages. A
simple `apt-get build-dep pidgin` will find and install all of the required
header packages for you.

If `apt-get build-dep` fails with a message like

    E: You must put some 'source' URIs in your sources.list

then you need to add `deb-src` lines to your `/etc/apt/sources.list`
corresponding to each of the `deb` lines already there. If editing configuration
files scares you, Ubuntu has a "Software Sources" control panel in _System_ ->
_Administration_ which has some magic checkboxes to do this for you.

### How do I install the dependencies on Fedora (or similar)?

RPM-based distribution users may find `yum-builddep pidgin`
useful if a source RPM is available and the distribution uses the yum tools.

Note that on current Fedora, you would use `dnf builddep pidgin`, which is in
the `dnf-plugins-core` package.  If you're still using yum, the `yum-builddep`
command is in the `yum-utils` package, which is not necessarily installed by
default.

### How do I apply the patch "something.diff"?

Type `patch -p1 < something.diff` from the top level of the source directory
(`pidgin/`, not `pidgin/pidgin/` or `pidgin/finch/`).

### Is there a way to compile without some protocols?

There are actually two ways:

 - Run `./configure` with the `--with-static-prpls` option with the
   `--disable-plugins` option. This will let you choose which protocols to
   include by specifying them as a comma-separated list, such as the following
   (but note that you won't be able to use any other protocols or plugins):
   `./configure --disable-plugins --with-static-prpls=irc,bonjour`
 - Use the `--with-dynamic-prpls` option to `./configure` by specifying a
   comma-separated list, like so: `./configure --with-dynamic-prpls=irc,xmpp`

### Can I compile just Finch, not Pidgin?

Sure. Pass `--disable-gtkui` to `./configure`.

mercurial