1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
#!/bin/sh
#
# Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
set -e
cd dist-w32
tmp="`echo $0 | sed 's,.*gnupg-\([^/]*\)/.*,\1,'`"
topdir=
bindir=..
if [ -f "../gnupg-$tmp/README" ]; then
srcdir="../gnupg-$tmp"
bindir="../gnupg-$tmp"
topdir=".."
elif [ -f ../README ]; then
srcdir=..
elif [ -f ../../README ]; then
srcdir=../..
bindir=..
elif [ -f ../../gnupg-stable/README ]; then
srcdir=../../gnupg-stable
elif [ -f ../../../gnupg-stable/README ]; then
srcdir=../../../gnupg-stable
else
echo "cannot figure out the source dir" >&2
exit 1
fi
if i586-mingw32msvc-strip --version >/dev/null 2>&1 ; then
STRIP=i586-mingw32msvc-strip
else
STRIP="mingw32 strip"
fi
# If we don't have an installer we don't need to prepare for it.
if ! makensis -version >/dev/null 2>&1 ; then
topdir=
fi
# Figure out the version
version=$(sed -n 's/^#[ ]*define[ ][ ]*VERSION[ ][ ]*\"\([0-9.a-z-]*\)\"/\1/p' $bindir/config.h)
prod_version=$(echo "$version"|awk -F'[^0-9]' '{print $1 "." $2 "." $3 ".1"}')
echo "building version $version ($prod_version)"
rm * >/dev/null 2>/dev/null || true
cp ${bindir}/g10/gpg.exe gpg.exe
$STRIP gpg.exe
cp ${bindir}/g10/gpgv.exe gpgv.exe
$STRIP gpgv.exe
for name in hkp http ldap finger; do
cp ${bindir}/keyserver/gpgkeys_$name.exe gpgkeys_$name.exe
$STRIP gpgkeys_$name.exe
done
cp ${bindir}/tools/gpgsplit.exe gpgsplit.exe
$STRIP gpgsplit.exe
for i in FAQ; do
cp ${bindir}/doc/$i $i.txt
todos $i.txt
done
man -Tlatin1 -l ${srcdir}/doc/gpg.1 | sed `printf "s/\b.//g"` >gpg.man
todos gpg.man
man -Tlatin1 -l ${srcdir}/doc/gpgv.1 | sed `printf "s/\b.//g"` >gpgv.man
todos gpgv.man
man -Tlatin1 -l ${srcdir}/doc/gnupg.7 | sed `printf "s/\b.//g"` >gnupg.man
todos gnupg.man
for i in README COPYING NEWS; do
cp ${srcdir}/$i $i.txt
todos $i.txt
done
for i in README.W32 ; do
cp ${srcdir}/doc/$i $i.txt
todos $i.txt
done
for i in gnupg-w32.reg; do
cp ${srcdir}/doc/$i .
todos $i
done
# We must distribute the MO files in UTF-8, the conversion is done by
# gpg at runtime.
for i in ${srcdir}/po/*.po; do
lang=$(basename $i .po)
grep -s $lang ${srcdir}/po/LINGUAS >/dev/null || continue
[ -f$lang.mo -a $lang.mo -nt $i ] && continue
fromset=`sed -n '/^"Content-Type:/ s/.*charset=\([a-zA-Z0-9_-]*\).*/\1/p' $i`
case "$fromset" in
utf8|utf-8|UTF8|UTF-8)
echo "$lang: keeping $fromset" >&2
msgfmt --output-file=$lang.mo $i
;;
*)
echo "$lang: converting from $fromset to utf-8" >&2
iconv --silent --from-code=$fromset --to-code=utf-8 < $i | \
sed "/^\"Content-Type:/ s/charset=[a-zA-Z0-9_-]*/charset=utf-8/" | \
msgfmt --output-file=$lang.mo -
;;
esac
done
# If we have a topdir, assume the full build environment and
# prepare the installer
if [ -n "$topdir" ]; then
winpt_defs=
src_defs=
buildinfo="`date -u '+%Y-%m-%d %H:%M UTC'`"
# iconv.dll is a hard requirement
if [ ! -f "$topdir/iconv/iconv.dll" ]; then
echo "iconv.dll not availavle" >&2
exit 1
fi
ln "$topdir/iconv/iconv.dll" iconv.dll
for i in COPYING.LIB README.iconv; do
cp ${topdir}/iconv/$i $i.txt
todos $i.txt
done
# WinPT is optional
if [ -f "$topdir/winpt/WinPT.exe" ]; then
ln "$topdir/winpt/WinPT.exe" WinPT.exe
ln "$topdir/winpt/PTD.dll" PTD.dll
cp "$topdir/winpt/README-0.9.txt" README.winpt.txt
cp "$topdir/winpt/NEWS-0.9.txt" NEWS.winpt.txt
cp "$topdir/winpt/keyserver.conf" keyserver.conf
winpt_defs="-DWITH_WINPT"
fi
# See whether we should include the source.
if [ ! -d "$topdir/tarballs" ]; then
# FIXME
:
fi
# Now run the installer
echo "invoking installer as:"
echo makensis -v2 -nocd -DVERSION="${version}" \
-DPROD_VERSION="${prod_version}" \
-DGNUPG_SRCDIR="${srcdir}" ${winpt_defs} ${src_defs} \
${srcdir}/scripts/w32installer.nsi
BUILDINFO=$buildinfo makensis -v2 -nocd -DVERSION="${version}" \
-DPROD_VERSION="${prod_version}" \
-DGNUPG_SRCDIR="${srcdir}" ${winpt_defs} ${src_defs} \
${srcdir}/scripts/w32installer.nsi
echo "Installer created" >&2
else
zip -9 "gnupg-w32cli-${version}.zip" *
echo "ZIP archive created" >&2
fi
|