License: GPL
Group: Development/Tools
Source0: %{name}-%{version}.tar.bz2
-Source1: README.mediawiki.jlbond
-Source2: LocalSettings.php
-Patch1: fusionforge-4.8.3-mediawiki.patch
-Patch2: fusionforge-4.8.3-register_globals.patch
URL: http://www.fusionforge.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-root
Packager: Alain Peyrat <aljeux@free.fr>
Requires: httpd, mod_dav_svn, mod_ssl, php, php-pgsql, php-gd, php-mbstring, mailman
-Requires: postgresql >= 8.3 or postgresql84
-Requires: postgresql-libs >= 8.3 or postgresql84-libs
-Requires: postgresql-server >= 8.3 or postgresql84-server
-Requires: postgresql-contrib >= 8.3 or postgresql84-contrib
+Requires: postgresql >= 8.3
+Requires: postgresql-server >= 8.3
Requires: postfix, openssh, inetd, which
Requires: /bin/sh, /bin/bash
# BuildRequires: sed, perl
+%define INSTALL_LOG %{_var}/log/gforge/install-%{version}.log
+%define UPGRADE_LOG %{_var}/log/gforge/upgrade-%{version}.log
+
Provides: gforge = %{version}
%description
%package plugin-moinmoin
Summary: MoinMoinWiki plugin for FusionForge
Group: Development/Tools
-Requires: %{name} >= %{version}, php, postgresql
+Requires: %{name} >= %{version}, php, postgresql, moin
%description plugin-moinmoin
-This is a plugin to integrate MediaWiki within FusionForge.
+This is a plugin to integrate MoinMoin wiki within FusionForge.
%package plugin-message
Summary: Global Information Message plugin for FusionForge
Requires: %{name} >= %{version}, php
%description plugin-message
This is a plugin to add a global announce message for FusionForge.
-It can be use to warn users for planned or current outage.
+It can be used to warn users for planned or current outage.
%package plugin-online_help
Summary: online_help plugin for FusionForge
%package plugin-scmsvn
Summary: Subversion plugin for FusionForge
Group: Development/Tools
-Requires: %{name} >= %{version}, php, subversion
+Requires: %{name} >= %{version}, php, subversion, viewvc
%description plugin-scmsvn
This RPM installs SCM SVN plugin for FusionForge and provides svn support
to FusionForge.
%package plugin-wiki
Summary: Wiki plugin for FusionForge
Group: Development/Tools
-Requires: %{name} >= %{version}, php, postgresql
+Requires: %{name} >= %{version}, php, postgresql, units
%description plugin-wiki
Wiki plugin for FusionForge. Allows for one wiki per project, integrated search,
page edits displayed on activity tab, and multi-project wiki preferences.
%prep
%setup -q
-#%patch1 -p1
-#%patch2 -p1
-#%patch3 -p1
%build
# empty build section
%{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/etc
%{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/svn
%{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/chroot/scmrepos/cvs
+%{__install} -m 755 -d $RPM_BUILD_ROOT%{FORGE_VAR_LIB}/plugins/mediawiki
%{__install} -m 755 -d $RPM_BUILD_ROOT/home/groups
-%{__install} -m 755 -d $RPM_BUILD_ROOT/var/log/gforge
+%{__install} -m 755 -d $RPM_BUILD_ROOT%{_var}/log/gforge
# mock mediawiki directory because we symlink GForge skin to Monobook
%{__install} -m 755 -d $RPM_BUILD_ROOT/usr/share/mediawiki/skins
%{__cp} -a etc/httpd.conf-fhs $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
#%{__cp} -a etc/gforge-httpd.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
#%{__sed} -i -e 's|.*php_value[[:space:]]*include_path.*$|\tphp_value\tinclude_path ".:/usr/share/gforge/www/include:/usr/share/gforge:/etc/gforge:/usr/share/gforge/common:/usr/share/gforge/www:/usr/share/gforge/plugins"|' $RPM_BUILD_ROOT%{_sysconfdir}/httpd/conf.d/gforge.conf
+
+%{__sed} -i -e "s!www-data!apache!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/defaults.ini
+%{__sed} -i -e "s!use_shell = yes!use_shell = no!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/defaults.ini
+%{__sed} -i -e "s!use_webdav = no!use_webdav = yes!g" $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/defaults.ini
+
# install fusionforge crontab
-%{__install} -m 644 packaging/cron.d/cron.fusionforge $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/%{name}
+%{__sed} -e 's/\$FFUSER/%{gfuser}/g' packaging/cron.d/cron.fusionforge > $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/%{name}
%{__install} -m 644 deb-specific/sqlhelper.pm $RPM_BUILD_ROOT%{FORGE_DIR}/lib/sqlhelper.pm
%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/*.ini $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/config.ini.d/
%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/cron.d/* $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/
%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.d/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/
+%{__cp} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/httpd.conf.d/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.conf.d/
%{__cp} -rp $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/*/etc/plugins/* $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/
%{__rm} -f $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/README
# plugin: mediawiki
%{__ln_s} ../../plugins/mediawiki/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/mediawiki
-# create symlink for apache configuration for mediawiki plugin
-## first, delete the php_admin_value include_path
-%{__sed} -i -e "/^.*php_admin_value[[:space:]]*include_path.*/d" $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
-%{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
-# this is pre-activated, so create the config symlink
-#%{__ln_s} %{FORGE_DIR}/plugins/mediawiki/etc/plugins/mediawiki $RPM_BUILD_ROOT%{FORGE_CONF_DIR}/plugins/mediawiki
-# create symlinks to use MonoBook as the GForge skin
-%{__ln_s} monobook $RPM_BUILD_ROOT/usr/share/mediawiki/skins/gforge
-%{__ln_s} MonoBook.deps.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.deps.php
-%{__ln_s} MonoBook.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/GForge.php
-# sort out the GForge skin files and remove obsolete code
-%{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/mediawiki-skin
-%{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/gforge
-%{__rm} -rf $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/skins
-# insert our own LocalSettings.php
-#%{__cp} -f %{SOURCE2} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/usr/share/mediawiki/LocalSettings.php
-# insert our own README file
-%{__cp} -f %{SOURCE1} $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/README.jlbond
+%{__ln_s} /usr/share/mediawiki/api.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/extensions $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/img_auth.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/includes $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/index.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/languages $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/maintenance/ $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/opensearch_desc.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/profileinfo.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/redirect.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/StartProfiler.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/thumb.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/trackback.php $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki/skins $RPM_BUILD_ROOT%{FORGE_DIR}/plugins/mediawiki/www/
+%{__ln_s} /usr/share/mediawiki $RPM_BUILD_ROOT/var/lib/gforge/plugins/mediawiki/master
+%{__ln_s} /usr/share/gforge/src/plugins/mediawiki/mediawiki-skin/FusionForge.php $RPM_BUILD_ROOT/usr/share/mediawiki/skins/
+%{__ln_s} /usr/share/gforge/src/plugins/mediawiki/mediawiki-skin/fusionforge $RPM_BUILD_ROOT/usr/share/mediawiki/skins/
# plugin: moinmoin
%{__ln_s} ../../plugins/moinmoin/www $RPM_BUILD_ROOT%{FORGE_DIR}/www/plugins/moinmoin
### END OF PLUGIN SETUP ###
%pre
+[ -d %{_var}/log/gforge ] || mkdir -p %{_var}/log/gforge
+
+if [ ! -d "/var/lib/pgsql/data/base" ]; then
+ /sbin/service postgresql initdb >>%{INSTALL_LOG} 2>&1
+fi
+
# we will need postgresql to be running. we start it, even if it already is running
# this won't hurt anything, just ensure we have a running database
-/sbin/service postgresql start >>/var/log/%{name}-install.log 2>&1
+/sbin/service postgresql start >>%{INSTALL_LOG} 2>&1
if [ "$1" -eq "1" ]; then
# setup user/group for gforge
if [ `/usr/bin/getent passwd | /bin/cut -d: -f1 | /bin/grep -c %{gfuser}` -eq 0 ] ; then
- echo "Did not find existing fusionforge user. Adding fusionforge group and user..." >>/var/log/%{name}-install.log 2>&1
/usr/sbin/groupadd -r %{gfgroup}
/usr/sbin/useradd -r -g %{gfgroup} -d %{FORGE_DIR} -s /bin/bash -c "FusionForge User" %{gfuser}
fi
FFORGE_ADMIN_PASSWORD=$(/bin/dd if=/dev/urandom bs=32 count=1 2>/dev/null | /usr/bin/sha1sum | cut -c1-8)
fi
export FFORGE_DB FFORGE_USER FFORGE_ADMIN_USER FFORGE_ADMIN_PASSWORD
- /bin/sh %{FORGE_DIR}/install-ng --database >>/var/log/%{name}-install.log 2>&1
+ %{FORGE_DIR}/install-ng --config --database >>%{INSTALL_LOG} 2>&1
else
- echo "Database %{dbname} already exists. Will not proceed with database setup." >>/var/log/%{name}-install.log 2>&1
- echo "Please see %{FORGE_DIR}/install-ng --database and run it manually" >>/var/log/%{name}-install.log 2>&1
- echo "if deemed necessary." >>/var/log/%{name}-install.log 2>&1
+ echo "Database %{dbname} already exists. Will not proceed with database setup." >>%{INSTALL_LOG} 2>&1
+ echo "Please see %{FORGE_DIR}/install-ng --database and run it manually" >>%{INSTALL_LOG} 2>&1
+ echo "if deemed necessary." >>%{INSTALL_LOG} 2>&1
+ %{FORGE_DIR}/install-ng --config >>%{INSTALL_LOG} 2>&1
fi
- /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-install.log 2>&1
- /usr/bin/php %{FORGE_DIR}/utils/normalize_roles.php >>/var/log/%{name}-install.log 2>&1
+ /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>%{INSTALL_LOG} 2>&1
+ /usr/bin/php %{FORGE_DIR}/utils/normalize_roles.php >>%{INSTALL_LOG} 2>&1
HOSTNAME=`hostname -f`
#%{__sed} -i -e "s!gforge.company.com!$HOSTNAME!g" %{FORGE_CONF_DIR}/local.inc
[ -d %{FORGE_VAR_LIB}/etc ] || mkdir %{FORGE_VAR_LIB}/etc
touch %{FORGE_VAR_LIB}/etc/httpd.vhosts
- /bin/sh %{FORGE_DIR}/install-ng --config >>/var/log/%{name}-install.log 2>&1
-
- /etc/init.d/httpd restart >/dev/null 2>&1
+ /etc/init.d/httpd restart >>%{INSTALL_LOG} 2>&1
- chkconfig postgresql on >/dev/null 2>&1
+ chkconfig postgresql on >>%{INSTALL_LOG} 2>&1
# generate random hash for session_key
HASH=$(/bin/dd if=/dev/urandom bs=32 count=1 2>/dev/null | /usr/bin/sha1sum | cut -c1-40)
#%{__sed} -i -e "s/sys_session_key = 'foobar'/sys_session_key = '$HASH'/g" %{FORGE_CONF_DIR}/local.inc
+ # Mailman initial setup
+ /usr/lib/mailman/bin/newlist -q mailman $FFORGE_ADMIN_USER@$HOSTNAME $FFORGE_ADMIN_PASSWORD >>%{INSTALL_LOG} 2>&1
+ chkconfig mailman on >>%{INSTALL_LOG} 2>&1
+ /etc/init.d/mailman start >>%{INSTALL_LOG} 2>&1
+
# add noreply mail alias
echo "noreply: /dev/null" >> /etc/aliases
- /usr/bin/newaliases >/dev/null 2>&1
+ /usr/bin/newaliases >>%{INSTALL_LOG} 2>&1
if [ $ret -ne 0 ] ; then
# display message about default admin account
sleep 10
fi
else
- /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>/var/log/%{name}-upgrade.log 2>&1
+ /usr/bin/php %{FORGE_DIR}/db/upgrade-db.php >>%{UPGRADE_LOG} 2>&1
fi
%preun
%{FORGE_DIR}/CHANGES
%{FORGE_DIR}/COPYING
%{FORGE_DIR}/INSTALL*
+%{FORGE_DIR}/Makefile
%{FORGE_DIR}/NEWS
%{FORGE_DIR}/README*
%{FORGE_DIR}/fusionforge.spec
%dir %{FORGE_VAR_LIB}/scmsnapshots
%dir %{FORGE_VAR_LIB}/dumps
%{FORGE_VAR_LIB}/homedirs
+%dir %{_var}/log/gforge
/home/groups
-/var/log/gforge
/bin/cvssh.pl
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/authbuiltin.ini
%{FORGE_DIR}/plugins/authbuiltin
%files plugin-mediawiki
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/mediawiki.ini
-%config(noreplace) %{FORGE_CONF_DIR}/httpd.d/03mediawiki.conf
+%{_sysconfdir}/cron.d/fusionforge-plugin-mediawiki
%{FORGE_CONF_DIR}/httpd.d/61plugin-mediawiki
%{FORGE_DIR}/plugins/mediawiki/
%{FORGE_DIR}/www/plugins/mediawiki
-/usr/share/mediawiki/skins/gforge
-/usr/share/mediawiki/skins/GForge.deps.php
-/usr/share/mediawiki/skins/GForge.php
+%{FORGE_VAR_LIB}/plugins/mediawiki
+/usr/share/mediawiki/skins/FusionForge.php
+/usr/share/mediawiki/skins/fusionforge
%files plugin-moinmoin
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/moinmoin.ini
%files plugin-scmgit
%config(noreplace) %{FORGE_CONF_DIR}/config.ini.d/scmgit.ini
+%{FORGE_CONF_DIR}/httpd.conf.d/plugin-scmgit-dav.inc
%{FORGE_DIR}/plugins/scmgit
%{FORGE_DIR}/www/plugins/scmgit
%files plugin-wiki
%config(noreplace) %{FORGE_CONF_DIR}/plugins/wiki/
%{_sysconfdir}/cron.d/cron.wiki
-%{FORGE_CONF_DIR}/httpd.d/03wiki.conf
+%{FORGE_CONF_DIR}/httpd.conf.d/plugin-wiki.inc
%{FORGE_DIR}/plugins/wiki
%{FORGE_DIR}/www/wiki