prepare_dist_from_git.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/bash
  2. set -e
  3. THIS_SCRIPT=`basename "$0"`
  4. function usage
  5. {
  6. echo "$THIS_SCRIPT <GIT_URL> <GIT_BRANCH> [<SRC_DIR>] [<GPG_KEY>]"
  7. }
  8. function gpg_sign
  9. {
  10. FILE="$1"
  11. rm -f "$FILE".sig
  12. $GPG --batch --use-agent --detach-sign --local-user "$GPG_KEY" \
  13. "$FILE"
  14. }
  15. function maybe_gpg_sign
  16. {
  17. [[ -e "$1" ]] && gpg_sign "$1"
  18. }
  19. function command_exists
  20. {
  21. type "$1" &>/dev/null
  22. }
  23. function find_archiver
  24. {
  25. command_exists "$1" && echo "$1" || echo ':'
  26. }
  27. GIT_URL="$1"
  28. if [[ -z "$GIT_URL" ]] ; then
  29. usage
  30. exit 1
  31. fi
  32. GIT_BRANCH="$2"
  33. if [[ -z "$GIT_BRANCH" ]] ; then
  34. usage
  35. exit 1
  36. fi
  37. if [[ -z "$3" ]] ; then
  38. SRC_DIR=$GIT_BRANCH
  39. else
  40. SRC_DIR="$3"
  41. fi
  42. if [[ ! -z "$4" ]] ; then
  43. GPG_KEY="$4"
  44. else
  45. GPG_KEY=
  46. fi
  47. DEST_DIR="$PWD"
  48. TMPDIR=${TMPDIR:-${TMP:-${TEMP}}}
  49. if [[ -z "${TMPDIR}" ]] ; then
  50. unset TMPDIR
  51. else
  52. export TMPDIR
  53. fi
  54. TMP_DIR=`mktemp -d -t log4cplus.XXXXXXX`
  55. pushd "$TMP_DIR"
  56. TAR=${TAR:-$(find_archiver tar)}
  57. XZ=${XZ:-$(find_archiver xz)}
  58. BZIP2=${BZIP2:-$(find_archiver bzip2)}
  59. GZIP=${GZIP:-$(find_archiver gzip)}
  60. SEVENZA=${SEVENZA:-$(find_archiver 7za)}
  61. LRZIP=${LRZIP:-$(find_archiver lrzip)}
  62. GIT=${GIT:-git}
  63. GPG=${GPG:-gpg}
  64. $GIT clone -v --depth=1 "$GIT_URL" -b "$GIT_BRANCH" "$SRC_DIR"
  65. (cd "$SRC_DIR" && $GIT rev-parse @ >REVISION)
  66. rm -rf "$SRC_DIR/.git"
  67. pushd "$SRC_DIR"
  68. $SHELL ./scripts/fix-timestamps.sh
  69. popd
  70. $SEVENZA a -t7z "$DEST_DIR/$SRC_DIR".7z "$SRC_DIR" >/dev/null \
  71. & $SEVENZA a -tzip "$DEST_DIR/$SRC_DIR".zip "$SRC_DIR" >/dev/null
  72. TAR_FILE="$SRC_DIR".tar
  73. $TAR -c --format=posix -f "$TAR_FILE" "$SRC_DIR"
  74. $XZ -e -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".xz \
  75. & $BZIP2 -9 -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".bz2 \
  76. & $GZIP -9 -c "$TAR_FILE" >"$DEST_DIR/$TAR_FILE".gz \
  77. & $LRZIP -q -o - "$TAR_FILE" |([[ "$LRZIP" = ":" ]] && cat >/dev/null || cat >"$DEST_DIR/$TAR_FILE".lrz)
  78. echo waiting for tarballs...
  79. wait
  80. echo done waiting
  81. if [[ ! -z "$GPG_KEY" ]] ; then
  82. maybe_gpg_sign "$DEST_DIR/$SRC_DIR".7z
  83. maybe_gpg_sign "$DEST_DIR/$SRC_DIR".zip
  84. maybe_gpg_sign "$DEST_DIR/$TAR_FILE".xz
  85. maybe_gpg_sign "$DEST_DIR/$TAR_FILE".bz2
  86. maybe_gpg_sign "$DEST_DIR/$TAR_FILE".gz
  87. maybe_gpg_sign "$DEST_DIR/$TAR_FILE".lrz
  88. fi
  89. rm -rf "$SRC_DIR"
  90. rm -f "$TAR_FILE"
  91. popd
  92. rmdir "$TMP_DIR"