[Fusionforge-commits] FusionForge branch GUM updated. bcae09146ddb5c5c8b9fa52942a20a0629bf6241

Sylvain Beucler beuc-inria at fusionforge.org
Wed Aug 27 19:15:21 CEST 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".

The branch, GUM has been updated
       via  bcae09146ddb5c5c8b9fa52942a20a0629bf6241 (commit)
       via  0501a0344a398017bddee2c9a75ae7951da54af8 (commit)
       via  047b0ef3a738dda38912bd36100b874018b42a74 (commit)
       via  1dd51e038cac81912b174a1f8670f5afcf3c9262 (commit)
       via  1e506b2d134b39b81fa3b72a0f870ca2ceb66820 (commit)
       via  1636ba09455c291cbcb07b9fa254f5aed55ba956 (commit)
      from  22ac87a3ecaa4c5502dccfd78aba97d00beaca97 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit bcae09146ddb5c5c8b9fa52942a20a0629bf6241
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 19:12:48 2014 +0200

    install: package plugins scmgit, scmbzr, mta-postfix, mta_exim4, blocks, online_help

diff --git a/src/GNUmakefile b/src/GNUmakefile
index 24e57e4..6b704a8 100644
--- a/src/GNUmakefile
+++ b/src/GNUmakefile
@@ -51,6 +51,7 @@ install-common: install-config install-plugin-authbuiltin
 	ln -nfs $(pkgdatadir)/bin/forge_set_password $(DESTDIR)$(prefix)/bin/
 	$(INSTALL) -d -m 00755 $(DESTDIR)$(log_path)/
 
+install-db-local: install-db
 install-db: install-base-dirs
 	$(CP_R) db $(DESTDIR)$(pkgdatadir)/
 	$(CP_R) cronjobs/db  $(DESTDIR)$(pkgdatadir)/cronjobs/
@@ -68,6 +69,15 @@ install-shell: install-base-dirs
 	$(CP_R) cronjobs/shell  $(DESTDIR)$(pkgdatadir)/cronjobs/
 	$(CP_R) post-install.d/shell  $(DESTDIR)$(pkgdatadir)/post-install.d/
 
+install-mta-postfix: install-base-dirs
+	$(CP_R) post-install.d/mta-postfix  $(DESTDIR)$(pkgdatadir)/post-install.d/
+
+install-mta-exim4: install-base-dirs
+	$(CP_R) post-install.d/mta-exim4  $(DESTDIR)$(pkgdatadir)/post-install.d/
+
+install-lists: install-base-dirs
+	$(CP_R) cronjobs/lists  $(DESTDIR)$(pkgdatadir)/cronjobs/
+
 install-core: install-base-dirs install-common install-web install-db
 
 PLUGINS:=$(shell utils/list-valid-plugins.sh)
diff --git a/src/cronjobs/mail/mailaliases.php b/src/cronjobs/lists/mailaliases.php
similarity index 100%
rename from src/cronjobs/mail/mailaliases.php
rename to src/cronjobs/lists/mailaliases.php
diff --git a/src/cronjobs/mail/mailing_lists_create.php b/src/cronjobs/lists/mailing_lists_create.php
similarity index 100%
rename from src/cronjobs/mail/mailing_lists_create.php
rename to src/cronjobs/lists/mailing_lists_create.php
diff --git a/src/cronjobs/mail/forum_gateway.php b/src/cronjobs/misc/forum_gateway.php
similarity index 100%
rename from src/cronjobs/mail/forum_gateway.php
rename to src/cronjobs/misc/forum_gateway.php
diff --git a/src/cronjobs/mail/tracker_gateway.php b/src/cronjobs/misc/tracker_gateway.php
similarity index 100%
rename from src/cronjobs/mail/tracker_gateway.php
rename to src/cronjobs/misc/tracker_gateway.php
diff --git a/src/debian/control b/src/debian/control
index 48ac916..bd1178a 100644
--- a/src/debian/control
+++ b/src/debian/control
@@ -12,10 +12,10 @@ Vcs-Browser: https://fusionforge.org/scm/browser.php?group_id=9
 
 Package: fusionforge
 Architecture: all
-Depends: fusionforge-common (=${source:Version}), fusionforge-db-local, fusionforge-web, ${misc:Depends}
-Recommends: fusionforge-shell, fusionforge-plugin-scmsvn
-Suggests: fusionforge-plugin-mediawiki, fusionforge-plugin-moinmoin
-Description: FusionForge collaborative development tool - standard metapackage
+Depends: fusionforge-common (=${source:Version}), fusionforge-db-local | fusionforge-db, fusionforge-web, ${misc:Depends}
+Recommends: fusionforge-shell, fusionforge-plugin-scmgit, fusionforge-plugin-scmsvn
+Suggests: fusionforge-plugin-mediawiki, fusionforge-plugin-moinmoin, fusionforge-plugin-blocks
+Description: collaborative development tool - standard metapackage
  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,
@@ -100,19 +100,51 @@ Description: collaborative development tool - shell accounts (using PostgreSQL)
  database to FusionForge users.
 
 
-Package: fusionforge-plugin-authhttpd
+Package: fusionforge-mta-postfix
 Architecture: all
-Depends: fusionforge-web (=${source:Version}), ${misc:Depends}
-Description: collaborative development tool - HTTPD authentication plugin
+Depends: fusionforge-common (=${source:Version}), postfix, postfix-pgsql, ${misc:Depends}
+Provides: fusionforge-mta
+Conflicts: fusionforge-mta
+Description: collaborative development tool - mail tools (using 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 plugin contains an HTTPD authentication mechanism for
- FusionForge. It allows Apache authentication to be reused for
- FusionForge, for instance where Kerberos is used.
+ This package configures the Postfix mail transfer agent to run
+ FusionForge.
+
+
+Package: fusionforge-mta-exim4
+Architecture: all
+Depends: fusionforge-common (=${source:Version}), exim4-daemon-heavy, ${misc:Depends}
+Provides: fusionforge-mta
+Conflicts: fusionforge-mta
+Description: collaborative development tool - mail tools (using Exim 4)
+ 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.
+
+
+Package: fusionforge-plugin-scmgit
+Architecture: all
+Depends: fusionforge-web (=${source:Version}), git, gitweb, php5-cli, ${misc:Depends}
+Description: collaborative development tool - Git plugin
+ 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 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.
 
 
 Package: fusionforge-plugin-scmsvn
@@ -145,6 +177,36 @@ Description: collaborative development tool - Bazaar plugin
  over it to the project's administrator.
 
 
+Package: fusionforge-plugin-authhttpd
+Architecture: all
+Depends: fusionforge-web (=${source:Version}), ${misc:Depends}
+Description: collaborative development tool - HTTPD authentication plugin
+ 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 contains an HTTPD authentication mechanism for
+ FusionForge. It allows Apache authentication to be reused for
+ FusionForge, for instance where Kerberos is used.
+
+
+Package: fusionforge-plugin-blocks
+Architecture: all
+Depends: fusionforge-web (=${source:Version}), ${misc:Depends}
+Description: collaborative development tool - Blocks plugin
+ 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 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.
+
+
 Package: fusionforge-plugin-mediawiki
 Architecture: all
 Depends: fusionforge-web (=${source:Version}), mediawiki (>= 1:1.19.1-2~exp2), php5-cli, ${misc:Depends}
diff --git a/src/debian/fusionforge-mta-exim4.postinst b/src/debian/fusionforge-mta-exim4.postinst
new file mode 100644
index 0000000..23006c5
--- /dev/null
+++ b/src/debian/fusionforge-mta-exim4.postinst
@@ -0,0 +1,40 @@
+#!/bin/bash
+# postinst script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        $(forge_get_config source_path)/post-install.d/mta-exim4/mta-exim4.sh configure
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-mta-exim4.prerm b/src/debian/fusionforge-mta-exim4.prerm
new file mode 100644
index 0000000..d17c0d1
--- /dev/null
+++ b/src/debian/fusionforge-mta-exim4.prerm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# prerm script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+        $(forge_get_config source_path)/post-install.d/mta-exim4/mta-exim4.sh remove
+    ;;
+
+    upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-mta-postfix.postinst b/src/debian/fusionforge-mta-postfix.postinst
new file mode 100644
index 0000000..1166813
--- /dev/null
+++ b/src/debian/fusionforge-mta-postfix.postinst
@@ -0,0 +1,40 @@
+#!/bin/bash
+# postinst script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        $(forge_get_config source_path)/post-install.d/mta-postfix/mta-postfix.sh configure
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-mta-postfix.prerm b/src/debian/fusionforge-mta-postfix.prerm
new file mode 100644
index 0000000..41bbd5e
--- /dev/null
+++ b/src/debian/fusionforge-mta-postfix.prerm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# prerm script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+        $(forge_get_config source_path)/post-install.d/mta-postfix/mta-postfix.sh remove
+    ;;
+
+    upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-plugin-scmgit.postinst b/src/debian/fusionforge-plugin-scmgit.postinst
new file mode 100644
index 0000000..49565c2
--- /dev/null
+++ b/src/debian/fusionforge-plugin-scmgit.postinst
@@ -0,0 +1,40 @@
+#!/bin/sh
+# postinst script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        $(forge_get_config source_path)/post-install.d/common/plugin.sh scmgit configure
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-plugin-scmgit.prerm b/src/debian/fusionforge-plugin-scmgit.prerm
new file mode 100644
index 0000000..ba01ef2
--- /dev/null
+++ b/src/debian/fusionforge-plugin-scmgit.prerm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# prerm script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+        $(forge_get_config source_path)/post-install.d/common/plugin.sh scmgit remove
+    ;;
+
+    upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-plugin-scmsvn.postinst b/src/debian/fusionforge-plugin-scmsvn.postinst
new file mode 100644
index 0000000..2be1fac
--- /dev/null
+++ b/src/debian/fusionforge-plugin-scmsvn.postinst
@@ -0,0 +1,40 @@
+#!/bin/sh
+# postinst script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+        $(forge_get_config source_path)/post-install.d/common/plugin.sh scmsvn configure
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/fusionforge-plugin-scmsvn.prerm b/src/debian/fusionforge-plugin-scmsvn.prerm
new file mode 100644
index 0000000..f3fc901
--- /dev/null
+++ b/src/debian/fusionforge-plugin-scmsvn.prerm
@@ -0,0 +1,42 @@
+#!/bin/sh
+# prerm script for fusionforge
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove)
+        $(forge_get_config source_path)/post-install.d/common/plugin.sh scmsvn remove
+    ;;
+
+    upgrade|deconfigure)
+    ;;
+
+    failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/src/debian/rules b/src/debian/rules
index b09b1b5..f9441d0 100755
--- a/src/debian/rules
+++ b/src/debian/rules
@@ -22,11 +22,16 @@ include /usr/share/dpkg/default.mk
 	dh $@
 
 override_dh_auto_install:
