[Nix-dev] [Hydra] Configuration of system identifiers
Sander van der Burg - EWI
S.vanderBurg at tudelft.nl
Fri Sep 27 19:13:29 CEST 2013
Hi,
I've noticed that recent versions of Hydra no longer produce multiple outputs per job. So in order to perform builds for multiple system targets, e.g. i686-linux and x86_64-linux simultaneously, it now seems to be common that we do something like this in a release expression:
{nixpkgs ? <nixpkgs>}:
let
pkgs = import nixpkgs {};
systems = [ "i686-linux" "x86_64-linux" ];
in
{
tarball = ...;
build = pkgs.lib.genAttrs systems (system:
pkgs.stdenv.mkDerivation { ... }
);
}
Apparently, it's also common to have a hardcoded list of system identifiers from which an attribute set is composed (through lib.genAttrs {}) with unique jobs per system architecture.
What I don't like very much about this approach is that fact that these system identifiers are hardcoded. I would like to have the ability to configure target architectures through Hydra's web interface, like we did when multiple outputs per job were still supported. The Hydra web interface, however, does not have the ability to configure lists of strings that can be passed as parameters to these release expressions.
However, it still has the ability to configure multiple string values per parameter (i.e. if I would specify 2 values for system then my expression gets called twice). Using this I can still compose jobs that take system identifiers from Hydra's web interface and having unique job names at the same time, but I'm not sure if this is the recommended way to go:
{ nixpkgs ? <nixpkgs>
, system ? builtins.currentSystem
}:
let
pkgs = import nixpkgs { inherit system; };
in
{
tarball = builtins.listToAttrs [ ... ];
build = builtins.listToAttrs [
{ name = system;
value = pkgs.stdenv.mkDerivation { ... };
}
];
}
However, I find this approach a bit ugly and I have the feeling that Hydra's ability to provide mutiple string values per jobset parameter is also going to be removed at some point in the future.
So should I stick to this latter approach or would it be a good idea that we can also pass list of strings to a release expression from Hydra's web interface? Or is there even a better way to do it?
-- Sander
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20130927/6b4adc5d/attachment.html
More information about the nix-dev
mailing list