pidgin/nest

Merged in default (pull request #53)

2019-09-18, Gary Kramlich
7a5230435c75
Merged in default (pull request #53)

Start of adding some organization to the building pages.

Approved-by: Elliott Sales de Andrade
--- a/hugo/content/building/2.x.y.md Tue Sep 17 02:32:37 2019 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
----
-title: 2.x.y
-date: 2019-01-11T03:13:47.000Z
-anchor: 2.x.y
-lastmod: 2019-02-04T00:21:57.000Z
----
-
-# Building
-
-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 distributions 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
-[Community](/community) 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-VERSION.src.rpm`
-useful if a source RPM is available and the distribution uses the yum tools.
-
-Note that 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 -p0 < something.diff` from the top level of the source directory
-(`pidgin/`, not `pidgin/pidgin/` or `pidgin/finch/`). If that does not work,
-try `patch -p1 < something.diff`.
-
-## 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,yahoo`
- - Use the `--with-dynamic-prpls` option to `./configure` by specifying a
- comma-separated list, like so: `./configure --with-dynamic-prpls=aim,icq,yahoo`
-
-## Can I compile just Finch, not Pidgin?
-Sure. Pass `--disable-gtkui` to `./configure`.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/building/2.x.y/_index.md Wed Sep 18 01:24:43 2019 +0000
@@ -0,0 +1,103 @@
+---
+title: 2.x.y
+date: 2019-01-11T03:13:47.000Z
+anchor: 2.x.y
+lastmod: 2019-09-04T02:46:13.000Z
+---
+
+# Building
+
+If you're building for Windows you'll want to have a look at [windows](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
+[Community](/community) 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`.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/building/2.x.y/windows.md Wed Sep 18 01:24:43 2019 +0000
@@ -0,0 +1,421 @@
+---
+title: Windows
+date: 2019-09-04T02:46:13.000Z
+replaces:
+ - developer.pidgin.im/wiki/BuildingWinPidgin
+ - developer.pidgin.im/wiki/BuildingWinPidgin/Pre2.7.0
+lastmod: 2019-09-04T02:55:05.000Z
+---
+
+Note: These instructions are kept current for the development version of
+`release-2.x.y` branch of Pidgin. You may need to look at an older version of
+this page in order to build a released version of Pidgin. Alternatively, you
+may need the instructions for 3.0.0 branch.
+
+## Set up your build environment
+
+### Install A Bash Shell
+
+The Pidgin build system requires a full Unix shell to run. You can install
+[Cygwin](https://cygwin.com) or [MSYS2](https://www.msys2.org/) to accomplish
+this. However, these instructions are heavily geared towards Cygwin so MSYS
+steps may be different and/or missing all together.
+
+Alternatively, you may use the third-party script
+[Pidgin Windev](https://github.com/renatosilva/pidgin-windev), which
+creates the development environment automatically. This tool works for
+both Cygwin and MSYS2.
+
+#### Cygwin
+
+When installing [Cygwin](https://cygwin.com) you will be asked which additional
+packages you would like to install. You need to make sure that the following
+packages are installed. Some of these are selected by default, but the ones in
+bold are not installed by default.
+
+ * bash
+ * bzip2
+ * **ca-certificates**
+ * coreutils
+ * gawk
+ * **gnupg**
+ * grep
+ * gzip
+ * **libiconv**
+ * **make**
+ * **patch**
+ * sed
+ * tar
+ * **unzip**
+ * **wget**
+ * **zip**
+
+#### MSYS2
+
+After installing [MSYS2](https://www.msys2.org/), you'll need to make sure that
+you have all the base dependencies installed as well. You can do that with the
+following command:
+
+```sh
+$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip
+```
+
+### Setup
+
+The following instructions were written under the assumption that the
+[Pidgin source](#get-the-pidgin-source-code) will be extracted or checked out
+into `$PIDGIN_DEV_ROOT/pidgin-<version>` and that you install all of Pidgin's
+build dependencies under `$PIDGIN_DEV_ROOT/win32-dev` (the point being that
+the pidgin source root and `win32-dev` directories should be on the same level). Similar to the example below:
+
+```plain
+pidgin-dev/
+├── pidgin-2.13.0
+└── win32-dev
+```
+
+You don't have to actually define an environment variable called
+`PIDGIN_DEV_ROOT`, it is simply used here as a placeholder.
+
+**Note** You should avoid using a `$PIDGIN_DEV_ROOT` path that contains
+spaces as that can cause unnecessary complications.
+
+#### Customizing
+
+Most people will find that the standard build environment directory is
+completely adequate. It is, however, possible to override the locations of the
+various dependencies and target directories. This is often useful to test
+against a development version of a library dependency or to override compiler
+flags.
+
+This is done by overriding the various Makefile variables in a `local.mak`
+file in the `$PIDGIN_DEV_ROOT/pidgin-<version>` directory. This file does not
+exist by default.
+
+The variables that can be overridden with this method are defined in the
+[libpurple/win32/global.mak](https://{{< repo pidgin >}}src/release-2.x.y/libpurple/win32/global.mak)
+file. For example, to install Pidgin over `c:\Program Files\Pidgin` instead
+of `$PIDGIN_DEV_ROOT/pidgin/win32-install-dir`, create a
+`$PIDGIN_DEV_ROOT/pidgin/local.mak` containing:
+
+```
+#Override the install location
+PIDGIN_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin
+PURPLE_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin
+```
+
+One nice use of the `local.mak` file is for cross compiling, there is an
+additional example in the [#cross-compiling section below].
+
+## Get the Pidgin source code
+
+The development source is available via Mercurial in the `release-2.x.y`
+branch. See [version control](/development/version-control/) for more
+information.
+
+If you want to build a release tarball, the instructions in the rest of this
+document should work for you, however they are written for the most recent
+2.x.y release so there may be issues with older versions.
+
+## Build Dependencies
+
+### Compiler
+
+Installing all of the build dependencies can be tedious, so you may want to
+check out [Pidgin Windev](https://github.com/renatosilva/pidgin-windev) which
+will automate it.
+
+Install the MinGW "GCC Version 4.7.2" packages from the
+[MinGW site](http://www.mingw.org) by following
+[their instructions](http://www.mingw.org/node/24/revisions/908/view).
+
+Download the following:
+
+* [binutils-2.24](https://sourceforge.net/projects/mingw/files/MinGW/Base/binutils/binutils-2.24/binutils-2.24-1-mingw32-bin.tar.xz/download)
+* mingw-runtime-3.20 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dev.tar.lzma/download) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/mingwrt-3.20/mingwrt-3.20-2-mingw32-dll.tar.lzma/download))
+* [w32api-3.17](https://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-3.17/w32api-3.17-2-mingw32-dev.tar.lzma/)
+* Required runtime libraries for GCC:
+ * mpc-0.8.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/mpc-0.8.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpc/mpc-0.8.1-1/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma/))
+ * mpfr-2.4.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/mpfr-2.4.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/mpfr-2.4.1-1/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma/))
+ * gmp-5.0.1-1 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/gmp-5.0.1-1-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.0.1-1/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma/))
+ * pthreads-2.9.0-pre-20110507-2 ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/pthreads-w32-2.9.0-mingw32-pre-20110507-2-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/pthreads-w32/pthreads-w32-2.9.0-pre-20110507-2/libpthreadgc-2.9.0-mingw32-pre-20110507-2-dll-2.tar.lzma/))
+ * iconv ([dev](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dev.tar.lzma/) and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/libiconv-1.14-2-mingw32-dll-2.tar.lzma/))
+ * [intl-0.18.1.1-2](https://sourceforge.net/projects/mingw/files/MinGW/Base/gettext/gettext-0.18.1.1-2/libintl-0.18.1.1-2-mingw32-dll-8.tar.lzma/)
+ * [gomp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgomp-4.7.2-1-mingw32-dll-1.tar.lzma/)
+ * [ssp-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libssp-4.7.2-1-mingw32-dll-0.tar.lzma/)
+ * [quadmath-4.7.2-1](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libquadmath-4.7.2-1-mingw32-dll-0.tar.lzma/)
+* gcc-core-4.7.2-1 ([bin](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-core-4.7.2-1-mingw32-bin.tar.lzma/) and dev and [dll](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/libgcc-4.7.2-1-mingw32-dll-1.tar.lzma/))
+* [gcc-4.7.2-1-mingw32-src](https://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/gcc-4.7.2-1-mingw32-src.tar.lzma/download)
+ * so we can distribute the libssp source since we distribute the binary
+
+Extract all of the above into the desired location (e.g.
+`$PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2`)
+
+Prepare a `libssp-src.tar.gz` file containing the libssp sources and licenses:
+
+```sh
+cd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2
+mkdir libsspsrctmp
+tar -C libsspsrctmp -xf gcc-4.7.2-1-mingw32-src/gcc-4.7.2.tar.bz2 gcc-4.7.2/COPYING3 gcc-4.7.2/COPYING.RUNTIME gcc-4.7.2/libssp --strip-components=1
+tar -C libsspsrctmp -czf bin/libssp-src.tar.gz .
+rm -r libsspsrctmp
+```
+
+Finally, set the MinGW gcc's bin directory to be before Cygwin's in your
+`PATH`.
+
+For example (You should add the following to your `~/.bashrc` file, which is
+found in `C:\cygwin\home\YourUsername\` by default):
+
+```sh
+export PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH
+```
+
+### Installing
+
+#### GTK
+
+Pidgin depends on GTK 2.14.7 (newer runtime versions can be used). The GTK
+All-in-one bundle contains all of GTK's dependencies in one zip file. Download
+[gtk+-bundle_2.14.7-20090119_win32.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+-bundle_2.14.7-20090119_win32.zip)
+and extract to `$PIDGIN_DEV_ROOT/win32-dev/gtk_2_0-2.14` (you'll need to create
+this directory).
+
+Visit the [GTK website](https://www.gtk.org/download/windows.php) for official
+binary and source releases.
+
+#### gettext
+
+You'll need gettext to compile translations. Download
+[gettext-tools-0.17.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-tools-0.17.zip)
+and
+[gettext-runtime-0.17-1.zip](https://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip).
+Extract both to `$PIDGIN_DEV_ROOT/win32-dev/gettext-0.17` (you'll need to
+create this directory).
+
+#### Libxml2
+
+Download and extract
+[libxml2-2.9.2_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/libxml2-2.9.2_daa1.tar.gz)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+#### Perl 5.20
+
+You'll need a functioning perl 5.20.x runtime (if the perl executable isn't in
+your `PATH`, you will need to override the `PERL` variable in
+`pidgin/local.mak` to point to the appropriate perl executable). A good option
+is [Strawberry Perl](http://strawberryperl.com/).
+
+Download the
+[perl-5.20.1.1.tar.gz](https://data.imfreedom.org/pidgin/win32/perl-5.20.1.1.tar.gz)
+development package and extract to `$PIDGIN_DEV_ROOT/win32-dev` (it creates its
+own directory). This is a subset of the full 32-bit strawberry perl zip
+containing just the headers, import lib, and source for perl.
+
+**Note** If using MSYS and you installed the `mingw-developer-toolkit`, keep
+in mind that it installs `msys-perl-bin` (Perl 5.6) which takes precedence
+over the newer perl in your path, and that will cause problems! The easiest
+solution is to set the `PERL` variable in your `pidgin/local.mak` to point to
+the right perl.exe.
+
+#### GtkSpell
+
+Download and extract
+[gtkspell-2.0.16.tar.bz2](https://data.imfreedom.org/pidgin/win32/gtkspell-2.0.16.tar.bz2)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+#### Enchant
+
+Download and extract
+[enchant_1.6.0_win32.zip](https://data.imfreedom.org/pidgin/win32/enchant_1.6.0_win32.zip)
+to `$PIDGIN_DEV_ROOT/win32-dev/`.
+
+#### Mozilla NSS
+
+Download and extract
+[nss-3.24-nspr-4.12.tar.gz](https://data.imfreedom.org/pidgin/win32/nss-3.24-nspr-4.12.tar.gz)
+under `$PIDGIN_DEV_ROOT/win32-dev`.
+
+**NOTE** NSS/NSPR are built from the upstream sources using
+[these instructions](buildings-win-nss/).
+
+#### SILC Toolkit
+
+Download and extract
+[silc-toolkit-1.1.12.tar.gz](https://data.imfreedom.org/pidgin/win32/silc-toolkit-1.1.12.tar.gz)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+#### Meanwhile
+
+Download and extract
+[meanwhile-1.0.2_daa3-win32.zip](https://data.imfreedom.org/pidgin/win32/meanwhile-1.0.2_daa3-win32.zip)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+#### Cyrus SASL
+
+Download and extract
+[cyrus-sasl-2.1.26_daa1.tar.gz](https://data.imfreedom.org/pidgin/win32/cyrus-sasl-2.1.26_daa1.tar.gz)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+#### Intltool
+
+Download and extract
+[intltool_0.40.4-1_win32.zip](https://ftp.acc.umu.se/pub/GNOME/binaries/win32/intltool/0.40/intltool_0.40.4-1_win32.zip)
+to `$PIDGIN_DEV_ROOT/win32-dev/intltool_0.40.4-1_win32`.
+
+#### Crash Reporting Library
+
+Download and extract
+[pidgin-inst-deps-20130214.tar.gz](https://data.imfreedom.org/pidgin/win32/pidgin-inst-deps-20130214.tar.gz)
+to `$PIDGIN_DEV_ROOT/win32-dev`.
+
+## Build
+
+### Building Pidgin
+
+The Windows build will take a while, but you can start it with the following
+command:
+
+```sh
+cd $PIDGIN_DEV_ROOT/pidgin-<version>
+make -f Makefile.mingw install
+```
+
+Now just wait and let your compiler do its thing. When finished, Pidgin will
+be in `$PIDGIN_DEV_ROOT/pidgin-<version>/win32-install-dir`.
+
+### Building the Installer
+
+If you would like to build the Pidgin installer, you'll need to setup
+[NSIS](https://nsis.sourceforge.io/Download). Once you have installed
+NSIS, please make sure that it is in your shell's `PATH`.
+
+Next you'll need to download the
+[nsisunz plugin](https://nsis.sourceforge.io/Nsisunz_plug-in),
+and extract `nsisunz.dll` into the `Plugins` directory of your NSIS
+installation.
+
+You'll also need to install the `SHA1Plugin` from
+`$PIDGIN_DEV_ROOT/win32-dev/pidgin-inst-deps-20130214/SHA1Plugin.dll` into
+the NSIS `Plugins` directory.
+
+Finally, you'll need to decide if you would like to sign the executables though
+this is not necessary for personal use.
+
+To sign the executables, you'll need to get an appropriate code signing
+certificate by downloading and installing
+[Mono](https://www.mono-project.com/Download). In your `local.mak` file (see
+[customizing](#customizing) above), define the `MONO_SIGNCODE` variable to the
+fully qualified path to the `signcode` batch file in the Mono `bin` directory,
+as well as the `SIGNCODE_SPC` and `SIGNCODE_PVK` variable to the appropriate
+files in your certificate.
+
+Also, you'll need a PGP key to verify add pgp signatures to the files. GnuPG
+is the primary PGP client most people use. You can read more
+[here](https://www.gnupg.org/gph/en/manual/c14.html).
+
+Once you have everything setup your `local.mak` should look something like the
+following:
+
+```
+MONO_SIGNCODE=/cygdrive/c/Program\ Files\ \(x86\)/Mono-2.10.8/bin/signcode
+SIGNCODE_SPC=c:\\Path\\to\\authenticode.spc
+SIGNCODE_PVK=c:\\Path\\to\\authenticode.pvk
+#Set up gpg to use a separate keyring
+GPG_SIGN=gpg --no-default-keyring --secret-keyring /path/to/secring.gpg
+```
+
+If you aren't going to be signing anything, your `local.mak` should look like
+the following:
+
+```
+#Disable Signing
+MONO_SIGNCODE=echo ***Bypassing signcode***
+GPG_SIGN=echo ***Bypassing gpg***
+```
+
+At this point, you can finally build the installer. However, there are
+actually two different installers; an "Offline" installer that includes all
+dependencies (except spellchecking dictionaries) and the debug symbols and an
+"Online" installer that includes only Pidgin itself and will download the
+various dependencies if necessary.
+
+The `Makefile.mingw` targets for these are `installer_offline` and `installer`
+respectively. You can build both with the `installers` target.
+
+```sh
+cd $PIDGIN_DEV_ROOT/pidgin-<version>
+make -f Makefile.mingw installers
+```
+
+When it finishes, your installer(s) should be in
+`$PIDGIN_DEV_ROOT/pidgin-<version>/` directory.
+
+## Debugging
+
+There is a quite good **Just In Time** debugger for MinGW named
+[drmingw](https://github.com/jrfonseca/drmingw). You can download it from
+their [releases](https://github.com/jrfonseca/drmingw/releases).
+
+There is also a version of `gdb` available from MinGW, if you prefer.
+
+## Cross Compiling
+
+It is quite easy to cross compile Pidgin for Windows on a Linux machine.
+
+To begin, you'll need to install MinGW. On Debian/Ubuntu, this involves
+installing packages `mingw32`, `mingw32-binutils`, and `mingw32-runtime`. On
+other distributions, the packages may be named differently.
+
+Set up a build environment as described [above](set-up-your-build-environment).
+You should already have a bash shell and have just installed the mingw
+compiler.
+
+Create a `local.mak` file in the source directory root to override the
+Makefile variables, something like the following:
+
+```make
+SHELL := /bin/bash
+CC := /usr/bin/i586-mingw32msvc-cc
+GMSGFMT := msgfmt
+MAKENSIS := /usr/bin/makensis
+WINDRES := /usr/bin/i586-mingw32msvc-windres
+STRIP := /usr/bin/i586-mingw32msvc-strip
+INTLTOOL_MERGE := /usr/bin/intltool-merge
+
+INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include
+LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib
+```
+
+If your distribution doesn't include a recent enough win32api, you can
+download it from the [MinGW site](http://www.mingw.org/), extract it into
+your `win32-dev` directory, and override the `INCLUDE_PATHS` and `LIB_PATHS`
+variables in your `local.mak` as shown above.
+
+NSIS version 2.46 or greater is required to cross-compile. If compiling NSIS
+from source, the [scons](https://www.scons.org/) package is a dependency.
+This can usually be installed through your linux distribution's package
+archive. An example of how to install the NSIS package is given below
+(Assuming use of the NSIS 2.46 version).
+
+```sh
+mkdir nsis; cd nsis
+wget https://prdownloads.sourceforge.net/nsis/nsis-2.46-src.tar.bz2?download
+wget https://prdownloads.sourceforge.net/nsis/nsis-2.46.zip?download
+tar -jxvf nsis-2.46-src.tar.bz2
+cd nsis-2.46
+scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no
+sudo scons install-compiler
+cd ..
+sudo unzip nsis-2.46 -d /usr/local/share
+sudo mv /usr/local/share/nsis-2.46/ /usr/local/share/nsis
+```
+
+Once this is done, you'll need to update `local.mak` to point to the new NSIS
+location:
+
+```
+MAKENSIS := /usr/local/bin/makensis
+```
+
+Finally, you should be able to follow the [build](#build) instructions above.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hugo/content/building/3.0.0/_index.md Wed Sep 18 01:24:43 2019 +0000
@@ -0,0 +1,11 @@
+---
+title: 3.0.0
+date: 2019-09-04T02:46:13.000Z
+anchor: 3.0.0
+replaces: []
+lastmod: 2019-09-04T02:46:13.000Z
+---
+
+Pidgin 3.0.0 is the in-development next major version of Pidgin. Its build
+instructions are quite different than Pidgin 2.x.y and have not yet been
+full documented.
--- a/hugo/content/building/_index.md Tue Sep 17 02:32:37 2019 +0000
+++ b/hugo/content/building/_index.md Wed Sep 18 01:24:43 2019 +0000
@@ -3,6 +3,16 @@
date: 2019-01-11T05:44:25.000Z
anchor: building
weight: -100
-lastmod: 2019-01-21T22:34:09.000Z
+lastmod: 2019-09-04T02:46:13.000Z
---
+Building Pidgin can be tricky, but hopefully we've made it pretty clear in the
+following pages. First thing first is that we you need to decide which version
+of Pidgin you are going to build.
+
+If you are just trying to build Pidgin to run it, then you probably want the
+[2.x.y](2.x.y/) release which is our stable version.
+
+If you're interested in developing Pidgin itself or just want to live on the
+edge then you may want to try out the development version which we call
+[3.0.0](3.0.0/).