Building Gpg4win under GNU/Linux
This example specifically describes how to create a new Gpg4win installer on a Debian GNU/Linux 'Wheezy' 7.0. In principle, any other Unix system could be used as well.
You might find more recent instructions in the GnuPG Wiki and in the README file in the Gpg4win source directory.
Create a new installer package
The character '#' indicates commands to be executed as administrator (root) and '$' for commands to be executed as regular user.- Get the sources:
$ git clone git://git.gnupg.org/gpg4win.git
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 GIT version if you want to do more that just update a single module for yourself. - Install required packages listed in the README file in the source directory.
- 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 GIT version:
$ ./autogen.sh
$ ./autogen.sh --build-w32
else:
$ ./autogen.sh --build-w32
- 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
$ ./autogen.sh --build-w32
$ 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 step is necessary.
- Adapt file
packages.current
accordingly for the new module version (read the head of this file about the syntax) and commit the changes.
$ git commit packages.current - Create a patch for this commit:
$ git format-patch HEAD~1 - Send this patch to the develoment mailing list gpg4win-devel@wald.intevation.org
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 GIT 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:
$ ./autogen.sh
$ ./autogen.sh --build-w32
- 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