[Buildroot] [PATCH] package/ripgrep: bump to version 13.0.0

Sam Voss sam.voss at gmail.com
Tue Sep 7 02:38:34 UTC 2021


Hi James,

On Mon, Sep 6, 2021 at 7:21 PM James Hilliard <james.hilliard1 at gmail.com>
wrote:
>
> On Sat, Aug 14, 2021 at 1:52 PM <sam.voss at gmail.com> wrote:
> >
> > From: Sam Voss <sam.voss at gmail.com>
> >
> > Also adds patch to make the jemalloc feature optional on musl, due to
> > toolchains not being supported by upstream project.
>
> Which toolchains are not supported here specifically?

I could have made this more clear in the original thread, although just
incase it came across confusing the "upstream project" that doesn't support
it is jemallocator, and not ripgrep.

The project specifically calls out their mapping of fully supported
toolchains:

https://github.com/gnzlbg/jemallocator

I discovered this when running the default set of test-pkg targets, and the
bootlin-x86-64-musl failed.

After digging into the issue a bit, it seems like this could be an issue
for more rust projects which use jemalloc on musl for improved allocation
performance, however I have not investigated any further.

>
> >
> > Signed-off-by: Sam Voss <sam.voss at gmail.com>
> > ---
> >  ...llocator-behind-a-cargo-feature-flag.patch | 131 ++++++++++++++++++
> >  package/ripgrep/ripgrep.hash                  |   4 +-
> >  package/ripgrep/ripgrep.mk                    |   2 +-
> >  3 files changed, 134 insertions(+), 3 deletions(-)
> >  create mode 100644
package/ripgrep/0001-puts-jemalloc-allocator-behind-a-cargo-feature-flag.patch
> >
> > 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"
> > ++))]
>
> Might make more sense to explicitly specify known working architectures
using:
>
https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch
>
> > + #[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
> > --
> > 2.32.0
> >
> > _______________________________________________
> > buildroot mailing list
> > buildroot at busybox.net
> > http://lists.busybox.net/mailman/listinfo/buildroot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildroot.org/pipermail/buildroot/attachments/20210906/1fb28511/attachment.html>


More information about the buildroot mailing list