Merge package-source.bash & package-static.bash scripts

This commit is contained in:
Jakob Unterwurzacher 2021-05-15 18:28:11 +02:00
parent 4488b5b93a
commit c33c7aaf0d
3 changed files with 97 additions and 67 deletions

97
package-release-tarballs.bash Executable file
View File

@ -0,0 +1,97 @@
#!/bin/bash
set -eu
cd "$(dirname "$0")"
SIGNME=""
# git_archive_extra PREFIX EXTRA1 [EXTRA2 ...]
#
# Call git-archive and add additional files to the tarball.
# Output tarball is called "$PREFIX.tar.gz" and contains one folder
# called "$PREFIX".
git_archive_extra() {
local PREFIX=$1
shift
# Add files tracked in git
git archive --prefix "$PREFIX/" -o "$PREFIX.tar" HEAD
# Add "extra" files
tar --owner=root --group=root --transform "s!^!$PREFIX/!" --append -f "$PREFIX.tar" "$@"
# Compress
gzip -f "$PREFIX.tar"
}
package_source() {
local GITVERSION
GITVERSION=$(git describe --tags --dirty)
echo "$GITVERSION" > VERSION
# Render the manpages and include them in the tarball. This
# avoids a build-dependency to pandoc.
./Documentation/MANPAGE-render.bash
# gocryptfs source tarball
local PREFIX_SRC_ONLY=gocryptfs_${GITVERSION}_src
git_archive_extra "$PREFIX_SRC_ONLY" VERSION Documentation/*.1
# gocryptfs source + dependencies tarball
go mod vendor
local PREFIX_SRC_DEPS=gocryptfs_${GITVERSION}_src-deps
git_archive_extra "$PREFIX_SRC_DEPS" VERSION Documentation/*.1 vendor
rm VERSION
rm -R vendor
echo "Tars created."
SIGNME+=" $PREFIX_SRC_ONLY.tar.gz $PREFIX_SRC_DEPS.tar.gz"
}
package_static_binary() {
# Compiles the gocryptfs binary and sets $GITVERSION
source build-without-openssl.bash
if ldd gocryptfs > /dev/null ; then
echo "error: compiled gocryptfs binary is not static"
exit 1
fi
# Build man pages gocryptfs.1 & gocryptfs-xray.1
./Documentation/MANPAGE-render.bash > /dev/null
local ARCH
ARCH=$(go env GOARCH)
local OS
OS=$(go env GOOS)
local TARBALL
TARBALL=gocryptfs_${GITVERSION}_${OS}-static_${ARCH}.tar
local TARGZ
TARGZ=$TARBALL.gz
tar --owner=root --group=root --create -vf "$TARBALL" gocryptfs
tar --owner=root --group=root --append -vf "$TARBALL" -C gocryptfs-xray gocryptfs-xray
tar --owner=root --group=root --append -vf "$TARBALL" -C Documentation gocryptfs.1 gocryptfs-xray.1
gzip -f "$TARBALL"
echo "Tar created."
SIGNME+=" $TARGZ"
}
signing_hint() {
local GITVERSION
GITVERSION=$(git describe --tags --dirty)
echo "Hint for signing:"
echo " for i in gocryptfs_${GITVERSION}_*.tar.gz ; do gpg -u 23A02740 --armor --detach-sig \$i ; done"
}
if git describe --dirty | grep dirty ; then
echo "Tree is dirty - I will not package this!"
exit 1
fi
package_source
package_static_binary
signing_hint

View File

@ -1,38 +0,0 @@
#!/bin/bash -eu
# git_archive_extra PREFIX EXTRA1 [EXTRA2 ...]
# Call git-archive and add additional files to the tarball.
git_archive_extra() {
local PREFIX=$1
shift
# Add files tracked in git
git archive --prefix "$PREFIX/" -o "$PREFIX.tar" HEAD
# Add "extra" files
tar --owner=root --group=root --transform "s!^!$PREFIX/!" --append -f "$PREFIX.tar" "$@"
# Compress
gzip -f "$PREFIX.tar"
}
cd "$(dirname "$0")"
GITVERSION=$(git describe --tags --dirty)
echo "$GITVERSION" > VERSION
# Render the manpages and include them in the tarball. This
# avoids a build-dependency to pandoc.
./Documentation/MANPAGE-render.bash
# gocryptfs source tarball
PREFIX_SRC_ONLY=gocryptfs_${GITVERSION}_src
git_archive_extra "$PREFIX_SRC_ONLY" VERSION Documentation/*.1
# gocryptfs source + dependencies tarball
go mod vendor
PREFIX_SRC_DEPS=gocryptfs_${GITVERSION}_src-deps
git_archive_extra "$PREFIX_SRC_DEPS" VERSION Documentation/*.1 vendor
rm VERSION
echo "Tars created."
echo "Hint for signing: gpg -u 23A02740 --armor --detach-sig $PREFIX_SRC_ONLY.tar.gz"
echo " gpg -u 23A02740 --armor --detach-sig $PREFIX_SRC_DEPS.tar.gz"

View File

@ -1,29 +0,0 @@
#!/bin/bash -eu
cd "$(dirname "$0")"
# Compiles the gocryptfs binary and sets $GITVERSION
source build-without-openssl.bash
if ldd gocryptfs > /dev/null ; then
echo "error: compiled gocryptfs binary is not static"
exit 1
fi
# Build man pages gocryptfs.1 & gocryptfs-xray.1
./Documentation/MANPAGE-render.bash > /dev/null
ARCH=$(go env GOARCH)
OS=$(go env GOOS)
TARBALL=gocryptfs_${GITVERSION}_${OS}-static_${ARCH}.tar
TARGZ=$TARBALL.gz
tar --owner=root --group=root --create -vf "$TARBALL" gocryptfs
tar --owner=root --group=root --append -vf "$TARBALL" -C gocryptfs-xray gocryptfs-xray
tar --owner=root --group=root --append -vf "$TARBALL" -C Documentation gocryptfs.1 gocryptfs-xray.1
gzip -f "$TARBALL"
echo "Tar created."
echo "Hint for signing: gpg -u 23A02740 --armor --detach-sig $TARGZ"