7fca5494dcaa291b4392599edbbcaa784a099665
[gpg4win.git] / web / build-installer-gnulinux.htm4
1 m4_dnl                                                     -*-html-*-
2 m4_include(`template.m4')
3 m4_dnl $Id$
4
5 m4_define(`EN')
6 m4_define(`DE_FILE', `build-installer-gnulinux-de.html')
7
8 m4_define(`MAIN', `community')
9 m4_define(`TITLE', `Building Gpg4win under GNU/Linux')
10
11 PAGE_START
12
13 <div id="intro">
14 <h2>Building Gpg4win under GNU/Linux</h2>
15 <p>This example specifically describes how to create
16 a new Gpg4win installer on a Debian GNU/Linux 'Wheezy' 7.0.
17 In principle, any other Unix system could be used as well.</p>
18 <p>
19 You might find more recent instructions in the
20 <a href="https://wiki.gnupg.org/Gpg4win/build">GnuPG Wiki</a> and
21 in the README file in the Gpg4win source directory.
22 </p>
23 <p>
24   <a href="build-installer.html">Back to overview on building installer</a>
25 </p>
26 </div>
27
28 <div id="main">
29
30 <h2>Create a new installer package</h2>
31
32 The character '#' indicates commands to be executed as administrator (root)
33 and '$' for commands to be executed as regular user.
34
35 <ol>
36
37 <li> Get the sources:<br>
38      <em>$ git clone git://git.gnupg.org/gpg4win.git</em><br>
39      or download the source code package gpg4win-n.n.n.tar.gz, unpack it and
40      change to the directory gpg4win-n.n.n. We recommend to work
41      with the GIT version if you want to do more that just update a single
42      module for yourself.
43
44 <li> Install required packages listed in the README file in the source directory.<br>
45
46 <li> Download all necessary Gpg4win modules from Internet:<br>
47      <em>$ cd packages</em><br>
48      <em>$ sh download.sh</em><br>
49      (takes some time, especially the first time)<br>
50      <em>$ cd ..</em><br>
51
52 <li> If you work with the GIT version:<br>
53      <em>$ ./autogen.sh</em><br>
54      <em>$ ./autogen --build-w32</em><br>
55      else:<br>
56      <em>$ ./autogen --build-w32</em><br>
57
58 <li> Now build the Gpg4win installer package:<br>
59      <em>$ make</em>
60 </ol>
61
62 <p>
63 That's all. The new installer package is here:<br>
64 <em>src/gpg4win-n.n.n.exe</em><br>
65 The corresponding source code packages (with the sources of all modules, very big!) is here:<br>
66 <em>src/gpg4win-src-n.n.n.exe</em><br>
67 </p>
68
69 <h2>Update a single module for Gpg4win</h2>
70
71 Fort this task you should have build at least once a new installer package as
72 described above. Consider now we want to update the module
73 <em>gnupg</em>.
74
75 <ol>
76 <li> First, remove the old version:<br>
77      <em>$ cd packages</em><br>
78      <em>$ rm gnupg-*</em><br>
79 <li> Then download the desired new release, e.g:<br>
80      <em>$ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2</em><br>
81      <em>$ wget ftp://ftp.gnupg.org/gnupg/gnupg-1.4.3.tar.bz2.sig</em><br>
82      <em>$ gpg --verify gnupg-1.4.3.tar.bz2.sig</em><br>
83      Only continue if that latter command shows a valid signature.
84      You will find further hints on this at the
85      href="http://www.gnupg.org/download/integrity_check.html">GnuPG
86      Website</a>.  If the module does not provide any signature you
87      should ensure authenticity of the file with another reasonable method.
88 <li> Build a new installer:<br>
89      <em>$ cd ..</em><br>
90      <em>$ make clean</em><br>
91      <em>$ ./autogen.sh --build-w32</em><br>
92      <em>$ make</em>
93 </ol>
94
95 <p>
96 Attention: From now on your should not execute the script <em>download.sh</em>
97 anymore because it would revert to the previous (i.e. official) version of the module.
98 For a permanent activation of the new module version for the official Gpg4win
99 installer package, the following step is necessary.
100 </p>
101
102 <ol>
103 <li> Adapt file<br>
104      <em>packages.current</em><br>
105      accordingly for the new module version (read the head of this file about
106      the syntax) and commit the changes.<br>
107     <em>$ git commit packages.current</em>
108
109 <li> Create a patch for this commit:<br>
110     <em>$ git format-patch HEAD~1</em>
111
112 <li>Send this patch to the develoment mailing list gpg4win-devel@wald.intevation.org
113 </ol>
114
115
116
117 <h2>Integrate a new module into Gpg4win</h2>
118
119 Hierf├╝r sollte man schon einmal ein Installationspaket wie oben beschrieben
120 For this task you should have at least once created a installer package
121 according to the description above using the GIT version.
122
123 <ol>
124 <li>For your new module 'MYMOD' first create constants in the file
125     include/config.nsi.in by adding the following lines:<br>
126     <em>@HAVE_PKG_MYMOD@</em><br>
127     <em>!define gpg4win_pkg_mymod @gpg4win_pkg_mymod@</em><br>
128     <em>!define gpg4win_pkg_mymod_version @gpg4win_pkg_mymod_version@</em><br>
129     You will find various examples in this file, e.g. see 'HAVE_PKG_WINPT'.
130
131 <li>Write the NSIS installation script<br>
132     <em>src/inst-mymod.nsi</em><br>
133     In the same directory you will find many examples to learn from.
134
135 <li>Write the NSIS de-installation script<br>
136     <em>src/uninst-mymod.nsi</em><br>
137     In the same directory you will find many examples to learn from.
138
139 <li>Extend the NSIS main script<br>
140     <em>src/inst-sections.nsi</em><br>
141     with MYMOD. Do this analogous to existing entries
142     and read the explanations in the comments.
143
144 <li>Now add rules for integration into the build process into the file<br>
145     <em>configure.ac</em><br>
146     For this you can use macros from the file<br>
147     <em>m4/gpg4win.m4</em><br>
148     Due to the already integrated modules there are plenty
149     of examples given. A main distinction is between cross-compiled
150     modules and those that have been compiled for Windows elsewhere
151     and integrated as compiled binaries.
152
153 <li>Now update the package list<br>
154     <em>packages/packages.current</em><br>
155     as described above.
156
157 <li>Gpg4win has to be configured anew for the new module:<br>
158      <em>$ ./autogen.sh</em><br>
159      <em>$ ./autogen.sh --build-w32</em><br>
160
161 <li>The last step is to build the new package:<br>
162      <em>$ make</em>
163 </ol>
164
165 <p>
166 The new installer package is here:<br>
167 <em>src/gpg4win-n.n.n.exe</em><br>
168 The corresponding source code packages (with the sources of all modules, very big!) is here:<br>
169 <em>src/gpg4win-src-n.n.n.exe</em><br>
170 </p>
171 </div>