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 -e 's,{core/mailman_path},/var/lib/mailman,g' \
45 $i > httpd.conf.d-fhs/$(basename $i)
47 message="FHS like paths"
48 cat > httpd.conf.d-fhs/README.generated <<EOF
49 Attention developers : contents of this directory are *generated
52 See ../README.httpd-conf-d-flavours for more details
57 # FHS like paths (for Redhat packages, etc.)
58 mkdir -p httpd.conf.d-fhsrh
59 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
60 sed -e 's,{core/config_path},/etc/gforge,g' \
61 -e 's,{core/source_path},/usr/share/gforge/src,g' \
62 -e 's,{core/data_path},/var/lib/gforge,g' \
63 -e 's,{core/log_path},/var/log/gforge,g' \
64 -e 's,{core/chroot},/var/lib/gforge/chroot,g' \
65 -e 's,{core/custom_path},/etc/gforge/custom,g' \
66 -e 's,{core/url_prefix},/,g' \
67 -e 's,{core/groupdir_prefix},/var/lib/gforge/chroot/home/groups,g' \
68 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
69 -e 's,{scmsvn/repos_path},/var/lib/gforge/chroot/scmrepos/svn,g' \
70 -e 's,{core/mailman_path},/usr/lib/mailman,g' \
71 $i > httpd.conf.d-fhsrh/$(basename $i)
73 message="FHS like paths"
74 cat > httpd.conf.d-fhsrh/README.generated <<EOF
75 Attention developers : contents of this directory are *generated
78 See ../README.httpd-conf-d-flavours for more details
84 mkdir -p httpd.conf.d-opt
85 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
86 sed -e 's,{core/config_path},/etc/gforge,g' \
87 -e 's,{core/source_path},/opt/gforge/src,g' \
88 -e 's,{core/data_path},/var/lib/gforge,g' \
89 -e 's,{core/log_path},/var/log/gforge,g' \
90 -e 's,{core/chroot},/var/lib/gforge/chroot,g' \
91 -e 's,{core/custom_path},/etc/gforge/custom,g' \
92 -e 's,{core/url_prefix},/,g' \
93 -e 's,{core/groupdir_prefix},/var/lib/gforge/chroot/home/groups,g' \
94 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
95 -e 's,{scmsvn/repos_path},/var/lib/gforge/svnroot,g' \
96 -e 's,{core/mailman_path},/usr/lib/mailman,g' \
97 $i > httpd.conf.d-opt/$(basename $i)
99 message="/opt like paths"
100 cat > httpd.conf.d-opt/README.generated <<EOF
101 Attention developers : contents of this directory are *generated
104 See ../README.httpd-conf-d-flavours for more details
109 # /usr/local like paths
110 mkdir -p httpd.conf.d-usrlocal
111 for i in httpd.conf.d/*.inc httpd.conf.d/*.conf ; do
112 sed -e 's,{core/config_path},/etc/gforge,g' \
113 -e 's,{core/source_path},/usr/local/share/gforge/src,g' \
114 -e 's,{core/data_path},/var/local/lib/gforge,g' \
115 -e 's,{core/log_path},/var/log/gforge,g' \
116 -e 's,{core/chroot},/var/local/lib/gforge/chroot,g' \
117 -e 's,{core/custom_path},/etc/gforge/custom,g' \
118 -e 's,{core/url_prefix},/,g' \
119 -e 's,{core/groupdir_prefix},/var/local/lib/gforge/chroot/home/groups,g' \
120 -e 's,{mediawiki/src_path},/usr/share/mediawiki,g' \
121 -e 's,{scmsvn/repos_path},/var/lib/gforge/chroot/scmrepos/svn,g' \
122 -e 's,{core/mailman_path},/usr/lib/mailman,g' \
123 $i > httpd.conf.d-usrlocal/$(basename $i)
125 message="/usr/local like paths"
126 cat > httpd.conf.d-usrlocal/README.generated <<EOF
127 Attention developers : contents of this directory are *generated
130 See ../README.httpd-conf-d-flavours for more details
137 dir=$(forge_get_config config_path)/httpd.conf.d
138 [ -e $dir ] || mkdir -p $dir
140 files=$(ls *.inc *.conf | xargs grep -l {[a-z_]*/[a-z_]*})
141 vars=$(forge_get_config list-all-variables)
142 if [ $BASH_VERSINFO -ge 4 ] ; then
143 # Use associative array if available
147 ftmp=$(mktemp $f.generated.XXXXXX)
150 if [ $BASH_VERSINFO -ge 4 ] ; then
151 # Fast version, with cache, for Bash >= 4
152 if grep -q {$v} $ftmp ; then
153 var_cache[$v]=${var_cache[$v]:-$(forge_get_config ${v##*/} ${v%%/*})}
154 sed -i -e s,{$v},${var_cache[$v]},g $ftmp
157 # Bash 3... no cache, slower
158 if grep -q {$v} $ftmp ; then
159 curvar=$(forge_get_config ${v##*/} ${v%%/*})
160 sed -i -e s,{$v},$curvar,g $ftmp
164 mv $ftmp $f.generated
169 echo "Unknown operation"
170 echo "invoke with $0 [build|install]"