Hi Sam, On Sun, Oct 25, 2009 at 01:40, Sam Thursfield <[email protected]> wrote: > Since Nix can build packages from source, does anyone think it would > be neat to use it as a replacement for complex build scripts, like > GNOME's jhbuild?
Sounds interesting. > Nix would need a few obvious extra features: > - svn/git/cvs in addition to fetchurl AFAIK, Nix already have fetchcvs, fetchsvn and fetchgit. > - a way of specifying both a VC repo and tarball locations for a > module in the same file Unfortunately, if you want to have the same hash for both, the tarball should be created by a subversion checkout. Then the tarball can be downloaded as the binary version can be downloaded instead of the sources. If you don't need to have the same hash (implies rebuilding everything depending on it when switching to the other), then this is just the matter of a boolean flag or a default value. > - and a way for the user to specify what version of the module they > want installing. Currently, we try to avoid multiple versions inside NixPkgs, the reason is that we are not an extreme number of developers to maintain multiple versions of a derivation (= jhbuild module). Nonetheless, the feature exists and is used for some programs which are moving slowly or which are not backward compatible. (see selectVersion in NixPkgs) > - the ability to maintain and build modules from directories in the > user's search tree, so they could hack on them and then install them We already have such thing. All projects compiled by the buildfarm ( http://hydra.nixos.org ) have a release.nix file at the root of their repository. This file is use by the buildfarm, to compile the project, and it can be used by the developer bto compile the app from the sources by running "" $ nix-build ./release.nix -A derivationName -o linkToInstallDir "". These release.nix files can have a default path which is looking at other checkout locations to build the current derivation (= jhbuild module) with other derivation located on siblings directories (or based on some environment variables to locate them). > - a way to make the built code more permanent (could put it in a > build/ directory in the source tree or just in the > source tree, as per taste) When you are building with Nix, it does the following: - copy your sources to a sane environment. - build inside the copied directory. - generate an install directory. What you are talking about is VBUILD_PATH, These feature is entirely orthogonal to Nix, This kind of variations is defined inside the builder of the derivation, which builds inside the sources by default. > - more vicious garbage collection, since there would be lots more new > versions being installed I don't get your point? I've a Nix store which is almost 40 GB, which is ridiculous compare to what the buildfarm has, and we do not have bad garbage collection experiences. (except once among ???, I've heard of it on the irc channel) > - and probably other things .. (including stuff like interactive error > handling to make the whole thing a bit more > friendly as a build script) I recommend you to have a look at hydra.nixos.org. > > Anyway, this seems like a fair amount of work and jhbuild does the job > fairly well, so I'm not going to cancel my weekend to start work on > this. I'd really just like to hear from knowledgeable people on > whether they think this is an interesting possibility or whether I am > totally on crack .. I don't think so. All features you have described are already coded and used. So may be you should get a bit more familiar with Nix, and try to setup a buildfarm for some of your projects. -- Nicolas Pierron http://www.linkedin.com/in/nicolasbpierron - http://nbp.name/ Donald Knuth - I can't go to a restaurant because I keep looking at the fonts on the menu. _______________________________________________ nix-dev mailing list [email protected] https://mail.cs.uu.nl/mailman/listinfo/nix-dev
