Martin Mares wrote[1]:
Show 7 quoted lines
> After upgrade to Stretch, gitweb no longer finds the configuration file > "gitweb_config.perl" in the current directory. However, "man gitweb" still > mentions this as one of the possible locations of the config file (and > indeed a useful one when using multiple instances of gitweb). > > It was probably broken by Perl dropping "." from the default search path > for security reasons.
Indeed, perldelta(1) tells me that in 5.24.1 (and 5.26, etc),
Core modules and tools no longer search "." for optional modules
gitweb.perl contains
sub read_config_file {
my $filename = shift;
return unless defined $filename;
# die if there are errors parsing config file
if (-e $filename) {
do $filename;which implies an @INC search but it is silly --- as the "-e" test illustrates, this never intended to search @INC.
Documentation says "If you are absolutely certain that you want your script to load and execute a file from the current directory, then use a ./ prefix". We can do that, like so:
diff --git i/gitweb/Makefile w/gitweb/Makefile index cd194d057f..3160b6cc5d 100644 --- i/gitweb/Makefile +++ w/gitweb/Makefile @@ -18,7 +18,7 @@ RM ?= rm -f INSTALL ?= install # default configuration for gitweb -GITWEB_CONFIG = gitweb_config.perl +GITWEB_CONFIG = ./gitweb_config.perl GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf GITWEB_CONFIG_COMMON = /etc/gitweb-common.conf GITWEB_HOME_LINK_STR = projects but that does not help if someone overrides GITWEB_CONFIG, and besides, it would be nicer to avoid the possibility of an @INC search altogether. Another alternative would be to use local @INC = ('.'); Would that be better? Advice from someone more versed than I am in perl would be very welcome (hence the cc to Ævar). Thanks for reporting and hope that helps, Jonathan [1] https://bugs.debian.org/915632