From 190bffd846f044a13c239513f8ef1ea45ee8a1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 23 Jun 2013 15:18:21 +0200 Subject: [PATCH] Don't compress already-compressed files. Fixes . --- src/lib/Hydra/View/NARInfo.pm | 3 ++- src/lib/Hydra/View/NixNAR.pm | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/lib/Hydra/View/NARInfo.pm b/src/lib/Hydra/View/NARInfo.pm index 00dd6a68..8bfd0592 100644 --- a/src/lib/Hydra/View/NARInfo.pm +++ b/src/lib/Hydra/View/NARInfo.pm @@ -2,6 +2,7 @@ package Hydra::View::NARInfo; use strict; use base qw/Catalyst::View/; +use Hydra::View::NixNAR; use File::Basename; use Nix::Store; @@ -17,7 +18,7 @@ sub process { my $info; $info .= "StorePath: $storePath\n"; $info .= "URL: nar/" . basename $storePath. "\n"; - $info .= "Compression: bzip2\n"; + $info .= "Compression: " . file_compression $storePath . "\n"; $info .= "NarHash: $narHash\n"; $info .= "NarSize: $narSize\n"; $info .= "References: " . join(" ", map { basename $_ } @{$refs}) . "\n"; diff --git a/src/lib/Hydra/View/NixNAR.pm b/src/lib/Hydra/View/NixNAR.pm index af1a5367..a403b42d 100644 --- a/src/lib/Hydra/View/NixNAR.pm +++ b/src/lib/Hydra/View/NixNAR.pm @@ -3,16 +3,30 @@ package Hydra::View::NixNAR; use strict; use base qw/Catalyst::View/; +sub file_compression { + my ($file) = $@_; + + if /\\.(gz|bz2|xz|lz|zip)/ + return "none"; + else + return "bzip2"; +} + sub process { my ($self, $c) = @_; my $storePath = $c->stash->{storePath}; + my $compression = file_compression($storePath); $c->response->content_type('application/x-nix-archive'); # !!! check MIME type + $c->response->content_length(-s $storePath) if ($compression == "none"); my $fh = new IO::Handle; - open $fh, "nix-store --dump '$storePath' | bzip2 |"; + if ($compression == "none") + open $fh, "nix-store --dump '$storePath' |"; + else + open $fh, "nix-store --dump '$storePath' | bzip2 |"; $c->response->body($fh);