NixOS / hydra

Hydra, the Nix-based continuous build system
http://nixos.org/hydra
GNU General Public License v3.0
1.16k stars 298 forks source link

Vanilla installations of Hydra will not build kernels #357

Open MostAwesomeDude opened 8 years ago

MostAwesomeDude commented 8 years ago

Hi! I've spun up a vanilla NixOS machine via nixops with Hydra installed. Everything is working great, but one of my jobs refuses to enqueue.

Talking with clever on IRC, we discussed the possibility that the machine with Hydra does not have "big-parallel" in its supportedFeatures, which means that kernels (and one of my jobs) will not build.

What's the right way to resolve this? I tried setting nix.buildMachines to have an entry for the "localhost" machine, and that put a line in /etc/nix/machines, but my Hydra still doesn't build.

The Hydra in question: http://hydra.matador.cloud:3000/queue-summary

domenkozar commented 8 years ago

See https://github.com/snabblab/snabblab-nixos/blob/master/modules/hydra-master.nix as an example

MostAwesomeDude commented 8 years ago

I am confused since the "localhost" clause looks commented-out, but it appears that I would have my Hydra machine SSH into itself? Is the recommended deployment strategy here really to have buildslaves and a Hydra master on two or more machines?

domenkozar commented 8 years ago

That's the easiest for now. See also https://github.com/NixOS/hydra/issues/289 which is basically a duplicate.

utdemir commented 8 years ago

Sorry to use this issue to ask a question, but this is an important problem of mine. I set up my hydra so that:

  nix = {
    nrBuildUsers = 100;
    buildCores = 16; maxJobs = 12;
    distributedBuilds = true;
    buildMachines = [
      { hostName="localhost";
        maxJobs=12; speedFactor=100;
        system="x86_64-linux";
        supportedFeatures = [ "kvm" "nixos-test" "big-parallel" ];
      }
    ];
    extraOptions = "auto-optimise-store = true";
    gc.automatic = true;
  };

It builds most of the derivations just fine, but it does not execute vm tests, they just wait in the queue. I guess this issue's problem is the same. However, I couldn't manage to solve this using supportedFeatures.

Do you have any idea why?

domenkozar commented 8 years ago

I think it treats localhost as an edge case, so maybe there's a bug so that it ignores supportedFeatures. Just a guess.

basvandijk commented 8 years ago

I also have this problem. In my case I'm not building a kernel but I'm trying to run a test on my hydra machine. I worked around it using this ugly hack:

my-test = pkgs.stdenv.lib.overrideDerivation
            (makeTest { ... })
            (oldAttrs : { requiredSystemFeatures = []; });

I would appreciate a proper fix for this.

utdemir commented 8 years ago

@basvandijk Your hack did not work for me, I guess that's because it won't override requiredSystemFeatures of the kernel, it just overrides the derivation returned from makeTest. Am I correct? How do you make it compile kernel with it? Don't we need to recursively set requiredSystemFeatures?

MostAwesomeDude commented 8 years ago

I had to set nix.buildMachines with an entry for localhost. However, now having done that, things work. So my problems are over; I don't know about the other folks in this thread.