Build Gpg4win under GNU/Linux
This example specifically describes how to create a new Gpg4win installer on a Debian GNU/Linux 'Etch' 4.0. In principle, any other GNU/Linux system could be used as well.
Back to overview on building installer
Create a new installer package
The character '#' indicates commands to be executed as administrator (root) and '$' for commands to be executed as regular user.- Install required packages on your Debian GNU/Linux 4.0:
# apt-get install mingw32 nsis stow unzip texinfo imagemagick
# apt-get install libglib2.0-dev tetex-bin tetex-extra gs-common hyperlatex
- Get the sources anonymously (i.e. with out write-access):
$ svn checkout https://svn.wald.intevation.org/svn/gpg4win/trunk/
or download the source code package gpg4win-n.n.n.tar.gz, unpack it and change to the directory gpg4win-n.n.n. We recommend to work with the SVN version if you want to do more that just update a single module for yourself. - Download all necessary Gpg4win modules from Internet:
$ cd packages
$ sh download.sh
(takes some time, especially the first time)
$ cd ..
- If you work with the SVN version:
$ ./autogen.sh
$ ./configure --enable-maintainer-mode --host=i586-mingw32msvc
else:
$ ./configure --host=i586-mingw32msvc
- Now build the Gpg4win installer package:
$ make
That's all. The new installer package is here:
src/gpg4win-n.n.n.exe
The corresponding source code packages (with the sources of all modules, very big!) is here:
src/gpg4win-src-n.n.n.exe
Update a single module for Gpg4win
Fort this task you should have build at least once a new installer package as described above. Consider now we want to update the module gnupg.- First, remove the old version:
$ cd packages
$ rm gnupg-*
- Then download the desired new release, e.g:
$ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2
$ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2.sig
$ gpg --verify gnupg-1.4.3.tar.bz2.sig
Only continue if that latter command shows a valid signature. You will find further hints on this at the href="http://www.gnupg.org/download/integrity_check.html">GnuPG Website. If the module does not provide any signature you should ensure authenticity of the file with another reasonable method. - Build a new installer:
$ cd ..
$ make clean
$ ./configure --host=i586-mingw32msvc
$ make
Attention: From now on your should not execute the script download.sh anymore because it would revert to the previous (i.e. official) version of the module. For a permanent activation of the new module version for the official Gpg4win installer package, the following steps are necessary.
Precondition is that you have write access to the SVN directory (i.e. a user account at wald.intevation.de with developer status for Gpg4win).
- Adapt file
packages.current
accordingly for the new module version (read the head of this file about the syntax) and upload to Subversion repository:
$ svn commit packages.current - Create a signature for this file:
$ gpg -sb packages.current - If haven't so far ever authorized an updated package list,
you need to add your PGP key to the keyring
an den Schlüsselbund
packages.keys
using this command:
$ gpg --export --armor YOUR-KEY-ID > gpg_pub_key.asc
$ gpg --no-default-keyring --keyring ./packages.keys --import gpg_pub_key.asc
A lost of the current keys is shown with this command:
$ gpg packages.keys
- Upload the two files to the Gpg4win website:
$ make update
Integrate a new module into Gpg4win
Hierfür sollte man schon einmal ein Installationspaket wie oben beschrieben For this task you should have at least once created a installer package according to the description above using the SVN version.- For your new module 'MYMOD' first create constants in the file
include/config.nsi.in by adding the following lines:
@HAVE_PKG_MYMOD@
!define gpg4win_pkg_mymod @gpg4win_pkg_mymod@
!define gpg4win_pkg_mymod_version @gpg4win_pkg_mymod_version@
You will find various examples in this file, e.g. see 'HAVE_PKG_WINPT'. - Write the NSIS installation script
src/inst-mymod.nsi
In the same directory you will find many examples to learn from. - Write the NSIS de-installation script
src/uninst-mymod.nsi
In the same directory you will find many examples to learn from. - Extend the NSIS main script
src/inst-sections.nsi
with MYMOD. Do this analogous to existing entries and read the explanations in the comments. - Now add rules for integration into the build process into the file
configure.ac
For this you can use macros from the file
m4/gpg4win.m4
Due to the already integrated modules there are plenty of examples given. A main distinction is between cross-compiled modules and those that have been compiled for Windows elsewhere and integrated as compiled binaries. - Now update the package list
packages/packages.current
as described above. - Gpg4win has to be configured anew for the new module:
$ AUTOMAKE_SUFFIX=-1.9 ./autogen.sh
$ ./configure --enable-maintainer-mode --host=i586-mingw32msvc
- The last step is to build the new package:
$ make
The new installer package is here:
src/gpg4win-n.n.n.exe
The corresponding source code packages (with the sources of all modules, very big!) is here:
src/gpg4win-src-n.n.n.exe
