Skip to content

Commit d2507bb

Browse files
pks-tgitster
authored andcommitted
Makefile: extract script to generate gitweb.cgi
In order to generate "gitweb.cgi" we have to replace various different placeholders. This is done ad-hoc and is thus not easily reusable across different build systems. Introduce a new GITWEB-BUILD-OPTIONS.in template that we populate at configuration time with the expected options. This script is then used as input for a new "generate-gitweb.sh" script that generates the final "gitweb.cgi" file. While this requires us to repeat the options multiple times, it is in line to how we generate other build options like our GIT-BUILD-OPTIONS file. While at it, refactor how we replace the GITWEB_PROJECT_MAXDEPTH. Even though this variable is supposed to be an integer, the source file has the value quoted. The quotes are eventually stripped via sed(1), which replaces `"@GITWEB_PROJECT_MAXDEPTH@"` with the actual value, which is rather nonsensical. This is made clearer by just dropping the quotes in the source file. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b7835b9 commit d2507bb

File tree

4 files changed

+101
-31
lines changed

4 files changed

+101
-31
lines changed

gitweb/GITWEB-BUILD-OPTIONS.in

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
PERL_PATH=@PERL_PATH@
2+
JSMIN=@JSMIN@
3+
CSSMIN=@CSSMIN@
4+
GIT_BINDIR=@GIT_BINDIR@
5+
GITWEB_CONFIG=@GITWEB_CONFIG@
6+
GITWEB_CONFIG_SYSTEM=@GITWEB_CONFIG_SYSTEM@
7+
GITWEB_CONFIG_COMMON=@GITWEB_CONFIG_COMMON@
8+
GITWEB_HOME_LINK_STR=@GITWEB_HOME_LINK_STR@
9+
GITWEB_SITENAME=@GITWEB_SITENAME@
10+
GITWEB_PROJECTROOT=@GITWEB_PROJECTROOT@
11+
GITWEB_PROJECT_MAXDEPTH=@GITWEB_PROJECT_MAXDEPTH@
12+
GITWEB_EXPORT_OK=@GITWEB_EXPORT_OK@
13+
GITWEB_STRICT_EXPORT=@GITWEB_STRICT_EXPORT@
14+
GITWEB_BASE_URL=@GITWEB_BASE_URL@
15+
GITWEB_LIST=@GITWEB_LIST@
16+
GITWEB_HOMETEXT=@GITWEB_HOMETEXT@
17+
GITWEB_CSS=@GITWEB_CSS@
18+
GITWEB_LOGO=@GITWEB_LOGO@
19+
GITWEB_FAVICON=@GITWEB_FAVICON@
20+
GITWEB_JS=@GITWEB_JS@
21+
GITWEB_SITE_HTML_HEAD_STRING=@GITWEB_SITE_HTML_HEAD_STRING@
22+
GITWEB_SITE_HEADER=@GITWEB_SITE_HEADER@
23+
GITWEB_SITE_FOOTER=@GITWEB_SITE_FOOTER@
24+
HIGHLIGHT_BIN=@HIGHLIGHT_BIN@

gitweb/Makefile

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -77,43 +77,42 @@ GITWEB_JSLIB_FILES += static/js/javascript-detection.js
7777
GITWEB_JSLIB_FILES += static/js/adjust-timezone.js
7878
GITWEB_JSLIB_FILES += static/js/blame_incremental.js
7979

