Why is openbsm being built instead of downloaded?

So, I’m building a large software project that’s beginning to use Nix to manage dependencies in Ruby, Node, and Python (and a few other little things in Haskell.) Today’s task is to get updated to 18.09 so that we can take advantage of the latest packages and fixes for Mojave. I’m pulling this particular set of packages:

let
  rev = "03dc6471c12a0ef505ad8136ce07d47b332f2def";
  sha256 = "194h5v5gp7zp93himc0g73mn8nn6lk30k848isrd3cznyl0637bz";
  pkgsPath = builtins.fetchTarball {
    url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
    sha256 = sha256;
  };
in
import pkgsPath { config = {}; }

And it downloads fine at that particular revision (which AFAICT corresponds to this hydra job: https://hydra.nixos.org/eval/1490819.) But when I go to build some things, it’s not downloading the what seems to be the right stuff as persisted in the Nix cache. In particular, it’s having a hard time building openbsm because of this message: openbsm build is slightly impure · Issue #46429 · NixOS/nixpkgs · GitHub (openbsm is an upstream dependency of git-lfs, which we have in our shell.nix.)

Strange thing is, it looks like openbsm builds fine, or last built fine: https://hydra.nixos.org/eval/1490757?filter=openbsm&compare=1490709&full=

So what am I doing wrong? Am I incorrect in reading that openbsm was built successfully? Why are the packages having to be built on my local computer instead of being downloaded, when it appears they’re available?

I’m totally open to hearing “hey, you’re just thinking about this in the wrong way” as there are a lot of things in Nix that I’m not completely solid in my understanding yet. :smile:

That’s very weird. Can you try this:

nix-store -r /nix/store/ffxvrp61kssxx1crmbqp0wy5bcy4f8lk-openbsm-1.1

That’s the store path listed in the hydra job. if the binary cache is working correctly, it should download this quickly.

2 Likes

this worked! Yes, it was very weird indeed!

Then, with the help of a colleague, I realized that we were invoking our project with nix-shell --option substituters https://our-cache.cachix.org and not --option extra-subsituters https://our-cache.cachix.org. That seems to have done the trick; it’s downloading everything instead of building now!

Thank you for the pointer!

1 Like