#!/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 web=/home/www/nasm 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 html 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 cp -a nasm-$version/doc/html . 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 } # This gets run for real (tagged) releases process_release () { rm -rf $web/docs/"$1" cp -a html $web/docs/"$1" case "$1" in *rc*) # -rc release update_version "$1" $web/version.inc ;; *) if update_version "$1" $web/version.inc; then ( cd $web && ln -sf docs/"$1" doc ) fi ;; esac } 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" process_release "$rel_version" 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 )