diff --git a/ci/before_deploy.bash b/ci/before_deploy.bash new file mode 100755 index 00000000..42dd3986 --- /dev/null +++ b/ci/before_deploy.bash @@ -0,0 +1,103 @@ +#!/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 + + tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp) + out_dir=$(pwd) + package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET" + + # create a "staging" directory + mkdir "$tempdir/$package_name" + + # copying the main binary + cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/" + strip "$tempdir/$package_name/$PROJECT_NAME" + + # 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 + ;; + *) + echo "ERROR: unknown target" >&2 + return 1 + ;; + 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" < +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