gforge-commits
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]