beuc pushed to fusionforge (master). "New upstream release candidate"

notifications at fedoraproject.org notifications at fedoraproject.org
Mon May 18 15:28:07 UTC 2015


From fb5c44bc387e20f95ff0eaf371ca1d672cfe7a07 Mon Sep 17 00:00:00 2001
From: Sylvain Beucler <beuc at beuc.net>
Date: Mon, 18 May 2015 15:26:23 +0000
Subject: New upstream release candidate


diff --git a/.gitignore b/.gitignore
index 72a137c..64691a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 /fusionforge-5.3.2.tar.bz2
+/fusionforge-6.0rc2.tar.bz2
diff --git a/fusionforge.spec b/fusionforge.spec
index 389cc9b..3da3907 100644
--- a/fusionforge.spec
+++ b/fusionforge.spec
@@ -1,6 +1,6 @@
 Name: fusionforge
-Version: 5.3.2
-Release: 3%{?dist}
+Version: 6.0
+Release: 0.1.rc2%{?dist}
 Summary: Collaborative development tool
 
 Group: Development/Tools
@@ -8,17 +8,9 @@ BuildArch: noarch
 # FusionForge is GPLv2+ and JQuery is MIT
 License: GPLv2+ and MIT
 URL: http://www.fusionforge.org/
-Source0: https://fusionforge.org/frs/download.php/file/49/fusionforge-5.3.2.tar.bz2
-# Don't ship a bundled viewvc, backported from upstream master
-Patch0: unbundle-viewvc.patch
-# Use php-curl instead of bundled php-snoopy, backported from upstream master
-Patch1: snoopy-to-curl.patch
-# Fix postgresql detection, upstream master reworked build system and fixed this already
-Patch2: install-ng-postgresql.patch
+Source0: https://fusionforge.org/frs/download.php/file/51/fusionforge-6.0rc2.tar.bz2
 Requires: %{name}-db-local = %{version}-%{release}, %{name}-web = %{version}-%{release}
-Provides: bundled(jquery) = 1.8.3, bundled(jquery-ui) = 1.9.2
-# Fix mediawiki cron paths
-Patch3: mediawiki-cron.patch
+Provides: bundled(jquery) = 1.10.2, bundled(jquery-ui) = 1.10.4
 
 %description
 FusionForge provides many tools to aid collaboration in a
@@ -32,257 +24,67 @@ This metapackage installs a stand-alone FusionForge site.
 
 
 %prep
-%setup -q
-# Remove bundled ViewVC
-rm -rf www/scm/viewvc/
-%patch0 -p1
-chmod 755 www/scm/viewvc/viewvc.cgi
-ln -s %{_datadir}/viewvc/templates/docroot/images www/scm/viewvc/docroot/
-# Remove bundled Snoopy
-%patch1 -p1
-rm -rf plugins/scmhook/library/scm*/hooks/committracker/Snoopy.class.php
-%patch2 -p1
-%patch3 -p1
+%setup -q -n fusionforge-6.0rc2
 
 %build
-sed -i -e 's,gforge,fusionforge,' etc/config.ini-fhsrh etc/httpd.conf-fhsrh  # fix path
-sed -i -e 's,/src,,' etc/config.ini-fhsrh etc/httpd.conf-fhsrh  # fix path
-cp etc/config.ini-fhsrh etc/config.ini-opt  # for install-ng
-utils/manage-apache-config.sh build  # build Apache configuration
-sed -i -e 's/gforge/fusionforge/g' etc/httpd.conf.d-fhsrh/50-*  # fix path
-# Use default Fedora cert
-sed -i -e 's!SSLCertificateFile .*!SSLCertificateFile /etc/pki/tls/certs/localhost.crt!' etc/httpd.conf.d-fhsrh/ssl-really-on.inc
-sed -i -e 's!SSLCertificateKeyFile .*!SSLCertificateKeyFile /etc/pki/tls/private/localhost.key!' etc/httpd.conf.d-fhsrh/ssl-really-on.inc
-# Add missing permissions (fixed upstream)
-cat <<EOF >> etc/httpd.conf.d/plugin-generic.inc
-<DirectoryMatch {core/source_path}/plugins/[^/]*/cgi-bin/>
-  Include {core/config_path}/httpd.conf.d/auth-main.inc
-</DirectoryMatch>
-EOF
+make %{?_smp_mflags}
 
 %install
-# Note: using manual install here since the 5.3 build system is limited.
-# 6.0 comes with a new build system - and simplified packaging :)
+# List package files automatically by installing separately and relying on 'make install'
+# Marking /etc as conffiles and exclude locales (cf. mandatory %%find_lang)
+# Not using recursive dirs listing because that is processed when all
+#   packages are mixed in the common install dir (so using %%dir instead)
+install_listfiles()
+{
+    make install-${1} prefix=%{_prefix} DESTDIR=%{_builddir}/t
+    (
+        cd %{_builddir}/t/
+        find .%{_bindir}           ! -type d || true
+        find .%{_sysconfdir}       ! -type d | sed -e 's,^\.,%config(noreplace) ,'
+        find .%{_sysconfdir}/%{name} -type d | sed -e 's,^\.,%dir ,'
+        find .%{_datadir}/%{name} .%{_localstatedir}/lib/%{name} .%{_localstatedir}/log/%{name} \
+            ! -type d || true
+        find .%{_datadir}/%{name} .%{_localstatedir}/lib/%{name} .%{_localstatedir}/log/%{name} \
+            -type d | sed -e 's,^\.,%dir ,' || true
+    ) | sed -e 's,^\.,,' > ${1}.rpmfiles
+    rm -rf %{_builddir}/t/
+    # Install for real
+    make install-${1} prefix=%{_prefix} DESTDIR=%{buildroot}
+}
+# Declare rpm-specific version
+sed -e 's/@PKGVERSION@/%{version}-%{release}/' \
+    < common/pkginfo.inc.php.template \
+    > common/pkginfo.inc.php
 # http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries .../simplepie.inc -> php-simplepie
-rm -rf common/rss/simplepie.inc
+rm -rf vendor/simplepie/
 # http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries .../nusoap.php -> php-nusoap
-rm -rf www/soap/
+rm -rf vendor/nusoap/
 # Remove RDF libraries, used by plugins we didn't package because as they weren't available in Fedora
 rm -rf vendor/arc/
