Git fork

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 <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
d2507bbb b7835b94

+101 -31
+24
gitweb/GITWEB-BUILD-OPTIONS.in
···
··· 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@
+29 -30
gitweb/Makefile
··· 77 GITWEB_JSLIB_FILES += static/js/adjust-timezone.js 78 GITWEB_JSLIB_FILES += static/js/blame_incremental.js 79 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 - 105 .PHONY: FORCE 106 $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS: FORCE 107 - @rm -f $@+ 108 - @echo "x" '$(PERL_PATH_SQ)' $(GITWEB_REPLACE) "$(JSMIN)|$(CSSMIN)" >$@+ 109 @cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@ 110 111 $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS 112 $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)gitweb.perl 113 $(QUIET_GEN)$(RM) $@ $@+ && \ 114 - sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \ 115 - $(GITWEB_REPLACE) $< >$@+ && \ 116 - chmod +x $@+ && \ 117 mv $@+ $@ 118 119 $(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES))
··· 77 GITWEB_JSLIB_FILES += static/js/adjust-timezone.js 78 GITWEB_JSLIB_FILES += static/js/blame_incremental.js 79 80 .PHONY: FORCE 81 $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS: FORCE 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 >"$@+" 108 @cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@ 109 110 + $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)generate-gitweb-cgi.sh 111 $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)GITWEB-BUILD-OPTIONS 112 + $(MAK_DIR_GITWEB)gitweb.cgi: GIT-VERSION-FILE 113 $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)gitweb.perl 114 $(QUIET_GEN)$(RM) $@ $@+ && \ 115 + $(MAK_DIR_GITWEB)generate-gitweb-cgi.sh $(MAK_DIR_GITWEB)/GITWEB-BUILD-OPTIONS ./GIT-VERSION-FILE $< $@+ && \ 116 mv $@+ $@ 117 118 $(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES))
+47
gitweb/generate-gitweb-cgi.sh
···
··· 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"
+1 -1
gitweb/gitweb.perl
··· 88 89 # fs traversing limit for getting project list 90 # the number is relative to the projectroot 91 - our $project_maxdepth = "@GITWEB_PROJECT_MAXDEPTH@"; 92 93 # string of the home link on top of all pages 94 our $home_link_str = "@GITWEB_HOME_LINK_STR@";
··· 88 89 # fs traversing limit for getting project list 90 # the number is relative to the projectroot 91 + our $project_maxdepth = @GITWEB_PROJECT_MAXDEPTH@; 92 93 # string of the home link on top of all pages 94 our $home_link_str = "@GITWEB_HOME_LINK_STR@";