summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2018-02-04 12:14:38 -0500
committerAndrew Gallant <jamslam@gmail.com>2018-02-06 12:07:59 -0500
commitb50ae9a99c46acf40d1c47c2e0ef6947fefbc044 (patch)
tree77b9a1114a4a08fd3340b59f2f4bd3ee58b4210c
parent224c112e0509ab2aeb28de05efbbce9486a55eff (diff)
ci: cleanup
This cleans up our CI scripts but doesn't significantly change anything. Mostly this is removing dead code and wrong comments, and making the style a bit more consistent.
-rw-r--r--.travis.yml51
-rwxr-xr-x[-rw-r--r--]ci/before_deploy.sh31
-rwxr-xr-x[-rw-r--r--]ci/install.sh38
-rwxr-xr-x[-rw-r--r--]ci/script.sh18
-rwxr-xr-x[-rw-r--r--]ci/sha256.sh0
-rw-r--r--ci/utils.sh29
6 files changed, 58 insertions, 109 deletions
diff --git a/.travis.yml b/.travis.yml
index ee46cd7c..bf2b3f55 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,11 +1,9 @@
language: rust
cache: cargo
-
env:
global:
- - PROJECT_NAME=ripgrep
+ - PROJECT_NAME: ripgrep
- RUST_BACKTRACE: full
-
addons:
apt:
packages:
@@ -13,13 +11,12 @@ addons:
- zsh
# Needed for testing decompression search.
- xz-utils
-
matrix:
fast_finish: true
include:
# Nightly channel.
- # (All *nix releases are done on the nightly channel to take advantage
- # of the regex library's multiple pattern SIMD search.)
+ # All *nix releases are done on the nightly channel to take advantage
+ # of the regex library's multiple pattern SIMD search.
- os: linux
rust: nightly
env: TARGET=i686-unknown-linux-musl
@@ -39,14 +36,16 @@ matrix:
- binutils-arm-linux-gnueabihf
- libc6-armhf-cross
- libc6-dev-armhf-cross
- # Beta channel.
+ # Beta channel. We enable these to make sure there are no regressions in
+ # Rust beta releases.
- os: linux
rust: beta
env: TARGET=x86_64-unknown-linux-musl
- os: linux
rust: beta
env: TARGET=x86_64-unknown-linux-gnu
- # Minimum Rust supported channel.
+ # Minimum Rust supported channel. We enable these to make sure ripgrep
+ # continues to work on the advertised minimum Rust version.
- os: linux
rust: 1.20.0
env: TARGET=x86_64-unknown-linux-gnu
@@ -63,43 +62,27 @@ matrix:
- binutils-arm-linux-gnueabihf
- libc6-armhf-cross
- libc6-dev-armhf-cross
-
-before_install:
- - export PATH="$PATH:$HOME/.cargo/bin"
-
-install:
- - bash ci/install.sh
-
-script:
- - bash ci/script.sh
-
-before_deploy:
- - bash ci/before_deploy.sh
-
+install: ci/install.sh
+script: ci/script.sh
+before_deploy: ci/before_deploy.sh
deploy:
provider: releases
- api_key:
- secure: "IbSnsbGkxSydR/sozOf1/SRvHplzwRUHzcTjM7BKnr7GccL86gRPUrsrvD103KjQUGWIc1TnK1YTq5M0Onswg/ORDjqa1JEJPkPdPnVh9ipbF7M2De/7IlB4X4qXLKoApn8+bx2x/mfYXu4G+G1/2QdbaKK2yfXZKyjz0YFx+6CNrVCT2Nk8q7aHvOOzAL58vsG8iPDpupuhxlMDDn/UhyOWVInmPPQ0iJR1ZUJN8xJwXvKvBbfp3AhaBiAzkhXHNLgBR8QC5noWWMXnuVDMY3k4f3ic0V+p/qGUCN/nhptuceLxKFicMCYObSZeUzE5RAI0/OBW7l3z2iCoc+TbAnn+JrX/ObJCfzgAOXAU3tLaBFMiqQPGFKjKg1ltSYXomOFP/F7zALjpvFp4lYTBajRR+O3dqaxA9UQuRjw27vOeUpMcga4ZzL4VXFHzrxZKBHN//XIGjYAVhJ1NSSeGpeJV5/+jYzzWKfwSagRxQyVCzMooYFFXzn8Yxdm3PJlmp3GaAogNkdB9qKcrEvRINCelalzALPi0hD/HUDi8DD2PNTCLLMo6VSYtvc685Zbe+KgNzDV1YyTrRCUW6JotrS0r2ULLwnsh40hSB//nNv3XmwNmC/CmW5QAnIGj8cBMF4S2t6ohADIndojdAfNiptmaZOIT6owK7bWMgPMyopo="
file_glob: true
- file: ${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}.*
- # don't delete the artifacts from previous phases
+ file: deployment/${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}.*
skip_cleanup: true
- # deploy when a new tag is pushed
on:
- # channel to use to produce the release artifacts
- # NOTE make sure you only release *once* per target
- # TODO you may want to pick a different channel
condition: $TRAVIS_RUST_VERSION = nightly
- tags: true
-
+ branch: ag/misc-improvements
+ # tags: true
+ api_key:
+ secure: "IbSnsbGkxSydR/sozOf1/SRvHplzwRUHzcTjM7BKnr7GccL86gRPUrsrvD103KjQUGWIc1TnK1YTq5M0Onswg/ORDjqa1JEJPkPdPnVh9ipbF7M2De/7IlB4X4qXLKoApn8+bx2x/mfYXu4G+G1/2QdbaKK2yfXZKyjz0YFx+6CNrVCT2Nk8q7aHvOOzAL58vsG8iPDpupuhxlMDDn/UhyOWVInmPPQ0iJR1ZUJN8xJwXvKvBbfp3AhaBiAzkhXHNLgBR8QC5noWWMXnuVDMY3k4f3ic0V+p/qGUCN/nhptuceLxKFicMCYObSZeUzE5RAI0/OBW7l3z2iCoc+TbAnn+JrX/ObJCfzgAOXAU3tLaBFMiqQPGFKjKg1ltSYXomOFP/F7zALjpvFp4lYTBajRR+O3dqaxA9UQuRjw27vOeUpMcga4ZzL4VXFHzrxZKBHN//XIGjYAVhJ1NSSeGpeJV5/+jYzzWKfwSagRxQyVCzMooYFFXzn8Yxdm3PJlmp3GaAogNkdB9qKcrEvRINCelalzALPi0hD/HUDi8DD2PNTCLLMo6VSYtvc685Zbe+KgNzDV1YyTrRCUW6JotrS0r2ULLwnsh40hSB//nNv3XmwNmC/CmW5QAnIGj8cBMF4S2t6ohADIndojdAfNiptmaZOIT6owK7bWMgPMyopo="
branches:
only:
# Pushes and PR to the master branch
- master
- # IMPORTANT Ruby regex to match tags. Required, or travis won't trigger deploys when a new tag
- # is pushed. This regex matches semantic versions like v1.2.3-rc4+2016.02.22
+ # Ruby regex to match tags. Required, or travis won't trigger deploys when
+ # a new tag is pushed.
- /^\d+\.\d+\.\d+.*$/
-
notifications:
email:
on_success: never
diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh
index 4890f96b..35bdc0b1 100644..100755
--- a/ci/before_deploy.sh
+++ b/ci/before_deploy.sh
@@ -1,40 +1,39 @@
-# `before_deploy` phase: here we package the build artifacts
+#!/bin/bash
+
+# package the build artifacts
set -ex
-. $(dirname $0)/utils.sh
+. "$(dirname $0)/utils.sh"
# Generate artifacts for release
mk_artifacts() {
if is_ssse3_target; then
RUSTFLAGS="-C target-feature=+ssse3" \
- cargo build --target $TARGET --release --features simd-accel
+ cargo build --target "$TARGET" --release --features simd-accel
else
- cargo build --target $TARGET --release
+ cargo build --target "$TARGET" --release
fi
}
mk_tarball() {
- # create a "staging" directory
- local td=$(mktempd)
- local out_dir=$(pwd)
- local name="${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}"
local gcc_prefix="$(gcc_prefix)"
- mkdir "${td:?}/${name}"
- mkdir "$td/$name/complete"
+ local td="$(mktemp -d)"
+ local name="${PROJECT_NAME}-${TRAVIS_TAG}-${TARGET}"
+ mkdir -p "$td/$name/complete"
+ mkdir deployment
+ local out_dir="$(pwd)/deployment"
cp target/$TARGET/release/rg "$td/$name/rg"
- ${gcc_prefix}strip "$td/$name/rg"
+ "${gcc_prefix}strip" "$td/$name/rg"
cp {doc/rg.1,README.md,UNLICENSE,COPYING,LICENSE-MIT} "$td/$name/"
cp \
- target/$TARGET/release/build/ripgrep-*/out/{rg.bash-completion,rg.fish,_rg.ps1} \
+ target/"$TARGET"/release/build/ripgrep-*/out/{rg.bash,rg.fish,_rg.ps1} \
"$td/$name/complete/"
cp complete/_rg "$td/$name/complete/"
- pushd $td
- tar czf "$out_dir/$name.tar.gz" *
- popd
- rm -r $td
+ (cd "$td" && tar czf "$out_dir/$name.tar.gz" *)
+ rm -rf "$td"
}
main() {
diff --git a/ci/install.sh b/ci/install.sh
index ffddf866..08d65b1a 100644..100755
--- a/ci/install.sh
+++ b/ci/install.sh
@@ -1,29 +1,22 @@
-# `install` phase: install stuff needed for the `script` phase
+#!/bin/bash
+
+# install stuff needed for the `script` phase
+
+# Where rustup gets installed.
+export PATH="$PATH:$HOME/.cargo/bin"
set -ex
-. $(dirname $0)/utils.sh
-
-install_c_toolchain() {
- case $TARGET in
- aarch64-unknown-linux-gnu)
- sudo apt-get install -y --no-install-recommends \
- gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross
- ;;
- *)
- # For other targets, this is handled by addons.apt.packages in .travis.yml
- ;;
- esac
-}
+. "$(dirname $0)/utils.sh"
install_rustup() {
- curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=$TRAVIS_RUST_VERSION
-
+ curl https://sh.rustup.rs -sSf \
+ | sh -s -- -y --default-toolchain="$TRAVIS_RUST_VERSION"
rustc -V
cargo -V
}
-install_standard_crates() {
+install_targets() {
if [ $(host) != "$TARGET" ]; then
rustup target add $TARGET
fi
@@ -33,11 +26,13 @@ configure_cargo() {
local prefix=$(gcc_prefix)
if [ -n "${prefix}" ]; then
local gcc_suffix=
- test -n "${GCC_VERSION}" && gcc_suffix="-${GCC_VERSION}" || :
+ if [ -n "$GCC_VERSION" ]; then
+ gcc_suffix="-$GCC_VERSION"
+ fi
local gcc="${prefix}gcc${gcc_suffix}"
# information about the cross compiler
- ${gcc} -v
+ "${gcc}" -v
# tell cargo which linker to use for cross compilation
mkdir -p .cargo
@@ -49,12 +44,9 @@ EOF
}
main() {
- install_c_toolchain
install_rustup
- install_standard_crates
+ install_targets
configure_cargo
-
- # TODO if you need to install extra stuff add it here
}
main
diff --git a/ci/script.sh b/ci/script.sh
index 32aef003..e9f9bcb3 100644..100755
--- a/ci/script.sh
+++ b/ci/script.sh
@@ -1,19 +1,10 @@
-# `script` phase: you usually build, test and generate docs in this phase
+#!/bin/bash
+
+# build, test and generate docs in this phase
set -ex
-. $(dirname $0)/utils.sh
-
-# NOTE Workaround for rust-lang/rust#31907 - disable doc tests when cross compiling
-# This has been fixed in the nightly channel but it would take a while to reach the other channels
-disable_cross_doctests() {
- if [ $(host) != "$TARGET" ] && [ "$TRAVIS_RUST_VERSION" = "stable" ]; then
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then
- brew install gnu-sed --default-names
- fi
- find src -name '*.rs' -type f | xargs sed -i -e 's:\(//.\s*```\):\1 ignore,:g'
- fi
-}
+. "$(dirname $0)/utils.sh"
main() {
# disable_cross_doctests
@@ -22,7 +13,6 @@ main() {
cargo test --target "${TARGET}" --verbose --all
"$( dirname "${0}" )/test_complete.sh"
fi
-
# sanity check the file type
file target/$TARGET/debug/rg
}
diff --git a/ci/sha256.sh b/ci/sha256.sh
index 670c9766..670c9766 100644..100755
--- a/ci/sha256.sh
+++ b/ci/sha256.sh
diff --git a/ci/utils.sh b/ci/utils.sh
index 7dcd7cec..61428ecb 100644
--- a/ci/utils.sh
+++ b/ci/utils.sh
@@ -1,6 +1,6 @@
-mktempd() {
- echo $(mktemp -d 2>/dev/null || mktemp -d -t tmp)
-}
+#!/bin/bash
+
+# Various utility functions used through CI.
host() {
case "$TRAVIS_OS_NAME" in
@@ -15,9 +15,6 @@ host() {
gcc_prefix() {
case "$TARGET" in
- aarch64-unknown-linux-gnu)
- echo aarch64-linux-gnu-
- ;;
arm*-gnueabihf)
echo arm-linux-gnueabihf-
;;
@@ -27,19 +24,8 @@ gcc_prefix() {
esac
}
-dobin() {
- [ -z $MAKE_DEB ] && die 'dobin: $MAKE_DEB not set'
- [ $# -lt 1 ] && die "dobin: at least one argument needed"
-
- local f prefix=$(gcc_prefix)
- for f in "$@"; do
- install -m0755 $f $dtd/debian/usr/bin/
- ${prefix}strip -s $dtd/debian/usr/bin/$(basename $f)
- done
-}
-
architecture() {
- case ${TARGET:?} in
+ case "$TARGET" in
x86_64-*)
echo amd64
;;
@@ -56,9 +42,8 @@ architecture() {
}
is_ssse3_target() {
- case "${TARGET}" in
- i686-unknown-netbsd) return 1 ;; # i686-unknown-netbsd - SSE2
- i686*|x86_64*) return 0 ;;
+ case "$TARGET" in
+ x86_64*) return 0 ;;
+ *) return 1 ;;
esac
- return 1
}