5 Summary: Collaborative Development Tool
11 Group: Development/Tools
13 Source0: http://gforge.org/download.php/44/%{name}-%{version}.tar.bz2
15 Source0: %{name}-%{version}.tar.gz
18 Patch1000: gforge-3.0-local_config.patch
19 Patch1001: gforge-3.0-php_path.patch
20 Patch1002: gforge-3.0-init_sql.patch
21 Patch1003: gforge-3.0-cronjobs.patch
23 Requires: /bin/sh /bin/bash /usr/bin/perl /usr/bin/php
24 Requires: /usr/bin/postmaster /usr/lib/php4/pgsql.so
25 URL: http://www.gforge.org/
26 BuildRoot: /var/tmp/%{name}-%{version}-root
29 GForge is a web-based Collaborative Development Environment offering
30 easy access to CVS, mailing lists, bug tracking, message
31 boards/forums, task management, permanent file archival, and total
32 web-based administration.
34 NOTE: After installing this RPM, you will have a working GForge site
35 at http://localhost/. However, everything is set up to work locally,
36 so if you are installing a site-wide instance of GForge, be sure to
37 customize /etc/gforge/local.inc before use!
39 # Macro for generating an environment variable (%1) with %2 random characters
40 %define randstr() %1=`perl -e 'for ($i = 0, $bit = "!", $key = ""; $i < %2; $i++) {while ($bit !~ /^[0-9A-Za-z]$/) { $bit = chr(rand(90) + 32); } $key .= $bit; $bit = "!"; } print "$key";'`
42 # Change password for "siteadmin"
43 %define chpass() echo "UPDATE users SET user_pw = '%1' WHERE user_name = 'siteadmin'" | su -l postgres -s /bin/sh -c "psql alexandria" >/dev/null 2>&1
55 rm -rf $RPM_BUILD_ROOT
57 mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}
58 for i in backend common cronjobs db monitor utils www ; do
59 cp -rp $i $RPM_BUILD_ROOT%{_datadir}/%{name}/
61 mkdir $RPM_BUILD_ROOT%{_datadir}/%{name}/www/incoming
63 mkdir -p $RPM_BUILD_ROOT/etc/httpd/conf.d
64 install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/etc/httpd/conf.d/%{name}.conf
66 mkdir -p $RPM_BUILD_ROOT/etc/%{name}
67 install -m 600 etc/local.inc $RPM_BUILD_ROOT/etc/%{name}/
69 mkdir -p $RPM_BUILD_ROOT/etc/cron.daily $RPM_BUILD_ROOT/etc/cron.hourly
70 install -m 755 utils/gforge-nightly-cronjobs.sh $RPM_BUILD_ROOT/etc/cron.daily/
71 install -m 755 utils/gforge-hourly-cronjobs.sh $RPM_BUILD_ROOT/etc/cron.hourly/
74 if ! id -u %gfuser >/dev/null 2>&1; then
75 groupadd -r %{gfgroup}
76 useradd -r -g %{gfgroup} -d %{_datadir}/%{name} -s /bin/false -c "GForge User" %{gfuser}
81 # Initial install. Create and populate DB.
82 service postgresql status | grep 'is running' >/dev/null 2>&1 || service postgresql start
83 su -l postgres -s /bin/sh -c "createdb alexandria >/dev/null 2>&1"
84 su -l postgres -s /bin/sh -c "psql alexandria < %{_datadir}/%{name}/db/%{name}3.sql >/tmp/gforge.log 2>&1"
87 (echo $GFPASS ; echo $GFPASS) | su -l postgres -s /bin/sh -c "createuser -D -a -P -E gforge >/dev/null 2>&1"
90 echo "$SAPASS" > /etc/%{name}/siteadmin.pass
91 chmod 0600 /etc/%{name}/siteadmin.pass
92 SAPASS=`echo -n $SAPASS | md5sum | awk '{print $1}'`
95 # Update apache config
96 if test -f /etc/httpd/conf/httpd.conf; then
97 if ! grep 'Include .*%{name}.conf' /etc/httpd/conf/httpd.conf >/dev/null 2>&1; then
98 echo '# Added by %{name} package' >> /etc/httpd/conf/httpd.conf
99 echo "Include /etc/httpd/conf.d/%{name}.conf" >> /etc/httpd/conf/httpd.conf
100 service httpd restart >/dev/null 2>&1
105 if grep -i '^ *register_globals *=' /etc/php.ini >/dev/null 2>&1; then
106 if ! grep -i '^ *register_globals *= *on' /etc/php.ini >/dev/null 2>&1; then
107 perl -pi.pkgsave.%{name} -e 's/^\s*register_globals\s*=.*$/register_globals = On/gi;' /etc/php.ini
110 echo 'register_globals = On' >> /etc/php.ini
112 if grep -i '^ *include_path *=' /etc/php.ini >/dev/null 2>&1; then
113 if ! grep -i '^ *include_path *=.*%{name}' /etc/php.ini >/dev/null 2>&1; then
114 perl -pi.pkgsave.%{name} -e 's@^\s*include_path\s*=.*$@include_path = ".:%{_datadir}/%{name}/:%{_datadir}/%{name}/www/include/"@gi;' /etc/php.ini
117 echo 'include_path = ".:%{_datadir}/%{name}/:%{_datadir}/%{name}/www/include/"' >> /etc/php.ini
120 # Update PostgreSQL config
121 if ! grep -i '^ *host.*alexandria.*' /var/lib/pgsql/data/pg_hba.conf >/dev/null 2>&1; then
122 echo 'host alexandria 127.0.0.1 255.255.255.255 md5' >> /var/lib/pgsql/data/pg_hba.conf
123 service postgresql restart
126 # Add "noreply" alias
127 for i in /etc/postfix/aliases /etc/mail/aliases /etc/aliases ; do
129 if ! grep -i '^ *noreply:' $i >/dev/null 2>&1; then
130 echo 'noreply: /dev/null' >> $i
137 # Generate random session ID
140 perl -pi -e "s/DBPASSHERE/$GFPASS/g; s/RANDOMIDHERE/$SESSID/g;" /etc/%{name}/local.inc
148 if [ $1 -eq 0 ]; then
149 # Uninstall everything
150 su -l postgres -s /bin/sh -c "dropuser gforge ; dropdb alexandria"
151 rm -f /etc/%{name}/siteadmin.pass
153 # Remove apache config
154 if test -f /etc/httpd/conf/httpd.conf; then
155 if grep '^ *Include /etc/httpd/conf.d/%{name}.conf' /etc/httpd/conf/httpd.conf > /dev/null; then
156 perl -ni -e 'm@^\# Added by %{name}.*$@ or m@^ *Include /etc/httpd/conf.d/%{name}.conf@ or print;' /etc/httpd/conf/httpd.conf
157 service httpd restart
161 # Remove PHP include path
162 if grep -i '^ *include_path *=.*%{name}' /etc/php.ini >/dev/null 2>&1; then
163 perl -ni -e 'm@^ *include_path *=.*%{name}@ or print;' /etc/php.ini
166 # Remove PostgreSQL access
167 if grep -i '^ *host.*alexandria.*' /var/lib/pgsql/data/pg_hba.conf >/dev/null 2>&1; then
168 perl -ni -e 'm@^ *host.*alexandria.*@ or print;' /var/lib/pgsql/data/pg_hba.conf
172 if id -u %gfuser >/dev/null 2>&1; then
174 groupdel %gfgroup 2>/dev/null || :
183 rm -rf $RPM_BUILD_ROOT
186 %defattr(-, root, root)
187 %doc AUTHORS COPYING ChangeLog INSTALL README*
189 %attr(0660, apache, gforge) %config(noreplace) /etc/%{name}/local.inc
190 %attr(0640, apache, apache) %config(noreplace) /etc/httpd/conf.d/%{name}.conf
191 %attr(0775, apache, apache) %dir %{_datadir}/%{name}/www/incoming
192 %{_datadir}/%{name}/backend
193 %{_datadir}/%{name}/common
194 %{_datadir}/%{name}/cronjobs
195 %{_datadir}/%{name}/db
196 %{_datadir}/%{name}/monitor
197 %{_datadir}/%{name}/utils
198 %{_datadir}/%{name}/www
199 /etc/cron.daily/gforge-nightly-cronjobs.sh
200 /etc/cron.hourly/gforge-hourly-cronjobs.sh