-	make install-common prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-common
-	make install-db     prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-db-local
-	make install-shell  prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-shell
-	make install-web    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-web
-	make install-plugin-authhttpd prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-authhttpd
-	make install-plugin-mediawiki prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-mediawiki
+	make install-common      prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-common
+	make install-db-local    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-db-local
+	make install-web         prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-web
+	make install-shell       prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-shell
+	make install-mta-postfix prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-mta-postfix
+	make install-mta-exim4   prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-mta-exim4
+	make install-plugin-scmgit    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-scmgit
 	make install-plugin-scmsvn    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-scmsvn
 	make install-plugin-scmbzr    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-scmbzr
+	make install-plugin-authhttpd   prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-authhttpd
+	make install-plugin-blocks      prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-blocks
+	make install-plugin-mediawiki   prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-mediawiki
+	make install-plugin-moinmoin    prefix=/usr DESTDIR=$(CURDIR)/debian/fusionforge-plugin-moinmoin
diff --git a/src/fusionforge.spec b/src/fusionforge.spec
index bbb47b3..23ada97 100644
--- a/src/fusionforge.spec
+++ b/src/fusionforge.spec
@@ -1,14 +1,14 @@
 Name: fusionforge
 Version: 5.3.50
 Release: 1%{?dist}
-Summary: FusionForge collaborative development tool
+Summary: collaborative development tool
 
 Group: Development/Tools
 BuildArch: noarch
 License: GPLv2+
 URL: http://www.fusionforge.org/
 Source0: http://fusionforge.org/frs/download.php/file/XX/%{name}-%{version}.tar.bz2
-Requires: %{name}-db-local = %{version}  %{name}-web = %{version}
+Requires: %{name}-db-local = %{version}, %{name}-web = %{version}
 
 %description
 FusionForge provides many tools to aid collaboration in a
@@ -51,25 +51,30 @@ install_listfiles common
 (cd %{buildroot} && \
     find .%{_sysconfdir}/%{name} .%{_datadir}/%{name} -type d \
     | sed -e 's,^.,%dir ,'
-    echo %dir %{_localstatedir}/lib/%{name}  # avoid duplicate dir in all package
+    echo %dir %{_localstatedir}/lib/%{name}  # avoid duplicate dir in all packages
     echo %dir %{_localstatedir}/log/%{name}  # only exists in -common, warning otherwise
 ) >> common.rpmfiles
 %find_lang %{name}
 # Install plugins
-install_listfiles db
-install_listfiles shell
+install_listfiles db-local
 install_listfiles web
-install_listfiles plugin-authhttpd
+install_listfiles shell
+install_listfiles mta-postfix
+install_listfiles mta-exim4
+install_listfiles plugin-scmgit
 install_listfiles plugin-scmsvn
 install_listfiles plugin-scmbzr
+install_listfiles plugin-authhttpd
+install_listfiles plugin-blocks
 install_listfiles plugin-mediawiki
 install_listfiles plugin-moinmoin
+install_listfiles plugin-online_help
 
 
 
 %package common
 Summary: collaborative development tool - shared files
-Requires: php-cli php-pgsql php-htmlpurifier-htmlpurifier cronie
+Requires: php-cli, php-pgsql, php-htmlpurifier-htmlpurifier, cronie
 %description common
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -88,7 +93,7 @@ subpackages.
 
 %package db-local
 Summary: collaborative development tool - database (using PostgreSQL)
-Requires: %{name}-common = %{version} postgresql-server
+Requires: %{name}-common = %{version}, postgresql-server
 %description db-local
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -98,7 +103,7 @@ integrated into one web site and managed through a web interface.
 
 This package installs, configures and maintains the FusionForge
 database.
-%files db-local -f db.rpmfiles
+%files db-local -f db-local.rpmfiles
 %post db-local
 %{_datadir}/%{name}/post-install.d/db/db.sh
 
@@ -122,7 +127,7 @@ installs (e.g. plugins activation requires a populated db).
 
 %package shell
 Summary: collaborative development tool - shell accounts (using PostgreSQL)
-Requires: %{name}-common = %{version} php openssh-server nscd
+Requires: %{name}-common = %{version}, php, openssh-server nscd
 #Requires: libnss-pgsql  # Fedora-only?
 %description shell
 FusionForge provides many tools to aid collaboration in a
@@ -145,7 +150,7 @@ fi
 
 %package web
 Summary: collaborative development tool - web part (using Apache)
-Requires: %{name}-common = %{version} %{name}-db = %{version} httpd mod_ssl php php-pgsql
+Requires: %{name}-common = %{version}, %{name}-db = %{version}, httpd, mod_ssl, php, php-pgsql
 %description web
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -160,50 +165,69 @@ FusionForge on an Apache webserver.
 %{_datadir}/%{name}/post-install.d/web/configure.sh
 
 
-%package plugin-authhttpd
-Summary: collaborative development tool - HTTPD authentication plugin
-Group: Development/Tools
-Requires: %{name}-web = %{version}
-%description plugin-authhttpd
+%package mta-postfix
+Summary: collaborative development tool - mail tools (using Postfix)
+Requires: %{name}-common = %{version}, postfix
+Provides: mta
+Conflicts: mta
+%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 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 -f plugin-authhttpd.rpmfiles
-%post plugin-authhttpd
-%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd configure
-%preun plugin-authhttpd
-%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd remove
+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
 
 
-%package plugin-mediawiki
-Summary: collaborative development tool - Mediawiki plugin
+%package mta-exim4
+Summary: collaborative development tool - mail tools (using Exim 4)
+Requires: %{name}-common = %{version}, exim
+Provides: mta
+Conflicts: mta
+%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
+
+
+%package plugin-scmgit
+Summary: collaborative development tool - Git plugin
 Group: Development/Tools
-Requires: %{name}-web = %{version} mediawiki
-%description plugin-mediawiki
+Requires: %{name}-web = %{version}, git, gitweb
+%description plugin-scmgit
 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 allows each project to embed Mediawiki under a tab.
