From 7e1bfa7ac78560fb9df8b06bc402a62c05d2cfea Mon Sep 17 00:00:00 2001 From: Simon Chatterjee Date: Fri, 6 Aug 2021 22:34:58 +0100 Subject: [PATCH] nushell: 0.33 -> 0.35 --- pkgs/shells/nushell/default.nix | 22 +++++++++++--- pkgs/shells/nushell/use-system-zstd-lib.diff | 32 ++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 pkgs/shells/nushell/use-system-zstd-lib.diff diff --git a/pkgs/shells/nushell/default.nix b/pkgs/shells/nushell/default.nix index b7fa5453d87..eb3d61dc665 100644 --- a/pkgs/shells/nushell/default.nix +++ b/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.35.0"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; - sha256 = "sha256-Asjm3IoAfzphITLQuNh6r/i/pjEM/A+wpCsAB83bu2U="; + sha256 = "0p5whwx6wk9k7mrxhr7azrppbj9mv53hd4bl1cgygxz231aq8337"; }; - cargoSha256 = "sha256-Ly59mdUzSI2pIPbckWn1WBz/o2zVzpAzaCDROLdjG7Y="; + cargoSha256 = "0xs0s02zf78pgd94ifh465mg14rrwjfg7qbzmmq8jha758gfwdi3"; 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/pkgs/shells/nushell/use-system-zstd-lib.diff b/pkgs/shells/nushell/use-system-zstd-lib.diff new file mode 100644 index 00000000000..271ad6c692e --- /dev/null +++ b/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]