mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-05-19 01:30:21 -07:00
ci: use cross for musl x86_64 builds
This is necessary because jemalloc + musl + Ubuntu 16.04 is apparently broken. Moreover, jemalloc doesn't support i686, so we accept the performance regression there. See also: https://github.com/gnzlbg/jemallocator/issues/124
This commit is contained in:
parent
9dcfd9a205
commit
5ce2d7351d
@ -61,7 +61,7 @@ version = "2.32.0"
|
|||||||
default-features = false
|
default-features = false
|
||||||
features = ["suggestions"]
|
features = ["suggestions"]
|
||||||
|
|
||||||
[target.'cfg(target_env = "musl")'.dependencies.jemallocator]
|
[target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies.jemallocator]
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
|
@ -8,12 +8,13 @@ set -ex
|
|||||||
|
|
||||||
# Generate artifacts for release
|
# Generate artifacts for release
|
||||||
mk_artifacts() {
|
mk_artifacts() {
|
||||||
|
CARGO="$(builder)"
|
||||||
if is_arm; then
|
if is_arm; then
|
||||||
cargo build --target "$TARGET" --release
|
"$CARGO" build --target "$TARGET" --release
|
||||||
else
|
else
|
||||||
# Technically, MUSL builds will force PCRE2 to get statically compiled,
|
# Technically, MUSL builds will force PCRE2 to get statically compiled,
|
||||||
# but we also want PCRE2 statically build for macOS binaries.
|
# but we also want PCRE2 statically build for macOS binaries.
|
||||||
PCRE2_SYS_STATIC=1 cargo build --target "$TARGET" --release --features 'pcre2'
|
PCRE2_SYS_STATIC=1 "$CARGO" build --target "$TARGET" --release --features 'pcre2'
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,11 +7,13 @@ set -ex
|
|||||||
. "$(dirname $0)/utils.sh"
|
. "$(dirname $0)/utils.sh"
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
CARGO="$(builder)"
|
||||||
|
|
||||||
# Test a normal debug build.
|
# Test a normal debug build.
|
||||||
if is_arm; then
|
if is_arm; then
|
||||||
cargo build --target "$TARGET" --verbose
|
"$CARGO" build --target "$TARGET" --verbose
|
||||||
else
|
else
|
||||||
cargo build --target "$TARGET" --verbose --all --features 'pcre2'
|
"$CARGO" build --target "$TARGET" --verbose --all --features 'pcre2'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Show the output of the most recent build.rs stderr.
|
# Show the output of the most recent build.rs stderr.
|
||||||
@ -44,7 +46,7 @@ main() {
|
|||||||
"$(dirname "${0}")/test_complete.sh"
|
"$(dirname "${0}")/test_complete.sh"
|
||||||
|
|
||||||
# Run tests for ripgrep and all sub-crates.
|
# Run tests for ripgrep and all sub-crates.
|
||||||
cargo test --target "$TARGET" --verbose --all --features 'pcre2'
|
"$CARGO" test --target "$TARGET" --verbose --all --features 'pcre2'
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main
|
||||||
|
23
ci/utils.sh
23
ci/utils.sh
@ -55,6 +55,13 @@ gcc_prefix() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_musl() {
|
||||||
|
case "$TARGET" in
|
||||||
|
*-musl) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
is_x86() {
|
is_x86() {
|
||||||
case "$(architecture)" in
|
case "$(architecture)" in
|
||||||
amd64|i386) return 0 ;;
|
amd64|i386) return 0 ;;
|
||||||
@ -62,6 +69,13 @@ is_x86() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_x86_64() {
|
||||||
|
case "$(architecture)" in
|
||||||
|
amd64) return 0 ;;
|
||||||
|
*) return 1 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
is_arm() {
|
is_arm() {
|
||||||
case "$(architecture)" in
|
case "$(architecture)" in
|
||||||
armhf) return 0 ;;
|
armhf) return 0 ;;
|
||||||
@ -82,3 +96,12 @@ is_osx() {
|
|||||||
*) return 1 ;;
|
*) return 1 ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
builder() {
|
||||||
|
if is_musl && is_x86_64; then
|
||||||
|
cargo install cross
|
||||||
|
echo "cross"
|
||||||
|
else
|
||||||
|
echo "cargo"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
@ -35,7 +35,10 @@ mod subject;
|
|||||||
// We don't unconditionally use jemalloc because it can be nice to use the
|
// We don't unconditionally use jemalloc because it can be nice to use the
|
||||||
// system's default allocator by default. Moreover, jemalloc seems to increase
|
// system's default allocator by default. Moreover, jemalloc seems to increase
|
||||||
// compilation times by a bit.
|
// compilation times by a bit.
|
||||||
#[cfg(target_env = "musl")]
|
//
|
||||||
|
// Moreover, we only do this on 64-bit systems since jemalloc doesn't support
|
||||||
|
// i686.
|
||||||
|
#[cfg(all(target_env = "musl", target_pointer_width = "64"))]
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user