2GK5DOU7ODF4WBSN3QTD3WIO52VTL2LOAXKGCDEMMAQPTEO4A4HAC IK53RV4VGOHLCZGQCCIKPB45M3C7M7YMNBOJFBGZJ4LWIZNU4QNQC J5UVLXOK6EDIL5I7VKWH4V2QDS4DPD7FHRK6XBWSXFRQS4JKXFZQC L5VIEXSC5R72SEDSWF7HWNXMSTAAADBUMCSREU5ITMRXLEJ6KZWQC MOCEUXZAS4CNZL2QDKGVTZCRZ6AMOO2WSFHJ4VPZPPPAXHANG4NAC B72GLND4UQKSGNGIY4FA6HLQNFS42SKRXV5NHTHADUJRU73NELAAC W6DC6K4INJQOJYR553ISCKZV7YIOGHEM3FZQPOLAPSZQ3KSJDMRQC UVMFS73TI6RARMAAGY2UVS5LCPZUKLQECXQQVER4F7S4BNUXQQ3AC return error($c, "Not yet implemented.");
return error($c, "Product is not a Nix build.") if $product->type ne "nix-build";return error($c, "Path " . $product->path . " is no longer available.") unless HydraFrontend::Helper::Nix::isValidPath($product->path);$c->stash->{current_view} = 'HydraFrontend::View::NixClosure';$c->stash->{storePath} = $product->path;$c->stash->{name} = $build->nixname;
package HydraFrontend::Helper::Nix;use strict;sub isValidPath {my $path = shift;$SIG{CHLD} = 'DEFAULT'; # !!! work around system() failing if SIGCHLD is ignoredreturn system("nix-store --check-validity $path") == 0;}1;
package HydraFrontend::View::NixClosure;use strict;use base qw/Catalyst::View/;use IO::Pipe;use POSIX qw(dup2);sub process {my ( $self, $c ) = @_;$c->response->content_type('application/x-nix-export');$c->response->header('Content-Disposition' => 'attachment; filename=' . $c->stash->{name} . '.closure.gz');my $storePath = $c->stash->{storePath};open(OUTPUT, "nix-store --export `nix-store -qR $storePath` | gzip |");my $fh = new IO::Handle;$fh->fdopen(fileno(OUTPUT), "r") or die;$c->response->body($fh);return 1;}1;
[<a class="productDetailsToggle" href="javascript:">help</a>]<div class="help productDetails"><p>If you have Nix installed on your machine, this build and allits dependencies can be unpacked into your local Nix store bydoing:</p><pre>$ gunzip < [% HTML.escape(build.nixname) %].closure.gz | nix-store --import</pre>or to download and unpack in one command:<pre>$ curl [% c.uri_for('/closure' build.id product.productnr) %] | gunzip | nix-store --import</pre><p>The package can then be found in the path <tt>[%product.path %]</tt>. If you get the error message “importedarchive lacks a signature”, you should make sure that you havesufficient access rights to the Nix store, e.g., run thecommand as <tt>root</tt>.</p></div>