-%files plugin-mediawiki -f plugin-mediawiki.rpmfiles
-%post plugin-mediawiki
-%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki configure
-%preun plugin-mediawiki
-%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki remove
+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 -f plugin-scmgit.rpmfiles
+%post plugin-scmgit
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmgit configure
+%preun plugin-scmgit
+%{_datadir}/%{name}/post-install.d/common/plugin.sh scmgit remove
 
 
 %package plugin-scmsvn
 Summary: collaborative development tool - Subversion plugin
 Group: Development/Tools
-Requires: %{name}-web = %{version} subversion
+Requires: %{name}-web = %{version}, subversion
 %description plugin-scmsvn
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -224,7 +248,7 @@ some control over it to the project's administrator.
 %package plugin-scmbzr
 Summary: collaborative development tool - Bazaar plugin
 Group: Development/Tools
-Requires: %{name}-web = %{version} bazaar mod_wsgi loggerhead
+Requires: %{name}-web = %{version}, bazaar, mod_wsgi, loggerhead
 %description plugin-scmbzr
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -242,10 +266,72 @@ over it to the project's administrator.
 %{_datadir}/%{name}/post-install.d/common/plugin.sh scmbzr remove
 
 
+
+%package plugin-authhttpd
+Summary: collaborative development tool - HTTPD authentication plugin
+Group: Development/Tools
+Requires: %{name}-web = %{version}
+%description plugin-authhttpd
+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 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 -f plugin-authhttpd.rpmfiles
+%post plugin-authhttpd
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd configure
+%preun plugin-authhttpd
+%{_datadir}/%{name}/post-install.d/common/plugin.sh authhttpd remove
+
+
+%package plugin-blocks
+Summary: collaborative development tool - Blocks plugin
+Group: Development/Tools
+Requires: %{name}-web = %{version}
+%description plugin-blocks
+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 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 -f plugin-blocks.rpmfiles
+%post plugin-blocks
+%{_datadir}/%{name}/post-install.d/common/plugin.sh blocks configure
+%preun plugin-blocks
+%{_datadir}/%{name}/post-install.d/common/plugin.sh blocks remove
+
+
+%package plugin-mediawiki
+Summary: collaborative development tool - Mediawiki plugin
+Group: Development/Tools
+Requires: %{name}-web = %{version}, mediawiki
+%description plugin-mediawiki
+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 allows each project to embed Mediawiki under a tab.
+%files plugin-mediawiki -f plugin-mediawiki.rpmfiles
+%post plugin-mediawiki
+%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki configure
+%preun plugin-mediawiki
+%{_datadir}/%{name}/post-install.d/common/plugin.sh mediawiki remove
+
+
 %package plugin-moinmoin
 Summary: collaborative development tool - Bazaar plugin
 Group: Development/Tools
-Requires: %{name}-web = %{version} moin mod_wsgi python-psycopg2
+Requires: %{name}-web = %{version}, moin, mod_wsgi, python-psycopg2
 %description plugin-moinmoin
 FusionForge provides many tools to aid collaboration in a
 development project, such as bug-tracking, task management,
@@ -261,6 +347,25 @@ This plugin allows each project to embed MoinMoinWiki under a tab.
 %{_datadir}/%{name}/post-install.d/common/plugin.sh moinmoin remove
 
 
+%package plugin-online_help
+Summary: collaborative development tool - online_help plugin
+Group: Development/Tools
+Requires: %{name}-web = %{version}
+%description plugin-online_help
+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 is a online_help plugin within FusionForge.
+%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
+%{_datadir}/%{name}/post-install.d/common/plugin.sh online_help remove
+
+
 %changelog
 * Tue Aug 19 2014 Sylvain Beucler <sylvain.beucler at inria.fr> - 5.3.50
 - Revamp packaging
diff --git a/src/plugins/globaldashboard/cronjobs/manage_globaldashboard.php b/src/plugins/globaldashboard/cronjobs/manage_globaldashboard.php
old mode 100644
new mode 100755
diff --git a/src/plugins/helloworld/cronjobs/manage_helloworld.php b/src/plugins/helloworld/cronjobs/manage_helloworld.php
old mode 100644
new mode 100755
diff --git a/src/plugins/hudson/cronjobs/manage_hudson.php b/src/plugins/hudson/cronjobs/manage_hudson.php
old mode 100644
new mode 100755
diff --git a/src/plugins/mailman/cronjobs/manage_mailmanlists.php b/src/plugins/mailman/cronjobs/manage_mailmanlists.php
old mode 100644
new mode 100755
diff --git a/src/plugins/moinmoin/cronjobs/create-wikis.php b/src/plugins/moinmoin/cronjobs/create-wikis.php
old mode 100644
new mode 100755
diff --git a/src/plugins/oauthprovider/cronjobs/manage_oauthprovider.php b/src/plugins/oauthprovider/cronjobs/manage_oauthprovider.php
old mode 100644
new mode 100755
diff --git a/src/plugins/oslc/cronjobs/manage_oslc.php b/src/plugins/oslc/cronjobs/manage_oslc.php
old mode 100644
new mode 100755
diff --git a/src/plugins/scmgit/etc/scmgit.ini b/src/plugins/scmgit/etc/scmgit.ini
index 5296e33..bdf56ad 100644
--- a/src/plugins/scmgit/etc/scmgit.ini
+++ b/src/plugins/scmgit/etc/scmgit.ini
@@ -18,6 +18,6 @@ scm_root = "scmrepos/git"
 httpd_reload_cmd = "service $core/apache_service reload"
 
 ; use_dav or use_ssh is exclusive. you cannot enable dav with ssh, or ssh with dav
-use_dav = yes
-use_ssh = no
+use_dav = no
+use_ssh = yes
 use_ssl = "$core/use_ssl"
diff --git a/src/plugins/soapadmin/cronjobs/manage_soapadmin.php b/src/plugins/soapadmin/cronjobs/manage_soapadmin.php
old mode 100644
new mode 100755
diff --git a/src/post-install.d/db/configure.sh b/src/post-install.d/db/configure.sh
index 0a54c11..963e7d8 100755
--- a/src/post-install.d/db/configure.sh
+++ b/src/post-install.d/db/configure.sh
@@ -22,15 +22,15 @@ fi
 
 # Configure connection
 # Preprend configuration block
-if ! grep -q '^### BEGIN GFORGE BLOCK' $pg_hba; then
+if ! grep -q '^### BEGIN FUSIONFORGE BLOCK' $pg_hba; then
     sed -i -e '1ecat' $pg_hba <<-EOF
-	### BEGIN GFORGE BLOCK -- DO NOT EDIT
-	### END GFORGE BLOCK -- DO NOT EDIT
+	### BEGIN FUSIONFORGE BLOCK -- DO NOT EDIT
+	### END FUSIONFORGE BLOCK -- DO NOT EDIT
 	EOF
 fi
 # Replace configuration block
-sed -i -e '/^### BEGIN GFORGE BLOCK/,/^### END GFORGE BLOCK/ { ' -e 'ecat' -e 'd }' $pg_hba <<EOF
-### BEGIN GFORGE BLOCK -- DO NOT EDIT
+sed -i -e '/^### BEGIN FUSIONFORGE BLOCK/,/^### END FUSIONFORGE BLOCK/ { ' -e 'ecat' -e 'd }' $pg_hba <<EOF
+### BEGIN FUSIONFORGE BLOCK -- DO NOT EDIT
 # user which is used by libnss to access the DB (see /etc/nss-pgsql.conf)
 local $database_name ${database_user}_nss trust
 local $database_name list ident
@@ -38,7 +38,7 @@ local $database_name ${database_user}_mta md5
 # multi-host configuration
 host  $database_name ${database_user}_nss 0.0.0.0/0 trust
 host  $database_name all 0.0.0.0/0 md5
-### END GFORGE BLOCK -- DO NOT EDIT
+### END FUSIONFORGE BLOCK -- DO NOT EDIT
 EOF
 
 # Multi-host connection
