diff --git a/tools/build-release.sh b/tools/build-release.sh index 4e29d35f3..3a6252241 100755 --- a/tools/build-release.sh +++ b/tools/build-release.sh @@ -13,19 +13,58 @@ if [ x"$1" = x"--inside-docker" ]; then exit 0 fi -if [ "$(git status --porcelain -u no)" != "" ]; then +ALL_TARGETS="bin-Fedora-28-amd64 bin-Ubuntu-16.04-amd64 bin-Ubuntu-16.04-i386 tarball sign" + +FORCE_VERSION= +FORCE_UNCLEAN=false + +for arg; do + case "$arg" in + --force-version=*) + FORCE_VERSION=${arg#*=} + ;; + --force-unclean) + FORCE_UNCLEAN=true + ;; + --help) + echo "Usage: [--force-version=] [--force-unclean] [TARGETS]" + echo Known targets: "$ALL_TARGETS" + exit 0 + ;; + -*) + echo "Unknown arg $arg" >&2 + exit 1 + ;; + *) + break + ;; + esac + shift +done + +if [ "$#" = 0 ]; then + TARGETS=" $ALL_TARGETS " +else + TARGETS=" $* " +fi + +if [ "$(git status --porcelain -u no)" != "" ] && ! $FORCE_UNCLEAN; then echo "Not a clean git directory" >&2 exit 1 fi VERSION=$(git tag --points-at HEAD) +VERSION=${VERSION:-$FORCE_VERSION} if [ "$VERSION" = "" ]; then echo "No tagged version at HEAD?" >&2 exit 1 fi +rm -rf release mkdir -p release -for platform in Fedora-28-amd64 Ubuntu-16.04-amd64 Ubuntu-16.04-i386; do +for target in $TARGETS; do + platform=${target#bin-} + [ "$platform" != "$target" ] || continue case $platform in Fedora-28-amd64) DOCKERFILE=contrib/Dockerfile.builder.fedora @@ -49,13 +88,16 @@ for platform in Fedora-28-amd64 Ubuntu-16.04-amd64 Ubuntu-16.04-i386; do docker run --rm=true -w /build $TAG rm -rf /"$VERSION-$platform" /build done -# git archive won't go into submodules :( -ln -sf .. "release/clightning-$VERSION" -FILES=$(git ls-files --recurse-submodules | sed "s,^,clightning-$VERSION/,") -# shellcheck disable=SC2086 -(cd release && zip "clightning-$VERSION.zip" $FILES) -rm "release/clightning-$VERSION" -exit 0 +if [ -z "${TARGETS##* tarball *}" ]; then + # git archive won't go into submodules :( + ln -sf .. "release/clightning-$VERSION" + FILES=$(git ls-files --recurse-submodules | sed "s,^,clightning-$VERSION/,") + # shellcheck disable=SC2086 + (cd release && zip "clightning-$VERSION.zip" $FILES) + rm "release/clightning-$VERSION" +fi -sha256sum release/clightning-"$VERSION"* > release/SHA256SUMS -gpg -sb --armor -o release/SHA256SUMS.asc-"$(gpgconf --list-options gpg | awk -F: '$1 == "default-key" {print $10}' | tr -d '"')" release/SHA256SUMS +if [ -z "${TARGETS##* sign *}" ]; then + sha256sum release/clightning-"$VERSION"* > release/SHA256SUMS + gpg -sb --armor -o release/SHA256SUMS.asc-"$(gpgconf --list-options gpg | awk -F: '$1 == "default-key" {print $10}' | tr -d '"')" release/SHA256SUMS +fi