cardano-sl
cardano-sl copied to clipboard
Issues building from source on NixOS: ignoring untrusted substituter, attribute 'cardano-sl-static' not found, URLs 404
Hey folks, I've been trying to build cardano-sl from source, on NixOS. I've ran into three small issues so far:
1. I had issues setting up the binary cache.
First, the build docs for adding the binary cache are slightly off for NixOS, where you're discouraged from editing /etc/nix/nix.conf manually. Instead, man nix.conf explains how a user can set their own config at ~/.config/nix/nix.conf, so I put those two build-cache configuration lines in there.
But then, I get the following error:
warning: ignoring untrusted substituter 'https://cache.nixos.org'
warning: ignoring untrusted substituter 'https://hydra.iohk.io'
There is some discussion of this problem on https://github.com/cachix/cachix/issues/26 , with workarounds given. I tried to follow those, but wasn't successful. The contents of my ~/.config/nix/nix.conf are:
jgl@n3: ~/cardano-sl $ cat ~/.config/nix/nix.conf
binary-caches = https://cache.nixos.org https://hydra.iohk.io
binary-cache-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=
trusted-substituters = https://cache.nixos.org https://hydra.iohk.io
trusted-users = root jgl
I kept going, just building things straight from source without the binary cache. That lead to the next two issues:
2. cardano-sl-static doesn't seem to be a build target anymore?
The docs give the nix-build command as:
$ nix-build -A cardano-sl-static --cores 0 --max-jobs 2 --no-build-output --out-link master
but that errors with:
error: attribute 'cardano-sl-static' in selection path 'cardano-sl-static' not found
Looking in default.nix, it looks like this is now called cardano-sl-node-static. Using that attribute seems to work.
(nit pick, why does this command specify the cores/max-jobs flags? I've been forgoing those for faster builds, personally. Maybe that follows some internal IOHK convention, but it seems weird to include in the public docs)
3. The requested URL returned error: 404 Not Found
I hit 404's for two URLs: https://anonscm.debian.org/cgit/collab-maint/ca-certificates.git/plain/mozilla/certdata2pem.py?h=debian/20170717 https://anonscm.debian.org/viewvc/pkg-gnome/desktop/unstable/intltool/debian/patches/perl5.22-regex-fixes?revision=47258&view=co&pathrev=47258 (example output in this gist )
Looks like this is fallout from Debian migrating anonscm.debian.org, there is some discussion here https://github.com/NixOS/nixpkgs/issues/39927
The first 404 i was able to get past by running nix-prefetch-url https://salsa.debian.org/debian/ca-certificates/raw/debian/20170717/mozilla/certdata2pem.py (from here https://github.com/cachix/cachix/issues/25 )
I haven't been able to get past the second 404 though. The new URL for that patch seems to be https://sources.debian.org/data/main/i/intltool/0.51.0-5/debian/patches/perl5.26-regex-fixes.patch
, but the contents have changed, so the hash is different. So even if i nix-prefetch-url, it'll have anew hash, which means that nix-build will still try and pull the old version from the URL that 404s.
However, as I was digging into this, I found that this specific issue has already been fixed in nixpkgs. So I think the real issue here, is that whatever nixpkg that cardano-sl is using that has intltool as a dependency, is being pinned to version that is too old.
I tried to grok how pinning of nixpkgs is happening here, but didn't get too far before i gave up (for example, whats the difference between cardano-sl/fetch-nixpkgs.nix and cardano-sl/fetchNixpkgs.nix?)
(btw, thanks for open sourcing all of this! its been a fun way to dive deeper into Nix :slightly_smiling_face:)
Install nix according to the official method. I had issues nix-build: command not found
can you help me thx
Hi @jglukasik, thanks for your interest!
In the develop branch we have updated the nixpkgs pin and fixed the fetchNixpkgs.nix thing. If you're interested in playing with the code then the develop branch is better than master.
I very strongly recommend using the binary cache.
I added docs for NixOS in #3860.