98 lines
2.3 KiB
Bash
98 lines
2.3 KiB
Bash
|
#!/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
|