nasm/tools/release
H. Peter Anvin b68edcac72 tools/release: make doesn't like MAKE in the environment, so call it makej
make really doesn't like something called MAKE in the environment, so
call it makej like buildall.sh on the server.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2017-04-18 10:52:05 -07:00

105 lines
2.6 KiB
Bash
Executable file

#!/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"