summaryrefslogtreecommitdiff
path: root/tools/release
diff options
context:
space:
mode:
Diffstat (limited to 'tools/release')
-rwxr-xr-xtools/release101
1 files changed, 101 insertions, 0 deletions
diff --git a/tools/release b/tools/release
new file mode 100755
index 00000000..14e750a6
--- /dev/null
+++ b/tools/release
@@ -0,0 +1,101 @@
+#!/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
+
+# Create files which are in the release but automatically generated
+cd nasm
+./autogen.sh
+./configure --prefix=/usr/local
+make perlreq spec manpages
+make alldeps
+make 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"
+zip -9Dlr ../../nasm-"$version".zip * -x \*.jpg -x \*.zip -x \*.ico # Text files
+zip -9Dgr ../../nasm-"$version".zip * -i \*.jpg -i \*.zip -i \*.ico # Binary files
+cd ..
+
+# Record what we have already generated
+find nasm-"$version" -not -type d -print > main
+
+# Create documentation
+cd nasm-"$version"
+./configure --prefix=/usr/local
+make doc
+# Remove intermediate files.
+make 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)
+# (Note: generating Win .hlp files requires additional tools)
+cd nasm-"$version"
+zip -9Dlr ../../nasm-"$version"-xdoc.zip doc -x \*.pdf -x \*.info\*
+zip -9Dgr ../../nasm-"$version"-xdoc.zip doc -i \*.pdf -i \*.info\*
+
+# Clean up
+cd ../..
+rm -rf "$work"