diff options
author | Shea Levy <shea@shealevy.com> | 2018-01-11 10:17:56 -0500 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2018-01-11 10:17:56 -0500 |
commit | 4e78aeb441075872c07e6d6dc45f2045a3d87e41 (patch) | |
tree | b5bcd070f4e7a1b0fc959e19385a1e2cd3fdd83e /pkgs | |
parent | 7fedfeabae0a721cc3d592e1e7cb16c40eaa8912 (diff) | |
download | nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar.gz nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar.bz2 nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar.lz nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar.xz nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.tar.zst nixlib-4e78aeb441075872c07e6d6dc45f2045a3d87e41.zip |
callCabal2nix: Fix calling with a path in the store.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/build-support/safe-discard-string-context.nix | 14 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/make-package-set.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
3 files changed, 19 insertions, 1 deletions
diff --git a/pkgs/build-support/safe-discard-string-context.nix b/pkgs/build-support/safe-discard-string-context.nix new file mode 100644 index 000000000000..293a15295d55 --- /dev/null +++ b/pkgs/build-support/safe-discard-string-context.nix @@ -0,0 +1,14 @@ +# | Discard the context of a string while ensuring that expected path +# validity invariants hold. +# +# This relies on import-from-derivation, but it is only useful in +# contexts where the string is going to be used in an +# import-from-derivation anyway. +# +# safeDiscardStringContext : String → String +{ writeText }: s: + builtins.seq + (import (writeText + "discard.nix" + "${builtins.substring 0 0 s}null\n")) + (builtins.unsafeDiscardStringContext s) diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 5a2f7fb89f0d..b91d73c9748c 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -146,7 +146,9 @@ in package-set { inherit pkgs stdenv callPackage; } self // { overrideCabal (self.callPackage (haskellSrc2nix { inherit name; src = pkgs.lib.cleanSourceWith - { inherit src; + { src = if pkgs.lib.canCleanSource src + then src + else pkgs.safeDiscardStringContext src; filter = path: type: pkgs.lib.hasSuffix "${name}.cabal" path || pkgs.lib.hasSuffix "package.yaml" path; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dbbb754852a0..1ee54227398d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -20237,4 +20237,6 @@ with pkgs; wal-g = callPackage ../tools/backup/wal-g {}; tlwg = callPackage ../data/fonts/tlwg { }; + + safeDiscardStringContext = callPackage ../build-support/safe-discard-string-context.nix { }; } |