Community wiki

Community wiki

How to create a new official stable egroupware release

This document is for not exercised release-devs (like me) who has to create a new release. Follow the steps. If you find a gab please add your valuable instruction.

RalfBecker: If you want to build rpm packages and use our release scripts, the steps are a bit different:

1. you need a working copy of the release-branch (eg. the "Version-1_0_0-branch"), the copy is only for your update and starting the release-script, it's not used for the release itself!

2. update the version number of phpgwapi/setup/ and comit it

     $setup_info['phpgwapi']['version']   = '';

3. add this number to phpgwapi/setup/ and comit it

     $test[] = '';
     function phpgwapi_upgrade1_0_0_008()
         $GLOBALS['setup_info']['phpgwapi']['currentver'] = '';
         return $GLOBALS['setup_info']['phpgwapi']['currentver'];

4. you also need to add an update-script to the current HEAD branch, as otherwise the new release can't update to HEAD

5. now you need to update the version-number in the two used spec files in doc/rpm-build/ (the fedora one is not used atm.), eg.

%define version
%define packaging 2

You need to always decrement at least the packaging number, rpm cant deal with identical numberered packages!

6. now you need to add an entry to the change-log of the spec-files, eg:

* Mon Sep 12 2005 Ralf Becker
- further xmlrpc security fixes (already included in the tgz from mid Aug)
- xmlrpc and soap subsystem is now deactivated by default, it can be enabled
via Admin >> site configuration if needed

It is important to use exactly that date format and the correct version number!

7. commit the spec-files and tag your release

cd /your/egw-1.0/install
cvs rtag -r Version-1_0_0-branch Version-1_0_0_009-2 egroupware all

This will tag the modules "egroupware" and the ones named by the alias "all" in the branch "Version-1_0_0-branch" (you dont need to have them all checked out) with the tag "Version-1_0_0_009-2".

8. in order to use the build script in doc/rpm-build, you need a view preparations:

  • you need a linux system using rpm packages (eg. fedora, RH, SuSE?, mandriva, ...)
  • install cvs and gpg packages, plus the gpg key for
  • copy the .rpmmacros file into your home-directory
  • remove any preexisting (not by this script created) rpm directory in your home-directory
  • if you are on a SuSE? system, temporarily rename the /etc/SuSE-release file, as we build red hat rpm's by default and that file is used to detect a SuSE? system (different docroot of the webserver)
  • if the above commits happend shortly, you need to edit the build-script and add your developer account, otherwise the checkout is done anonymously, which is sometimes days behind!
9. start the build-script doc/rpm-build/ as your regular user (not root) and answer after the build the question for the mantra of the gpg key of
It will create / use the rpm directory in your home-dir with the following subdirs:
  • RPMS: containing all non-source rpm's
  • SRPMS: containing the two source rpms's
  • SOURCES: containing the .tar.gz, .tar.bz2 and zip files including there signed counterparts and a file with the md5 sums
  • the other directories don't matter for you
10. now you need to create a new release named "eGroupWare" on and upload + assign all files in the 3 sub-dirs.
With a regular DSL connection this will take a view hours for the upload and an other hour clicking around in the GUI. I recommend and use the excelent releaseforge tool ( for that, but it's up to you.

11. Now you need to make release announcements in various places (please don't forget):
12. update the currentversion file in the docroot of
It is queried by eGW installations to check for new versions. Please note it uses only the phpgwapi version (eg., and not an evtl. used packaging number (eg. -3)!

That's all ;-)


Here's the original version from Pim:

1. check out a complete tree from cvs from the current stable branch:

     cvs -z3 -r Version-1_0_0-branch co -P release

2. update the version number of phpgwapi/setup/

     $setup_info['phpgwapi']['version']   = '';

3. add this number to phpgwapi/setup/

     $test[] = '';
     function phpgwapi_upgrade1_0_0_008()
         $GLOBALS['setup_info']['phpgwapi']['currentver'] = '';
         return $GLOBALS['setup_info']['phpgwapi']['currentver'];
4. Commit changes to the stable branche

     cvs ci -m "bump the version number to 009"

5. Set a new version tag to the stable branch


6. remove all CVS metadata

     rm -Rf `find -name CVS` #(these are backquotes)

7. create tarballs

 zip .... 
 tar cjvf ....
 tar czvf ....

8. create md5 hashes

     md5sum Desktop/eGroupWare-* > md5sums.txt

9. sign with with pgp


10. update release information on sourceforge e.g. with releaseforge.

11. post the new release on

12. post the new release

13. post the new release in the mailinglists

You are here