diff options
| -rwxr-xr-x | package-release-tarballs.bash | 97 | ||||
| -rwxr-xr-x | package-source.bash | 38 | ||||
| -rwxr-xr-x | package-static.bash | 29 | 
3 files changed, 97 insertions, 67 deletions
| diff --git a/package-release-tarballs.bash b/package-release-tarballs.bash new file mode 100755 index 0000000..ac651bf --- /dev/null +++ b/package-release-tarballs.bash @@ -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 diff --git a/package-source.bash b/package-source.bash deleted file mode 100755 index cdd9923..0000000 --- a/package-source.bash +++ /dev/null @@ -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" diff --git a/package-static.bash b/package-static.bash deleted file mode 100755 index ce8cecb..0000000 --- a/package-static.bash +++ /dev/null @@ -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" | 