diff --git a/src/post-install.d/mta-exim4/mta-exim4.sh b/src/post-install.d/mta-exim4/mta-exim4.sh
new file mode 100755
index 0000000..b3d9738
--- /dev/null
+++ b/src/post-install.d/mta-exim4/mta-exim4.sh
@@ -0,0 +1,308 @@
+#! /bin/sh
+#
+# Configure Exim4 for GForge
+# Christian Bayle, Roland Mas, debian-sf (GForge for Debian)
+# Converted to Exim4 by Guillem Jover
+
+set -e
+
+####
+# Handle the three configuration setups
+
+cfg_exim4=/etc/exim4/exim4.conf
+cfg_exim4_templ=/etc/exim4/exim4.conf.template
+cfg_exim4_split_main=/etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
+cfg_exim4_split_router=/etc/exim4/conf.d/router/01_gforge_forwards
+
+cfg_exim4_main="$cfg_exim4_templ $cfg_exim4_split_main"
+cfg_exim4_router="$cfg_exim4_templ"
+
+if [ -e $cfg_exim4 ]; then
+  cfg_exim4_main="$cfg_exim4_main $cfg_exim4"
+  cfg_exim4_router="$cfg_exim4_router $cfg_exim4"
+fi
+
+pattern=$(basename $0).XXXXXX
+
+case "$1" in
+  configure)
+    ####
+    # Configure aliases
+
+    # Redirect "noreply" mail to the bit bucket (if need be)
+    noreply_to_bitbucket=$(forge_get_config noreply_to_bitbucket)
+    if [ "$noreply_to_bitbucket" != "no" ] ; then
+      if ! grep -q "^noreply:" /etc/aliases; then
+	echo "### Next line inserted by GForge install" >> /etc/aliases
+	echo "noreply: :blackhole:" >> /etc/aliases
+      fi
+    fi
+    # Redirect "gforge" mail to the site admin
+    server_admin=$(forge_get_config admin_email)
+    if ! grep -q "^gforge:" /etc/aliases; then
+      echo "### Next line inserted by GForge install" >> /etc/aliases
+      echo "gforge: $server_admin" >> /etc/aliases
+    fi
+    [ -x /usr/bin/newaliases ] && newaliases
+    invoke-rc.d exim4 restart
+
+    ####
+    # Modify exim4 configurations
+
+    # First, get the list of local domains right
+
+    for m in $cfg_exim4_main; do
+      tmp1=$(mktemp /tmp/$pattern)
+
+      perl -e '
+my $source_path = `forge_get_config source_path`;
+chomp $source_path;
+
+require ("$source_path/lib/include.pl") ; # Include all the predefined functions 
+
+$seen_gf_domains = 0;
+while (($l = <>) !~ /^\s*domainlist\s*local_domains/) {
+  print $l;
+  $seen_gf_domains = 1 if ($l =~ /\s*GFORGE_DOMAINS=/);
+  $seen_pg_servers = 1 if ($l =~ m,hide pgsql_servers = .*./var/run/postgresql/.s.PGSQL.5432..*/${sys_dbuser}_mta,);
+};
+print "hide pgsql_servers = (/var/run/postgresql/.s.PGSQL.5432)/mail/Debian-exim/bogus:(/var/run/postgresql/.s.PGSQL.5432)/$sys_dbname/${sys_dbuser}_mta/${sys_dbuser}_mta\n" unless $seen_pg_servers;
+print "GFORGE_DOMAINS=$sys_users_host:$sys_lists_host\n" unless $seen_gf_domains;
+chomp $l;
+$l .= ":GFORGE_DOMAINS" unless ($l =~ /^[^#]*GFORGE_DOMAINS/);
+print "$l\n" ;
+while (<>) { print unless m/^hide pgsql_servers/; };
+' < $m > $tmp1
+
+      cat $tmp1 > $m
+      rm $tmp1
+    done
+
+    # Second, insinuate our forwarding rules in the directors section
+
+    perl -e '
+my $source_path = `forge_get_config source_path`;
+chomp $source_path;
+
+require ("$source_path/lib/include.pl") ; # Include all the predefined functions 
+
+my $gf_block = "# BEGIN GFORGE BLOCK -- DO NOT EDIT #
+# You may move this block around to accomodate your local needs as long as you
+# keep it in the Directors Configuration section (between the second and the
+# third occurences of a line containing only the word \"end\")
+
+forward_for_gforge:
+  domains = $sys_users_host
+  driver = redirect
+  file_transport = address_file
+  data = \${lookup pgsql {select email from mta_users where login=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists:
+  domains = $sys_lists_host
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select post_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_owner:
+  domains = $sys_lists_host
+  local_part_suffix = -owner
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select owner_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_request:
+  domains = $sys_lists_host
+  local_part_suffix = -request
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select request_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_admin:
+  domains = $sys_lists_host
+  local_part_suffix = -admin
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select admin_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_bounces:
+  domains = $sys_lists_host
+  local_part_suffix = -bounces : -bounces+*
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select bounces_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_confirm:
+  domains = $sys_lists_host
+  local_part_suffix = -confirm : -confirm+*
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select confirm_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_join:
+  domains = $sys_lists_host
+  local_part_suffix = -join
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select join_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_leave:
+  domains = $sys_lists_host
+  local_part_suffix = -leave
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select leave_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_subscribe:
+  domains = $sys_lists_host
+  local_part_suffix = -subscribe
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select subscribe_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+
+forward_for_gforge_lists_unsubscribe:
+  domains = $sys_lists_host
+  local_part_suffix = -unsubscribe
+  driver = redirect
+  pipe_transport = address_pipe
+  data = \${lookup pgsql {select unsubscribe_address from mta_lists where list_name=".chr(39)."\$local_part".chr(39)."}{\$value}}
+  user = nobody
+  group = nogroup
+# END GFORGE BLOCK #
+";
+
+print $gf_block;
+' > $cfg_exim4_split_router
+
+    for r in $cfg_exim4_router; do
+      echo Processing $r
+
+      tmp1=$(mktemp /tmp/$pattern)
+
+      cp -a $r $tmp1
+
+      perl -e '
+$routerfname = shift ;
+open ROUTERS, $routerfname || die $!;
+my @gf_block = <ROUTERS>;
+close ROUTERS;
+
+while (<>) {
+  print;
+  last if /^\s*begin\s*routers\s*$/;
+};
+my $in_gf_block = 0;
+my $gf_block_done = 0;
+my @line_buf = ();
+while (<>) {
+  last if /^\s*begin\s*$/;
+  if (/^# BEGIN GFORGE BLOCK -- DO NOT EDIT #/) {
+    $in_gf_block = 1;
+    push @line_buf, @gf_block unless $gf_block_done;
+    $gf_block_done = 1;
+  };
+  push @line_buf, $_ unless $in_gf_block;
+  $in_gf_block = 0 if /^# END GFORGE BLOCK #/;
+};
+push @line_buf, $_;
+print @gf_block unless $gf_block_done;
+print @line_buf;
+while (<>) { print; };
+' $cfg_exim4_split_router < $tmp1 > $r
+
+      rm $tmp1
+    done
+
+  ;;
+
+  remove)
+    tmp1=$(mktemp /tmp/$pattern)
+
+    grep -v "^gforge:" /etc/aliases > $tmp1
+    # Redirect "noreply" mail to the bit bucket (if need be)
+    noreply_to_bitbucket=$(forge_get_config noreply_to_bitbucket)
+    if [ "$noreply_to_bitbucket" != "no" ] ; then
+      grep -v "^noreply:" $tmp1 > /etc/aliases
+    else
+      cat $tmp1 > /etc/aliases
+    fi
+
+    rm -f $tmp1
+
+    for m in $cfg_exim4_main; do
+      cfg_gforge_main=$m.gforge-new
+      tmp1=$(mktemp /tmp/$pattern)
+
+      cp -a $m $tmp1
+
+      # First, replace the list of local domains
+      perl -e '
+while (<>) {
+  last if /^\s*domainlist\s*local_domains/;
+  print unless /\s*GFORGE_DOMAINS=/;
+};
+chomp;
+/^(\s*domainlist\s*local_domains\s*=\s*)(\S+)/;
+my $l = $1 . join (":", grep(!/GFORGE_DOMAINS/, (split ":", $2)));
+print "$l\n" ;
+while (<>) { print; };
+' < $tmp1 > $cfg_gforge_main
+
+      rm $tmp1
+    done
+
+    rm -f $cfg_exim4_split_router ]
+
+    for r in $cfg_exim4_router; do
+      cfg_gforge_router=$r.gforge-new
+      tmp1=$(mktemp /tmp/$pattern)
+
+      cp -a $cfg_gforge_router $tmp1
+
+      # Second, kill our forwarding rules
+      perl -e '
+while (<>) {
+  print;
+  last if /^\s*begin\s*routers\s*$/;
+};
+my $in_gf_block = 0;
+while (<>) {
+  last if /^\s*begin\s*$/;
+  $in_gf_block = 1 if /^# BEGIN GFORGE BLOCK -- DO NOT EDIT #/;
+  print unless $in_gf_block;
+  $in_gf_block = 0 if /^# END GFORGE BLOCK #/;
+};
+print;
+while (<>) { print; };
+' < $tmp1 > $cfg_gforge_router
+
+      rm $tmp1
+    done
+  ;;
+
+  *)
+    echo "Usage: $0 {configure|remove}"
+    exit 1
+  ;;
+
+esac
+
diff --git a/src/post-install.d/mta-postfix/mta-postfix.sh b/src/post-install.d/mta-postfix/mta-postfix.sh
new file mode 100755
index 0000000..92fa1ad
--- /dev/null
+++ b/src/post-install.d/mta-postfix/mta-postfix.sh
@@ -0,0 +1,91 @@
+#! /bin/bash
+# Configure Postfix for FusionForge+Mailman
+# Inria (Sylvain Beucler)
+
+set -e
+
+users_host=$(forge_get_config users_host)
+lists_host=$(forge_get_config lists_host)
+data_path=$(forge_get_config data_path)
+
+function postfix_append_config {
+    param=$1
+    append_val=$2
+
+    prev_val=$(postconf -h $param)
+    if ! echo $prev_val | grep -q "$append_val"; then
+	if [ -z "$prev_val" ]; then
+	    postconf -e $param="$append_val"
+	else
+	    postconf -e $param="$prev_val, $append_val"
+	fi
+    fi
+}
+
+case "$1" in
+    configure)
+	# Init postfix configuration if missing
+	if [ ! -e /etc/postfix/main.cf ]; then
+	    cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
+	fi
+
+	# Redirect "noreply" mail to the bit bucket (if need be)
+	if [ "$(forge_get_config noreply_to_bitbucket)" != 'no' ] ; then
+	    if ! grep -q '^noreply:' /etc/aliases ; then
+		echo 'noreply: /dev/null' >> /etc/aliases
+	    fi
+	fi
+
+	# Transport
+	postfix_append_config 'mydestination' $users_host
+	postfix_append_config 'relay_domains' $lists_hosts
+
+	# Forwarding rules
+	postfix_append_config 'virtual_alias_maps' 'proxy:pgsql:pgsql_gforge_users'
+
+	postfix_append_config 'transport_maps' "hash:$data_path/etc/postfix-transport"
+	mkdir -m 755 -p $data_path/etc/
+	echo "$lists_host mailman:" > $data_path/etc/postfix-transport
+	postmap $data_path/etc/postfix-transport
+
+	if ! grep -q '^### BEGIN FUSIONFORGE BLOCK' /etc/postfix/main.cf; then
+	    cat <<EOF >>/etc/postfix/main.cf
+### BEGIN FUSIONFORGE BLOCK -- DO NOT EDIT
+### END FUSIONFORGE BLOCK -- DO NOT EDIT
+EOF
+	fi
+	sed -i -e '/^### BEGIN FUSIONFORGE BLOCK/,/^### END FUSIONFORGE BLOCK/ { ' -e 'ecat' -e 'd }' \
+	    /etc/postfix/main.cf <<EOF
+### BEGIN FUSIONFORGE BLOCK -- DO NOT EDIT ###
+# You may move this block around to accomodate your local needs as long as you
+# keep it in an appropriate position, where "appropriate" is defined by you.
+pgsql_gforge_users_hosts = unix:/var/run/postgresql
+pgsql_gforge_users_user = $(forge_get_config database_user)_mta
+pgsql_gforge_users_password = $(forge_get_config database_user)_mta
+pgsql_gforge_users_dbname = $(forge_get_config database_name)
+pgsql_gforge_users_domain = $users_host
+pgsql_gforge_users_query = SELECT email FROM mta_users WHERE login = '\''%u'\''
+mailman_destination_recipient_limit = 1
+### END FUSIONFORGE BLOCK ###
+EOF
+	;;
+    
+    remove)
+	if [ "$(forge_get_config noreply_to_bitbucket)" != 'no' ] ; then
+	    sed -i -e '/^noreply:/d' /etc/aliases
+	fi
+	sed -i -e '/^### BEGIN FUSIONFORGE BLOCK/,/^### END FUSIONFORGE BLOCK/d' /etc/postfix/main.cf
+	rm -f $data_path/etc/postfix-transport
+	postconf -e transport_maps="$(postconf -h transport_maps \
+            | sed "s|\(, *\)\?hash:$data_path/etc/postfix-transport||")"
+	postconf -e virtual_alias_maps="$(postconf -h virtual_alias_maps \
+            | sed "s/\(, *\)\?proxy:pgsql:pgsql_gforge_users//")"
+	postconf -e relay_domains="$(postconf -h relay_domains | sed "s/\(, *\)\?$lists_host//")"
+	postconf -e mydestination="$(postconf -h mydestination | sed "s/\(, *\)\?$users_host//")"
+	;;
+
+    *)
+	echo "Usage: $0 {configure|remove}"
+	exit 1
+	;;
+esac
diff --git a/tests/scripts/deb/run-testsuite.sh b/tests/scripts/deb/run-testsuite.sh
index 23d5cdf..75b1261 100755
--- a/tests/scripts/deb/run-testsuite.sh
+++ b/tests/scripts/deb/run-testsuite.sh
@@ -20,7 +20,10 @@ if ! dpkg-query -s selenium >/dev/null 2>&1 ; then
 fi
 
 # Ensure tested components are installed
