about summary refs log tree commit diff
path: root/nixpkgs/pkgs/shells/nushell
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/shells/nushell')
-rw-r--r--nixpkgs/pkgs/shells/nushell/default.nix22
-rw-r--r--nixpkgs/pkgs/shells/nushell/use-system-zstd-lib.diff32
2 files changed, 50 insertions, 4 deletions
diff --git a/nixpkgs/pkgs/shells/nushell/default.nix b/nixpkgs/pkgs/shells/nushell/default.nix
index b7fa5453d87a..eaddb0f56dcd 100644
--- a/nixpkgs/pkgs/shells/nushell/default.nix
+++ b/nixpkgs/pkgs/shells/nushell/default.nix
@@ -4,6 +4,7 @@
 , rustPlatform
 , openssl
 , zlib
+, zstd
 , pkg-config
 , python3
 , xorg
@@ -17,27 +18,40 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "nushell";
-  version = "0.33.0";
+  version = "0.36.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "sha256-Asjm3IoAfzphITLQuNh6r/i/pjEM/A+wpCsAB83bu2U=";
+    sha256 = "sha256-5vBt0Q7f3ydo74cmY4WpIHqMlNYc0Tl35d0DnWUQZbU=";
   };
 
-  cargoSha256 = "sha256-Ly59mdUzSI2pIPbckWn1WBz/o2zVzpAzaCDROLdjG7Y=";
+  cargoSha256 = "sha256-F3niVkZbg84cFEY0eGgmMAMEJ+eBHwDS2+3EFRR2fLY=";
 
   nativeBuildInputs = [ pkg-config ]
     ++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ python3 ];
 
-  buildInputs = [ openssl ]
+  buildInputs = [ openssl zstd ]
     ++ lib.optionals stdenv.isDarwin [ zlib libiconv Security ]
     ++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ xorg.libX11 ]
     ++ lib.optionals (withExtraFeatures && stdenv.isDarwin) [ AppKit nghttp2 libgit2 ];
 
   cargoBuildFlags = lib.optional withExtraFeatures "--features=extra";
 
+  # Since 0.34, nu has an indirect dependency on `zstd-sys` (via `polars` and
+  # `parquet`, for dataframe support), which by default has an impure build
+  # (git submodule for the `zstd` C library). The `pkg-config` feature flag
+  # fixes this, but it's hard to invoke this in the right place, because of
+  # the indirect dependencies. So add a direct dependency on `zstd-sys` here
+  # at the top level, along with this feature flag, to ensure that when
+  # `zstd-sys` is transitively invoked, it triggers a pure build using the
+  # system `zstd` library provided above.
+  #
+  # (If this patch needs updating, in a nushell repo add the zstd-sys line to
+  # Cargo.toml, then `cargo update --package zstd-sys` to update Cargo.lock.)
+  cargoPatches = [ ./use-system-zstd-lib.diff ];
+
   # TODO investigate why tests are broken on darwin
   # failures show that tests try to write to paths
   # outside of TMPDIR
diff --git a/nixpkgs/pkgs/shells/nushell/use-system-zstd-lib.diff b/nixpkgs/pkgs/shells/nushell/use-system-zstd-lib.diff
new file mode 100644
index 000000000000..271ad6c692ed
--- /dev/null
+++ b/nixpkgs/pkgs/shells/nushell/use-system-zstd-lib.diff
@@ -0,0 +1,32 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index 8833c3e5..0c90d2fe 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -3188,6 +3188,7 @@ dependencies = [
+  "nu_plugin_xpath",
+  "rstest",
+  "serial_test",
++ "zstd-sys",
+ ]
+
+ [[package]]
+@@ -6954,4 +6955,5 @@ checksum = "615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33"
+ dependencies = [
+  "cc",
+  "libc",
++ "pkg-config",
+ ]
+diff --git a/Cargo.toml b/Cargo.toml
+index 89e8a311..4cc2331a 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -63,6 +63,9 @@ serial_test = "0.5.1"
+ hamcrest2 = "0.3.0"
+ rstest = "0.10.0"
+
++# Specify that the indirect dependency ztsd-sys should pick up the system zstd C library
++zstd-sys = { version = "1", features = [ "pkg-config" ] }
++
+ [build-dependencies]
+
+ [features]