* [RFC/PATCH] gitweb: Prepare for splitting gitweb
@ 2010-06-11 10:25 Jakub Narebski
2010-06-12 22:54 ` [RFC/PATCHv2] " Jakub Narebski
0 siblings, 1 reply; 2+ messages in thread
From: Jakub Narebski @ 2010-06-11 10:25 UTC (permalink / raw)
To: git; +Cc: Pavan Kumar Sunkara, Petr Baudis, Christian Couder,
Jakub Narebski
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 <jnareb@gmail.com>
---
This patch is based on commit c0cb4ed (git-instaweb: Configure it to
work with new gitweb structure, 2010-05-28), which is top commit of
'ps/gitweb-soc' branch merged into next on 2010-06-03 (as commit
5db4adf).
It is an RFC patch adding infrastructure for splitting gitweb, or
adding new functionality to gitweb via gitweb modules, without adding
any gitweb module.
It is an RFC because:
1. I'm not sure if having such separate preparatory patch is good
idea. It would allow me to move gitweb output caching to proper
modules, without waiting for gitweb splitting part of GSoC 2010
project to stabilize.
2. I don't know if what I have written in gitweb/Makefile is portable
enough. In particular it uses $(sort WORDLIST), which is not used
otherwise in git Makefiles.
3. Should there be information added to gitweb/INSTALL that one can
put Perl modules in 'lib/' subdirectory? This is why 'use lib ...'
is moved earlier compared to original patch by Pavan..
gitweb/Makefile | 3 +++
gitweb/gitweb.perl | 9 +++++++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/gitweb/Makefile b/gitweb/Makefile
index d2584fe..4694959 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))#'
@@ -150,6 +151,8 @@ install: all
$(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)'
+ $(foreach dir,$(sort $(dir $(GITWEB_MODULES))),test -d '$(DESTDIR_SQ)$(gitwebdir_SQ)/$dir' || $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)/$dir')
+ $(foreach mod,$(GITWEB_MODULES),$(INSTALL) -m 644 $mod '$(DESTDIR_SQ)$(gitwebdir_SQ)/$mod')
### Cleaning rules
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 934aacb..023698f 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);
@@ -16,6 +24,7 @@ use Encode;
use Fcntl ':mode';
use File::Find qw();
use File::Basename qw(basename);
+
binmode STDOUT, ':utf8';
our $t0;
--
1.7.0.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [RFC/PATCHv2] gitweb: Prepare for splitting gitweb
2010-06-11 10:25 [RFC/PATCH] gitweb: Prepare for splitting gitweb Jakub Narebski
@ 2010-06-12 22:54 ` Jakub Narebski
0 siblings, 0 replies; 2+ messages in thread
From: Jakub Narebski @ 2010-06-12 22:54 UTC (permalink / raw)
To: git; +Cc: Pavan Kumar Sunkara, Petr Baudis, Christian Couder
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 <jnareb@gmail.com>
---
This one actually works: tested with gitweb caching series, with
gitweb caching support split into modules.
The generated command is not very elegant, but perhaps it doesn't
matter:
install -d -m 755 '/home/local/gitweb'
install -m 755 gitweb.cgi '/home/local/gitweb'
install -d -m 755 '/home/local/gitweb/static'
install -m 644 static/gitweb.js static/gitweb.css static/git-logo.png static/git-favicon.png '/home/local/gitweb/static'
test -d '/home/local/gitweb/lib/GitwebCache/' || install -d -m 755 '/home/local/gitweb/lib/GitwebCache/'; test -d '/home/local/gitweb/lib/GitwebCache/Capture/' || install -d -m 755 '/home/local/gitweb/lib/GitwebCache/Capture/';
install -m 644 lib/GitwebCache/CacheOutput.pm '/home/local/gitweb/lib/GitwebCache/CacheOutput.pm'; install -m 644 lib/GitwebCache/SimpleFileCache.pm '/home/local/gitweb/lib/GitwebCache/SimpleFileCache.pm'; install -m 644 lib/GitwebCache/Capture.pm '/home/local/gitweb/lib/GitwebCache/Capture.pm'; install -m 644 lib/GitwebCache/Capture/SelectFH.pm '/home/local/gitweb/lib/GitwebCache/Capture/SelectFH.pm';
This patch is based on commit c0cb4ed (git-instaweb: Configure it to
work with new gitweb structure, 2010-05-28), which is top commit of
'ps/gitweb-soc' branch merged into next on 2010-06-03 (as commit
5db4adf).
gitweb/Makefile | 3 +++
gitweb/gitweb.perl | 9 +++++++++
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/gitweb/Makefile b/gitweb/Makefile
index d2584fe..d2401e1 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))#'
@@ -150,6 +151,8 @@ install: all
$(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)'
+ $(foreach dir,$(sort $(dir $(GITWEB_MODULES))),test -d '$(DESTDIR_SQ)$(gitwebdir_SQ)/$(dir)' || $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)/$(dir)';)
+ $(foreach mod,$(GITWEB_MODULES),$(INSTALL) -m 644 $(mod) '$(DESTDIR_SQ)$(gitwebdir_SQ)/$(mod)';)
### Cleaning rules
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e108bbc..dd65943 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);
@@ -16,6 +24,7 @@ use Encode;
use Fcntl ':mode';
use File::Find qw();
use File::Basename qw(basename);
+
binmode STDOUT, ':utf8';
our $t0;
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-06-12 22:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-11 10:25 [RFC/PATCH] gitweb: Prepare for splitting gitweb Jakub Narebski
2010-06-12 22:54 ` [RFC/PATCHv2] " Jakub Narebski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).