1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2024-12-12 19:18:24 +02:00
ripgrep/ci/build-and-publish-deb

59 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# This script builds a binary dpkg for Debian based distros. It does not
# currently run in CI, and is instead run manually and the resulting dpkg is
# uploaded to GitHub at the end of this script.
#
# Note that this requires 'cargo deb', which can be installed with
# 'cargo install cargo-deb'.
#
# This should be run from the root of the ripgrep repo.
#
# TODO: It looks like this script could be pretty easily ported into GitHub
# Actions?
set -e
D="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
if ! command -V cargo-deb > /dev/null 2>&1; then
echo "cargo-deb command missing" >&2
exit 1
fi
version="$1"
if [ -z "$version" ]; then
echo "missing version" >&2
echo "Usage: "$(basename "$0")" <version>" >&2
exit 1
fi
if ! grep -q "version = \"$version\"" Cargo.toml; then
echo "version does not match Cargo.toml" >&2
exit 1
fi
# 'cargo deb' does not seem to provide a way to specify an asset that is
# created at build time, such as ripgrep's man page. To work around this,
# we force a debug build, copy out the man page (and shell completions)
# produced from that build, put it into a predictable location and then build
# the deb, which knows where to look.
cargo build
DEPLOY_DIR=deployment/deb
mkdir -p "$DEPLOY_DIR"
# Generate man page and shell completions. `cargo deb` knows how to find these
# files via the manifest configuration in `Cargo.toml`.
"target/debug/rg" --generate complete-bash > "$DEPLOY_DIR/rg.bash"
"target/debug/rg" --generate complete-fish > "$DEPLOY_DIR/rg.fish"
"target/debug/rg" --generate complete-zsh > "$DEPLOY_DIR/_rg"
"target/debug/rg" --generate man > "$DEPLOY_DIR/rg.1"
# Since we're distributing the dpkg, we don't know whether the user will have
# PCRE2 installed, so just do a static build.
PCRE2_SYS_STATIC=1 cargo deb --target x86_64-unknown-linux-musl
target="target/x86_64-unknown-linux-musl/debian"
deb="$target/ripgrep_$version-1_amd64.deb"
debsum="$deb.sha256"
shasum -a 256 "$deb" > "$debsum"
gh release upload "$version" "$deb" "$debsum"