-UCF_FORCE_CONFFNEW=yes apt-get install -y fusionforge fusionforge-shell fusionforge-plugin-scmsvn fusionforge-plugin-scmbzr fusionforge-plugin-mediawiki fusionforge-plugin-moinmoin
+UCF_FORCE_CONFFNEW=yes apt-get install -y fusionforge fusionforge-shell \
+  fusionforge-plugin-scmgit fusionforge-plugin-scmsvn fusionforge-plugin-scmbzr \
+  fusionforge-plugin-mediawiki fusionforge-plugin-moinmoin \
+  fusionforge-plugin-blocks
 
 service cron stop
 
diff --git a/tests/scripts/rpm/install.sh b/tests/scripts/rpm/install.sh
index f65875a..de34cf4 100755
--- a/tests/scripts/rpm/install.sh
+++ b/tests/scripts/rpm/install.sh
@@ -16,6 +16,8 @@
 # php-pear-CAS  # epel
 # php-simplepie # epel or common/rss/simplepie.inc
 
+# postfix: needs to be recompiled, el6 doesn't have pgsql support enabled (conditional in .spec)
+
 # Fedora/RHEL/CentOS version:
 os_version=$(rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release))
 
@@ -79,6 +81,8 @@ else
     yum install -y ~/rpmbuild/RPMS/noarch/php-htmlpurifier-htmlpurifier-*.noarch.rpm
 fi
 
+# TODO: postfix: rebuild from RHEL/CentOS sources with pgsql enabled
+
 # mediawiki (provided by mediawiki119): EPEL
 
 if rpm -q fusionforge >/dev/null ; then
diff --git a/tests/scripts/rpm/run-testsuite.sh b/tests/scripts/rpm/run-testsuite.sh
index e2451e9..d599fb0 100755
--- a/tests/scripts/rpm/run-testsuite.sh
+++ b/tests/scripts/rpm/run-testsuite.sh
@@ -15,8 +15,10 @@ if ! rpm -q selenium >/dev/null ; then
 fi
 
 # Ensure tested components are installed
-yum install -y fusionforge fusionforge-shell fusionforge-plugin-scmsvn fusionforge-plugin-mediawiki
-# fusionforge-plugin-online_help fusionforge-plugin-extratabs fusionforge-plugin-authldap fusionforge-plugin-scmgit fusionforge-plugin-blocks
+yum install -y fusionforge fusionforge-shell \
+  fusionforge-plugin-scmgit fusionforge-plugin-scmsvn \
+  fusionforge-plugin-mediawiki \
+  fusionforge-plugin-blocks fusionforge-plugin-online_help
 
 service crond stop
 

commit 0501a0344a398017bddee2c9a75ae7951da54af8
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 18:52:01 2014 +0200

    install: use the right include.pl

diff --git a/src/lib/include.pl b/src/lib/include.pl
old mode 100755
new mode 100644
index 4e55c0b..09a2463
--- a/src/lib/include.pl
+++ b/src/lib/include.pl
@@ -1,83 +1,180 @@
-#!/usr/bin/perl -w
-#
-# SourceForge: Breaking Down the Barriers to Open Source Development
-# Copyright 1999-2000 (c) The SourceForge Crew
-# http://sourceforge.net
+# include.pl - Include file for all the perl scripts that contains reusable functions
 #
 
