Re: [RFC PATCH v7 4/9] gitweb: Prepare for splitting gitweb
From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:50:17
Jakub Narebski wrote:
Prepare gitweb for having been split into modules that are to be installed alongside gitweb in 'lib/' subdirectory, by adding use lib __DIR__.'/lib'; to gitweb.perl (to main gitweb script), and preparing for putting modules (relative path) in $(GITWEB_MODULES) in gitweb/Makefile.
Spelled out, this means modules would typically go in /usr/share/gitweb/lib Is that the right place? I suspect something like /usr/lib/gitweb/ could make sense in some installations for two reasons: - even braindamaged webserver configurations would not serve lib/ as static files in that case; - if some modules are implemented in C for speed, they would need to go in /usr/lib anyway to follow usual filesystem conventions. Does the Makefile let us override the directory with such a setting?
While at it pass GITWEBLIBDIR in addition to GITWEB_TEST_INSTALLED to allow testing installed version of gitweb and installed version of modules (for future tests which would check individual (sub)modules). Using __DIR__ from Dir::Self module (not in core, that's why currently gitweb includes excerpt of code from Dir::Self defining __DIR__) was chosen over using FindBin-based solution (in core since perl 5.00307, while gitweb itself requires at least perl 5.8.0) because FindBin uses BEGIN block
This explanation and the code below leave me nervous that the answer might be "no". ;-) [...]
quoted hunk ↗ jump to hunk
--- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl@@ -10,6 +10,14 @@ use 5.008; use strict; use warnings; + +use File::Spec; +# __DIR__ is taken from Dir::Self __DIR__ fragment +sub __DIR__ () { + File::Spec->rel2abs(join '', (File::Spec->splitpath(__FILE__))[0, 1]); +} +use lib __DIR__ . '/lib'; + use CGI qw(:standard :escapeHTML -nosticky); use CGI::Util qw(unescape); use CGI::Carp qw(fatalsToBrowser);