3 # Generates contents of the apache configuration files based on the
4 # sources in src/etc/httpd.conf.d/ for 3 different flavours :
5 # - src/etc/httpd.conf.d-fhs/ : for FHS like paths (/usr, ...)
6 # - src/etc/httpd.conf.d-opt/ : for /opt like paths
7 # - src/etc/httpd.conf.d-usrlocal/ : for /usr/local like paths
9 # See the thread at : http://lists.fusionforge.org/pipermail/fusionforge-general/2010-June/001067.html for some more details
12 # invoke with utils/manage-apache-config.sh build to regenerate the config files
13 # or with utils/manage-apache-config.sh install to ...(TODO: document this)...
17 # Change to the script directory
19 # Guess where is Apache config directory
20 if [ -e src/etc/httpd.conf.d ] ; then # We're in the parent dir
22 elif [ -e etc/httpd.conf.d ] ; then # probably in src/ (or a renamed gforge/)
24 elif [ -e ../etc/httpd.conf.d ] ; then # possibly in src/etc
27 echo "Couldn't find Apache config directory..."
31 # FHS like paths (for Debian packages, etc.)
32 mkdir -p httpd.conf.d-fhs
33 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
34 sed -e 's,{core/config_path},/etc/gforge,g' \
35 -e 's,{core/source_path},/usr/share/gforge,g' \
36 -e 's,{core/data_path},/var/lib/gforge,g' \
37 -e 's,{core/log_path},/var/log/gforge,g' \
38 -e 's,{core/chroot},/var/lib/gforge/chroot,g' \
39 -e 's,{core/custom_path},/etc/gforge/custom,g' \
40 -e 's,{core/url_prefix},/,g' \
41 -e 's,{core/groupdir_prefix},/var/lib/gforge/chroot/home/groups,g' \
42 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
43 -e 's,{scmsvn/repos_path},/var/lib/gforge/chroot/scmrepos/svn,g' \
44 $i > httpd.conf.d-fhs/$(basename $i)
46 message="FHS like paths"
47 cat > httpd.conf.d-fhs/README.generated <<EOF
48 Attention developers : contents of this directory are *generated
51 See ../README.httpd-conf-d-flavours for more details
57 mkdir -p httpd.conf.d-opt
58 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
59 sed -e 's,{core/config_path},/etc/gforge,g' \
60 -e 's,{core/source_path},/opt/gforge/src,g' \
61 -e 's,{core/data_path},/var/lib/gforge,g' \
62 -e 's,{core/log_path},/var/log/gforge,g' \
63 -e 's,{core/chroot},/var/lib/gforge/chroot,g' \
64 -e 's,{core/custom_path},/etc/gforge/custom,g' \
65 -e 's,{core/url_prefix},/,g' \
66 -e 's,{core/groupdir_prefix},/var/lib/gforge/chroot/home/groups,g' \
67 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
68 -e 's,{scmsvn/repos_path},/var/lib/gforge/svnroot,g' \
69 $i > httpd.conf.d-opt/$(basename $i)
71 message="/opt like paths"
72 cat > httpd.conf.d-opt/README.generated <<EOF
73 Attention developers : contents of this directory are *generated
76 See ../README.httpd-conf-d-flavours for more details
81 # /usr/local like paths
82 mkdir -p httpd.conf.d-usrlocal
83 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
84 sed -e 's,{core/config_path},/etc/gforge,g' \
85 -e 's,{core/source_path},/usr/local/share/gforge/src,g' \
86 -e 's,{core/data_path},/var/local/lib/gforge,g' \
87 -e 's,{core/log_path},/var/log/gforge,g' \
88 -e 's,{core/chroot},/var/local/lib/gforge/chroot,g' \
89 -e 's,{core/custom_path},/etc/gforge/custom,g' \
90 -e 's,{core/url_prefix},/,g' \
91 -e 's,{core/groupdir_prefix},/var/local/lib/gforge/chroot/home/groups,g' \
92 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
93 -e 's,{scmsvn/repos_path},/var/lib/gforge/chroot/scmrepos/svn,g' \
94 $i > httpd.conf.d-usrlocal/$(basename $i)
96 message="/usr/local like paths"
97 cat > httpd.conf.d-usrlocal/README.generated <<EOF
98 Attention developers : contents of this directory are *generated
101 See ../README.httpd-conf-d-flavours for more details
108 dir=$(forge_get_config config_path)/httpd.conf.d
109 [ -e $dir ] || mkdir -p $dir
111 files=$(ls *.inc *.conf | xargs grep -l {[a-z_]*/[a-z_]*})
112 vars=$(forge_get_config list-all-variables)
113 if [ $BASH_VERSINFO -ge 4 ] ; then
114 # Use associative array if available
118 ftmp=$(mktemp $f.generated.XXXXXX)
121 if [ $BASH_VERSINFO -ge 4 ] ; then
122 # Fast version, with cache, for Bash >= 4
123 if grep -q {$v} $ftmp ; then
124 var_cache[$v]=${var_cache[$v]:-$(forge_get_config ${v##*/} ${v%%/*})}
125 sed -i -e s,{$v},${var_cache[$v]},g $ftmp
128 # Bash 3... no cache, slower
129 if grep -q {$v} $ftmp ; then
130 curvar=$(forge_get_config ${v##*/} ${v%%/*})
131 sed -i -e s,{$v},$curvar,g $ftmp
135 mv $ftmp $f.generated
140 echo "Unknown operation"
141 echo "invoke with $0 [build|install]"