gitweb: Prepare for splitting gitweb
commit08063026a80f980eae62a74df31d3cac7317c8f2
authorJakub Narebski <jnareb@gmail.com>
Thu, 27 Jan 2011 12:23:19 +0000 (27 13:23 +0100)
committerJakub Narebski <jnareb@gmail.com>
Thu, 27 Jan 2011 12:23:19 +0000 (27 13:23 +0100)
treea676fa76646a57d353961ffce1c3b32a8fb8dc9a
parent630fc7878b6fd1bc188d4916b64f4df37658df96
gitweb: Prepare for splitting gitweb

Prepare gitweb for being split into modules that would be installed
in gitweblibdir, by default alongside gitweb in 'lib/' subdirectory.
Gitweb would search first in 'lib/' subdirectory from where it is
installed, via

  use lib __DIR__.'/lib';

(This allow for tests to work with source version of gitweb without
changes.)  Then it searches in $(gitweblibdir) directory (set during
build time), by default "$(gitwebdir)/lib".

This preparatory work allows to add new module to gitweb by simply
adding

  GITWEB_MODULES += <module>

to gitweb/Makefile (assuming that the module is in 'gitweb/lib/'
directory).

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).

At Pavan Kumar Sankara suggestion gitweb/Makefile uses

  install [OPTION]... SOURCE... DIRECTORY

format (2nd format) with single SOURCE rather than

  install [OPTION]... SOURCE DEST

format (1st format) because of security reasons (race conditions).
Modern GNU install has `-T' / `--no-target-directory' option, but we
cannot rely that the $(INSTALL) we are using supports this option.

The install-modules target in gitweb/Makefile uses shell 'for' loop,
instead of make's $(foreach) function, to avoid possible problem with
generating a command line that exceeded the maximum argument list
length.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
gitweb/Makefile
gitweb/gitweb.perl