-rm -f plugins/extsubproj/include/Graphite.php plugins/globaldashboard/include/Graphite.php
-# HTMLPurifier
-ln -s /usr/share/php/htmlpurifier/HTMLPurifier.auto.php common/include/
-# Lots of rpmlint issue in this release
-chmod g-s -R docs/  # non-standard-dir-perm
-rm -rf docs/docbook/  # zero-length, hidden-file-or-dir
-sed -i -e '11 s/.$//' docs/README.NSS-pgsql  # file-not-utf8
-# non-executable-script
-chmod 755 \
-    common/docman/engine/parser_doc.php common/docman/engine/parser_html.php \
-    common/docman/engine/parser_oo.php common/docman/engine/parser_pdf.php \
-    common/docman/engine/parser_text.php \
-    db/20021213-2-doc_data-migrate.php db/20010304-4-artifact-convert-files.php \
-    install/install3 install/deps \
-    plugins/sysauthldap/bin/install.sh plugins/sysauthldap/bin/schema2ldif.pl \
-    plugins/scmbzr/bin/install.sh \
-    plugins/hudson/cronjobs/manage_hudson.php \
-    plugins/moinmoin/cronjobs/create-wikis.php plugins/mediawiki/bin/* \
-    plugins/scmhook/cronjobs/updateScmRepo.php \
-    utils/update-all-in-sysauth.php
-# script-without-shebang
-chmod 644 cronjobs/stats_projects.inc 
-
-# common
-install -d -m 00755 %{buildroot}%{_bindir}/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/bin/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/cronjobs/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/lib/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/plugins/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/post-install.d/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/utils/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/etc/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/%{name}/plugins/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/%{name}/templates/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/cron.d/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/logrotate.d/
-install -d -m 00755 %{buildroot}%{_localstatedir}/lib/%{name}/
-install -d -m 00755 %{buildroot}%{_localstatedir}/lib/%{name}/etc/
-install -d -m 00755 %{buildroot}%{_localstatedir}/lib/%{name}/plugins/
-install -d -m 00755 %{buildroot}%{_localstatedir}/log/%{name}/
-cp -p etc/config.ini-fhsrh %{buildroot}%{_sysconfdir}/%{name}/config.ini
-cp -p \
-    etc/config.ini.d/defaults.ini \
-    etc/config.ini.d/debug.ini \
-    etc/config.ini.d/zzzz-local.ini \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/
-cp -pr common install install-ng %{buildroot}%{_datadir}/%{name}/
-cp -pr plugins/env.inc.php %{buildroot}%{_datadir}/%{name}/plugins/
-cp -p \
-    utils/fg_template \
-    utils/forge_get_config_basic \
-    %{buildroot}%{_datadir}/%{name}/utils/
-ln -s ../bin/forge_set_password %{buildroot}%{_datadir}/%{name}/utils/
-cp -p etc/config.ini-* %{buildroot}%{_datadir}/%{name}/etc/
-ln -s /etc/fusionforge/config.ini.d %{buildroot}%{_datadir}/%{name}/etc/
-cp -p \
-    utils/forge_get_config \
-    utils/forge_run_job \
-    utils/forge_run_plugin_job \
-    utils/forge_set_password \
-    utils/migrate-to-ini-files.sh \
-    utils/list-admins.php \
-    utils/list-projects-using-plugin.php \
-    utils/normalize_roles.php \
-    utils/update-all-in-sysauth.php \
-    utils/httpd_log_demux.php \
-    utils/forge_wrapper \
-    %{buildroot}%{_datadir}/%{name}/bin/
-cp -p \
-    cronjobs/create_scm_repos.php \
-    cronjobs/gather_scm_stats.php \
-    cronjobs/generate_scm_snapshots.php \
-    %{buildroot}%{_datadir}/%{name}/cronjobs/
-ln -s %{_datadir}/%{name}/bin/forge_wrapper %{buildroot}%{_bindir}/forge_get_config
-ln -s %{_datadir}/%{name}/bin/forge_wrapper %{buildroot}%{_bindir}/forge_run_job
-ln -s %{_datadir}/%{name}/bin/forge_wrapper %{buildroot}%{_bindir}/forge_run_plugin_job
-cp -p utils/include.pl %{buildroot}%{_datadir}/%{name}/lib/
-cp -p utils/default_page.php %{buildroot}%{_datadir}/%{name}/utils/
-cp -pr locales %{buildroot}%{_datadir}/locale
+rm -f vendor/Graphite.php
+# Install core and list common dirs
+install_listfiles common
 %find_lang %{name}
-# db-local
-cp -pr db %{buildroot}%{_datadir}/%{name}/
-cp -p db/upgrade-db.php %{buildroot}%{_datadir}/%{name}/bin/
-cp -p \
-    cronjobs/calculate_user_metric.php \
-    cronjobs/check_stale_tracker_items.php \
-    cronjobs/db_project_sums.php \
-    cronjobs/db_stats_agg.php \
-    cronjobs/db_trove_maint.php \
-    cronjobs/ftp_create_group_access.php \
-    cronjobs/get_news_notapproved.pl \
-    cronjobs/gforge-db-backup.sh \
-    cronjobs/massmail.php \
-    cronjobs/project_cleanup.php \
-    cronjobs/project_weekly_metric.php \
-    cronjobs/rating_stats.php \
-    cronjobs/reporting_cron.php \
-    cronjobs/rotate_activity.php \
-    cronjobs/site_stats.php \
-    cronjobs/stats_projects.inc \
-    cronjobs/stats_site.inc \
-    cronjobs/vacuum.php \
-    %{buildroot}%{_datadir}/%{name}/cronjobs/
-cp -pr plugins/authbuiltin %{buildroot}%{_datadir}/%{name}/plugins/
-cp -p plugins/authbuiltin/etc/authbuiltin.ini %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/
-install -d -m 00755 %{buildroot}%{_datadir}/%{name}/www/plugins/
-ln -s ../../plugins/authbuiltin/www %{buildroot}%{_datadir}/%{name}/www/plugins/authbuiltin
-# web
-cp -pr vendor www %{buildroot}%{_datadir}/%{name}/
-cp -p utils/manage-apache-config.sh %{buildroot}%{_datadir}/%{name}/utils/
-install -d -m 00755 %{buildroot}%{_sysconfdir}/httpd/conf.d/
-cp -p  etc/httpd.conf-fhsrh   %{buildroot}%{_sysconfdir}/httpd/conf.d/z-gforge.conf
-cp -pr etc/httpd.conf.d-fhsrh %{buildroot}%{_sysconfdir}/%{name}/httpd.conf.d
-touch %{buildroot}%{_localstatedir}/lib/%{name}/etc/httpd.vhosts
-install -d -m 00700 %{buildroot}%{_localstatedir}/lib/%{name}/docman/
-install -d -m 00700 %{buildroot}%{_localstatedir}/lib/%{name}/download/
-install -d -m 00700 %{buildroot}%{_localstatedir}/lib/%{name}/forum/
-install -d -m 00700 %{buildroot}%{_localstatedir}/lib/%{name}/tracker/
-# web-vhosts
-cp -pr etc/templates/httpd.vhosts %{buildroot}%{_sysconfdir}/%{name}/templates/
-cp -pr cronjobs/create_vhosts.php %{buildroot}%{_datadir}/%{name}/cronjobs/
-# shell
-cp -pr utils/install-nsspgsql.sh %{buildroot}%{_datadir}/%{name}/bin/
-cp -pr cronjobs/homedirs.php %{buildroot}%{_datadir}/%{name}/cronjobs/
-cp -pr cronjobs/ssh_create.php %{buildroot}%{_datadir}/%{name}/cronjobs/
-# lists
-cp -pr cronjobs/mail %{buildroot}%{_datadir}/%{name}/cronjobs/
-# cron
-sed -e 's/\$FFUSER/fusionforge/g' packaging/cron.d/cron.fusionforge > %{buildroot}%{_sysconfdir}/cron.d/%{name}
-
-# plugins
-for p in scmgit scmsvn scmbzr scmhg scmdarcs aselectextauth authcas \
-    authhttpd authldap blocks ckeditor compactpreview externalsearch \
-    gravatar headermenu hudson mediawiki message moinmoin online_help \
-    scmhook projectlabels contribtracker globalsearch webanalytics \
-    sysauthldap; do
-    install -d -m 00755 %{buildroot}%{_datadir}/%{name}/plugins/$p/
-    (
-        cd plugins/$p/
-        cp -pr $(ls | grep -v '^(etc|packaging)$') %{buildroot}%{_datadir}/%{name}/plugins/$p/
-        cp -pr etc/$p.ini %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/
-        if [ -d etc/plugins/$p ]; then \
-            cp -pr etc/plugins/$p %{buildroot}%{_sysconfdir}/%{name}/plugins/
-        fi
-        for i in $(ls etc/cron.d/* 2>/dev/null); do
-            sed 's, at bindir@,$(bindir),' $i > %{buildroot}%{_sysconfdir}/cron.d/$(basename $i)
-        done
-    )
+# Install sub-modules
+install_listfiles db-local
+install_listfiles web
+install_listfiles web-vhosts
+install_listfiles shell
+install_listfiles scm
+install_listfiles mta-postfix
+install_listfiles mta-exim4
+install_listfiles lists
+# Install plugins
+for i in $(sed -n 's/^%package plugin-//p' rpm/plugins); do \
+    install_listfiles plugin-$i
 done
-# SSH-based default install
-sed -i \
-    -e 's!use_dav = yes!use_dav = no!g' \
-    -e 's!use_ssh = no!use_ssh = yes!g' \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/scmsvn.ini \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/scmgit.ini
-# Use new-style repos path (cf. upstream master)
-sed -i -e 's!_prefix = "$core/chroot!_prefix = "!' \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/defaults.ini
-sed -i -e 's!^repos_path = "$core/chroot/scmrepos!repos_path = "/srv!' \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/scm*.ini
-# Done in 'install-ng --config' but too late for the initial db/upgrade.php
-sed -i -e 's!^apache_user = .*!apache_user = "apache"!' \
-       -e 's!^apache_group = .*!apache_group = "apache"!' \
-    %{buildroot}%{_sysconfdir}/%{name}/config.ini.d/defaults.ini
-# plugin-mediawiki
-ln -s /usr/share/mediawiki/api.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/extensions %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/img_auth.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/includes %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/index.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/languages %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/load.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/maintenance/ %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/opensearch_desc.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/profileinfo.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/redirect.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/StartProfiler.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/thumb.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/trackback.php %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-ln -s /usr/share/mediawiki/skins %{buildroot}%{_datadir}/%{name}/plugins/mediawiki/www/
-install -d -m 00755 %{buildroot}%{_localstatedir}/lib/%{name}/plugins/mediawiki/
-ln -s /usr/share/mediawiki %{buildroot}%{_localstatedir}/lib/%{name}/plugins/mediawiki/master
-install -d -m 00755 %{buildroot}%{_datadir}/mediawiki/skins/
-ln -s %{_datadir}/%{name}/plugins/mediawiki/mediawiki-skin/FusionForge.php %{buildroot}%{_datadir}/mediawiki/skins/
-ln -s %{_datadir}/%{name}/plugins/mediawiki/mediawiki-skin/fusionforge %{buildroot}%{_datadir}/mediawiki/skins/
-# plugin-scmgit
-install -d -m 00755 -d %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/cgi-bin
-ln -s www/cgi-bin %{buildroot}%{_datadir}/%{name}/plugins/scmgit/cgi-bin
-ln -s /var/www/git/gitweb.cgi %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/cgi-bin/gitweb.cgi
-ln -s /var/www/git/static/gitweb.css %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/gitweb.css
-ln -s /var/www/git/static/gitweb.js %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/gitweb.js
-ln -s /var/www/git/static/git-favicon.png %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/git-favicon.png
-ln -s /var/www/git/static/git-logo.png %{buildroot}%{_datadir}/%{name}/plugins/scmgit/www/git-logo.png
-
-# Declare rpm-specific version
-sed \
-    -e "s!@PKGNAME@!FusionForge!g" \
-    -e "s!@PKGVERSION@!%{version}-%{release}!g" \
-    -e "s!@PLUCKERNAME@!FusionForge!g" \
-    < %{buildroot}/%{_datadir}/%{name}/common/pkginfo.inc.php.template \
-    > %{buildroot}/%{_datadir}/%{name}/common/pkginfo.inc.php
-
-# doc
-cat <<EOF > README.fedora
-Base post-install: run /usr/share/fusionforge/install-ng --database --config
-Note: the next FusionForge release will come with a fully-automated installer.
-EOF
+# Manually handling the 3 python glue files for MoinMoin integration
+echo %{_datadir}/%{name}/plugins/moinmoin/lib/ >> plugin-moinmoin.rpmfiles
 
 
 %package common
 Summary: Collaborative development tool - shared files
-Requires: php-cli, php-pgsql, php-process, php-htmlpurifier-htmlpurifier, cronie, which
+Requires: php-cli, php-pgsql, php-process, php-htmlpurifier-htmlpurifier, crontabs, cronie
 %description common
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -292,49 +94,17 @@ integrated into one web site and managed through a web interface.
 
 This package contains files and programs used by several other
 subpackages.
-%files common -f %{name}.lang
+%files common -f common.rpmfiles -f %{name}.lang
 %doc AUTHORS* CHANGES COPYING INSTALL.TXT NEWS README
 %doc docs/*
-%doc README.fedora
-%{_bindir}/forge_get_config
-%{_bindir}/forge_run_job
-%{_bindir}/forge_run_plugin_job
-%{_datadir}/%{name}/bin/forge_get_config
-%{_datadir}/%{name}/bin/forge_run_job
-%{_datadir}/%{name}/bin/forge_run_plugin_job
-%{_datadir}/%{name}/bin/forge_set_password
-%{_datadir}/%{name}/bin/forge_wrapper
-%{_datadir}/%{name}/bin/httpd_log_demux.php
-%{_datadir}/%{name}/bin/list-admins.php
-%{_datadir}/%{name}/bin/list-projects-using-plugin.php
-%{_datadir}/%{name}/bin/migrate-to-ini-files.sh
-%{_datadir}/%{name}/bin/normalize_roles.php
-%{_datadir}/%{name}/bin/update-all-in-sysauth.php
-%{_datadir}/%{name}/cronjobs/create_scm_repos.php
-%{_datadir}/%{name}/cronjobs/gather_scm_stats.php
-%{_datadir}/%{name}/cronjobs/generate_scm_snapshots.php
-%{_datadir}/%{name}/common/
-%{_datadir}/%{name}/etc/
-%{_datadir}/%{name}/install-ng
-%{_datadir}/%{name}/install/
-%{_datadir}/%{name}/lib/
-%{_datadir}/%{name}/utils/default_page.php
-%{_datadir}/%{name}/utils/fg_template
-%{_datadir}/%{name}/utils/forge_get_config_basic
-%{_datadir}/%{name}/utils/forge_set_password
-%dir %{_localstatedir}/lib/%{name}/
-%dir %{_localstatedir}/lib/%{name}/etc/
-%dir %{_localstatedir}/log/%{name}/
-%config(noreplace) %{_sysconfdir}/cron.d/%{name}
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/debug.ini
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/defaults.ini
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/zzzz-local.ini
-%config(noreplace) %{_sysconfdir}/httpd/conf.d/z-gforge.conf
-%config(noreplace) %{_sysconfdir}/%{name}/httpd.conf.d/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/authbuiltin.ini
-%{_datadir}/%{name}/plugins/env.inc.php
-%{_datadir}/%{name}/plugins/authbuiltin/
+%doc rpm/README.fedora
+%post common
+%{_datadir}/%{name}/post-install.d/common/common.sh configure
+%preun common
+if [ $1 -eq 0 ] ; then
+    %{_datadir}/%{name}/post-install.d/common/common.sh remove
+    %{_datadir}/%{name}/post-install.d/common/common.sh purge
+fi
 
 
 %package db-local
@@ -350,27 +120,11 @@ integrated into one web site and managed through a web interface.
 
 This package installs, configures and maintains the FusionForge
 database.
-%files db-local
-%{_datadir}/%{name}/bin/upgrade-db.php
-%{_datadir}/%{name}/cronjobs/calculate_user_metric.php
-%{_datadir}/%{name}/cronjobs/check_stale_tracker_items.php
-%{_datadir}/%{name}/cronjobs/db_project_sums.php
-%{_datadir}/%{name}/cronjobs/db_stats_agg.php
-%{_datadir}/%{name}/cronjobs/db_trove_maint.php
-%{_datadir}/%{name}/cronjobs/ftp_create_group_access.php
-%{_datadir}/%{name}/cronjobs/get_news_notapproved.pl
-%{_datadir}/%{name}/cronjobs/gforge-db-backup.sh
-%{_datadir}/%{name}/cronjobs/massmail.php
-%{_datadir}/%{name}/cronjobs/project_cleanup.php
-%{_datadir}/%{name}/cronjobs/project_weekly_metric.php
-%{_datadir}/%{name}/cronjobs/rating_stats.php
-%{_datadir}/%{name}/cronjobs/reporting_cron.php
-%{_datadir}/%{name}/cronjobs/rotate_activity.php
-%{_datadir}/%{name}/cronjobs/site_stats.php
-%{_datadir}/%{name}/cronjobs/stats_projects.inc
-%{_datadir}/%{name}/cronjobs/stats_site.inc
-%{_datadir}/%{name}/cronjobs/vacuum.php
-%{_datadir}/%{name}/db
+%files db-local -f db-local.rpmfiles
+%post db-local
+%{_datadir}/%{name}/post-install.d/db/db.sh configure
+%preun db-local
+if [ $1 -eq 0 ] ; then %{_datadir}/%{name}/post-install.d/db/db.sh remove; fi
 
 
 %package db-remote
@@ -402,15 +156,34 @@ integrated into one web site and managed through a web interface.
 
 This package provides shell accounts authenticated via the PostGreSQL
 database to FusionForge users.
-%files shell
-%{_datadir}/%{name}/bin/install-nsspgsql.sh
-%{_datadir}/%{name}/cronjobs/homedirs.php
-%{_datadir}/%{name}/cronjobs/ssh_create.php
+%files shell -f shell.rpmfiles
+%post shell
+%{_datadir}/%{name}/post-install.d/shell/shell.sh configure
+%preun shell
+if [ $1 -eq 0 ] ; then
+    %{_datadir}/%{name}/post-install.d/shell/shell.sh remove
+    %{_datadir}/%{name}/post-install.d/shell/shell.sh purge
+fi
+
+
+%package scm
+Summary: Collaborative development tool - shell accounts (using PostgreSQL)
+Requires: %{name}-common = %{version}-%{release}, %{name}-shell = %{version}-%{release}, xinetd, rsync
+%description scm
+FusionForge provides many tools to aid collaboration in a
+development project, such as bug-tracking, task management,
+mailing-lists, SCM repository, forums, support request helper,
+web/FTP hosting, release management, etc. All these services are
+integrated into one web site and managed through a web interface.
+
+This package contains the jobs to manage SCM repositories.
+It should be installed on only one server in your infrastructure.
+%files scm -f scm.rpmfiles
 
 
 %package web
 Summary: Collaborative development tool - web part (using Apache)
-Requires: %{name}-common = %{version}-%{release}, %{name}-db = %{version}-%{release}, httpd, mod_ssl, php, php-pgsql, php-simplepie, php-nusoap
+Requires: %{name}-common = %{version}-%{release}, %{name}-db = %{version}-%{release}, httpd, mod_ssl, php, php-pgsql, php-simplepie, php-pear-HTTP, php-nusoap, php-mbstring, httpd-itk, mod_dav_svn, unoconv, poppler-utils
 %description web
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -420,16 +193,15 @@ integrated into one web site and managed through a web interface.
 
 This package contains the files needed to run the web part of
 FusionForge on an Apache web server.
-%files web
-%{_datadir}/%{name}/vendor
-%{_datadir}/%{name}/www
-%attr(0775, apache, apache) %dir %{_datadir}/%{name}/www/plugins
-%{_datadir}/%{name}/utils/manage-apache-config.sh
-%{_localstatedir}/lib/%{name}/etc/httpd.vhosts
-%attr(0775, apache, apache) %dir %{_localstatedir}/lib/%{name}/docman/
-%attr(0775, apache, apache) %dir %{_localstatedir}/lib/%{name}/download/
-%attr(0775, apache, apache) %dir %{_localstatedir}/lib/%{name}/forum/
-%attr(0775, apache, apache) %dir %{_localstatedir}/lib/%{name}/tracker/
+%files web -f web.rpmfiles
+%post web
+%{_datadir}/%{name}/post-install.d/web/web.sh configure
+%preun web
+if [ $1 -eq 0 ] ; then
+    %{_datadir}/%{name}/post-install.d/web/web.sh remove
+    %{_datadir}/%{name}/post-install.d/web/web.sh purge
+fi
+
 
 %package web-vhosts
 Summary: Collaborative development tool - web vhosts (using Apache)
@@ -443,14 +215,52 @@ integrated into one web site and managed through a web interface.
 
 This package contains the files needed to run project vhosts
 on an Apache web server.
-%files web-vhosts
-%config(noreplace) %{_sysconfdir}/%{name}/templates/httpd.vhosts
-%{_datadir}/%{name}/cronjobs/create_vhosts.php
+%files web-vhosts -f web-vhosts.rpmfiles
+
+
+%package mta-postfix
+Summary: Collaborative development tool - mail tools (using Postfix)
+Requires: %{name}-common = %{version}-%{release}, postfix
+Provides: %{name}-mta = %{version}-%{release}
+%description mta-postfix
+FusionForge provides many tools to aid collaboration in a
+development project, such as bug-tracking, task management,
+mailing-lists, SCM repository, forums, support request helper,
+web/FTP hosting, release management, etc. All these services are
+integrated into one web site and managed through a web interface.
+
+This package configures the Postfix mail transfer agent to run
+FusionForge.
+%files mta-postfix -f mta-postfix.rpmfiles
+%post mta-postfix
+%{_datadir}/%{name}/post-install.d/mta-postfix/mta-postfix.sh configure
+%preun mta-postfix
+if [ $1 -eq 0 ] ; then %{_datadir}/%{name}/post-install.d/mta-postfix/mta-postfix.sh $i remove; fi
+
+
+%package mta-exim4
+Summary: Collaborative development tool - mail tools (using Exim 4)
+Requires: %{name}-common = %{version}-%{release}, exim
+Provides: %{name}-mta = %{version}-%{release}
+%description mta-exim4
+FusionForge provides many tools to aid collaboration in a
+development project, such as bug-tracking, task management,
+mailing-lists, SCM repository, forums, support request helper,
+web/FTP hosting, release management, etc. All these services are
+integrated into one web site and managed through a web interface.
+
+This package configures the Exim 4 mail transfer agent to run
+FusionForge.
+%files mta-exim4 -f mta-exim4.rpmfiles
+%post mta-exim4
+%{_datadir}/%{name}/post-install.d/mta-exim4/mta-exim4.sh configure
+%preun mta-exim4
+if [ $1 -eq 0 ] ; then %{_datadir}/%{name}/post-install.d/mta-exim4/mta-exim4.sh $i remove; fi
 
 
 %package lists
 Summary: Collaborative development tool - mailing-lists (using Mailman)
-Requires: %{name}-common = %{version}-%{release}, mailman
+Requires: %{name}-common = %{version}-%{release}, %{name}-mta = %{version}-%{release}, mailman
 %description lists
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -459,12 +269,13 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 This package controls the interaction between FusionForge and Mailman.
-%files lists
-%{_datadir}/%{name}/cronjobs/mail/
+%files lists -f lists.rpmfiles
+%post lists
+%{_datadir}/%{name}/post-install.d/lists/lists.sh configure
 
 
 %package plugin-scmgit
-Requires: %{name}-common = %{version}-%{release}, git, gitweb
+Requires: %{name}-common = %{version}-%{release}, git, gitweb, xinetd, rsync
 Summary: FusionForge plugin - Git
 %description plugin-scmgit
 FusionForge provides many tools to aid collaboration in a
@@ -476,13 +287,18 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Git subsystem of FusionForge. It allows each
 FusionForge project to have its own Git repository, and gives some
 control over it to the project's administrator.
-%files plugin-scmgit
-%{_datadir}/%{name}/plugins/scmgit/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmgit.ini
+%files plugin-scmgit -f plugin-scmgit.rpmfiles
+%post plugin-scmgit
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmgit configure
+%preun plugin-scmgit
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmgit remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmgit purge
+fi
 
 
 %package plugin-scmsvn
-Requires: %{name}-common = %{version}-%{release}, subversion, viewvc
+Requires: %{name}-common = %{version}-%{release}, subversion, viewvc, python-pycurl, xinetd, rsync
 Summary: FusionForge plugin - Subversion
 %description plugin-scmsvn
 FusionForge provides many tools to aid collaboration in a
@@ -494,10 +310,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Subversion subsystem of FusionForge. It allows
 each FusionForge project to have its own Subversion repository, and gives
 some control over it to the project's administrator.
-%files plugin-scmsvn
-%{_datadir}/%{name}/plugins/scmsvn/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmsvn.ini
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/scmsvn/
+%files plugin-scmsvn -f plugin-scmsvn.rpmfiles
+%post plugin-scmsvn
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmsvn configure
+%preun plugin-scmsvn
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmsvn remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmsvn purge
+fi
 
 
 %package plugin-scmbzr
@@ -513,10 +333,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Bazaar subsystem of FusionForge. It allows each
 FusionForge project to have its own Bazaar repository, and gives some control
 over it to the project's administrator.
-%files plugin-scmbzr
-%{_datadir}/%{name}/plugins/scmbzr/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmbzr.ini
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/scmbzr/
+%files plugin-scmbzr -f plugin-scmbzr.rpmfiles
+%post plugin-scmbzr
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmbzr configure
+%preun plugin-scmbzr
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmbzr remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmbzr purge
+fi
 
 
 %package plugin-scmhg
@@ -532,9 +356,15 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Mercurial (Hg) subsystem of FusionForge. It
 allows each FusionForge project to have its own Mercurial repository,
 and gives some control over it to the project's administrator.
-%files plugin-scmhg
-%{_datadir}/%{name}/plugins/scmhg/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmhg.ini
+Offer DAV or SSH access.
+%files plugin-scmhg -f plugin-scmhg.rpmfiles
+%post plugin-scmhg
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhg configure
+%preun plugin-scmhg
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhg remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhg purge
+fi
 
 
 %package plugin-scmdarcs
@@ -550,9 +380,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Darcs subsystem of FusionForge. It allows each
 FusionForge project to have its own Darcs repository, and gives some control
 over it to the project's administrator.
-%files plugin-scmdarcs
-%{_datadir}/%{name}/plugins/scmdarcs/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmdarcs.ini
+%files plugin-scmdarcs -f plugin-scmdarcs.rpmfiles
+%post plugin-scmdarcs
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmdarcs configure
+%preun plugin-scmdarcs
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmdarcs remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmdarcs purge
+fi
 
 
 %package plugin-aselectextauth
@@ -568,9 +403,14 @@ integrated into one web site and managed through a web interface.
 A system plugin for authenticating users in fusionforge. A-Select is a framework
 where users can be authenticated by several means with Authentication
 Service Providers.
-%files plugin-aselectextauth
-%{_datadir}/%{name}/plugins/aselectextauth/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/aselectextauth.ini
+%files plugin-aselectextauth -f plugin-aselectextauth.rpmfiles
+%post plugin-aselectextauth
+%{_datadir}/%{name}/post-install.d/common/plugin.sh aselectextauth configure
+%preun plugin-aselectextauth
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh aselectextauth remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh aselectextauth purge
+fi
 
 
 %package plugin-authcas
@@ -586,9 +426,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains a CAS authentication mechanism for
 FusionForge. It allows users to authenticate against an external CAS
 server.
-%files plugin-authcas
-%{_datadir}/%{name}/plugins/authcas/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/authcas.ini
+%files plugin-authcas -f plugin-authcas.rpmfiles
+%post plugin-authcas
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authcas configure
+%preun plugin-authcas
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authcas remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authcas purge
+fi
 
 
 %package plugin-authhttpd
@@ -604,9 +449,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains an HTTPD authentication mechanism for
 FusionForge. It allows Apache authentication to be reused for
 FusionForge, for instance where Kerberos is used.
-%files plugin-authhttpd
-%{_datadir}/%{name}/plugins/authhttpd/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/authhttpd.ini
+%files plugin-authhttpd -f plugin-authhttpd.rpmfiles
+%post plugin-authhttpd
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd configure
+%preun plugin-authhttpd
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd purge
+fi
 
 
 %package plugin-authldap
@@ -623,9 +473,14 @@ This plugin contains an LDAP authentication mechanism for
 FusionForge. It allows users to authenticate against an external LDAP
 directory, and syncs some of their personal information from LDAP
 into the FusionForge database.
-%files plugin-authldap
-%{_datadir}/%{name}/plugins/authldap/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/authldap.ini
+%files plugin-authldap -f plugin-authldap.rpmfiles
+%post plugin-authldap
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authldap configure
+%preun plugin-authldap
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authldap remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authldap purge
+fi
 
 
 %package plugin-blocks
@@ -641,9 +496,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains the Blocks subsystem of FusionForge. It allows each
 FusionForge project to have its own Blocks, and gives some
 control over it to the project's administrator.
-%files plugin-blocks
-%{_datadir}/%{name}/plugins/blocks/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/blocks.ini
+%files plugin-blocks -f plugin-blocks.rpmfiles
+%post plugin-blocks
+%{_datadir}/%{name}/post-install.d/common/plugin.sh blocks configure
+%preun plugin-blocks
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh blocks remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh blocks purge
+fi
 
 
 %package plugin-ckeditor
@@ -657,9 +517,14 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 CKEditor is a WYSIWYG text editor that displays within a web browser.
-%files plugin-ckeditor
-%{_datadir}/%{name}/plugins/ckeditor/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/ckeditor.ini
+%files plugin-ckeditor -f plugin-ckeditor.rpmfiles
+%post plugin-ckeditor
+%{_datadir}/%{name}/post-install.d/common/plugin.sh ckeditor configure
+%preun plugin-ckeditor
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh ckeditor remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh ckeditor purge
+fi
 
 
 %package plugin-compactpreview
@@ -674,9 +539,14 @@ integrated into one web site and managed through a web interface.
 
 This plugin adds support for user and project compact-preview
 (popups) compatible with the OSLC specifications.
-%files plugin-compactpreview
-%{_datadir}/%{name}/plugins/compactpreview/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/compactpreview.ini
+%files plugin-compactpreview -f plugin-compactpreview.rpmfiles
+%post plugin-compactpreview
+%{_datadir}/%{name}/post-install.d/common/plugin.sh compactpreview configure
+%preun plugin-compactpreview
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh compactpreview remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh compactpreview purge
+fi
 
 
 %package plugin-externalsearch
@@ -693,10 +563,14 @@ This plugin adds a new search engine to your FusionForge site. It allows
 your users to search your FusionForge site through external search engines
 which have indexed it. You can define search engines you want to use in
 the configuration file.
-%files plugin-externalsearch
-%{_datadir}/%{name}/plugins/externalsearch/
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/externalsearch/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/externalsearch.ini
+%files plugin-externalsearch -f plugin-externalsearch.rpmfiles
+%post plugin-externalsearch
+%{_datadir}/%{name}/post-install.d/common/plugin.sh externalsearch configure
+%preun plugin-externalsearch
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh externalsearch remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh externalsearch purge
+fi
 
 
 %package plugin-gravatar
@@ -711,9 +585,14 @@ integrated into one web site and managed through a web interface.
 
 This plugin contains the gravatar plugin of FusionForge. It allows each
 FusionForge user to have its gravatar icon displayed.
-%files plugin-gravatar
-%{_datadir}/%{name}/plugins/gravatar/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/gravatar.ini
+%files plugin-gravatar -f plugin-gravatar.rpmfiles
+%post plugin-gravatar
+%{_datadir}/%{name}/post-install.d/common/plugin.sh gravatar configure
+%preun plugin-gravatar
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh gravatar remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh gravatar purge
+fi
 
 
 %package plugin-headermenu
@@ -727,10 +606,16 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 This plugin allows each project to define extra tabs with arbitrary
-titles and links.
-%files plugin-headermenu
-%{_datadir}/%{name}/plugins/headermenu/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/headermenu.ini
+titles and links, next to the login menu (headermenu),
+in the main menu (outermenu) or in the project menu (groupmenu).
+%files plugin-headermenu -f plugin-headermenu.rpmfiles
+%post plugin-headermenu
+%{_datadir}/%{name}/post-install.d/common/plugin.sh headermenu configure
+%preun plugin-headermenu
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh headermenu remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh headermenu purge
+fi
 
 
 %package plugin-hudson
@@ -745,11 +630,15 @@ integrated into one web site and managed through a web interface.
 
 This plugin contains the Hudson subsystem of FusionForge. It allows each
 FusionForge project to have its own Hudson, and gives some
-control over it to the project's administrator.
-%files plugin-hudson
-%{_datadir}/%{name}/plugins/hudson/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/hudson.ini
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/hudson/
+control over it to the project administrator.
+%files plugin-hudson -f plugin-hudson.rpmfiles
+%post plugin-hudson
+%{_datadir}/%{name}/post-install.d/common/plugin.sh hudson configure
+%preun plugin-hudson
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh hudson remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh hudson purge
+fi
 
 
 %package plugin-mediawiki
@@ -763,14 +652,14 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 This plugin allows each project to embed Mediawiki under a tab.
-%files plugin-mediawiki
-%{_datadir}/%{name}/plugins/mediawiki/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/mediawiki.ini
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/mediawiki/
-%config(noreplace) %{_sysconfdir}/cron.d/%{name}-plugin-mediawiki
-%{_localstatedir}/lib/%{name}/plugins/mediawiki/
-%{_datadir}/mediawiki/skins/FusionForge.php
-%{_datadir}/mediawiki/skins/fusionforge
+%files plugin-mediawiki -f plugin-mediawiki.rpmfiles
+%post plugin-mediawiki
+%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki configure
+%preun plugin-mediawiki
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki purge
+fi
 
 
 %package plugin-message
@@ -785,9 +674,14 @@ integrated into one web site and managed through a web interface.
 
 This plugin allows the site administrator to display a message banner
 on all pages, e.g. for maintenance announcements.
-%files plugin-message
-%{_datadir}/%{name}/plugins/message/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/message.ini
+%files plugin-message -f plugin-message.rpmfiles
+%post plugin-message
+%{_datadir}/%{name}/post-install.d/common/plugin.sh message configure
+%preun plugin-message
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh message remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh message purge
+fi
 
 
 %package plugin-moinmoin
@@ -801,10 +695,14 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 This plugin allows each project to embed MoinMoinWiki under a tab.
-%files plugin-moinmoin
-%{_datadir}/%{name}/plugins/moinmoin/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/moinmoin.ini
-%config(noreplace) %{_sysconfdir}/%{name}/plugins/moinmoin/
+%files plugin-moinmoin -f plugin-moinmoin.rpmfiles
+%post plugin-moinmoin
+%{_datadir}/%{name}/post-install.d/common/plugin.sh moinmoin configure
+%preun plugin-moinmoin
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh moinmoin remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh moinmoin purge
+fi
 
 
 %package plugin-online_help
@@ -818,13 +716,18 @@ web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
 This is a online_help plugin within FusionForge.
-%files plugin-online_help
-%{_datadir}/%{name}/plugins/online_help/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/online_help.ini
+%files plugin-online_help -f plugin-online_help.rpmfiles
+%post plugin-online_help
+%{_datadir}/%{name}/post-install.d/common/plugin.sh online_help configure
+%preun plugin-online_help
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh online_help remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh online_help purge
+fi
 
 
 %package plugin-scmhook
-Requires: %{name}-common = %{version}-%{release},
+Requires: %{name}-common = %{version}-%{release}, php-cli
 Summary: FusionForge plugin - Scmhook
 %description plugin-scmhook
 FusionForge provides many tools to aid collaboration in a
@@ -836,9 +739,14 @@ integrated into one web site and managed through a web interface.
 This plugin contains a set of commit hooks (e-mail notifications,
 tracker integration, conformity...) that can be enabled for each
 project independently.
-%files plugin-scmhook
-%{_datadir}/%{name}/plugins/scmhook/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/scmhook.ini
+%files plugin-scmhook -f plugin-scmhook.rpmfiles
+%post plugin-scmhook
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhook configure
+%preun plugin-scmhook
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhook remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmhook purge
+fi
 
 
 %package plugin-projectlabels
@@ -853,9 +761,14 @@ integrated into one web site and managed through a web interface.
 
 This can be used to highlight some projects on a forge, for instance
 for a "project of the month".
-%files plugin-projectlabels
-%{_datadir}/%{name}/plugins/projectlabels/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/projectlabels.ini
+%files plugin-projectlabels -f plugin-projectlabels.rpmfiles
+%post plugin-projectlabels
+%{_datadir}/%{name}/post-install.d/common/plugin.sh projectlabels configure
+%preun plugin-projectlabels
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh projectlabels remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh projectlabels purge
+fi
 
 
 %package plugin-contribtracker
@@ -870,9 +783,14 @@ integrated into one web site and managed through a web interface.
 
 This plugin allows each project to display a list of significant
 contributions, along with their authors.
-%files plugin-contribtracker
-%{_datadir}/%{name}/plugins/contribtracker/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/contribtracker.ini
+%files plugin-contribtracker -f plugin-contribtracker.rpmfiles
+%post plugin-contribtracker
+%{_datadir}/%{name}/post-install.d/common/plugin.sh contribtracker configure
+%preun plugin-contribtracker
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh contribtracker remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh contribtracker purge
+fi
 
 
 %package plugin-globalsearch
@@ -888,46 +806,89 @@ integrated into one web site and managed through a web interface.
 This plugin contains a cross-FusionForge search engine.  You can
 declare a list of other FusionForge sites, and search for projects
 hosted on these forges from your own.
-%files plugin-globalsearch
-%{_datadir}/%{name}/plugins/globalsearch/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/globalsearch.ini
+%files plugin-globalsearch -f plugin-globalsearch.rpmfiles
+%post plugin-globalsearch
+%{_datadir}/%{name}/post-install.d/common/plugin.sh globalsearch configure
+%preun plugin-globalsearch
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh globalsearch remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh globalsearch purge
+fi
 
 
-%package plugin-webanalytics
+%package plugin-sysauthldap
+Requires: %{name}-common = %{version}-%{release}, php-ldap
+Summary: FusionForge plugin - System authentication via LDAP
+%description plugin-sysauthldap
+FusionForge provides many tools to aid collaboration in a
+development project, such as bug-tracking, task management,
+mailing-lists, SCM repository, forums, support request helper,
+web/FTP hosting, release management, etc. All these services are
+integrated into one web site and managed through a web interface.
+
+This plugin maintains data about users, groups and memberships in an
+LDAP directory that can be used for NSS/PAM system authentication (or
+for other uses).
+%files plugin-sysauthldap -f plugin-sysauthldap.rpmfiles
+%post plugin-sysauthldap
+%{_datadir}/%{name}/post-install.d/common/plugin.sh sysauthldap configure
+%preun plugin-sysauthldap
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh sysauthldap remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh sysauthldap purge
+fi
+
+
+%package plugin-taskboard
 Requires: %{name}-common = %{version}-%{release},
-Summary: FusionForge plugin - webanalytics
-%description plugin-webanalytics
+Summary: FusionForge plugin - Task Board
+%description plugin-taskboard
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
 mailing-lists, SCM repository, forums, support request helper,
 web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
-webanalytics plugin for FusionForge.
-%files plugin-webanalytics
-%{_datadir}/%{name}/plugins/webanalytics/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/webanalytics.ini
+Agile TaskBoard: Supports Scrum and Kanban methodologies.
+%files plugin-taskboard -f plugin-taskboard.rpmfiles
+%post plugin-taskboard
+%{_datadir}/%{name}/post-install.d/common/plugin.sh taskboard configure
+%preun plugin-taskboard
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh taskboard remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh taskboard purge
+fi
 
 
-%package plugin-sysauthldap
+%package plugin-webanalytics
 Requires: %{name}-common = %{version}-%{release},
-Summary: FusionForge plugin - System authentication via LDAP
-%description plugin-sysauthldap
+Summary: FusionForge plugin - webanalytics
+%description plugin-webanalytics
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
 mailing-lists, SCM repository, forums, support request helper,
 web/FTP hosting, release management, etc. All these services are
 integrated into one web site and managed through a web interface.
 
-This plugin maintains data about users, groups and memberships in an
-LDAP directory that can be used for NSS/PAM system authentication (or
-for other uses).
-%files plugin-sysauthldap
-%{_datadir}/%{name}/plugins/sysauthldap/
-%config(noreplace) %{_sysconfdir}/%{name}/config.ini.d/sysauthldap.ini
+webanalytics plugin for FusionForge. Get the ability
+to configure specific URL for web analytics tool
+such as Piwik or Google Analytics.
+%files plugin-webanalytics -f plugin-webanalytics.rpmfiles
+%post plugin-webanalytics
+%{_datadir}/%{name}/post-install.d/common/plugin.sh webanalytics configure
+%preun plugin-webanalytics
+if [ $1 -eq 0 ] ; then
+%{_datadir}/%{name}/post-install.d/common/plugin.sh webanalytics remove
+%{_datadir}/%{name}/post-install.d/common/plugin.sh webanalytics purge
+fi
+
+
 
 
 %changelog
+* Mon May 18 2015 Sylvain Beucler <beuc at beuc.net> - 6.0-0.1.rc2
+- New upstream release candidate
+
 * Mon Nov 3 2014 Sylvain Beucler <beuc at beuc.net> - 5.3.2-3
 - Remove augeas dependency from fusionforge-plugin-scmsvn which is not
   needed in 5.3.2.
diff --git a/install-ng-postgresql.patch b/install-ng-postgresql.patch
deleted file mode 100644
index c0509de..0000000
--- a/install-ng-postgresql.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Index: fusionforge-5.3.2/install/install3
-===================================================================
---- fusionforge-5.3.2.orig/install/install3
-+++ fusionforge-5.3.2/install/install3
-@@ -69,18 +69,23 @@ find_psql_init(){
- 	done
- 	if [ -z "$pgservice" ]
- 	then
--		msg red "Error: Looks like postgresql is not installed. Die here."
--		exit 1
-+		#msg red "Error: Looks like postgresql is not installed. Die here."
-+		pgservice='service postgresql'
-+		#exit 1
- 	fi
- }
- 		
- psql_startdb(){
- 	# Fedora9 (an maybe newer) requires running initdb
--	if [ "$pgservice" = '/etc/init.d/postgresql' ]
-+	if [ "$pgservice" = 'service postgresql' ]
- 	then
- 		if [ ! -d /var/lib/pgsql/data/base ]
- 		then
--			service postgresql initdb &>/dev/null
-+		    if type postgresql-setup >/dev/null 2>&1; then
-+			postgresql-setup initdb >/dev/null || true
-+		    else
-+			service postgresql initdb >/dev/null || true  # deprecated in Fedora
-+		    fi
- 		fi
- 	fi
- 
-@@ -90,7 +95,7 @@ psql_startdb(){
- 
- psql_stopdb(){
- 	# Fedora9 (an maybe newer) requires running initdb
--	if [ "$pgservice" = '/etc/init.d/postgresql' ]
-+	if [ "$pgservice" = 'service postgresql' ]
- 	then
- 		if [ ! -d /var/lib/pgsql/data/base ]
- 		then
diff --git a/mediawiki-cron.patch b/mediawiki-cron.patch
deleted file mode 100644
index ed79a8d..0000000
--- a/mediawiki-cron.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-commit 360370633ecc7dfc47214f7ed985cd1345ec45ce
-Author: Roland Mas <lolando at debian.org>
-Date:   Mon Sep 22 16:34:59 2014 +0200
-
-    Use wrapper for cron jobs
-
-diff --git a/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki b/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki
-index e321084..c888014 100644
---- a/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki
-+++ b/plugins/mediawiki/etc/cron.d/fusionforge-plugin-mediawiki
-@@ -1,10 +1,3 @@
--FFDIR=@SOURCE_PATH@
--MWCRON=@PLUGINS_PATH@/mediawiki/cronjobs
--FFUSER=gforge
--
--# You may need to change the pathname to php CLI (command line interface)
--PHP="/usr/bin/php -q -d include_path=.:@CONFIG_PATH@:@SOURCE_PATH@:@SOURCE_PATH@/www/include:@PLUGINS_PATH@"
--
- # Don't mail command output to anyone.
- MAILTO=""
- 
-@@ -13,8 +6,8 @@ MAILTO=""
- #
- 
- # Create new mediawikis four times an hour
--0,15,30,45 * * * * root [ -x $MWCRON/create-wikis.php ] && $PHP $MWCRON/create-wikis.php
--1,16,31,46 * * * * root [ -x $MWCRON/create-imagedirs.php ] && $PHP $MWCRON/create-imagedirs.php
-+0,15,30,45 * * * * root forge_run_plugin_job mediawiki create-wikis.php
-+1,16,31,46 * * * * root forge_run_plugin_job mediawiki create-imagedirs.php
- 
- # Create wiki XML dumps every night
--55 1 * * * root [ -x $MWCRON/dump-wikis.php ] && $PHP $MWCRON/dump-wikis.php
-+55 1 * * * root forge_run_plugin_job mediawiki dump-wikis.php
diff --git a/snoopy-to-curl.patch b/snoopy-to-curl.patch
deleted file mode 100644
index d388f6f..0000000
--- a/snoopy-to-curl.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-commit 8d4b79feb0af7f66668a6aa575a5d0801083a65d
-Author: Sylvain Beucler <sylvain.beucler at inria.fr>
-Date:   Fri Oct 24 14:32:33 2014 +0200
-
-    Replace php-snoopy with php-curl
-
-Index: fusionforge-5.3.2/plugins/scmhook/library/scmgit/hooks/committracker/post.php
-===================================================================
---- fusionforge-5.3.2.orig/plugins/scmhook/library/scmgit/hooks/committracker/post.php
-+++ fusionforge-5.3.2/plugins/scmhook/library/scmgit/hooks/committracker/post.php
-@@ -33,7 +33,6 @@
- 
- require_once dirname(__FILE__).'/../../../../../../common/include/env.inc.php';
- require_once $gfcommon.'include/pre.php';
--require $gfplugins.'scmhook/library/scmgit/hooks/committracker/Snoopy.class.php';
- 
- /**
-  * usage - It returns the usage and exit program
-@@ -170,8 +169,6 @@ foreach ($changed as $onefile) {
- 
- 
- // Our POSTer in Fusionforge
--$snoopy = new Snoopy;
--
- $SubmitUrl = util_make_url('/plugins/scmhook/committracker/newcommitgit.php');
- 
- $tasks_involved = getInvolvedTasks($log);
-@@ -200,5 +197,11 @@ foreach ( $files as $onefile )
- }
- 
- $vars['data'] = urlencode(serialize($SubmitVars));
--$snoopy->submit($SubmitUrl, $vars);
--// echo $snoopy->results;
-+$ch = curl_init();
-+curl_setopt($ch, CURLOPT_URL, $SubmitUrl);
-+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-+curl_setopt($ch, CURLOPT_POST, true);
-+curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
-+$result = curl_exec($ch);
-+//$info = curl_getinfo($ch);
-+curl_close($ch);
-Index: fusionforge-5.3.2/plugins/scmhook/library/scmsvn/hooks/committracker/post.php
-===================================================================
---- fusionforge-5.3.2.orig/plugins/scmhook/library/scmsvn/hooks/committracker/post.php
-+++ fusionforge-5.3.2/plugins/scmhook/library/scmsvn/hooks/committracker/post.php
-@@ -32,7 +32,6 @@
- 
- require_once dirname(__FILE__).'/../../../../../../common/include/env.inc.php';
- require_once $gfcommon.'include/pre.php';
--require $gfplugins.'scmhook/library/scmsvn/hooks/committracker/Snoopy.class.php';
- 
- /**
-  * It returns the usage and exit program
-@@ -163,8 +162,6 @@ foreach ($changed as $onefile) {
- 
- 
- // Our POSTer in Fusionforge
--$snoopy = new Snoopy;
--
- $SubmitUrl = util_make_url('/plugins/scmhook/committracker/newcommit.php');
- 
- $tasks_involved= getInvolvedTasks($log);
-@@ -191,5 +188,12 @@ foreach ( $files as $onefile )
- }
- 
- $vars['data'] = urlencode(serialize($SubmitVars));
--$snoopy->submit($SubmitUrl, $vars);
--?>
-+
-+$ch = curl_init();
-+curl_setopt($ch, CURLOPT_URL, $SubmitUrl);
-+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-+curl_setopt($ch, CURLOPT_POST, true);
-+curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
-+$result = curl_exec($ch);
-+//$info = curl_getinfo($ch);
-+curl_close($ch);
diff --git a/sources b/sources
index 79c6e8a..74410d2 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b4b7f7b829a3f348edf5010515efdff8  fusionforge-5.3.2.tar.bz2
+de73e15beb8f84b6b3444823a3959710  fusionforge-6.0rc2.tar.bz2
diff --git a/unbundle-viewvc.patch b/unbundle-viewvc.patch
deleted file mode 100644
index b08cbe0..0000000
--- a/unbundle-viewvc.patch
+++ /dev/null
@@ -1,1015 +0,0 @@
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/help.css
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/help.css
-@@ -0,0 +1,14 @@
-+/************************************/
-+/***  ViewVC Help CSS Stylesheet ***/
-+/************************************/
-+
-+/*** Standard Tags ***/
-+body {
-+  margin: 0.5em;
-+}
-+img { border: none; }
-+
-+table { width: 100%; }
-+td { vertical-align: top; }
-+
-+col.menu { width:12em; }
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/help_dirview.html
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/help_dirview.html
-@@ -0,0 +1,122 @@
-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
-+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-+<head>
-+  <title>ViewVC Help: Directory View</title>
-+  <link rel="stylesheet" href="help.css" type="text/css" />
-+  <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
-+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-+</head>
-+<body>
-+  <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
-+  <table>
-+    <col class="menu" />
-+    <col />
-+    <tr><td>
-+       <h3>Help</h3>
-+       <a href="help_rootview.html">General</a><br />
-+       <strong>Directory&nbsp;View</strong><br />
-+       <a href="help_log.html">Log&nbsp;View</a><br />
-+       <a href="help_query.html">Query&nbsp;Database</a><br />
-+    </td><td>
-+
-+    <h1>ViewVC Help: Directory View</h1>
-+
-+    <p>The directory listing view should be a familiar sight to any
-+    computer user. It shows the path of the current directory being viewed
-+    at the top of the page. Below that is a table summarizing the
-+    directory contents, and then comes actual contents, a sortable list of
-+    all files and subdirectories inside the current directory.</p>
-+
-+    <p><a name="summary"></a>The summary table is made up of some or all
-+    of the following rows:</p>
-+    <ul>
-+      <li><a name="summary-files-shown"><strong>Files Shown</strong></a>
-+      - Number of files shown in the directory listing. This might be less
-+      than the actual number of files in the directory if a
-+      <a href="#option-search">regular expression search</a> is in place,
-+      hiding files which don't meet the search criteria. In CVS directory
-+      listings, this row will also have a link to toggle display of
-+      <a href="help_rootview.html#dead-files">dead files</a>, if any are
-+      present.</li>
-+
-+      <li><a name="summary-revision"><strong>Directory
-+      Revision</strong></a> - For Subversion directories only.
-+      Shown as "# of #" where the first number is the most recent
-+      repository revision where the directory (or a path underneath it)
-+      was modified. The second number is just the latest repository
-+      revision. Both numbers are links to
-+      <a href="help_rootview.html#view-rev">revision views</a></li>
-+
-+     <li><a name="summary-sticky-revision-tag"><strong>Sticky
-+     Revision/Tag</strong></a> - shows the current
-+     <a href="help_rootview.html#sticky-revision-tag">sticky revision or
-+     tag</a> and contains form fields to set or clear it.</li>
-+
-+     <li><a name="summary-search"><strong>Current Search</strong></a> -
-+     If a <a href="#option-search">regular expression search</a> is in place,
-+     shows the search string.</li>
-+
-+     <li><a name="summary-query"><strong>Query</strong></a> - Provides
-+     a link to a <a href="help_rootview.html#view-query">query form</a>
-+     for the directory</li>
-+   </ul>
-+
-+  <p><a name="list"></a>The actual directory list is a table with
-+  filenames and directory names in one column and information about the
-+  most recent revisions where each file or directory was modified in the
-+  other columns. Column headers can be clicked to sort the directory
-+  entries in order by a column, and clicked again to reverse the sort
-+  order.</p>
-+
-+  <p>
-+  <!-- If using directory.ezt template -->
-+  File names are links to <a href="help_log.html">log views</a>
-+  showing a list of revisions where a file was modified. Revision
-+  numbers are links to either
-+  <a href="help_rootview.html#view-markup">view</a>
-+  or <a href="help_rootview.html#view-checkout">download</a> a file
-+  (depending on its file type). The links are reversed for directories.
-+  Directory revision numbers are links to <a href="help_log.html">log
-+  views</a>, while directory names are links showing the contents of those
-+  directories.
-+
-+  <!-- If using dir_alt.ezt template -->
-+  <!--
-+  File and directory names are links to retrieve their contents.
-+  File links may be either
-+  <a href="help_rootview.html#view-markup">view</a>
-+  or <a href="help_rootview.html#view-download">download</a> links
-+  depending on the file type. Directory links go to directory
-+  listings. Revision numbers are links to <a href="help_log.html">log
-+  views</a> showing lists of revisions where a file or directory was
-+  modified.
-+  -->
-+
-+  Also, in CVS repositories with the
-+  <a href="help_rootview.html#view-graph">graph view</a> enabled, there
-+  will be small
-+  <img src="images/cvsgraph_16x16.png" width="16" height="16" alt="graph">
-+  icons next to file names which are links to revision graphs.</p>
-+
-+  <p>Depending on how ViewVC is configured, there may be more options
-+  at the bottom of directory pages:</p>
-+
-+  <ul>
-+    <li><a name="option-search"><strong>Regular expression
-+    search</strong></a> - If enabled, will show a form field accepting
-+    a search string (a
-+    <a href="http://doc.python.org/lib/re-syntax.html">python regular
-+    expression</a>). Once submitted, only files that have at least
-+    one occurance of the expression will show up in directory listings.
-+    </li>
-+    <li><a name="option-tarball"><strong>Tarball download</strong></a> -
-+    If enabled, will show a link to download a gzipped tar archive of
-+    the directory contents.</li>
-+  </ul>
-+
-+  </td></tr></table>
-+  <hr />
-+  <address><a href="mailto:users at viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
-+  </body>
-+</html>
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/help_log.html
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/help_log.html
-@@ -0,0 +1,66 @@
-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
-+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-+<head>
-+  <title>ViewVC Help: Log View</title>
-+  <link rel="stylesheet" href="help.css" type="text/css" />
-+  <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
-+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-+</head>
-+<body>
-+  <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
-+  <table>
-+    <col class="menu" />
-+    <col />
-+    <tr><td>
-+       <h3>Help</h3>
-+       <a href="help_rootview.html">General</a><br />
-+       <a href="help_dirview.html">Directory&nbsp;View</a><br />
-+       <strong>Log&nbsp;View</strong><br />
-+       <a href="help_query.html">Query&nbsp;Database</a><br />
-+    </td><td>
-+
-+    <h1>ViewVC Help: Log View</h1>
-+
-+    <p>
-+      The log view displays the revision history of the selected source
-+      file or directory. For each revision the following information is
-+      displayed:
-+
-+      <ul>
-+        <li>The revision number. In Subversion repositories, this is a
-+            link to the <a href="help_rootview.html#view-rev">revision
-+            view</a></li>
-+        <li>For files, links to
-+        <a href="help_rootview.html#view-markup">view</a>,
-+        <a href="help_rootview.html#view-checkout">download</a>, and
-+        <a href="help_rootview.html#view-annotate">annotate</a> the
-+          revision. For directories, a link to
-+        <a href="help_dirview.html">list directory contents</a></li>
-+        <li>A link to select the revision for diffs (see below)</li>
-+        <li>The date and age of the change</li>
-+        <li>The author of the modification</li>
-+        <li>The CVS branch (usually <em>MAIN</em>, if not on a branch)</li>
-+        <li>Possibly a list of CVS tags bound to the revision (if any)</li>
-+        <li>The size of the change measured in added and removed lines of
-+            code. (CVS only)</li>
-+        <li>The size of the file in bytes at the time of the revision
-+            (Subversion only)</li>
-+        <li>Links to view diffs to the previous revision or possibly to
-+            an arbitrary selected revision (if any, see above)</li>
-+        <li>If the revision is the result of a copy, the path and revision
-+            copied from</li>
-+        <li>If the revision precedes a copy or rename, the path at the
-+            time of the revision</li>
-+        <li>And last but not least, the commit log message which should tell
-+            about the reason for the change.</li>
-+      </ul>
-+    <p>
-+      At the bottom of the page you will find a form which allows
-+      to request diffs between arbitrary revisions.
-+    </p>
-+  </td></tr></table>
-+  <hr />
-+  <address><a href="mailto:users at viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
-+  </body>
-+</html>
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/help_query.html
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/help_query.html
-@@ -0,0 +1,62 @@
-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
-+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-+<head>
-+  <title>ViewVC Help: Query The Commit Database</title>
-+  <link rel="stylesheet" href="help.css" type="text/css" />
-+  <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
-+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-+</head>
-+<body>
-+  <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
-+  <table>
-+    <col class="menu" />
-+    <col />
-+    <tr><td>
-+       <h3>Help:</h3>
-+       <a href="help_rootview.html">General</a><br />
-+       <a href="help_dirview.html">Directory&nbsp;View</a><br />
-+       <a href="help_log.html">Log&nbsp;View</a><br />
-+       <strong>Query&nbsp;Database</strong>
-+    </td><td>
-+  
-+    <h1>ViewVC Help: Query The Commit Database</h1>
-+  
-+    <p> 
-+      Select your parameters for querying the CVS commit database in the
-+      form at the top of the page.  You
-+      can search for multiple matches by typing a comma-seperated list
-+      into the text fields.  Regular expressions, and wildcards are also
-+      supported.  Blank text input fields are treated as wildcards.
-+    </p>
-+    <p>
-+      Any of the text entry fields can take a comma-seperated list of
-+      search arguments.  For example, to search for all commits from
-+      authors <em>jpaint</em> and <em>gstein</em>, just type: <code>jpaint,
-+      gstein</code> in the <em>Author</em> input box.  If you are searching
-+      for items containing spaces or quotes, you will need to quote your
-+      request.  For example, the same search above with quotes is:
-+      <code>"jpaint", "gstein"</code>.
-+    </p>
-+    <p>                           
-+      Wildcard and regular expression searches are entered in a similar
-+      way to the quoted requests.  You must quote any wildcard or
-+      regular expression request, and a command character preceeds the
-+      first quote.  The command character <code>l</code>(lowercase L) is for wildcard
-+      searches, and the wildcard character is a percent (<code>%</code>).  The
-+      command character for regular expressions is <code>r</code>, and is
-+      passed directly to MySQL, so you'll need to refer to the MySQL
-+      manual for the exact regex syntax.  It is very similar to Perl.  A
-+      wildard search for all files with a <em>.py</em> extention is:
-+      <code>l"%.py"</code> in the <em>File</em> input box.  The same search done
-+      with a regular expression is: <code>r".*\.py"</code>.
-+    </p>
-+    <p>                  
-+      All search types can be mixed, as long as they are seperated by
-+      commas.
-+    </p>                                                    
-+    </td></tr></table>
-+  <hr />
-+  <address><a href="mailto:users at viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
-+  </body>
-+</html>
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/help_rootview.html
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/help_rootview.html
-@@ -0,0 +1,157 @@
-+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
-+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-+<head>
-+  <title>ViewVC Help: General</title>
-+  <link rel="stylesheet" href="help.css" type="text/css" />
-+  <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
-+  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-+</head>
-+<body>
-+  <div><a href="http://viewvc.org/index.html"><img src="images/viewvc-logo.png" alt="ViewVC logotype" /></a></div>
-+  <table>
-+    <col class="menu" />
-+    <col />
-+    <tr><td>
-+       <h3>Help</h3>
-+       <strong>General</strong><br />
-+       <a href="help_dirview.html">Directory&nbsp;View</a><br />
-+       <a href="help_log.html">Log&nbsp;View</a><br />
-+       <a href="help_query.html">Query&nbsp;Database</a><br />
-+    </td><td>
-+
-+    <h1>ViewVC Help: General</h1>
-+
-+    <p><em>ViewVC</em> is a WWW interface for CVS and Subversion
-+    repositories. It allows you to browse the files and directories in a
-+    repository while showing you metadata from the repository history: log
-+    messages, modification dates, author names, revision numbers, copy
-+    history, and so on. It provides several different views of repository
-+    data to help you find the information you are looking for:</p>
-+  
-+    <ul>
-+      <li><a name="multiple-repositories"><strong>Root Listing
-+      View</strong></a> - Show a list of repositories configured for
-+      display in ViewVC.</li>
-+  
-+      <li><a name="view-dir" href="help_dirview.html"><strong>Directory
-+      View</strong></a> - Shows a list of files and subdirectories in a
-+      directory of the repository, along with metadata like author names and
-+      log entries.</li>
-+  
-+      <li><a name="view-log" href="help_log.html"><strong>Log
-+      View</strong></a> - Shows a revision by revision list of all the
-+      changes that have made to a file or directory in the repository, with
-+      metadata and links to views of each revision.</li>
-+  
-+      <li><a name="view-checkout"><strong>File Download (Checkout
-+      View)</strong></a> - Retrieves the unaltered contents of a file
-+      revision. Browsers may try to display the file, or just save it
-+      to disk.  <em>This view is disabled in the default ViewVC
-+      configuration.</em></li>
-+  
-+      <li><a name="view-annotate"><a name="view-markup"><strong>File
-+      Contents View</strong></a></a> - Shows the contents of a file at
-+      a particular revision, with revision information at the top of
-+      the page. File revisions which are GIF, PNG, or JPEG images are
-+      displayed inline on the page. Other file types are displayed as
-+      marked up text. The markup may be limited to turning URLs and
-+      email addresses into links, or configured to show colorized
-+      source code.  This view can optionally show line-based
-+      annotation data for the file, containing the revision number
-+      where each line was last modified, along with links and other
-+      information.  <em>This view is disabled in some ViewVC
-+      configurations.</em></li>
-+  
-+      <li><a name="view-diff"><strong>File Diff View</strong></a> - Shows
-+      the changes made between two revisions of a file</li>
-+  
-+      <li><a name="view-tarball"><strong>Directory Tarball View</strong></a> -
-+      Retrieves a gzipped tar archive containing the contents of a
-+      directory.<em>This view is disabled in the default ViewVC
-+      configuration.</em></li>
-+  
-+      <li><a name="view-query"><strong>Directory Query View</strong></a> -
-+      Shows information about changes made to all subdirectories and files
-+      under a parent directory, sorted and filtered by criteria you specify.
-+      <em>This view is disabled in the default ViewVC configuration.</em>
-+      </li>
-+  
-+      <li><a name="view-rev"><strong>Revision View</strong></a> - Shows
-+      information about a revision including log message, author, and a list
-+      of changed paths. <em>For Subversion repositories only.</em></li>
-+  
-+      <li><a name="view-graph"><strong>Graph View</strong></a> - Shows a
-+      graphical representation of a file's revisions and branches complete
-+      with tag and author names and links to markup and diff pages.
-+      <em>For CVS repositories only, and disabled in the default
-+      configuration.</em></li>
-+    </ul>
-+  
-+    <h3><a name="sticky-revision-tag">Sticky Revision and Tag</a></h3>
-+  
-+    <p>By default, ViewVC will show the files and directories and revisions
-+    that currently exist in the repository. But it's also possible to browse
-+    the contents of a repository at a point in its past history by choosing
-+    a "sticky tag" (in CVS) or a "sticky revision" (in Subversion) from the
-+    forms at the top of directory and log pages. They're called sticky
-+    because once they're chosen, they stick around when you navigate to
-+    other pages, until you reset them. When they're set, directory and log
-+    pages only show revisions preceding the specified point in history. In
-+    CVS, when a tag refers to a branch or a revision on a branch, only
-+    revisions from the branch history are shown, including branch points and
-+    their preceding revisions.</p>
-+  
-+    <h3><a name="dead-files">Dead Files</a></h3>
-+  
-+    <p>In CVS directory listings, ViewVC can optionally display dead files.
-+    Dead files are files which used to be in a directory but are currently
-+    deleted, or files which just don't exist in the currently selected
-+    <a href="#sticky-revision-tag">sticky tag</a>. Dead files cannot be
-+    shown in Subversion repositories. The only way to see a deleted file in
-+    a Subversion directory is to navigate to a sticky revision where the
-+    file previously existed.</p>
-+  
-+    <h3><a name="artificial-tags">Artificial Tags</a></h3>
-+  
-+    <p>In CVS Repositories, ViewVC adds artificial tags <em>HEAD</em> and
-+    <em>MAIN</em> to tag listings and accepts them in place of revision
-+    numbers and real tag names in all URLs. <em>MAIN</em> acts like a branch
-+    tag pointing at the default branch, while <em>HEAD</em> acts like a
-+    revision tag pointing to the latest revision on the default branch. The
-+    default branch is usually just the trunk, but may be set to other
-+    branches inside individual repository files. CVS will always check out
-+    revisions from a file's default branch when no other branch is specified
-+    on the command line.</p>
-+  
-+    <h3><a name="more-information">More Information</a></h3>
-+  
-+    <p>More information about <em>ViewVC</em> is available from
-+    <a href="http://viewvc.org/">viewvc.org</a>.
-+    See the links below for guides to CVS and Subversion</p>
-+  
-+    <h4>Documentation about CVS</h4>
-+    <blockquote>
-+      <p>
-+        <a href="http://cvsbook.red-bean.com/"><em>Open Source
-+        Development with CVS</em></a><br />
-+        <a href="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">CVS
-+        User's Guide</a><br />
-+        <a href="http://cellworks.washington.edu/pub/docs/cvs/tutorial/cvs_tutorial_1.html">Another CVS tutorial</a><br />
-+        <a href="http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/cvs/">Yet another CVS tutorial (a little old, but nice)</a><br />
-+        <a href="http://www.cs.utah.edu/dept/old/texinfo/cvs/FAQ.txt">An old but very useful FAQ about CVS</a>
-+      </p>
-+    </blockquote>
-+  
-+    <h4>Documentation about Subversion</h4>
-+    <blockquote>
-+      <p>
-+        <a href="http://svnbook.red-bean.com/"><em>Version Control with
-+        Subversion</em></a><br />
-+      </p>
-+    </blockquote>
-+  </td></tr></table>
-+  <hr />
-+  <address><a href="mailto:users at viewvc.tigris.org">ViewVC Users Mailinglist</a></address>
-+  </body>
-+</html>
-Index: fusionforge-5.3.2/www/scm/viewvc/docroot/styles.css
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/docroot/styles.css
-@@ -0,0 +1,318 @@
-+/*******************************/
-+/***  ViewVC CSS Stylesheet ***/
-+/*******************************/
-+
-+/*** Standard Tags ***/
-+
-+/* FusionForge: don't change the outer attributes
-+html, body {
-+  color: #000000;
-+  background-color: #ffffff;
-+  font-family: sans-serif;
-+}
-+
-+a:link    { color: #0000ff; }
-+a:visited { color: #880088; }
-+a:active  { color: #0000ff; }
-+
-+img { border: none; }
-+table {
-+  width: 100%;
-+  margin: 0; 
-+  border: none;
-+}
-+table.auto {
-+  width: auto;
-+}
-+table.fixed {
-+  width: 100%;
-+  table-layout: fixed;
-+}
-+table.fixed td {
-+  overflow: hidden; 
-+  text-overflow: ellipsis;
-+  white-space: nowrap;
-+}
-+tr, td, th { vertical-align: top; }
-+th { white-space: nowrap; }
-+form { margin: 0; }
-+*/
-+
-+/* FusionForge: ... instead only apply them in context: */
-+div.scm {
-+  color: #000000;
-+  background-color: #ffffff;
-+  font-family: sans-serif;
-+}
-+
-+div.scm a:link    { color: #0000ff; }
-+div.scm a:visited { color: #880088; }
-+div.scm a:active  { color: #0000ff; }
-+
-+div.scm img { border: none; }
-+div.scm table {
-+  width: 100%;
-+  margin: 0; 
-+  border: none;
-+}
-+div.scm table.auto {
-+  width: auto;
-+}
-+div.scm table.fixed {
-+  width: 100%;
-+  table-layout: fixed;
-+}
-+div.scm table.fixed td {
-+  overflow: hidden; 
-+  text-overflow: ellipsis;
-+  white-space: nowrap;
-+}
-+div.scm tr, div.scm td, div.scm th { vertical-align: top; }
-+div.scm th { white-space: nowrap; }
-+div.scm form { margin: 0; }
-+
-+
-+/*** Icons ***/
-+.vc_icon {
-+  width: 16px;
-+  height: 16px;
-+  border: none;
-+  padding: 0 1px;
-+}
-+
-+
-+/*** Navigation Headers ***/
-+.vc_navheader {
-+  background-color: #cccccc;
-+  padding: .25em;
-+}
-+.vc_navheader .pathdiv {
-+  padding: 0 3px;
-+}
-+
-+
-+/*** Table Headers ***/
-+.vc_header {
-+  text-align: left;
-+  vertical-align: top;
-+  background-color: #cccccc;
-+}
-+.vc_header_sort {
-+  text-align: left;
-+  background-color: #88ff88;
-+}
-+
-+
-+/*** Table Rows ***/
-+.vc_row_even {
-+  background-color: #ffffff;
-+}
-+.vc_row_odd {
-+  background-color: #f0f0f0;
-+}
-+.vc_row_special {
-+  background-color: #ffff7f;
-+}
-+
-+
-+/*** Log messages ***/
-+.vc_log {
-+  /* unfortunately, white-space: pre-wrap isn't widely supported ... */
-+  white-space: -moz-pre-wrap; /* Mozilla based browsers */
-+  white-space: -pre-wrap;     /* Opera 4 - 6 */
-+  white-space: -o-pre-wrap;   /* Opera >= 7 */
-+  white-space: pre-wrap;      /* CSS3 */
-+  word-wrap: break-word;      /* IE 5.5+ */
-+}
-+
-+
-+/*** Properties Listing ***/
-+.vc_properties {
-+  margin: 1em 0;
-+}
-+
-+
-+/*** File Content Markup Styles ***/
-+.vc_summary {
-+  background-color: #eeeeee;
-+}
-+#vc_file td {
-+  border-right-style: solid;
-+  border-right-color: #505050;
-+  text-decoration: none;
-+  font-weight: normal;
-+  font-style: normal;
-+  padding: 1px 5px;
-+}
-+.vc_file_line_number {
-+  border-right-width: 1px;
-+  background-color: #eeeeee;
-+  color: #505050;
-+  text-align: right;
-+}
-+.vc_file_line_author, .vc_file_line_rev {
-+  border-right-width: 1px;
-+  text-align: right;
-+}
-+.vc_file_line_text {
-+  border-right-width: 0px;
-+  background-color: white;
-+  font-family: monospace;
-+  text-align: left;
-+  white-space: pre;
-+  width: 100%;
-+}
-+.pygments-c { color: #408080; font-style: italic } /* Comment */
-+.pygments-err { border: 1px solid #FF0000 } /* Error */
-+.pygments-k { color: #008000; font-weight: bold } /* Keyword */
-+.pygments-o { color: #666666 } /* Operator */
-+.pygments-cm { color: #408080; font-style: italic } /* Comment.Multiline */
-+.pygments-cp { color: #BC7A00 } /* Comment.Preproc */
-+.pygments-c1 { color: #408080; font-style: italic } /* Comment.Single */
-+.pygments-cs { color: #408080; font-style: italic } /* Comment.Special */
-+.pygments-gd { color: #A00000 } /* Generic.Deleted */
-+.pygments-ge { font-style: italic } /* Generic.Emph */
-+.pygments-gr { color: #FF0000 } /* Generic.Error */
-+.pygments-gh { color: #000080; font-weight: bold } /* Generic.Heading */
-+.pygments-gi { color: #00A000 } /* Generic.Inserted */
-+.pygments-go { color: #808080 } /* Generic.Output */
-+.pygments-gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-+.pygments-gs { font-weight: bold } /* Generic.Strong */
-+.pygments-gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-+.pygments-gt { color: #0040D0 } /* Generic.Traceback */
-+.pygments-kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-+.pygments-kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-+.pygments-kp { color: #008000 } /* Keyword.Pseudo */
-+.pygments-kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-+.pygments-kt { color: #B00040 } /* Keyword.Type */
-+.pygments-m { color: #666666 } /* Literal.Number */
-+.pygments-s { color: #BA2121 } /* Literal.String */
-+.pygments-na { color: #7D9029 } /* Name.Attribute */
-+.pygments-nb { color: #008000 } /* Name.Builtin */
-+.pygments-nc { color: #0000FF; font-weight: bold } /* Name.Class */
-+.pygments-no { color: #880000 } /* Name.Constant */
-+.pygments-nd { color: #AA22FF } /* Name.Decorator */
-+.pygments-ni { color: #999999; font-weight: bold } /* Name.Entity */
-+.pygments-ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-+.pygments-nf { color: #0000FF } /* Name.Function */
-+.pygments-nl { color: #A0A000 } /* Name.Label */
-+.pygments-nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-+.pygments-nt { color: #008000; font-weight: bold } /* Name.Tag */
-+.pygments-nv { color: #19177C } /* Name.Variable */
-+.pygments-ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-+.pygments-w { color: #bbbbbb } /* Text.Whitespace */
-+.pygments-mf { color: #666666 } /* Literal.Number.Float */
-+.pygments-mh { color: #666666 } /* Literal.Number.Hex */
-+.pygments-mi { color: #666666 } /* Literal.Number.Integer */
-+.pygments-mo { color: #666666 } /* Literal.Number.Oct */
-+.pygments-sb { color: #BA2121 } /* Literal.String.Backtick */
-+.pygments-sc { color: #BA2121 } /* Literal.String.Char */
-+.pygments-sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-+.pygments-s2 { color: #BA2121 } /* Literal.String.Double */
-+.pygments-se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-+.pygments-sh { color: #BA2121 } /* Literal.String.Heredoc */
-+.pygments-si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-+.pygments-sx { color: #008000 } /* Literal.String.Other */
-+.pygments-sr { color: #BB6688 } /* Literal.String.Regex */
-+.pygments-s1 { color: #BA2121 } /* Literal.String.Single */
-+.pygments-ss { color: #19177C } /* Literal.String.Symbol */
-+.pygments-bp { color: #008000 } /* Name.Builtin.Pseudo */
-+.pygments-vc { color: #19177C } /* Name.Variable.Class */
-+.pygments-vg { color: #19177C } /* Name.Variable.Global */
-+.pygments-vi { color: #19177C } /* Name.Variable.Instance */
-+.pygments-il { color: #666666 } /* Literal.Number.Integer.Long */
-+
-+
-+/*** Diff Styles ***/
-+.vc_diff_header {
-+  background-color: #ffffff;
-+}
-+.vc_diff_chunk_header {
-+  background-color: #99cccc;
-+}
-+.vc_diff_chunk_extra {
-+  font-size: smaller;
-+}
-+.vc_diff_empty {
-+  background-color: #cccccc;
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_add {
-+  background-color: #aaffaa;
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_remove {
-+  background-color: #ffaaaa;
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_change {
-+  background-color: #ffff77;
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_change_empty {
-+  background-color: #eeee77;
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_nochange {
-+  font-family: sans-serif;
-+  font-size: smaller;
-+}
-+.vc_diff_line_number {
-+}
-+.vc_raw_diff {
-+  background-color: #cccccc;
-+  font-size: smaller;
-+}
-+
-+
-+/*** Intraline Diff Styles ***/
-+.vc_idiff_add {
-+  background-color: #aaffaa;
-+}
-+.vc_idiff_change {
-+  background-color:#ffff77;
-+}
-+.vc_idiff_remove {
-+  background-color:#ffaaaa;
-+}
-+.vc_idiff_empty {
-+  background-color:#e0e0e0;
-+}
-+table.vc_idiff col.content { 
-+  width: 50%;
-+}
-+table.vc_idiff tbody {
-+  font-family: monospace; 
-+  /* unfortunately, white-space: pre-wrap isn't widely supported ... */
-+  white-space: -moz-pre-wrap; /* Mozilla based browsers */
-+  white-space: -pre-wrap;     /* Opera 4 - 6 */
-+  white-space: -o-pre-wrap;   /* Opera >= 7 */
-+  white-space: pre-wrap;      /* CSS3 */
-+  word-wrap: break-word;      /* IE 5.5+ */
-+}
-+table.vc_idiff tbody th {
-+  background-color:#e0e0e0;
-+  text-align:right;
-+}
-+
-+
-+/*** Query Form ***/
-+.vc_query_form {
-+  background-color: #e6e6e6;
-+}
-+
-+
-+/*** Warning! ***/
-+.vc_warning {
-+  border-width: 1px 2px 2px 2px;
-+  border-color: black;
-+  border-style: solid;
-+  background-color: red;
-+  color: white;
-+  padding: 0.5em;
-+}
-Index: fusionforge-5.3.2/www/scm/viewvc/viewvc.cgi
-===================================================================
---- /dev/null
-+++ fusionforge-5.3.2/www/scm/viewvc/viewvc.cgi
-@@ -0,0 +1,53 @@
-+#!/usr/bin/env python
-+# Locate ViewVC and run it
-+
-+import sys
-+import os
-+import glob
-+
-+LIBRARY_GLOBS = (
-+  r"/usr/lib/viewvc/lib",  # Debian
-+  r"/usr/lib/python2.?/site-packages/viewvc/lib",  # Fedora/CentOS
-+  r"/srv/viewvc/lib",  # openSUSE
-+  r"/usr/share/viewvc/lib",  # mageia
-+)
-+CONF_GLOBS = (
-+  r"/etc/viewvc/viewvc.conf",  # Debian/Fedora/CentOS/mageia
-+  r"/srv/viewvc/viewvc.conf",  # openSUSE
-+)
-+
-+for pat in LIBRARY_GLOBS:
-+  if glob.glob(pat):
-+    LIBRARY_DIR=glob.glob(pat)[0]
-+    break
-+sys.path.insert(0, LIBRARY_DIR)
-+
-+for pat in CONF_GLOBS:
-+  if glob.glob(pat):
-+    CONF_PATHNAME=glob.glob(pat)[0]
-+    break
-+#CONF_PATHNAME = os.path.dirname(__filename__) + '/viewvc.conf'
-+
-+
-+import sapi
-+import viewvc
-+
-+server = sapi.CgiServer()
-+cfg = viewvc.load_config(CONF_PATHNAME, server)
-+
-+# Read the repository root dir from the environment.
-+# This way, we will only have ONE repository configured (the one we're browsing). This 
-+# is more secure than having one (CVS|SVN) root configured with all the repositories inside
-+
-+if os.environ["REPOSITORY_TYPE"] == 'cvs':
-+  cfg.general.cvs_roots[os.environ["REPOSITORY_NAME"]] = os.environ["REPOSITORY_ROOT"]
-+elif os.environ["REPOSITORY_TYPE"] == 'svn':
-+  cfg.general.svn_roots[os.environ["REPOSITORY_NAME"]] = os.environ["REPOSITORY_ROOT"]
-+
-+cfg.general.address = "<a href='mailto:root@"+os.environ["HTTP_HOST"]+"'>root@" + os.environ["HTTP_HOST"]+ "</a>"
-+cfg.options.docroot = os.environ["DOCROOT"]
-+#cfg.options.allow_compress = False
-+#cfg.options.generate_etags = False
-+#cfg.options.allowed_views = ['annotate', 'diff', 'markup', 'roots', 'tar', 'co']
-+
-+viewvc.main(server, cfg)
-Index: fusionforge-5.3.2/www/scm/viewvc.php
-===================================================================
---- fusionforge-5.3.2.orig/www/scm/viewvc.php
-+++ fusionforge-5.3.2/www/scm/viewvc.php
-@@ -1,5 +1,4 @@
- <?php
--
- /**
-  * FusionForge ViewCVS PHP wrapper.
-  *
-@@ -10,7 +9,8 @@
-  * http://codex.xerox.com
-  *
-  * Copyright 2010, Franck Villaume - Capgemini
-- * Copyright 2012, Franck Villaume - TrivialDev
-+ * Copyright 2012,2014, Franck Villaume - TrivialDev
-+ * Copyright (C) 2014  Inria (Sylvain Beucler)
-  * http://fusionforge.org
-  *
-  * This file is part of FusionForge. FusionForge is free software;
-@@ -31,7 +31,7 @@
- 
- // make sure we're not compressing output if we are making a tarball
- if (isset($_GET['view']) && $_GET['view'] == 'tar') {
--	$no_gz_buffer=true;
-+	$no_gz_buffer = true;
- }
- 
- require_once '../env.inc.php';
-@@ -45,8 +45,11 @@ if (!forge_get_config('use_scm')) {
- 
- // Get the project name from query
- $projectName = "";
--if(getStringFromGet('root') && strpos(getStringFromGet('root'), ';') === false) {
-+if (getStringFromGet('root') && strpos(getStringFromGet('root'), ';') === false) {
- 	$projectName = getStringFromGet('root');
-+} elseif ($_SERVER['PATH_INFO']) {
-+	$arr = explode('/', $_SERVER['PATH_INFO']);
-+	$projectName = $arr[1];
- } else {
- 	$queryString = getStringFromServer('QUERY_STRING');
- 	if(preg_match_all('/[;]?([^\?;=]+)=([^;]+)/', $queryString, $matches, PREG_SET_ORDER)) {
-@@ -102,7 +105,7 @@ if ($external_scm) {
- 	}
- 
- 	if (viewcvs_is_html()) {
--		// Now, we must replace the occurencies of $server_script with this script
-+		// Now, we must replace the occurrences of $server_script with this script
- 		// (do this only of outputting HTML)
- 		// We must do this because we can't pass the environment variable SCRIPT_NAME
- 		// to the cvsweb script (maybe this can be fixed in the future?)
-@@ -130,45 +133,55 @@ if ($external_scm) {
- // Set content type header from the value set by ViewCVS
- // No other headers are generated by ViewCVS because in generate_etags
- // is set to 0 in the ViewCVS config file
--$found = false;
--$line = strtok($content,SEPARATOR);
--
--if ($line == 'Status: 301 Moved') {
--	while ($line) {
--		header($line);
--		$line = strtok(SEPARATOR);
-+$exploded_content = explode("\r\n\r\n", $content);
-+if (count($exploded_content) > 1) {
-+	list($headers, $body) = explode("\r\n\r\n", $content);
-+	$headers = explode("\r\n", $headers);
-+	$content_type = '';
-+	$charset = '';
-+	foreach ($headers as $header) {
-+		header($header);
-+		if (preg_match('/^Content-Type:\s*(([^;]*)(\s*;\s*charset=(.*))?)/i', $header, $matches)) {
-+			$content_type = $matches[2];
-+			$charset = $matches[4];
-+		}
- 	}
--	exit;
-+} else {
-+	$body = $content;
- }
- 
--while ($line && !$found) {
--	if (preg_match('/^Content-Type:(.*)$/',$line,$matches)) {
--		header('Content-Type:' . $matches[1]);
--		$found = true;
--	}
--	$line = strtok(SEPARATOR);
-+if (!isset($_GET['view'])) {
-+	$_GET['view'] = 'none';
- }
--$content = substr($content, strpos($content,$line));
- 
--if (viewcvs_is_html()) {
--	// If we output html and we found the mbstring extension, we
--	// should try to encode the output of ViewCVS in UTF-8
--	if (extension_loaded('mbstring')) {
--		$encoding = mb_detect_encoding($content, 'UTF-8, ISO-8859-1');
--		if($encoding != 'UTF-8') {
--			$content = mb_convert_encoding($content, 'UTF-8', $encoding);
-+switch ($_GET['view']) {
-+	case 'tar':
-+	case 'co':
-+	case 'patch': {
-+		$sysdebug_enable = false;
-+		if (isset($content_type)) {
-+			switch ($content_type) {
-+				case (preg_match('/text\/.*/', $content_type) ? true : false):
-+				case (preg_match('/.*\/javascript/', $content_type) ? true : false): {
-+					header('Content-Type: text/plain');
-+					break;
-+				}
-+			}
- 		}
-+		echo $body;
-+		break;
-+	}
-+	default: {
-+		// If we output html and we found the mbstring extension, we
-+		// should try to encode the output of ViewCVS in UTF-8
-+		if ($charset != 'UTF-8' && extension_loaded('mbstring'))
-+			$body = mb_convert_encoding($body, 'UTF-8', $encoding);
-+		scm_header(array('title'=>_("SCM Repository"),
-+			'group'=>$Group->getID()));
-+		echo $body;
-+		scm_footer();
-+		break;
- 	}
--	scm_header(array('title'=>_("SCM Repository"),
--		'group'=>$Group->getID()));
--
--	echo $content;
--	scm_footer(array());
--} else {
--	// TODO does not seem to work when allow_tar = 1 in ViewCVS conf
--	// (allow to generate on the fly a tar.gz): the generated file
--	// seems to be corrupted
--	echo $content;
- }
- 
- // Local Variables:
-Index: fusionforge-5.3.2/www/scm/include/viewvc_utils.php
-===================================================================
---- fusionforge-5.3.2.orig/www/scm/include/viewvc_utils.php
-+++ fusionforge-5.3.2/www/scm/include/viewvc_utils.php
-@@ -29,25 +29,6 @@
-  * @version   $ID$
-  */
- 
--define ('SEPARATOR', "\n\t\r\0\x0B");
--
--/**
-- *      viewcvs_is_html() - Test if ViewCVS returns HTML.
-- *
-- *      @return true if the content type of the ViewCVS is text/html.
-- */
--function viewcvs_is_html() {
--	$request_uri = getStringFromServer('REQUEST_URI');
--	$query_string = getStringFromServer('QUERY_STRING');
--
--	return (strpos($request_uri,"*checkout*") === false &&
--		strpos($query_string,"view=graphimg") === false &&
--		strpos($query_string,"view=patch") === false &&
--		strpos($query_string,"view=tar") === false &&
--		strpos($request_uri,"*docroot*") === false &&
--		strpos($request_uri,"makepatch=1") === false);
--}
--
- /**
-  * make_arg_cmd_safe() - Make strings safe for the command line.
-  *
-@@ -69,7 +50,6 @@ function make_arg_cmd_safe($arg) {
- function viewcvs_execute($repos_name, $repos_type) {
- 	$request_uri = getStringFromServer('REQUEST_URI');
- 	$query_string = getStringFromServer('QUERY_STRING');
--	$viewcvs_path = forge_get_config('url_root').'/scm/viewvc';
- 
- 	// this is very important ...
- 	$path = getStringFromServer('PATH_INFO');
-@@ -117,8 +97,8 @@ function viewcvs_execute($repos_name, $r
- 		'REPOSITORY_TYPE="'.$repos_type.'" '.
- 		'REPOSITORY_NAME="'.make_arg_cmd_safe($repos_name).'" '.
- 		'HTTP_HOST="'.make_arg_cmd_safe(getStringFromServer('HTTP_HOST')).'" '.
--		'DOCROOT="/themes/'.forge_get_config('default_theme').'/viewvc" '.
--		$viewcvs_path.'/bin/cgi/viewvc.cgi 2>&1';
-+		'DOCROOT="/scm/viewvc/docroot" '.
-+		dirname(__FILE__).'/../viewvc/viewvc.cgi 2>&1';
- 
- 	ob_start();
- 	passthru($command);
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/fusionforge.git/commit/?h=master&id=fb5c44bc387e20f95ff0eaf371ca1d672cfe7a07


More information about the scm-commits mailing list