mirror of
https://github.com/sharkdp/hyperfine.git
synced 2026-10-29 08:38:56 +00:00
* Update basic benchmark example * Clarify warm up example * Add manpage to generated tarballs and debs (bit of YOLO here, need to spin an instance to verify build output but the additions as modeled from fd are innocuous)
109 lines
2.6 KiB
Bash
Executable File
109 lines
2.6 KiB
Bash
Executable File
#!/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"
|
|
|
|
# manpage, readme and license
|
|
cp "doc/$PROJECT_NAME.1" "$tempdir/$package_name"
|
|
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"
|
|
|
|
# manpage
|
|
install -Dm644 "doc/$PROJECT_NAME.1" "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
|
|
gzip --best "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
|
|
|
|
# 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 command-line benchmarking tool.
|
|
EOF
|
|
|
|
fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
|
|
}
|
|
|
|
|
|
main() {
|
|
build
|
|
pack
|
|
if [[ $TARGET = *linux* ]]; then
|
|
make_deb
|
|
fi
|
|
}
|
|
|
|
main
|