[Nix-dev] Re: [Nix-commits] SVN commit: nix - r25375 - in
7c6f434c at mail.ru
7c6f434c at mail.ru
Thu Jan 6 22:19:04 CET 2011
>I don't propose we adopt my solution widely. In fact, downloading a tarball is
Well, such things do like to creep.
>so much better and faster. I propose to adopt it only where other solutions
>fail or are inferior.
>
>Now, the solution itself ctually consists of several losely-related parts.
Of course; and my opinions on these parts differ.
>One part is essentially a scm build approach which makes it easier to override
>the source and which abstracts away the potentially dirty code that decides
>which revision is getting built.
1) Simply overriding src attribute works OK; of course, sometimes overriding it
only partially is nice.
2) I am in favour of including fetchscm expressions where applicable and I do
maintain a few fetchscm-only expressions.
3) My main point is that any Nixpkgs-trunk code for deciding which revision
gets built should better be deterministic and chroot-build friendly.
So, what is the simplification in overriding? That you explicitly list src
as an argument with a default? Sometimes nice. Keep in mind that with
default builder there is overrideDerivation and builderDefs support simply
passing new src.
>Another part is one of the possible implementations of the revision decision
>function, and the dirtiest of the possible implementations. I agree with the
>criticism that it fails at reproducibility department making bisecting system
>configs a problem.
>
>What bothers me is that ALL criticism and discussion so far was centered
>aroung this small bit of code(calling it the solution btw), ignoring the
>proposed scm build format and the fact that the revision logic is pluggable.
Let me explain my (incorrect) perception of the style change that still
guides my reactions.
We have a few style changes about overriding (nearly trivial w.r.t.
functionality gained), some pluggability of logic (not clear if any of
implementations beyond what we already had can work nicely with nix-env -q
and chroot builds) and an implementation with a few clever tricks (I never
thought all that could work anyhow) but with a few significant drawbacks.
Guess what gets commented on - the trivial part, or whether piece-of-art
code can be moved into "science" area?
>What I DO agree with is that the dirtiest fetchgitrevision approach should not
>be made the default, it was a mistake on my part.
>
>I see the dirty revision approach as an easy way to run a trunk build of some
>program by the end user, not necessarily the best and only approach, such as:
>try a dirty live build, if it works, pin the revision which is has just
>printed in console and forget about it; or as in case with redmine, follow the
>maintenance branch.
What really bothers me is what can be left of all that glory that doesn't
conflict with dry-runs, no-build instantiations and chroot builds.
>The manifest-based approach is what you would use if you used many live
>builds, or wanted to bisect the config. And I do plan implementing this as
>well. This entails having a manifest file put under revision control and an
>external script to fetch current revisions.
If I use few live builds, I just keep checkouts. If I want many live builds,
I somehow generate a manifest (actually, I mentioned manifests as an example
of an action which is not really a build but is done by nixos-rebuild).
It is very likely that the latter (maybe even the former) can benefit from
adding your ideas.
More information about the nix-dev
mailing list