[Buildroot] [git commit branch/next] package/ripgrep: bump to version 13.0.0

Thomas Petazzoni thomas.petazzoni at bootlin.com
Thu Aug 19 20:36:55 UTC 2021


commit: https://git.buildroot.net/buildroot/commit/?id=5d4cf52204b7c5c4366ec029f83c87610722f6f0
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/next

Also adds patch to make the jemalloc feature optional on musl, due to
toolchains not being supported by upstream project.

Signed-off-by: Sam Voss <sam.voss at gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
---
 ...loc-allocator-behind-a-cargo-feature-flag.patch | 131 +++++++++++++++++++++
 package/ripgrep/ripgrep.hash                       |   4 +-
 package/ripgrep/ripgrep.mk                         |   2 +-
 3 files changed, 134 insertions(+), 3 deletions(-)

diff --git a/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch b/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch
new file mode 100644
index 0000000000..e2ba68f389
--- /dev/null
+++ b/package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch
@@ -0,0 +1,131 @@
+From 68c2a4d7a5d9b46f65121958fdb12d5270bfd1b6 Mon Sep 17 00:00:00 2001
+From: Jonathan Stites <mail at jonstites.com>
+Date: Wed, 6 May 2020 12:55:35 +0000
+Subject: [PATCH] puts jemalloc allocator behind a cargo feature flag
+
+Retrieved from: https://github.com/BurntSushi/ripgrep/pull/1569
+
+Moves jemalloc behind a feature for musl builds, where it is not
+supported by the upstream project, so ripgrep will fail to build.
+
+Signed-off-by: Sam Voss <sam.voss at gmail.com>
+---
+ .github/workflows/ci.yml      | 6 ++++++
+ .github/workflows/release.yml | 8 +++++++-
+ Cargo.toml                    | 8 +++++++-
+ README.md                     | 9 +++++++++
+ crates/core/main.rs           | 8 ++++++--
+ 5 files changed, 35 insertions(+), 4 deletions(-)
+
+diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
+index ab154ec..aa567d9 100644
+--- a/.github/workflows/ci.yml
++++ b/.github/workflows/ci.yml
+@@ -149,6 +149,12 @@ jobs:
+       if: matrix.target != ''
+       run: ${{ env.CARGO }} test --verbose --workspace ${{ env.TARGET_FLAGS }}
+ 
++    - name: Run tests with jemalloc (Musl)
++      # We only use the jemalloc allocator when building with musl.
++      # The system allocator is good enough for other platforms.
++      if: matrix.os == 'nightly-musl'
++      run: ${{ env.CARGO }} test --verbose --all --features jemalloc ${{ env.TARGET_FLAGS }}
++
+     - name: Test for existence of build artifacts (Windows)
+       if: matrix.os == 'windows-2019'
+       shell: bash
+diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
+index 7cfb6a4..ad6b82d 100644
+--- a/.github/workflows/release.yml
++++ b/.github/workflows/release.yml
+@@ -133,7 +133,13 @@ jobs:
+         echo "target flag is: ${{ env.TARGET_FLAGS }}"
+         echo "target dir is: ${{ env.TARGET_DIR }}"
+ 
+-    - name: Build release binary
++    - name: Build release binary (linux)
++      if: matrix.build == 'linux'
++      # Use jemalloc allocator for much better performance over the musl default allocator
++      run: ${{ env.CARGO }} build --verbose --release --features "pcre2 jemalloc" ${{ env.TARGET_FLAGS }}
++
++    - name: Build release binary (non-linux)
++      if: matrix.build != 'linux'
+       run: ${{ env.CARGO }} build --verbose --release --features pcre2 ${{ env.TARGET_FLAGS }}
+ 
+     - name: Strip release binary (linux and macos)
+diff --git a/Cargo.toml b/Cargo.toml
+index fb78fcb..0d34b1e 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -56,8 +56,9 @@ version = "2.33.0"
+ default-features = false
+ features = ["suggestions"]
+ 
+-[target.'cfg(all(target_env = "musl", target_pointer_width = "64"))'.dependencies.jemallocator]
++[dependencies.jemallocator]
+ version = "0.3.0"
++optional = true
+ 
+ [build-dependencies]
+ lazy_static = "1.1.0"
+@@ -75,6 +76,11 @@ walkdir = "2"
+ [features]
+ simd-accel = ["grep/simd-accel"]
+ pcre2 = ["grep/pcre2"]
++# The jemalloc allocator is used for improved
++# performance on x86 musl builds.
++# Cargo does not yet support platform-specific features
++# https://github.com/rust-lang/cargo/issues/1197
++jemalloc = ["jemallocator"]
+ 
+ [profile.release]
+ debug = 1
+diff --git a/README.md b/README.md
+index 46938bc..9917b29 100644
+--- a/README.md
++++ b/README.md
+@@ -406,6 +406,15 @@ build a static executable with MUSL and with PCRE2, then you will need to have
+ `musl-gcc` installed, which might be in a separate package from the actual
+ MUSL library, depending on your Linux distribution.
+ 
++When building with the MUSL target on Linux, it is recommended to use the
++jemalloc allocator for performance:
++
++```
++$ rustup target add x86_64-unknown-linux-musl
++$ cargo build --release --target x86_64-unknown-linux-musl --features jemalloc
++```
++
++
+ 
+ ### Running tests
+ 
+diff --git a/crates/core/main.rs b/crates/core/main.rs
+index 47385de..c9dae5a 100644
+--- a/crates/core/main.rs
++++ b/crates/core/main.rs
+@@ -31,7 +31,7 @@ mod subject;
+ // have the fastest version of everything. Its goal is to be small and amenable
+ // to static compilation.) Even though ripgrep isn't particularly allocation
+ // heavy, musl's allocator appears to slow down ripgrep quite a bit. Therefore,
+-// when building with musl, we use jemalloc.
++// we expose a feature for using jemalloc when building with musl.
+ //
+ // 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
+@@ -39,7 +39,11 @@ mod subject;
+ //
+ // Moreover, we only do this on 64-bit systems since jemalloc doesn't support
+ // i686.
+-#[cfg(all(target_env = "musl", target_pointer_width = "64"))]
++#[cfg(all(
++    target_env = "musl",
++    target_pointer_width = "64",
++    feature = "jemalloc"
++))]
+ #[global_allocator]
+ static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
+ 
+-- 
+2.32.0
+
diff --git a/package/ripgrep/ripgrep.hash b/package/ripgrep/ripgrep.hash
index 0841c0185c..b2f03a95e6 100644
--- a/package/ripgrep/ripgrep.hash
+++ b/package/ripgrep/ripgrep.hash
@@ -1,3 +1,3 @@
 # Locally calculated
-sha256 7035379fce0c1e32552e8ee528b92c3d01b8d3935ea31d26c51a73287be74bb3 ripgrep-0.8.1.tar.gz
-sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f LICENSE-MIT
+sha256 0fb17aaf285b3eee8ddab17b833af1e190d73de317ff9648751ab0660d763ed2  ripgrep-13.0.0.tar.gz
+sha256 0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f  LICENSE-MIT
diff --git a/package/ripgrep/ripgrep.mk b/package/ripgrep/ripgrep.mk
index 450bb020e3..2d9dd3ee2f 100644
--- a/package/ripgrep/ripgrep.mk
+++ b/package/ripgrep/ripgrep.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-RIPGREP_VERSION = 0.8.1
+RIPGREP_VERSION = 13.0.0
 RIPGREP_SITE = $(call github,burntsushi,ripgrep,$(RIPGREP_VERSION))
 RIPGREP_LICENSE = MIT
 RIPGREP_LICENSE_FILES = LICENSE-MIT



More information about the buildroot mailing list