[Nix-dev] fixed-output derivation that *also* depend on (some of) its inputs?

Bjørn Forsman bjorn.forsman at gmail.com
Wed Sep 24 21:56:58 CEST 2014


On 22 September 2014 11:52, Wout Mertens <wout.mertens at gmail.com> wrote:
> Isn't the whole point of the fixed-output derivations that the means of
> getting there doesn't matter? So if you change the build script but leave
> the output hash the same, you're basically saying that the build script will
> generate the same output.

Right.

So I guess what I want isn't really a "fixed-output" derivation, but
more of a "checked-output" derivation.

In my use case, I don't have direct control over buildCommand. I run
"grails -Duser.home=$out refresh-dependencies" in the source tree and
grails downloads a bunch of stuff according to what's specified in
$src/.../BuildConfig.groovy. (I've written a fetchGrailsAppDeps
function for that.)

1) The derivation must be fixed-output to allow internet access
2) The output isn't _really_ fixed, because it can change if $src
changes (new application source may have different deps)

> I think what you want is to remove a build product from the store when you
> change the build scripts?

That feels hackish and not something I want to be doing on a regular basis.

> As for this use case, handbrake also downloads a bunch of things as part of
> the build and I made the expression just patch that away, moving all the
> extra building and patches into other expressions.

I considered doing that. But the solution / workaround by adding the
source hash to derivation name (to force rebuild if changed) works so
well :-)

Best regards,
Bjørn Forsman


More information about the nix-dev mailing list