release 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash -xe
  2. #
  3. # Generate a NASM release
  4. #
  5. # Usage: release version [destination]
  6. #
  7. version="$1"
  8. if [ -z "$1" ]; then
  9. echo "Usage: $0 version [destination]" 1>&2
  10. exit 1
  11. fi
  12. WHERE="$2"
  13. if [ -z "$WHERE" ]; then
  14. WHERE=/var/tmp
  15. fi
  16. if [ -n "$GIT_DIR" ]; then
  17. HERE="$GIT_DIR"
  18. else
  19. HERE=`pwd`
  20. fi
  21. if [ x`cat version` != x"${version}" ]; then
  22. echo "${version}" > version
  23. git update-index version
  24. git commit -m "Version ${version}" -- version
  25. fi
  26. git tag -m "NASM version ${version}" -f "nasm-${version}"
  27. cd "$WHERE"
  28. rm -rf nasm-release.*
  29. work=nasm-release.$$
  30. mkdir $work
  31. cd $work
  32. unset GIT_DIR
  33. git clone -s -l "$HERE" nasm
  34. rm -rf nasm/.git nasm/.gitignore
  35. # How to invoke make if makej is not set
  36. makej="${makej:-make}"
  37. # Create files which are in the release but automatically generated
  38. cd nasm
  39. ./autogen.sh
  40. ./configure --prefix=/usr/local
  41. $makej perlreq spec manpages
  42. $makej alldeps
  43. $makej distclean
  44. cd ..
  45. # Clean up any previous attempt
  46. rm -f ../nasm-"$version".tar.gz ../nasm-"$version"-xdoc.tar.gz
  47. rm -f ../nasm-"$version".tar.bz2 ../nasm-"$version"-xdoc.tar.bz2
  48. rm -f ../nasm-"$version".tar.xz ../nasm-"$version"-xdoc.tar.xz
  49. rm -f ../nasm-"$version".zip ../nasm-"$version"-xdoc.zip
  50. # Create tarfile (Unix convention: file includes prefix)
  51. mv nasm nasm-"$version"
  52. tar cvvf nasm-"$version".tar nasm-"$version"
  53. xz -9ek nasm-"$version".tar
  54. bzip2 -9k nasm-"$version".tar
  55. gzip -9 nasm-"$version".tar
  56. mv nasm-"$version".tar.gz nasm-"$version".tar.bz2 nasm-"$version".tar.xz ..
  57. # Create zipfile (DOS convention: no prefix, convert file endings)
  58. cd nasm-"$version"
  59. # Text files
  60. zip -9Dlr ../../nasm-"$version".zip * -x \*.jpg -x \*.zip -x \*.ico -x \*.png
  61. # Binary files
  62. zip -9Dgr ../../nasm-"$version".zip * -i \*.jpg -i \*.zip -i \*.ico -i \*.png
  63. cd ..
  64. # Record what we have already generated
  65. find nasm-"$version" -not -type d -print > main
  66. # Create documentation
  67. cd nasm-"$version"
  68. ./configure --prefix=/usr/local
  69. $makej doc
  70. # Remove intermediate files.
  71. $makej cleaner
  72. cd ..
  73. # Remove non-documentation
  74. cat main | xargs rm -f
  75. # Delete empty subdirectories
  76. find nasm-"$version"/doc -type d -exec rmdir '{}' \; 2>/dev/null || true
  77. # Create doc tarfile
  78. tar cvvf nasm-"$version"-xdoc.tar nasm-"$version"/doc
  79. xz -9ek nasm-"$version"-xdoc.tar
  80. bzip2 -9k nasm-"$version"-xdoc.tar
  81. gzip -9 nasm-"$version"-xdoc.tar
  82. mv nasm-"$version"-xdoc.tar.gz nasm-"$version"-xdoc.tar.bz2 nasm-"$version"-xdoc.tar.xz ..
  83. # Create doc zipfile (DOS convention: no prefix, convert file endings)
  84. cd nasm-"$version"
  85. zip -9Dlr ../../nasm-"$version"-xdoc.zip doc -x \*.pdf -x \*.png
  86. zip -9Dgr ../../nasm-"$version"-xdoc.zip doc -i \*.pdf -i \*.png
  87. # Clean up
  88. cd ../..
  89. rm -rf "$work"