diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix index 3acfd4bc4001..4c78963d7fa4 100644 --- a/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix +++ b/nixpkgs/pkgs/applications/version-management/git-and-tools/git/default.nix @@ -14,6 +14,7 @@ , darwin , withLibsecret ? false , pkgconfig, glib, libsecret +, gzip # needed at runtime by gitweb.cgi }: assert sendEmailSupport -> perlSupport; @@ -22,6 +23,8 @@ assert svnSupport -> perlSupport; let version = "2.22.0"; svn = subversionClient.override { perlBindings = perlSupport; }; + + gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ]; in stdenv.mkDerivation { @@ -32,7 +35,7 @@ stdenv.mkDerivation { sha256 = "17zj6jwx3s6bybd290f1mj5iym1r64560rmnf0p63x4akxclp7hm"; }; - outputs = [ "out" ] ++ stdenv.lib.optional perlSupport "gitweb"; + outputs = [ "out" ]; hardeningDisable = [ "format" ]; @@ -164,16 +167,13 @@ stdenv.mkDerivation { EOS )" perl -0777 -i -pe "$SCRIPT" \ - $out/libexec/git-core/git-{sh-setup,filter-branch,merge-octopus,mergetool,quiltimport,request-pull,stash,submodule,subtree,web--browse} + $out/libexec/git-core/git-{sh-setup,filter-branch,merge-octopus,mergetool,quiltimport,request-pull,submodule,subtree,web--browse} # Also put git-http-backend into $PATH, so that we can use smart # HTTP(s) transports for pushing ln -s $out/libexec/git-core/git-http-backend $out/bin/git-http-backend '' + stdenv.lib.optionalString perlSupport '' - # put in separate package for simpler maintenance - mv $out/share/gitweb $gitweb/ - # wrap perl commands makeWrapper "$out/share/git/contrib/credential/netrc/git-credential-netrc" $out/bin/git-credential-netrc \ --set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}" @@ -187,6 +187,16 @@ stdenv.mkDerivation { --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}" wrapProgram $out/libexec/git-core/git-cvsexportcommit \ --set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}" + + # gzip (and optionally bzip2, xz, zip) are runtime dependencies for + # gitweb.cgi, need to patch so that it's found + sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \ + $out/share/gitweb/gitweb.cgi + # Give access to CGI.pm and friends (was removed from perl core in 5.22) + for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do + sed -i -e "/use CGI /i use lib \"$p/${perlPackages.perl.libPrefix}\";" \ + "$out/share/gitweb/gitweb.cgi" + done '' + (if svnSupport then '' |