[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gforge-commits] gforge gforge.spec,1.7,1.8
From: |
gsmet |
Subject: |
[Gforge-commits] gforge gforge.spec,1.7,1.8 |
Date: |
Mon, 01 Nov 2004 13:13:58 -0600 |
Update of /cvsroot/gforge/gforge
In directory db.perdue.net:/tmp/cvs-serv1775
Modified Files:
gforge.spec
Log Message:
preliminary work on new RPM packaging
Index: gforge.spec
===================================================================
RCS file: /cvsroot/gforge/gforge/gforge.spec,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- gforge.spec 18 Feb 2004 09:18:24 -0000 1.7
+++ gforge.spec 1 Nov 2004 19:13:55 -0000 1.8
@@ -1,29 +1,34 @@
-%define bzip 1
-%define gfuser gforge
-%define gfgroup gforge
+%define dbhost localhost
+%define dbname gforge
+%define dbuser gforge
+%define dbpassword gforge
-Summary: Collaborative Development Tool
+%define hostname localhost
+%define systemname MyGForge
+
+%define adminusername siteadmin
+%define httpduser apache
+%define gfuser gforge
+%define gfgroup gforge
+
+Summary: GForge Collaborative Development Environment
Name: gforge
-Version: 3.1
-Release: 2
+Version: 4.0
+Release: 1
BuildArch: noarch
Copyright: GPL
Group: Development/Tools
-%if %{bzip}
-Source0: http://gforge.org/download.php/44/%{name}-%{version}.tar.bz2
-%else
-Source0: %{name}-%{version}.tar.gz
-%endif
-Source1: gforge.conf
-Patch1000: gforge-3.0-local_config.patch
-Patch1001: gforge-3.0-php_path.patch
-Patch1002: gforge-3.0-init_sql.patch
-Patch1003: gforge-3.0-cronjobs.patch
+Source0: %{name}-%{version}.tar.bz2
+
+Patch1000: gforge-4.0-deb_rpm.patch
+
AutoReqProv: off
-Requires: /bin/sh /bin/bash /usr/bin/perl /usr/bin/php
-Requires: /usr/bin/postmaster /usr/lib/php4/pgsql.so
+Requires: perl
+Requires: httpd
+Requires: php, php-mbstring, php-pgsql
+Requires: postgresql, postgresql-server
URL: http://www.gforge.org/
-BuildRoot: /var/tmp/%{name}-%{version}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
GForge is a web-based Collaborative Development Environment offering
@@ -31,172 +36,175 @@
boards/forums, task management, permanent file archival, and total
web-based administration.
-NOTE: After installing this RPM, you will have a working GForge site
-at http://localhost/. However, everything is set up to work locally,
-so if you are installing a site-wide instance of GForge, be sure to
-customize /etc/gforge/local.inc before use!
-
# Macro for generating an environment variable (%1) with %2 random characters
%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";'`
-# Change password for "siteadmin"
-%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
+# Change password for %adminusername
+%define changepassword() echo "UPDATE users SET user_pw = '%1' WHERE user_name
= '%adminusername'" | su -l postgres -s /bin/sh -c "psql %dbname" >/dev/null
2>&1
%prep
%setup
%patch1000 -p1
-%patch1001 -p1
-%patch1002 -p1
-%patch1003 -p1
%build
%install
-rm -rf $RPM_BUILD_ROOT
+# cleaning build environment
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}
-for i in backend common cronjobs db monitor utils www ; do
- cp -rp $i $RPM_BUILD_ROOT%{_datadir}/%{name}/
+# setting paths
+GFORGE_DIR=$RPM_BUILD_ROOT/%{_datadir}/gforge
+CACHE_DIR=$RPM_BUILD_ROOT/var/cache/gforge
+UPLOAD_DIR=$RPM_BUILD_ROOT/var/lib/gforge/upload
+SCM_TARBALLS_DIR=$RPM_BUILD_ROOT/var/lib/gforge/scmtarballs
+HTTPD_CONF_DIR=$RPM_BUILD_ROOT/%{_sysconfdir}/httpd
+GFORGE_CONF_DIR=$RPM_BUILD_ROOT/%{_sysconfdir}/gforge
+GFORGE_LIB_DIR=$RPM_BUILD_ROOT/%{_libdir}/gforge
+PLUGINS_DIR=$GFORGE_LIB_DIR/plugins
+CROND_DIR=$RPM_BUILD_ROOT/%{_sysconfdir}/cron.d
+
+# installing gforge
+mkdir -p $GFORGE_DIR $GFORGE_LIB_DIR
+for i in common cronjobs etc rpm-specific utils www ; do
+ cp -rp $i $GFORGE_DIR/
+done
+install -m 750 setup $GFORGE_DIR/
+cp -rp db $GFORGE_LIB_DIR/
+cp -p deb-specific/sf-2.6-complete.sql $GFORGE_LIB_DIR/db/
+mkdir -p $GFORGE_LIB_DIR/lib $GFORGE_LIB_DIR/bin
+for i in sqlhelper.pm sqlparser.pm ; do
+ cp -p deb-specific/$i $GFORGE_LIB_DIR/lib/
+done
+for i in db-upgrade.pl register-plugin unregister-plugin register-theme
unregister-theme ; do
+ install -m 755 deb-specific/$i $GFORGE_LIB_DIR/bin/
done
-mkdir $RPM_BUILD_ROOT%{_datadir}/%{name}/www/incoming
-mkdir -p $RPM_BUILD_ROOT/etc/httpd/conf.d
-install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/etc/httpd/conf.d/%{name}.conf
+# creating required directories
+mkdir -p $UPLOAD_DIR
+mkdir -p $CACHE_DIR
+mkdir -p $SCM_TARBALLS_DIR
+mkdir -p $PLUGINS_DIR
-mkdir -p $RPM_BUILD_ROOT/etc/%{name}
-install -m 600 etc/local.inc $RPM_BUILD_ROOT/etc/%{name}/
+# configuring apache
+mkdir -p $HTTPD_CONF_DIR/conf.d
+install -m 644 rpm-specific/conf/vhost.conf $HTTPD_CONF_DIR/conf.d/gforge.conf
-mkdir -p $RPM_BUILD_ROOT/etc/cron.daily $RPM_BUILD_ROOT/etc/cron.hourly
-install -m 755 utils/gforge-nightly-cronjobs.sh $RPM_BUILD_ROOT/etc/cron.daily/
-install -m 755 utils/gforge-hourly-cronjobs.sh $RPM_BUILD_ROOT/etc/cron.hourly/
+# configuring GForge
+mkdir -p $GFORGE_CONF_DIR
+install -m 600 rpm-specific/conf/gforge.conf $GFORGE_CONF_DIR/
+
+# setting crontab
+mkdir -p $CROND_DIR
+install -m 755 rpm-specific/cron.d/gforge $CROND_DIR/
%pre
if ! id -u %gfuser >/dev/null 2>&1; then
- groupadd -r %{gfgroup}
- useradd -r -g %{gfgroup} -d %{_datadir}/%{name} -s /bin/false -c "GForge
User" %{gfuser}
+ groupadd -r %{gfgroup}
+ useradd -r -g %{gfgroup} -d %{_datadir}/gforge -s /bin/bash -c "GForge
User" %{gfuser}
fi
%post
if [ $1 -eq 1 ]; then
- # Initial install. Create and populate DB.
- service postgresql status | grep 'is running' >/dev/null 2>&1 || service
postgresql start
- su -l postgres -s /bin/sh -c "createdb alexandria >/dev/null 2>&1"
- su -l postgres -s /bin/sh -c "psql alexandria <
%{_datadir}/%{name}/db/%{name}3.sql >/tmp/gforge.log 2>&1"
- %randstr GFPASS 8
-
- (echo $GFPASS ; echo $GFPASS) | su -l postgres -s /bin/sh -c "createuser
-D -a -P -E gforge >/dev/null 2>&1"
- %randstr SAPASS 8
-
- echo "$SAPASS" > /etc/%{name}/siteadmin.pass
- chmod 0600 /etc/%{name}/siteadmin.pass
- SAPASS=`echo -n $SAPASS | md5sum | awk '{print $1}'`
- %chpass $SAPASS
+ # creating the database
+ service postgresql status | grep 'is running' >/dev/null 2>&1 ||
service postgresql start
+ su -l postgres -s /bin/sh -c "createdb -E UNICODE %{dbname} >/dev/null
2>&1"
+ su -l postgres -s /bin/sh -c "createlang plpgsql %{dbname} >/dev/null
2>&1"
- # Update apache config
- if test -f /etc/httpd/conf/httpd.conf; then
- if ! grep 'Include .*%{name}.conf' /etc/httpd/conf/httpd.conf
>/dev/null 2>&1; then
- echo '# Added by %{name} package' >> /etc/httpd/conf/httpd.conf
- echo "Include /etc/httpd/conf.d/%{name}.conf" >>
/etc/httpd/conf/httpd.conf
- service httpd restart >/dev/null 2>&1
- fi
- fi
+ # generating and updating site admin password
+ %randstr SITEADMIN_PASSWORD 8
+ echo "$SITEADMIN_PASSWORD" > %{_sysconfdir}/gforge/siteadmin.pass
+ chmod 0600 %{_sysconfdir}/gforge/siteadmin.pass
+ SITEADMIN_PASSWORD=`echo -n $SITEADMIN_PASSWORD | md5sum | awk '{print
$1}'`
+ %changepassword $SITEADMIN_PASSWORD
- # Update PHP config
- if grep -i '^ *register_globals *=' /etc/php.ini >/dev/null 2>&1; then
- if ! grep -i '^ *register_globals *= *on' /etc/php.ini >/dev/null
2>&1; then
- perl -pi.pkgsave.%{name} -e
's/^\s*register_globals\s*=.*$/register_globals = On/gi;' /etc/php.ini
- fi
- else
- echo 'register_globals = On' >> /etc/php.ini
- fi
- if grep -i '^ *include_path *=' /etc/php.ini >/dev/null 2>&1; then
- if ! grep -i '^ *include_path *=.*%{name}' /etc/php.ini >/dev/null
2>&1; then
- perl -pi.pkgsave.%{name} -e 'address@hidden@include_path =
".:%{_datadir}/%{name}/:%{_datadir}/%{name}/www/include/"@gi;' /etc/php.ini
- fi
- else
- echo 'include_path =
".:%{_datadir}/%{name}/:%{_datadir}/%{name}/www/include/"' >> /etc/php.ini
- fi
+ # creating gforge database user
+ %randstr GFORGEDATABASE_PASSWORD 8
- # Update PostgreSQL config
- if ! grep -i '^ *host.*alexandria.*' /var/lib/pgsql/data/pg_hba.conf
>/dev/null 2>&1; then
- echo 'host alexandria 127.0.0.1 255.255.255.255 md5' >>
/var/lib/pgsql/data/pg_hba.conf
- service postgresql restart
- fi
+ (echo "$GFORGEDATABASE_PASSWORD" ; echo "$GFORGEDATABASE_PASSWORD") |
su -l postgres -s /bin/sh -c "createuser -D -a -P %{dbuser}"
+
+ # updating PostgreSQL configuration
+ if ! grep -i '^ *host.*%{dbname}.*' /var/lib/pgsql/data/pg_hba.conf
>/dev/null 2>&1; then
+ echo 'host %{dbname} %{dbuser} 127.0.0.1 255.255.255.255 md5'
>> /var/lib/pgsql/data/pg_hba.conf
+ service postgresql reload
+ fi
- # Add "noreply" alias
- for i in /etc/postfix/aliases /etc/mail/aliases /etc/aliases ; do
- if [ -f $i ]; then
- if ! grep -i '^ *noreply:' $i >/dev/null 2>&1; then
- echo 'noreply: /dev/null' >> $i
- newaliases
- fi
- break
- fi
- done
+ # creating the database
+ # su -l postgres -s /bin/sh -c "psql -U %{dbuser} %{dbname} <
%{_datadir}/%{name}/db/%{name}.sql >/tmp/gforge.log 2>&1"
+ # %{_libdir}/gforge/lib/db-upgrade.pl
+ su %{gfuser} -c %{_libdir}/gforge/bin/db-upgrade.pl
+ su -l postgres -c "psql -c 'UPDATE groups SET
register_time=EXTRACT(EPOCH FROM NOW());' %{dbname}"
- # Generate random session ID
- %randstr SESSID 32
+ # adding "noreply" alias
+ for i in /etc/postfix/aliases /etc/mail/aliases /etc/aliases ; do
+ if [ -f $i ]; then
+ if ! grep -i '^ *noreply:' $i >/dev/null 2>&1; then
+ echo 'noreply: /dev/null' >> $i
+ newaliases
+ fi
+ break
+ fi
+ done
- perl -pi -e "s/DBPASSHERE/$GFPASS/g; s/RANDOMIDHERE/$SESSID/g;"
/etc/%{name}/local.inc
+ # generating random session ID
+ %randstr SESSID 32
+ # replacing variables in configuration files
+ perl -pi -e "
+ s/DB_HOST/"%{dbhost}"/g;
+ s/DB_NAME/"%{dbname}"/g;
+ s/DB_USER/"%{dbuser}"/g;
+ s/DB_PASSWORD/"$GFORGEDATABASE_PASSWORD"/g;
+ s/SYSTEM_NAME/"%{systemname}"/g;
+ s/RANDOM_ID/"$SESSID"/g;
+ s/HOST_NAME/"%{hostname}"/g" %{_sysconfdir}/gforge/gforge.conf
+ perl -pi -e "s/HOST_NAME/%{hostname}/g" /etc/httpd/conf.d/gforge.conf
+
+ # initializing configuration
+ cd %{_datadir}/gforge && ./setup -confdir %{_sysconfdir}/gforge/ -input
%{_sysconfdir}/gforge/gforge.conf -noapache
+
+ service httpd graceful
else
- # Upgrade
- :
+ # Upgrade
+ su %{gfuser} -c %{_libdir}/gforge/bin/db-upgrade.pl
fi
%postun
if [ $1 -eq 0 ]; then
- # Uninstall everything
- su -l postgres -s /bin/sh -c "dropuser gforge ; dropdb alexandria"
- rm -f /etc/%{name}/siteadmin.pass
-
- # Remove apache config
- if test -f /etc/httpd/conf/httpd.conf; then
- if grep '^ *Include /etc/httpd/conf.d/%{name}.conf'
/etc/httpd/conf/httpd.conf > /dev/null; then
- perl -ni -e 'address@hidden Added by %{name}.*$@ or address@hidden
*Include /etc/httpd/conf.d/%{name}.conf@ or print;' /etc/httpd/conf/httpd.conf
- service httpd restart
- fi
- fi
-
- # Remove PHP include path
- if grep -i '^ *include_path *=.*%{name}' /etc/php.ini >/dev/null 2>&1; then
- perl -ni -e 'address@hidden *include_path *=.*%{name}@ or print;'
/etc/php.ini
- fi
+ # Uninstall everything
+ su -l postgres -s /bin/sh -c "dropuser %{dbuser} ; dropdb %{dbname}"
+ rm -f %{_sysconfdir}/gforge/siteadmin.pass
- # Remove PostgreSQL access
- if grep -i '^ *host.*alexandria.*' /var/lib/pgsql/data/pg_hba.conf
>/dev/null 2>&1; then
- perl -ni -e 'address@hidden *host.*alexandria.*@ or print;'
/var/lib/pgsql/data/pg_hba.conf
- fi
+ # Remove PostgreSQL access
+ if grep -i '^ *host.*%{dbname}.*' /var/lib/pgsql/data/pg_hba.conf
>/dev/null 2>&1; then
+ perl -ni -e 'address@hidden *host.*%{dbname}.*@ or print;'
/var/lib/pgsql/data/pg_hba.conf
+ fi
- # Remove user/group
- if id -u %gfuser >/dev/null 2>&1; then
- userdel %gfuser
- groupdel %gfgroup 2>/dev/null || :
- fi
+ # Remove user/group
+ if id -u %{gfuser} >/dev/null 2>&1; then
+ userdel %{gfuser}
+ groupdel %{gfgroup} 2>/dev/null
+ fi
else
- # Upgrade
- :
+ # Upgrade
+ :
fi
%clean
-rm -rf $RPM_BUILD_ROOT
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%files
%defattr(-, root, root)
-%doc AUTHORS COPYING ChangeLog INSTALL README*
+%doc AUTHORS AUTHORS.sourceforge COPYING ChangeLog INSTALL README*
%doc docs/*
-%attr(0660, apache, gforge) %config(noreplace) /etc/%{name}/local.inc
-%attr(0640, apache, apache) %config(noreplace) /etc/httpd/conf.d/%{name}.conf
-%attr(0775, apache, apache) %dir %{_datadir}/%{name}/www/incoming
-%{_datadir}/%{name}/backend
-%{_datadir}/%{name}/common
-%{_datadir}/%{name}/cronjobs
-%{_datadir}/%{name}/db
-%{_datadir}/%{name}/monitor
-%{_datadir}/%{name}/utils
-%{_datadir}/%{name}/www
-/etc/cron.daily/gforge-nightly-cronjobs.sh
-/etc/cron.hourly/gforge-hourly-cronjobs.sh
+%attr(0660, apache, gforge) %config(noreplace)
%{_sysconfdir}/gforge/gforge.conf
+%attr(0640, apache, apache) %config(noreplace)
%{_sysconfdir}/httpd/conf.d/gforge.conf
+%attr(0775, apache, apache) %dir /var/lib/gforge/upload
+%{_sysconfdir}/gforge
+%{_datadir}/gforge
+%{_libdir}/gforge
+%{_sysconfdir}/cron.d/gforge
+/var/cache/gforge
+/var/lib/gforge
%changelog
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gforge-commits] gforge gforge.spec,1.7,1.8,
gsmet <=