80-
81-
GITWEB_REPLACE = \
82-
-e 's|@GIT_VERSION@|$(GIT_VERSION)|g' \
83-
-e 's|@GIT_BINDIR@|$(bindir)|g' \
84-
-e 's|@GITWEB_CONFIG@|$(GITWEB_CONFIG)|g' \
85-
-e 's|@GITWEB_CONFIG_SYSTEM@|$(GITWEB_CONFIG_SYSTEM)|g' \
86-
-e 's|@GITWEB_CONFIG_COMMON@|$(GITWEB_CONFIG_COMMON)|g' \
87-
-e 's|@GITWEB_HOME_LINK_STR@|$(GITWEB_HOME_LINK_STR)|g' \
88-
-e 's|@GITWEB_SITENAME@|$(GITWEB_SITENAME)|g' \
89-
-e 's|@GITWEB_PROJECTROOT@|$(GITWEB_PROJECTROOT)|g' \
90-
-e 's|"@GITWEB_PROJECT_MAXDEPTH@"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
91-
-e 's|@GITWEB_EXPORT_OK@|$(GITWEB_EXPORT_OK)|g' \
92-
-e 's|@GITWEB_STRICT_EXPORT@|$(GITWEB_STRICT_EXPORT)|g' \
93-
-e 's|@GITWEB_BASE_URL@|$(GITWEB_BASE_URL)|g' \
94-
-e 's|@GITWEB_LIST@|$(GITWEB_LIST)|g' \
95-
-e 's|@GITWEB_HOMETEXT@|$(GITWEB_HOMETEXT)|g' \
96-
-e 's|@GITWEB_CSS@|$(GITWEB_CSS)|g' \
97-
-e 's|@GITWEB_LOGO@|$(GITWEB_LOGO)|g' \
98-
-e 's|@GITWEB_FAVICON@|$(GITWEB_FAVICON)|g' \
99-
-e 's|@GITWEB_JS@|$(GITWEB_JS)|g' \
100-
-e 's|@GITWEB_SITE_HTML_HEAD_STRING@|$(GITWEB_SITE_HTML_HEAD_STRING)|g' \
101-
-e 's|@GITWEB_SITE_HEADER@|$(GITWEB_SITE_HEADER)|g' \
102-
-e 's|@GITWEB_SITE_FOOTER@|$(GITWEB_SITE_FOOTER)|g' \
103-
-e 's|@HIGHLIGHT_BIN@|$(HIGHLIGHT_BIN)|g'
104-
10580
.PHONY: FORCE
10681
$(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS: FORCE
107-
@rm -f $@+
108-
@echo "x" '$(PERL_PATH_SQ)' $(GITWEB_REPLACE) "$(JSMIN)|$(CSSMIN)" >$@+
82+
@sed -e 's|@PERL_PATH@|$(PERL_PATH_SQ)|' \
83+
-e 's|@JSMIN@|$(JSMIN)|' \
84+
-e 's|@CSSMIN@|$(CSSMIN)|' \
85+
-e 's|@GIT_VERSION@|$(GIT_VERSION)|' \
86+
-e 's|@GIT_BINDIR@|$(bindir)|' \
87+
-e 's|@GITWEB_CONFIG@|$(GITWEB_CONFIG)|' \
88+
-e 's|@GITWEB_CONFIG_SYSTEM@|$(GITWEB_CONFIG_SYSTEM)|' \
89+
-e 's|@GITWEB_CONFIG_COMMON@|$(GITWEB_CONFIG_COMMON)|' \
90+
-e 's|@GITWEB_HOME_LINK_STR@|$(GITWEB_HOME_LINK_STR)|' \
91+
-e 's|@GITWEB_SITENAME@|$(GITWEB_SITENAME)|' \
92+
-e 's|@GITWEB_PROJECTROOT@|$(GITWEB_PROJECTROOT)|' \
93+
-e 's|@GITWEB_PROJECT_MAXDEPTH@|$(GITWEB_PROJECT_MAXDEPTH)|' \
94+
-e 's|@GITWEB_EXPORT_OK@|$(GITWEB_EXPORT_OK)|' \
95+
-e 's|@GITWEB_STRICT_EXPORT@|$(GITWEB_STRICT_EXPORT)|' \
96+
-e 's|@GITWEB_BASE_URL@|$(GITWEB_BASE_URL)|' \
97+
-e 's|@GITWEB_LIST@|$(GITWEB_LIST)|' \
98+
-e 's|@GITWEB_HOMETEXT@|$(GITWEB_HOMETEXT)|' \
99+
-e 's|@GITWEB_CSS@|$(GITWEB_CSS)|' \
100+
-e 's|@GITWEB_LOGO@|$(GITWEB_LOGO)|' \
101+
-e 's|@GITWEB_FAVICON@|$(GITWEB_FAVICON)|' \
102+
-e 's|@GITWEB_JS@|$(GITWEB_JS)|' \
103+
-e 's|@GITWEB_SITE_HTML_HEAD_STRING@|$(GITWEB_SITE_HTML_HEAD_STRING)|' \
104+
-e 's|@GITWEB_SITE_HEADER@|$(GITWEB_SITE_HEADER)|' \
105+
-e 's|@GITWEB_SITE_FOOTER@|$(GITWEB_SITE_FOOTER)|' \
106+
-e 's|@HIGHLIGHT_BIN@|$(HIGHLIGHT_BIN)|' \
107+
$(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS.in >"$@+"
109108
@cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@
110109

110+
$(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)generate-gitweb-cgi.sh
111111
$(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS
112+
$(MAK_DIR_GITWEB)gitweb.cgi: GIT-VERSION-FILE
112113
$(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)gitweb.perl
113114
$(QUIET_GEN)$(RM) $@ $@+ && \
114-
sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
115-
$(GITWEB_REPLACE) $< >$@+ && \
116-
chmod +x $@+ && \
115+
$(MAK_DIR_GITWEB)generate-gitweb-cgi.sh $(MAK_DIR_GITWEB)/GITWEB-BUILD-OPTIONS ./GIT-VERSION-FILE $< $@+ && \
117116
mv $@+ $@
118117

119118
$(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES))

gitweb/generate-gitweb-cgi.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
if test $# -ne 4
6+
then
7+
echo >&2 "USAGE: $0 <GITWEB-BUILD-OPTIONS> <GIT-VERSION-FILE> <INPUT> <OUTPUT>"
8+
exit 1
9+
fi
10+
11+
GITWEB_BUILD_OPTIONS="$1"
12+
GIT_VERSION_FILE="$2"
13+
INPUT="$3"
14+
OUTPUT="$4"
15+
16+
. "$GITWEB_BUILD_OPTIONS"
17+
. "$GIT_VERSION_FILE"
18+
19+
sed -e "1s|#!/usr/bin/perl|#!$PERL_PATH|" \
20+
-e "s|@PERL_PATH@|$PERL_PATH|" \
21+
-e "s|@JSMIN@|$JSMIN|" \
22+
-e "s|@CSSMIN@|$CSSMIN|" \
23+
-e "s|@GIT_VERSION@|$GIT_VERSION|" \
24+
-e "s|@GIT_BINDIR@|$GIT_BINDIR|" \
25+
-e "s|@GITWEB_CONFIG@|$GITWEB_CONFIG|" \
26+
-e "s|@GITWEB_CONFIG_SYSTEM@|$GITWEB_CONFIG_SYSTEM|" \
27+
-e "s|@GITWEB_CONFIG_COMMON@|$GITWEB_CONFIG_COMMON|" \
28+
-e "s|@GITWEB_HOME_LINK_STR@|$GITWEB_HOME_LINK_STR|" \
29+
-e "s|@GITWEB_SITENAME@|$GITWEB_SITENAME|" \
30+
-e "s|@GITWEB_PROJECTROOT@|$GITWEB_PROJECTROOT|" \
31+
-e "s|@GITWEB_PROJECT_MAXDEPTH@|$GITWEB_PROJECT_MAXDEPTH|" \
32+
-e "s|@GITWEB_EXPORT_OK@|$GITWEB_EXPORT_OK|" \
33+
-e "s|@GITWEB_STRICT_EXPORT@|$GITWEB_STRICT_EXPORT|" \
34+
-e "s|@GITWEB_BASE_URL@|$GITWEB_BASE_URL|" \
35+
-e "s|@GITWEB_LIST@|$GITWEB_LIST|" \
36+
-e "s|@GITWEB_HOMETEXT@|$GITWEB_HOMETEXT|" \
37+
-e "s|@GITWEB_CSS@|$GITWEB_CSS|" \
38+
-e "s|@GITWEB_LOGO@|$GITWEB_LOGO|" \
39+
-e "s|@GITWEB_FAVICON@|$GITWEB_FAVICON|" \
40+
-e "s|@GITWEB_JS@|$GITWEB_JS|" \
41+
-e "s|@GITWEB_SITE_HTML_HEAD_STRING@|$GITWEB_SITE_HTML_HEAD_STRING|" \
42+
-e "s|@GITWEB_SITE_HEADER@|$GITWEB_SITE_HEADER|" \
43+
-e "s|@GITWEB_SITE_FOOTER@|$GITWEB_SITE_FOOTER|" \
44+
-e "s|@HIGHLIGHT_BIN@|$HIGHLIGHT_BIN|" \
45+
"$INPUT" >"$OUTPUT"
46+
47+
chmod a+x "$OUTPUT"

gitweb/gitweb.perl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ sub evaluate_uri {
8888

8989
# fs traversing limit for getting project list
9090
# the number is relative to the projectroot
91-
our $project_maxdepth = "@GITWEB_PROJECT_MAXDEPTH@";
91+
our $project_maxdepth = @GITWEB_PROJECT_MAXDEPTH@;
9292

9393
# string of the home link on top of all pages
9494
our $home_link_str = "@GITWEB_HOME_LINK_STR@";

0 commit comments

Comments
 (0)