-########################
-# global configuration #
-########################
-my $config_path = `forge_get_config config_path`;
-chomp $config_path;
-$config{'database_include'} 	= "$config_path/database.inc";		# database include file
-$config{'lock_file'}		= '/tmp/sf-backend';		# lockfile location
-$config{'log_file'}		= '/home/dummy/backend.log';	# logfile location
-$config{'group_dir_prefix'} 	= '/home/groups';		# prefix for group directories
-$config{'user_dir_prefix'} 	= '/home/users';		# prefix for user directories
-$config{'database_dump_dir'}	= '/home/dummy/dumps';		# where are the database dumps kept
-$config{'delete_tar_dir'}	= '/tmp';			# place to stick tarballs of deleted accounts/groups
-$config{'dummy_uid'}		= getpwnam('dummy');		# userid of the dummy user
-$config{'days_since_epoch'} 	= int(time()/3600/24);		# number of days since the epoch
-$config{'hostname'}		= hostname();			# machine hostname
-
-####################
-# open the logfile #
-####################
-sub open_log_file {
-	open(Log, ">>$config{'log_file'}") || die "Couldn't Open Logfile: $!\n";
-	select(Log);
-	$| = 1;
-	return;
+##############################
+# Global Variables
+##############################
+$dummy_user	=	'scm-gforge';		# unix name of the dummy user
+$dummy_uid	=	getpwnam($dummy_user);	# uid of the dummy user that will own group's files
+$date		=	int(time()/3600/24);	# Get the number of days since 1/1/1970 for /etc/shadow
+
+ at possible_paths = (
+    '/usr/share/gforge/bin',
+    '/usr/share/fusionforge/bin',
+    '/usr/local/share/gforge/bin',
+    '/usr/local/share/fusionforge/bin',
+    '/opt/gforge/bin',
+    '/opt/fusionforge/bin',
+    '/usr/bin',
+    '/usr/local/bin') ;
+foreach $p (@possible_paths) {
+	if (-x "$p/forge_get_config") {
+		$fgc = "$p/forge_get_config";
+		last;
+	}
+}
+
+%forge_config_cache = ();
+
+sub forge_get_config ($$) {
+    my $var = shift;
+    my $sec = shift || 'core';
+
+    if (!defined $forge_config_cache{$sec}{$var}) {
+	$forge_config_cache{$sec}{$var} = qx!$fgc $var $sec!;
+	chomp $forge_config_cache{$sec}{$var};
+    }
+    return $forge_config_cache{$sec}{$var};
 }
 
+$sys_default_domain = &forge_get_config ('web_host') ;
+$sys_return_domain = &forge_get_config ('forum_return_domain') ;
+$sys_scm_host = &forge_get_config ('web_host') ;
+$domain_name = &forge_get_config ('web_host') ;
+$sys_users_host = &forge_get_config ('users_host') ;
+$sys_lists_host = &forge_get_config ('lists_host') ;
+$sys_name = &forge_get_config ('forge_name') ;
+$sys_themeroot = &forge_get_config ('themes_root') ;
+$sys_news_group = &forge_get_config ('news_group') ;
+$sys_dbhost = &forge_get_config ('database_host') ;
+$sys_dbport = &forge_get_config ('database_port') ;
+$sys_dbname = &forge_get_config ('database_name') ;
+$sys_dbuser = &forge_get_config ('database_user') ;
+$sys_dbpasswd = &forge_get_config ('database_password') ;
+$sys_ldap_base_dn = &forge_get_config ('ldap_base_dn') ;
+$sys_ldap_host = &forge_get_config ('ldap_host') ;
+$server_admin = &forge_get_config ('admin_email') ;
+$chroot_prefix = &forge_get_config ('chroot') ;
+$homedir_prefix = &forge_get_config ('homedir_prefix') ;
+$grpdir_prefix = &forge_get_config ('groupdir_prefix') ;
+$file_dir = &forge_get_config ('data_path') ;
+$sys_use_ssl = &forge_get_config('use_ssl');
+$sys_urlprefix = &forge_get_config('url_prefix');
+
 ##############################
-# log message to the logfile #
+# Database Connect Functions
 ##############################
-sub logme {
-	my $msg = shift(@_);
-	my $time = strftime "%Y-%m-%d - %T", localtime;
-	print "$time\t$msg\n";
-	return;
+sub db_connect ( ) {
+    my $str = "DBI:Pg:dbname=$sys_dbname" ;
+    if ($sys_dbhost ne '') {
+	$str .= ";host=$sys_dbhost" ;
+    }
+    if ($sys_dbport ne '') {
+	$str .= ";port=$sys_dbport" ;
+    }
+    $dbh ||= DBI->connect($str,"$sys_dbuser","$sys_dbpasswd") ;
+    if (! $dbh) {
+	die "Error while connecting to database: $!" ;
+    }
+}
+
+sub db_disconnect ( ) {
+	$dbh->disconnect ;
+	$dbh = "" ;
 }
 
-##########################
-# exit the script nicely #
-##########################
-sub exit_nicely {
-	&logme("------ Script Ended -------\n");
-	close(Log);
-	exit 0;
+sub db_drop_table_if_exists {
+    my ($sql, $res, $n, $tn) ;
+    $tn = shift ;
+    $sql = "SELECT COUNT(*) FROM pg_class WHERE relname='$tn'";
+    $res = $dbh->prepare($sql);
+    $res->execute();
+    ($n) = $res->fetchrow() ;
+    $res->finish () ;
+    if ($n != 0) {
+	$sql = "DROP TABLE $tn";
+	$res = $dbh->prepare($sql);
+	$res->execute () ;
+	$res->finish () ;
+    }
 }
 
-#########################################
-# open a file and read it into an array #
-#########################################
-sub open_array {
+##############################
+# File open function, spews the entire file to an array.
+##############################
+sub open_array_file {
 	my $filename = shift(@_);
 
-	# Now read in the file as a big array
-	open (FD, $filename) || die &logme("Can't open $filename: $!");
+	open (FD, $filename) || die "Can't open $filename: $!.\n";
 	@tmp_array = <FD>;
-        close(FD);
+	close(FD);
+
+	return @tmp_array;
+}
 
-	&logme("Opened $filename with $@tmp_array Lines");
-        return @tmp_array;
-}               
+#############################
+# File write function.
+#############################
+sub write_array_file {
+	my ($file_name, @file_array) = @_;
+	my $oldmask = umask(077);
 
-################################
-# write an array out to a file #
-################################
-sub write_array {
-	my ($filename, @filearray) = @_;
+	use File::Temp qw(tempfile);
+	use File::Basename qw(dirname);
 
-	# Write this array out to $filename
-	open(FD, ">$filename") || die &logme("Can't open $filename: $!");
-	foreach (@filearray) {
+	my ($fd, $filename) ;
+	eval { ($fd, $filename) = tempfile( DIR => dirname($file_name), UNLINK => 0) } ;
+
+	umask($oldmask);
+
+	return 1 unless ($fd && $filename) ;
+
+	foreach (@file_array) {
 		if ($_ ne '') {
-			print FD;
+			print $fd $_;
 		}
 	}
-	&logme("Wrote $filename with $#filearray Lines");
-	close(FD);
+
+	close($fd);
+	unless (rename ($filename, $file_name)) {
+		unlink $filename;
+		return 1;
+	}
+	return 0;
+}
+
+#######################
+# Display a backtrace #
+#######################
+sub
+debug_print_backtrace
+{
+	my $i = 1;
+
+	print "Call Trace:\n";
+	while ((my @call_details = (caller($i++)))) {
+		print " + " . $call_details[1] . ":" . $call_details[2] .
+		    " in function " . $call_details[3] . "\n";
+	}
+}
+
+#############################
+# Compatibility functions.
+#############################
+sub util_make_url {
+	my ($path) = @_;
+	my $url;
+
+	if (($sys_use_ssl eq 'true') || ($sys_use_ssl eq '1')) {
+		$url = 'https://';
+	} else {
+		$url = 'http://';
+	}
+
+	$url .= $sys_default_domain . $sys_urlprefix;
+	$url =~ s,/$,,;
+	$path =~ s,^/,,;
+	$url .= '/' . $path;
+
+	return $url;
 }
diff --git a/src/utils/include.pl b/src/utils/include.pl
deleted file mode 100644
index 09a2463..0000000
--- a/src/utils/include.pl
+++ /dev/null
@@ -1,180 +0,0 @@
-# include.pl - Include file for all the perl scripts that contains reusable functions
-#
-
-##############################
-# Global Variables
-##############################
-$dummy_user	=	'scm-gforge';		# unix name of the dummy user
-$dummy_uid	=	getpwnam($dummy_user);	# uid of the dummy user that will own group's files
-$date		=	int(time()/3600/24);	# Get the number of days since 1/1/1970 for /etc/shadow
-
- at possible_paths = (
-    '/usr/share/gforge/bin',
-    '/usr/share/fusionforge/bin',
-    '/usr/local/share/gforge/bin',
-    '/usr/local/share/fusionforge/bin',
-    '/opt/gforge/bin',
-    '/opt/fusionforge/bin',
-    '/usr/bin',
-    '/usr/local/bin') ;
-foreach $p (@possible_paths) {
-	if (-x "$p/forge_get_config") {
-		$fgc = "$p/forge_get_config";
-		last;
-	}
-}
-
-%forge_config_cache = ();
-
-sub forge_get_config ($$) {
-    my $var = shift;
-    my $sec = shift || 'core';
-
-    if (!defined $forge_config_cache{$sec}{$var}) {
-	$forge_config_cache{$sec}{$var} = qx!$fgc $var $sec!;
-	chomp $forge_config_cache{$sec}{$var};
-    }
-    return $forge_config_cache{$sec}{$var};
-}
-
-$sys_default_domain = &forge_get_config ('web_host') ;
-$sys_return_domain = &forge_get_config ('forum_return_domain') ;
-$sys_scm_host = &forge_get_config ('web_host') ;
-$domain_name = &forge_get_config ('web_host') ;
-$sys_users_host = &forge_get_config ('users_host') ;
-$sys_lists_host = &forge_get_config ('lists_host') ;
-$sys_name = &forge_get_config ('forge_name') ;
-$sys_themeroot = &forge_get_config ('themes_root') ;
-$sys_news_group = &forge_get_config ('news_group') ;
-$sys_dbhost = &forge_get_config ('database_host') ;
-$sys_dbport = &forge_get_config ('database_port') ;
-$sys_dbname = &forge_get_config ('database_name') ;
-$sys_dbuser = &forge_get_config ('database_user') ;
-$sys_dbpasswd = &forge_get_config ('database_password') ;
-$sys_ldap_base_dn = &forge_get_config ('ldap_base_dn') ;
-$sys_ldap_host = &forge_get_config ('ldap_host') ;
-$server_admin = &forge_get_config ('admin_email') ;
-$chroot_prefix = &forge_get_config ('chroot') ;
-$homedir_prefix = &forge_get_config ('homedir_prefix') ;
-$grpdir_prefix = &forge_get_config ('groupdir_prefix') ;
-$file_dir = &forge_get_config ('data_path') ;
-$sys_use_ssl = &forge_get_config('use_ssl');
-$sys_urlprefix = &forge_get_config('url_prefix');
-
-##############################
-# Database Connect Functions
-##############################
-sub db_connect ( ) {
-    my $str = "DBI:Pg:dbname=$sys_dbname" ;
-    if ($sys_dbhost ne '') {
-	$str .= ";host=$sys_dbhost" ;
-    }
-    if ($sys_dbport ne '') {
-	$str .= ";port=$sys_dbport" ;
-    }
-    $dbh ||= DBI->connect($str,"$sys_dbuser","$sys_dbpasswd") ;
-    if (! $dbh) {
-	die "Error while connecting to database: $!" ;
-    }
-}
-
-sub db_disconnect ( ) {
-	$dbh->disconnect ;
-	$dbh = "" ;
-}
-
-sub db_drop_table_if_exists {
-    my ($sql, $res, $n, $tn) ;
-    $tn = shift ;
-    $sql = "SELECT COUNT(*) FROM pg_class WHERE relname='$tn'";
-    $res = $dbh->prepare($sql);
-    $res->execute();
-    ($n) = $res->fetchrow() ;
-    $res->finish () ;
-    if ($n != 0) {
-	$sql = "DROP TABLE $tn";
-	$res = $dbh->prepare($sql);
-	$res->execute () ;
-	$res->finish () ;
-    }
-}
-
-##############################
-# File open function, spews the entire file to an array.
-##############################
-sub open_array_file {
-	my $filename = shift(@_);
-
-	open (FD, $filename) || die "Can't open $filename: $!.\n";
-	@tmp_array = <FD>;
-	close(FD);
-
-	return @tmp_array;
-}
-
-#############################
-# File write function.
-#############################
-sub write_array_file {
-	my ($file_name, @file_array) = @_;
-	my $oldmask = umask(077);
-
-	use File::Temp qw(tempfile);
-	use File::Basename qw(dirname);
-
-	my ($fd, $filename) ;
-	eval { ($fd, $filename) = tempfile( DIR => dirname($file_name), UNLINK => 0) } ;
-
-	umask($oldmask);
-
-	return 1 unless ($fd && $filename) ;
-
-	foreach (@file_array) {
-		if ($_ ne '') {
-			print $fd $_;
-		}
-	}
-
-	close($fd);
-	unless (rename ($filename, $file_name)) {
-		unlink $filename;
-		return 1;
-	}
-	return 0;
-}
-
-#######################
-# Display a backtrace #
-#######################
-sub
-debug_print_backtrace
-{
-	my $i = 1;
-
-	print "Call Trace:\n";
-	while ((my @call_details = (caller($i++)))) {
-		print " + " . $call_details[1] . ":" . $call_details[2] .
-		    " in function " . $call_details[3] . "\n";
-	}
-}
-
-#############################
-# Compatibility functions.
-#############################
-sub util_make_url {
-	my ($path) = @_;
-	my $url;
-
-	if (($sys_use_ssl eq 'true') || ($sys_use_ssl eq '1')) {
-		$url = 'https://';
-	} else {
-		$url = 'http://';
-	}
-
-	$url .= $sys_default_domain . $sys_urlprefix;
-	$url =~ s,/$,,;
-	$path =~ s,^/,,;
-	$url .= '/' . $path;
-
-	return $url;
-}

commit 047b0ef3a738dda38912bd36100b874018b42a74
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 18:40:16 2014 +0200

    testsuite: fix INSTALL_METHOD/INSTALL_OS environment

diff --git a/tests/scripts/phpunit.sh b/tests/scripts/phpunit.sh
index 1404836..e5e2c03 100755
--- a/tests/scripts/phpunit.sh
+++ b/tests/scripts/phpunit.sh
@@ -8,8 +8,8 @@ then
 	exit 1
 fi
 
-INSTALL_METHOD=${TEST_ENV%/*}
-INSTALL_OS=${TEST_ENV#*/}
+export INSTALL_METHOD=${TEST_ENV%/*}
+export INSTALL_OS=${TEST_ENV#*/}
 
 if [ -z "$INSTALL_METHOD" ] || [ -z "$INSTALL_OS" ] ; then
     echo INSTALL_METHOD and INSTALL_OS required

commit 1dd51e038cac81912b174a1f8670f5afcf3c9262
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 15:58:38 2014 +0200

    install: usr /srv/XXX for repos rather than the obsolete chroot location

diff --git a/src/plugins/scmbzr/etc/scmbzr.ini b/src/plugins/scmbzr/etc/scmbzr.ini
index 0943607..612be86 100644
--- a/src/plugins/scmbzr/etc/scmbzr.ini
+++ b/src/plugins/scmbzr/etc/scmbzr.ini
@@ -8,6 +8,6 @@
 plugin_status = valid
 
 default_server = "$core/web_host"
-repos_path = "$core/chroot/scmrepos/bzr"
+repos_path = "/srv/bzr"
 loggerhead_user = "$core/system_user"
 loggerhead_group = "$core/system_user"
diff --git a/src/plugins/scmdarcs/etc/scmdarcs.ini b/src/plugins/scmdarcs/etc/scmdarcs.ini
index ba16577..ba6330d 100644
--- a/src/plugins/scmdarcs/etc/scmdarcs.ini
+++ b/src/plugins/scmdarcs/etc/scmdarcs.ini
@@ -8,4 +8,4 @@
 plugin_status = valid
 
 default_server = "$core/web_host"
-repos_path = "$core/chroot/scmrepos/darcs"
+repos_path = "/srv/darcs"
diff --git a/src/plugins/scmgit/etc/scmgit.ini b/src/plugins/scmgit/etc/scmgit.ini
index 67f16e0..5296e33 100644
--- a/src/plugins/scmgit/etc/scmgit.ini
+++ b/src/plugins/scmgit/etc/scmgit.ini
@@ -8,7 +8,7 @@
 plugin_status = valid
 
 default_server = "$core/web_host"
-repos_path = "$core/chroot/scmrepos/git"
+repos_path = "/srv/git"
 
 ; this value might be used to create an alias in your httpd conf for clone
 ; used if use_dav is set to yes
diff --git a/src/plugins/scmhg/etc/scmhg.ini b/src/plugins/scmhg/etc/scmhg.ini
index b978123..9b6ee9f 100644
--- a/src/plugins/scmhg/etc/scmhg.ini
+++ b/src/plugins/scmhg/etc/scmhg.ini
@@ -13,4 +13,4 @@ use_dav = yes
 anonhg_login = guest
 anonhg_password = guest
 default_server = "$core/web_host"
-repos_path = "$core/chroot/scmrepos/hg"
+repos_path = "/srv/hg"
diff --git a/src/plugins/scmsvn/etc/scmsvn.ini b/src/plugins/scmsvn/etc/scmsvn.ini
index b9f2fa1..5596d19 100644
--- a/src/plugins/scmsvn/etc/scmsvn.ini
+++ b/src/plugins/scmsvn/etc/scmsvn.ini
@@ -13,7 +13,7 @@ use_ssh = no
 anonsvn_login = anonsvn
 anonsvn_password = anonsvn
 default_server = "$core/web_host"
-repos_path = "$core/data_path/scmrepos/svn"
+repos_path = "/srv/svn"
 serve_path = "$core/repos_path"
 
 plugin_status = valid

commit 1e506b2d134b39b81fa3b72a0f870ca2ceb66820
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 15:57:15 2014 +0200

    testsuite: mask vncpasswd's disturbing password prompt

diff --git a/tests/func/vncxstartsuite.sh b/tests/func/vncxstartsuite.sh
index b99e832..0d9407f 100755
--- a/tests/func/vncxstartsuite.sh
+++ b/tests/func/vncxstartsuite.sh
@@ -23,7 +23,7 @@ if type apt-get 2>/dev/null ; then
 fi
 
 # Setup vnc password - otherwise vncserver prompts it
-vncpasswd <<EOF
+vncpasswd <<EOF >/dev/null
 password
 password
 EOF

commit 1636ba09455c291cbcb07b9fa254f5aed55ba956
Author: Sylvain Beucler <sylvain.beucler at inria.fr>
Date:   Wed Aug 27 15:55:04 2014 +0200

    testsuite: bzr: use 'bzr whoami', otherwise bzr mail not be able to auto-create a default ID, e.g. if /etc/mailname is missing

diff --git a/tests/func/50_PluginsScmBzr/bzrTest.php b/tests/func/50_PluginsScmBzr/bzrTest.php
index 84a5391..9f9aca1 100644
--- a/tests/func/50_PluginsScmBzr/bzrTest.php
+++ b/tests/func/50_PluginsScmBzr/bzrTest.php
@@ -21,6 +21,12 @@
 
 require_once dirname(dirname(__FILE__)).'/Testing/SeleniumForge.php';
 
+//function mysystem($cmd, &$ret=null) {
+//  print "Running: $cmd\n";
+//  ob_flush();
+//  system($cmd, $ret);
+//}
+
 class ScmBzrTest extends FForge_SeleniumTestCase
 {
 	function testScmBzr()
@@ -64,6 +70,7 @@ class ScmBzrTest extends FForge_SeleniumTestCase
 		$p = preg_replace(",/branchname$,", "", $p);
 
 		// Create a local branch, push it to the repo
+		system("bzr whoami 'admin <admin at admin.tld>'");
 		$t = exec("mktemp -d /tmp/bzrTest.XXXXXX");
 		system("cd $t && bzr init --quiet trunk >/dev/null", $ret);
 		$this->assertEquals($ret, 0);

-----------------------------------------------------------------------

Summary of changes:
 src/GNUmakefile                                    |   10 +
 src/cronjobs/{mail => lists}/mailaliases.php       |    0
 .../{mail => lists}/mailing_lists_create.php       |    0
 src/cronjobs/{mail => misc}/forum_gateway.php      |    0
 src/cronjobs/{mail => misc}/tracker_gateway.php    |    0
 src/debian/control                                 |   82 +++++-
 ...mon.postinst => fusionforge-mta-exim4.postinst} |    4 +-
 ...rge-shell.prerm => fusionforge-mta-exim4.prerm} |    2 +-
 ...n.postinst => fusionforge-mta-postfix.postinst} |    4 +-
 ...-scmbzr.prerm => fusionforge-mta-postfix.prerm} |    2 +-
 ...postinst => fusionforge-plugin-scmgit.postinst} |    2 +-
 ...cmbzr.prerm => fusionforge-plugin-scmgit.prerm} |    2 +-
 ...postinst => fusionforge-plugin-scmsvn.postinst} |    2 +-
 ...cmbzr.prerm => fusionforge-plugin-scmsvn.prerm} |    2 +-
 src/debian/rules                                   |   17 +-
 src/fusionforge.spec                               |  179 +++++++++---
 src/lib/include.pl                                 |  223 ++++++++++----
 src/plugins/scmbzr/etc/scmbzr.ini                  |    2 +-
 src/plugins/scmdarcs/etc/scmdarcs.ini              |    2 +-
 src/plugins/scmgit/etc/scmgit.ini                  |    6 +-
 src/plugins/scmhg/etc/scmhg.ini                    |    2 +-
 src/plugins/scmsvn/etc/scmsvn.ini                  |    2 +-
 src/post-install.d/db/configure.sh                 |   12 +-
 src/post-install.d/mta-exim4/mta-exim4.sh          |  308 ++++++++++++++++++++
 src/post-install.d/mta-postfix/mta-postfix.sh      |   91 ++++++
 src/utils/include.pl                               |  180 ------------
 tests/func/50_PluginsScmBzr/bzrTest.php            |    7 +
 tests/func/vncxstartsuite.sh                       |    2 +-
 tests/scripts/deb/run-testsuite.sh                 |    5 +-
 tests/scripts/phpunit.sh                           |    4 +-
 tests/scripts/rpm/install.sh                       |    4 +
 tests/scripts/rpm/run-testsuite.sh                 |    6 +-
 32 files changed, 839 insertions(+), 325 deletions(-)
 rename src/cronjobs/{mail => lists}/mailaliases.php (100%)
 rename src/cronjobs/{mail => lists}/mailing_lists_create.php (100%)
 rename src/cronjobs/{mail => misc}/forum_gateway.php (100%)
 rename src/cronjobs/{mail => misc}/tracker_gateway.php (100%)
 copy src/debian/{fusionforge-common.postinst => fusionforge-mta-exim4.postinst} (90%)
 copy src/debian/{fusionforge-shell.prerm => fusionforge-mta-exim4.prerm} (91%)
 copy src/debian/{fusionforge-common.postinst => fusionforge-mta-postfix.postinst} (90%)
 copy src/debian/{fusionforge-plugin-scmbzr.prerm => fusionforge-mta-postfix.prerm} (90%)
 copy src/debian/{fusionforge-plugin-scmbzr.postinst => fusionforge-plugin-scmgit.postinst} (97%)
 copy src/debian/{fusionforge-plugin-scmbzr.prerm => fusionforge-plugin-scmgit.prerm} (97%)
 copy src/debian/{fusionforge-plugin-scmbzr.postinst => fusionforge-plugin-scmsvn.postinst} (97%)
 copy src/debian/{fusionforge-plugin-scmbzr.prerm => fusionforge-plugin-scmsvn.prerm} (97%)
 mode change 100755 => 100644 src/lib/include.pl
 mode change 100644 => 100755 src/plugins/globaldashboard/cronjobs/manage_globaldashboard.php
 mode change 100644 => 100755 src/plugins/helloworld/cronjobs/manage_helloworld.php
 mode change 100644 => 100755 src/plugins/hudson/cronjobs/manage_hudson.php
 mode change 100644 => 100755 src/plugins/mailman/cronjobs/manage_mailmanlists.php
 mode change 100644 => 100755 src/plugins/moinmoin/cronjobs/create-wikis.php
 mode change 100644 => 100755 src/plugins/oauthprovider/cronjobs/manage_oauthprovider.php
 mode change 100644 => 100755 src/plugins/oslc/cronjobs/manage_oslc.php
 mode change 100644 => 100755 src/plugins/soapadmin/cronjobs/manage_soapadmin.php
 create mode 100755 src/post-install.d/mta-exim4/mta-exim4.sh
 create mode 100755 src/post-install.d/mta-postfix/mta-postfix.sh
 delete mode 100644 src/utils/include.pl


hooks/post-receive
-- 
FusionForge



More information about the Fusionforge-commits mailing list