| #!/bin/bash -xe |
| # |
| # Generate a NASM release |
| # |
| # Usage: release version [destination] |
| # |
| |
| version="$1" |
| if [ -z "$1" ]; then |
| echo "Usage: $0 version [destination]" 1>&2 |
| exit 1 |
| fi |
| |
| WHERE="$2" |
| if [ -z "$WHERE" ]; then |
| WHERE=/var/tmp |
| fi |
| |
| if [ -n "$GIT_DIR" ]; then |
| HERE="$GIT_DIR" |
| else |
| HERE=`pwd` |
| fi |
| |
| if [ x`cat version` != x"${version}" ]; then |
| echo "${version}" > version |
| git update-index version |
| git commit -m "Version ${version}" -- version |
| fi |
| git tag -m "NASM version ${version}" -f "nasm-${version}" |
| |
| cd "$WHERE" |
| rm -rf nasm-release.* |
| work=nasm-release.$$ |
| mkdir $work |
| cd $work |
| unset GIT_DIR |
| git clone -s -l "$HERE" nasm |
| rm -rf nasm/.git nasm/.gitignore |
| |
| # How to invoke make if makej is not set |
| makej="${makej:-make}" |
| |
| # Create files which are in the release but automatically generated |
| cd nasm |
| ./autogen.sh |
| ./configure --prefix=/usr/local |
| $makej perlreq spec manpages |
| $makej alldeps |
| $makej distclean |
| cd .. |
| |
| # Clean up any previous attempt |
| rm -f ../nasm-"$version".tar.gz ../nasm-"$version"-xdoc.tar.gz |
| rm -f ../nasm-"$version".tar.bz2 ../nasm-"$version"-xdoc.tar.bz2 |
| rm -f ../nasm-"$version".tar.xz ../nasm-"$version"-xdoc.tar.xz |
| rm -f ../nasm-"$version".zip ../nasm-"$version"-xdoc.zip |
| |
| # Create tarfile (Unix convention: file includes prefix) |
| mv nasm nasm-"$version" |
| tar cvvf nasm-"$version".tar nasm-"$version" |
| xz -9ek nasm-"$version".tar |
| bzip2 -9k nasm-"$version".tar |
| gzip -9 nasm-"$version".tar |
| mv nasm-"$version".tar.gz nasm-"$version".tar.bz2 nasm-"$version".tar.xz .. |
| |
| # Create zipfile (DOS convention: no prefix, convert file endings) |
| cd nasm-"$version" |
| # Text files |
| zip -9Dlr ../../nasm-"$version".zip * -x \*.jpg -x \*.zip -x \*.ico -x \*.png |
| # Binary files |
| zip -9Dgr ../../nasm-"$version".zip * -i \*.jpg -i \*.zip -i \*.ico -i \*.png |
| cd .. |
| |
| # Record what we have already generated |
| find nasm-"$version" -not -type d -print > main |
| |
| # Create documentation |
| cd nasm-"$version" |
| ./configure --prefix=/usr/local |
| $makej doc |
| # Remove intermediate files. |
| $makej cleaner |
| cd .. |
| |
| # Remove non-documentation |
| cat main | xargs rm -f |
| # Delete empty subdirectories |
| find nasm-"$version"/doc -type d -exec rmdir '{}' \; 2>/dev/null || true |
| |
| # Create doc tarfile |
| tar cvvf nasm-"$version"-xdoc.tar nasm-"$version"/doc |
| xz -9ek nasm-"$version"-xdoc.tar |
| bzip2 -9k nasm-"$version"-xdoc.tar |
| gzip -9 nasm-"$version"-xdoc.tar |
| mv nasm-"$version"-xdoc.tar.gz nasm-"$version"-xdoc.tar.bz2 nasm-"$version"-xdoc.tar.xz .. |
| |
| # Create doc zipfile (DOS convention: no prefix, convert file endings) |
| cd nasm-"$version" |
| zip -9Dlr ../../nasm-"$version"-xdoc.zip doc -x \*.pdf -x \*.png |
| zip -9Dgr ../../nasm-"$version"-xdoc.zip doc -i \*.pdf -i \*.png |
| |
| # Clean up |
| cd ../.. |
| rm -rf "$work" |