Skip to content

Add context back to repo url strings #2261

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion lib/load-cabal-plan.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ let
plan-json = builtins.fromJSON (
builtins.unsafeDiscardStringContext (
builtins.readFile (callProjectResults.projectNix + "/plan.json")));
# Function to add context back to the strings we get from `plan.json`
addContext = s:
let storeDirMatch = builtins.match ".*(${builtins.storeDir}/[^/]+).*" s;
in if storeDirMatch == null
then s
else builtins.appendContext s { ${builtins.head storeDirMatch} = { path = true; }; };
# All the units in the plan indexed by unit ID.
by-id = pkgs.lib.listToAttrs (map (x: { name = x.id; value = x; }) plan-json.install-plan);
# Find the names of all the pre-existing packages used by a list of dependencies
Expand Down Expand Up @@ -104,7 +110,9 @@ in {
+ pkgs.lib.optionalString (p.pkg-src.source-repo.subdir != ".") "/${p.pkg-src.source-repo.subdir}";
} // pkgs.lib.optionalAttrs (p.pkg-src.type or "" == "repo-tar") {
src = pkgs.lib.mkDefault (pkgs.fetchurl {
url = p.pkg-src.repo.uri + "${pkgs.lib.optionalString (!pkgs.lib.hasSuffix "/" p.pkg-src.repo.uri) "/"}package/${p.pkg-name}-${p.pkg-version}.tar.gz";
# repo.uri might look like file:/nix/store/xxx; using addContext, we let nix know about the dependency on
# /nix/store/xxx. Otherwise we can run into the situation where nix won't be able to access the dependencies needed to build. (e.g. the /nix/store/xxx path).
url = addContext p.pkg-src.repo.uri + "${pkgs.lib.optionalString (!pkgs.lib.hasSuffix "/" p.pkg-src.repo.uri) "/"}package/${p.pkg-name}-${p.pkg-version}.tar.gz";
sha256 = p.pkg-src-sha256;
});
} // pkgs.lib.optionalAttrs (cabal2nix ? package-description-override && p.pkg-version == cabal2nix.package.identifier.version) {
Expand Down
6 changes: 3 additions & 3 deletions test/cabal.project.local
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ repository head.hackage.ghc.haskell.org
f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
--sha256: sha256-VFRuIfs3k6nyLVvT445wFRDy+bpcy1LVmLCMg1Oo/uE=
--sha256: sha256-Z6cqRAlbV1WNbK4fKdcWHQcLA8CGpzfnTOd8QxcOy+c=

repository ghcjs-overlay
url: https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/01ecad22c0a72e3c5a49262357cf0b062892d87f
url: https://raw.githubusercontent.com/input-output-hk/hackage-overlay-ghcjs/56cd424e8529e7a1fc29c6126abdc66f09467306
secure: True
root-keys:
key-threshold: 0
--sha256: sha256-BjyXYh6oS4wE1iHlY/7as7vkmjxFOXzK6nOYzbzjQrM=
--sha256: sha256-nU0/HKy4Om1GohCcU+gUWCDPgyclYdFzAgzfXe0tgf0=

if os(ghcjs)
extra-packages: ghci
Expand Down