Re: [PATCHv2/RFC] gitweb: Prepare for splitting gitweb

3 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCHv2/RFC] gitweb: Prepare for splitting gitweb

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:06

Jakub Narebski [off-list ref] writes:
quoted
quoted
+install-modules:
+	install_dirs=$(sort $(dir $(GITWEB_MODULES))) && \
...
For example with the following Makefile:

  GITWEB_MODULES += GitwebCache/SimpleFileCache.pm
  GITWEB_MODULES += GitwebCache/Capture.pm
  GITWEB_MODULES += GitwebCache/Capture/SelectFH.pm
  GITWEB_MODULES += Gitweb/Config.pm
  
  all:
  	@echo $(sort $(dir $(GITWEB_MODULES)))

running 'make' results in:

  Gitweb/ GitwebCache/ GitwebCache/Capture/

Try replacing that with:

	all:
        	install_dirs=$(sort $(dir $(GITWEB_MODULES))) && \
                echo $$install_dirs

perhaps?

Hint: dq.

Re: [PATCHv2/RFC] gitweb: Prepare for splitting gitweb

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:49:06

Dnia czwartek 8. lipca 2010 02:30, Junio C Hamano napisał:
Jakub Narebski [off-list ref] writes:
quoted
quoted
quoted
+install-modules:
+	install_dirs=$(sort $(dir $(GITWEB_MODULES))) && \
...
For example with the following Makefile:

  GITWEB_MODULES += GitwebCache/SimpleFileCache.pm
  GITWEB_MODULES += GitwebCache/Capture.pm
  GITWEB_MODULES += GitwebCache/Capture/SelectFH.pm
  GITWEB_MODULES += Gitweb/Config.pm
  
  all:
  	@echo $(sort $(dir $(GITWEB_MODULES)))

running 'make' results in:

  Gitweb/ GitwebCache/ GitwebCache/Capture/

Try replacing that with:

	all:
        	install_dirs=$(sort $(dir $(GITWEB_MODULES))) && \
                echo $$install_dirs

perhaps?

Hint: dq.
You are completely right.  I'm sorry.  I should have copied the 
structure from "[PATCH 2/2 v2] Makefile: work around ksh's failure to 
handle missing list argument to for loop" more carefully.

I'll resend it.
-- 
Jakub Narebski
Poland

[PATCHv3/RFC] gitweb: Prepare for splitting gitweb

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:49:06

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.

Signed-off-by: Jakub Narebski <redacted>
---
Differences from v2:
* Fixed issue with quoting value of shell variable, pointed by Junio
* Removed spurious unrelated addition of an empty line, pointed by  
  Ævar

 gitweb/Makefile    |   14 +++++++++++++-
 gitweb/gitweb.perl |    8 ++++++++
 2 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/gitweb/Makefile b/gitweb/Makefile
index 2fb7c2d..b39d716 100644
--- a/gitweb/Makefile
+++ b/gitweb/Makefile
@@ -55,6 +55,7 @@ PERL_PATH  ?= /usr/bin/perl
 bindir_SQ = $(subst ','\'',$(bindir))#'
 gitwebdir_SQ = $(subst ','\'',$(gitwebdir))#'
 gitwebstaticdir_SQ = $(subst ','\'',$(gitwebdir)/static)#'
+gitweblibdir_SQ = $(subst ','\'',$(gitwebdir)/lib)#'
 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))#'
 PERL_PATH_SQ  = $(subst ','\'',$(PERL_PATH))#'
 DESTDIR_SQ    = $(subst ','\'',$(DESTDIR))#'
@@ -145,12 +146,23 @@ gitweb.cgi: gitweb.perl GITWEB-BUILD-OPTIONS
 
 ### Installation rules
 
-install: all
+install: all install-modules
 	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)'
 	$(INSTALL) -m 755 $(GITWEB_PROGRAMS) '$(DESTDIR_SQ)$(gitwebdir_SQ)'
 	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
 	$(INSTALL) -m 644 $(GITWEB_FILES) '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
 
+install-modules:
+	install_dirs="$(sort $(dir $(GITWEB_MODULES)))" && \
+	for dir in $$install_dirs; do \
+		test -d '$(DESTDIR_SQ)$(gitwebdir_SQ)/$$dir' || \
+		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)/$$dir'; \
+	done
+	gitweb_modules="$(GITWEB_MODULES)" && \
+	for mod in $$gitweb_modules; do \
+		$(INSTALL) -m 644 $$mod '$(DESTDIR_SQ)$(gitwebdir_SQ)/$$(dirname $$mod)'; \
+	done
+
 ### Cleaning rules
 
 clean:
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 1f611d2..ec60a4d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -9,6 +9,14 @@
 
 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 set_message);
-- 
1.7.0.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help