2018-04-22 15:35:24 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# Building and packaging for release
|
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
|
|
|
build() {
|
|
|
|
cargo build --target "$TARGET" --release --verbose
|
|
|
|
}
|
|
|
|
|
|
|
|
pack() {
|
|
|
|
local tempdir
|
|
|
|
local out_dir
|
|
|
|
local package_name
|
2018-08-18 21:51:19 +02:00
|
|
|
local gcc_prefix
|
2018-04-22 15:35:24 +02:00
|
|
|
|
|
|
|
tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
|
|
|
|
out_dir=$(pwd)
|
|
|
|
package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET"
|
|
|
|
|
2018-08-18 21:51:19 +02:00
|
|
|
if [[ $TARGET == "arm-unknown-linux-gnueabihf" ]]; then
|
|
|
|
gcc_prefix="arm-linux-gnueabihf-"
|
|
|
|
else
|
|
|
|
gcc_prefix=""
|
|
|
|
fi
|
|
|
|
|
2018-04-22 15:35:24 +02:00
|
|
|
# create a "staging" directory
|
|
|
|
mkdir "$tempdir/$package_name"
|
|
|
|
|
|
|
|
# copying the main binary
|
|
|
|
cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/"
|
2018-08-18 21:51:19 +02:00
|
|
|
"${gcc_prefix}"strip "$tempdir/$package_name/$PROJECT_NAME"
|
2018-04-22 15:35:24 +02:00
|
|
|
|
|
|
|
# readme and license
|
|
|
|
cp README.md "$tempdir/$package_name"
|
|
|
|
cp LICENSE-MIT "$tempdir/$package_name"
|
|
|
|
cp LICENSE-APACHE "$tempdir/$package_name"
|
|
|
|
|
|
|
|
# archiving
|
|
|
|
pushd "$tempdir"
|
|
|
|
tar czf "$out_dir/$package_name.tar.gz" "$package_name"/*
|
|
|
|
popd
|
|
|
|
rm -r "$tempdir"
|
|
|
|
}
|
|
|
|
|
|
|
|
make_deb() {
|
|
|
|
local tempdir
|
|
|
|
local architecture
|
|
|
|
local version
|
|
|
|
local dpkgname
|
|
|
|
local conflictname
|
|
|
|
|
|
|
|
case $TARGET in
|
|
|
|
x86_64*)
|
|
|
|
architecture=amd64
|
|
|
|
;;
|
|
|
|
i686*)
|
|
|
|
architecture=i386
|
|
|
|
;;
|
|
|
|
*)
|
2018-08-18 21:51:19 +02:00
|
|
|
echo "make_deb: skipping target '${TARGET}'" >&2
|
|
|
|
return 0
|
2018-04-22 15:35:24 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
version=${TRAVIS_TAG#v}
|
|
|
|
if [[ $TARGET = *musl* ]]; then
|
|
|
|
dpkgname=$PROJECT_NAME-musl
|
|
|
|
conflictname=$PROJECT_NAME
|
|
|
|
else
|
|
|
|
dpkgname=$PROJECT_NAME
|
|
|
|
conflictname=$PROJECT_NAME-musl
|
|
|
|
fi
|
|
|
|
|
|
|
|
tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
|
|
|
|
|
|
|
|
# copy the main binary
|
|
|
|
install -Dm755 "target/$TARGET/release/$PROJECT_NAME" "$tempdir/usr/bin/$PROJECT_NAME"
|
|
|
|
strip "$tempdir/usr/bin/$PROJECT_NAME"
|
|
|
|
|
|
|
|
# readme and license
|
|
|
|
install -Dm644 README.md "$tempdir/usr/share/doc/$PROJECT_NAME/README.md"
|
|
|
|
install -Dm644 LICENSE-MIT "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-MIT"
|
|
|
|
install -Dm644 LICENSE-APACHE "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-APACHE"
|
|
|
|
|
|
|
|
# Control file
|
|
|
|
mkdir "$tempdir/DEBIAN"
|
|
|
|
cat > "$tempdir/DEBIAN/control" <<EOF
|
|
|
|
Package: $dpkgname
|
|
|
|
Version: $version
|
|
|
|
Section: utils
|
|
|
|
Priority: optional
|
|
|
|
Maintainer: David Peter <mail@david-peter.de>
|
|
|
|
Architecture: $architecture
|
|
|
|
Provides: $PROJECT_NAME
|
|
|
|
Conflicts: $conflictname
|
|
|
|
Description: A cat(1) clone with wings.
|
|
|
|
EOF
|
|
|
|
|
|
|
|
fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
main() {
|
|
|
|
build
|
|
|
|
pack
|
|
|
|
if [[ $TARGET = *linux* ]]; then
|
|
|
|
make_deb
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
main
|