git, gitweb: Fix git-instaweb
* Make the build system embed the correct path to gitweb into git-instaweb * Move gitweb fixups to the git expression, to make sure that gitweb used by git-instaweb is functional * This will increase the closure size of git, but only with perlSupport
This commit is contained in:
parent
be1c03ddaf
commit
813c6d4664
@ -14,6 +14,7 @@
|
|||||||
, darwin
|
, darwin
|
||||||
, withLibsecret ? false
|
, withLibsecret ? false
|
||||||
, pkgconfig, glib, libsecret
|
, pkgconfig, glib, libsecret
|
||||||
|
, gzip # needed at runtime by gitweb.cgi
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert sendEmailSupport -> perlSupport;
|
assert sendEmailSupport -> perlSupport;
|
||||||
@ -22,6 +23,8 @@ assert svnSupport -> perlSupport;
|
|||||||
let
|
let
|
||||||
version = "2.19.2";
|
version = "2.19.2";
|
||||||
svn = subversionClient.override { perlBindings = perlSupport; };
|
svn = subversionClient.override { perlBindings = perlSupport; };
|
||||||
|
|
||||||
|
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
@ -84,6 +87,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
makeFlags = [
|
makeFlags = [
|
||||||
"prefix=\${out}"
|
"prefix=\${out}"
|
||||||
|
"gitwebdir=\${gitweb}" # put in separate package for simpler maintenance
|
||||||
"SHELL_PATH=${stdenv.shell}"
|
"SHELL_PATH=${stdenv.shell}"
|
||||||
]
|
]
|
||||||
++ (if perlSupport then ["PERL_PATH=${perlPackages.perl}/bin/perl"] else ["NO_PERL=1"])
|
++ (if perlSupport then ["PERL_PATH=${perlPackages.perl}/bin/perl"] else ["NO_PERL=1"])
|
||||||
@ -169,9 +173,6 @@ stdenv.mkDerivation {
|
|||||||
# HTTP(s) transports for pushing
|
# HTTP(s) transports for pushing
|
||||||
ln -s $out/libexec/git-core/git-http-backend $out/bin/git-http-backend
|
ln -s $out/libexec/git-core/git-http-backend $out/bin/git-http-backend
|
||||||
'' + stdenv.lib.optionalString perlSupport ''
|
'' + stdenv.lib.optionalString perlSupport ''
|
||||||
# put in separate package for simpler maintenance
|
|
||||||
mv $out/share/gitweb $gitweb/
|
|
||||||
|
|
||||||
# wrap perl commands
|
# wrap perl commands
|
||||||
makeWrapper "$out/share/git/contrib/credential/netrc/git-credential-netrc" $out/bin/git-credential-netrc \
|
makeWrapper "$out/share/git/contrib/credential/netrc/git-credential-netrc" $out/bin/git-credential-netrc \
|
||||||
--set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
|
--set PERL5LIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
|
||||||
@ -185,6 +186,16 @@ stdenv.mkDerivation {
|
|||||||
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
|
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
|
||||||
wrapProgram $out/libexec/git-core/git-cvsexportcommit \
|
wrapProgram $out/libexec/git-core/git-cvsexportcommit \
|
||||||
--set GITPERLLIB "$out/${perlPackages.perl.libPrefix}:${perlPackages.makePerlPath perlLibs}"
|
--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'|" \
|
||||||
|
$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}\";" \
|
||||||
|
"$gitweb/gitweb.cgi"
|
||||||
|
done
|
||||||
''
|
''
|
||||||
|
|
||||||
+ (if svnSupport then ''
|
+ (if svnSupport then ''
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
{ stdenv, git, gzip, perlPackages, fetchFromGitHub
|
{ stdenv, git, fetchFromGitHub
|
||||||
, gitwebTheme ? false }:
|
, gitwebTheme ? false }:
|
||||||
|
|
||||||
let
|
let
|
||||||
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser CGIFast FCGI FCGIProcManager HTMLTagCloud ];
|
|
||||||
gitwebThemeSrc = fetchFromGitHub {
|
gitwebThemeSrc = fetchFromGitHub {
|
||||||
owner = "kogakure";
|
owner = "kogakure";
|
||||||
repo = "gitweb-theme";
|
repo = "gitweb-theme";
|
||||||
@ -18,16 +17,6 @@ in stdenv.mkDerivation {
|
|||||||
mkdir $out
|
mkdir $out
|
||||||
mv * $out
|
mv * $out
|
||||||
|
|
||||||
# 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/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/gitweb.cgi"
|
|
||||||
done
|
|
||||||
|
|
||||||
${stdenv.lib.optionalString gitwebTheme "cp ${gitwebThemeSrc}/* $out/static"}
|
${stdenv.lib.optionalString gitwebTheme "cp ${gitwebThemeSrc}/* $out/static"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user