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
|
#!/bin/bash -xe
here=/home/nasmbuild/work
patchdir=/home/nasmbuild/patches
snapdir=/pub/nasm/snapshots
reldir=/pub/nasm/releasebuilds
repo=/pub/git/nasm/nasm.git
DOS4GW=/usr/share/openwatcom/binw/dos4gw.exe
CWSDPMI=/home/nasmbuild/cwsdpmi
READMES=/home/nasmbuild/readmes
export PATH=/home/nasmbuild/bin:/bin:/usr/bin:/usr/local/bin:/opt/watcom/bin
cd $here
if [ `whoami` != nasmbuild ]; then
echo "$0: run me as nasmbuild, please" 1>&2
exit 1
fi
build () {
version="$1"
outdir="$2"
gitdir="$3"
rev="$4"
cpus=$(grep '^processor' < /proc/cpuinfo | wc -l)
jobs=$((cpus+2))
makej="make -j$jobs"
rm -rf nasm-* win32 dos os2 rpmbuild
mkdir -p rpmbuild/{BUILD,RPMS,SRPMS,SPECS,SOURCES}
(
cd "$gitdir"
if [ -d "$patchdir"/"$version" ]; then
for p in "$patchdir"/"$version"/*; do
git am "$p"
done
fi
./misc/release $version $here
)
do32 rpmbuild --target i386 -ta nasm-$version.tar.bz2
rpmbuild --target x86_64 -ta nasm-$version.tar.bz2
tar xfj nasm-$version.tar.bz2
tar xfj nasm-$version-xdoc.tar.bz2
mkdir -p win32
cp -a nasm-$version win32
cd win32/nasm-$version
LDFLAGS='-s' ./configure --host=i386-mingw32
$makej
cd ..
zip -9Dl ../nasm-$version-win32.zip nasm-$version/COPYING
zip -9Drg ../nasm-$version-win32.zip nasm-$version -i \*.exe
cd ..
mkdir -p dos
cp -a nasm-$version dos
cd dos/nasm-$version
LDFLAGS='-s' ./configure --host=i586-pc-msdosdjgpp
$makej
mv doc/nasmdoc.txt .
cp $READMES/dos README
cp $CWSDPMI/bin/cwsdpmi.{exe,doc} .
cd ..
zip -9Dl ../nasm-$version-dos.zip nasm-$version/{COPYING,README,nasmdoc.txt,cwsdpmi.doc}
zip -9Drg ../nasm-$version-dos.zip nasm-$version -i \*.exe
find nasm-$version -name \*.exe -a -not -name cwsdpmi.exe -type f -print0 | \
xargs -0r time upx -q --lzma --best --all-filters
zip -9Dl ../nasm-$version-dos-upx.zip nasm-$version/{COPYING,README,nasmdoc.txt,cwsdpmi.doc}
zip -9Drg ../nasm-$version-dos-upx.zip nasm-$version -i \*.exe
cd ..
mkdir -p os2
cp -a nasm-$version os2
cd os2/nasm-$version
make -f Mkfiles/owlinux.mak os2
cd ..
zip -9Dl ../nasm-$version-os2.zip nasm-$version/COPYING
zip -9Drg ../nasm-$version-os2.zip nasm-$version -i \*.exe
cd ..
rm -rf "$gitdir" nasm-$version
mkdir -p "$outdir"
echo "$rev" > "$outdir"/git.id
mv -f nasm-${version}*.tar.* nasm-${version}*.zip "$outdir"
find rpmbuild -name \*.rpm -exec mv -f '{}' "$outdir" \;
echo "$version" "$rev" >> build-ids
}
rm -rf git git-rel
today=$(date +%Y%m%d)
git clone -s -l $repo git
HEAD=$(cd git && git rev-parse HEAD)
#
# Test run?
#
if [ x"$1" = xtest ]; then
rm -rf /var/tmp/nasmtest
build $(cat git/version)-test /var/tmp/nasmtest git "$HEAD"
exit 0
fi
#
# Tagged releases...
#
(cd git && git tag) | while read tag; do
: $tag
case "$tag" in
nasm-0.99.0[5-9]|nasm-0.99.[1-9]*|nasm-[1-9]*)
rel_version=$(echo "$tag" | sed -e 's/^nasm-//')
if [ ! -d "$reldir"/"$rel_version" ]; then
git clone -s -l -n git git-rel
( cd git-rel && git checkout "$tag" )
tagref=$(cd git-rel && git rev-parse "$tag")
build "$rel_version" "$reldir"/"$rel_version" git-rel "$tagref"
fi
;;
esac
done
#
# Daily snapshot...
#
if [ x$HEAD = x$(cat LAST_HEAD) ]; then
exit 0
fi
if [ -d "$snapdir"/$today ]; then
# We already did a build today...
exit 0
fi
snap_version=$(cat git/version)-$today
build "$snap_version" "$snapdir"/$today git "$HEAD"
echo "$HEAD" > LAST_HEAD
( cd $snapdir && rm -f latest && ln -s $today latest )
|