[Kolab-devel] Kolab Build Scripts

Stephan Buys s.buys at codefusion.co.za
Wed May 28 23:43:38 CEST 2003


Just commited it.

There is an issue with the openpkg bootstrap, but restarting the build
fixes it.

I have successfully built two servers today...

(This ok with maintainers? If not I wont do it again without official nod,
promise ;-)


On Wednesday 28 May 2003 18:54, Maarten Stolte wrote:
> Hi,
>
> Is this ready for testing, as in, did you commit the CVS stuff already?
>
> Maarten
>
> On Wed, 2003-05-28 at 13:59, Stephan Buys wrote:
> > Hi,
> >
> > After a couple of hours of hacking and testing I am pleased to release
> > the following scripts to the list.
> >
> > buildkolab.sh
> > ---------------
> >
> > This script now supports fetching the necesarry files from OpenPKG ftp
> > and anonymous CVS (via getpackages.sh). It then proceeds to build and
> > install the packages as well as bootstraps the server.
> >
> > This was tested once with my Gentoo box this morning so I expect a lot of
> > improvements as well as bugs.
> >
> > getpackages.sh
> > -----------------
> >
> > This script will retrieve the latest files that we are interested in from
> > CVS and OpenPKG.
> >
> >
> > Adminstrative:
> > 1) In order for the whole system to build as stated above I need to
> > commit the changes below to CVS.
> > 2) I need to add getpackages.sh to CVS, can I go ahead and do this?
> > 3) What about a tools folder in CVS or something similar so that we can
> > keep all the utility scripts together?
> >
> > Regards,
> > Stephan
> >
> >
> >
> >
> > cvs server: Diffing .
> > cvs server: Diffing apache
> > Index: apache/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/apache/Makefile,v
> > retrieving revision 1.5
> > diff -u -p -u -r1.5 Makefile
> > --- apache/Makefile     27 May 2003 14:38:40 -0000      1.5
> > +++ apache/Makefile     28 May 2003 10:02:45 -0000
> > @@ -1,12 +1,19 @@
> > -
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >
> >  all:
> >
> > -       rpm -ihv $(KOLABPKGURI)/apache-1.3.27-20030516.src.rpm --define
> > 'with_mod_ssl yes' --define 'with_mod_dav yes' --define
> > 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define
> > 'with_mod_php_imap yes' --define 'with_mod_php yes' --define
> > 'with_mod_php_gettext yes' -       rpm -ba apache.spec
> > +       rpm -ihv $(KOLABPKGURI)/apache-1.3.27-20030516.src.rpm
> > +       cd $(KOLABRPMSRC)/apache && rpm -ba apache.spec --define
> > 'with_mod_ssl yes' --define 'with_mod_dav yes' --define
> > 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define
> > 'with_mod_php_imap yes' --define 'with_mod_php yes' --define
> > 'with_mod_php_gettext yes' +
> >
> >  clean:
> >         rm -rf /kolab/RPM/TMP/apache* apache* mod* php* rc*
> > cvs server: Diffing db
> > Index: db/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/db/Makefile,v
> > retrieving revision 1.2
> > diff -u -p -u -r1.2 Makefile
> > --- db/Makefile 27 May 2003 14:38:41 -0000      1.2
> > +++ db/Makefile 28 May 2003 10:02:45 -0000
> > @@ -1,11 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> >
> >  all:
> >         rpm -i $(KOLABPKGURI)/db-4.1.25.1-20030323.src.rpm
> > -       patch < kolab.patch
> > -       rpm -bb db.spec
> > +       cd $(KOLABRPMSRC)/db && patch <
> > $(KOLABCVSDIR)/server/db/kolab.patch && rpm -bb db.spec
> >
> >  clean:
> >         rm -rf /kolab/RPM/TMP/db* db* patch.*
> > cvs server: Diffing doc
> > Index: doc/buildkolab.sh
> > ===================================================================
> > RCS file: /kolabrepository/server/doc/buildkolab.sh,v
> > retrieving revision 1.8
> > diff -u -p -u -r1.8 buildkolab.sh
> > --- doc/buildkolab.sh   26 May 2003 20:34:46 -0000      1.8
> > +++ doc/buildkolab.sh   28 May 2003 10:02:45 -0000
> > @@ -6,37 +6,60 @@
> >  #
> >  # There is currently no support for a $prefix other than /kolab
> >  #
> > -echo Hi, this is a kolab build script...
> > -echo
> > -echo this script will install the server into the
> > -echo /kolab directory. make sure that this directory does not
> > -echo exist already, as that can interfere with the
> > -echo installation.
> > +
> > +#Setup defaults
> > +KOLABDIR=/kolab
> > +scriptdir=$PWD
> > +
> > +echo Kolab Bootstrap Script...
> >  echo
> > -echo this script must be run as root, if you do not trust it,
> > -echo read the script and do exactly what it does by hand.
> > -echo the compile steps and the install steps must be as root.
> > +echo Target: $KOLABDIR
> > +echo Name  : `hostname -f`
> >  echo
> > -echo Continue \? \(yes/no\)
> >
> > -read answer
> > -if [ "x$answer" != "xyes" ]; then exit 1; fi
> > -
> > -# abfrage wget !!!
> > +if [ "$EUID" != "0" ]; then
> > +   echo This script must be run as root, If you do not trust it,
> > +   echo read the script and do exactly what it does by hand.
> > +   echo The compile steps and the install steps must be as root.
> > +   exit 1;
> > +fi
> >
> > -echo in which directory can we temporarily download openpkg files \?
> > [$PWD] +#Do some basic checks
> >
> > +# abfrage wget !!!
> > +echo Please specify your source directory: [$PWD]
> >  read sourcedir
> >
> >  if [ "x$sourcedir" = "x" ]; then sourcedir=$PWD; fi
> >  echo sourcedir: $sourcedir
> >
> > +echo "Please specify your local CVS directory (If empty sourcecode will
> > be checked out anonymously): [$PWD]" +read cvsdir
> > +
> > +if [ "x$cvsdir" = "x" ]; then cvsdir=$PWD; fi
> > +echo cvsdir: $cvsdir
> > +
> > +#set up environment for Makefiles
> > +export KOLABPKGURI=$sourcedir
> > +export KOLABRPMSRC=/kolab/RPM/SRC
> > +export KOLABCVSDIR=$cvsdir
> > +
> >  cd $sourcedir
> > -wget -nv -c ftp://ftp.openpkg.org/current/SRC/openpkg-*.src.sh
> > +
> > +#Fetch all files:
> > +if [ ! -f "$scriptdir/getpackages.sh" ]; then
> > +  echo "getpackages.sh script missing from $scriptdir! continue? (y/n)"
> > +  read ans
> > +  if [ "x$ans" != "xy" ]; then exit 1; fi
> > +else
> > +  $scriptdir/getpackages.sh
> > +fi
> > +
> >  OPKG=`ls openpkg-*.src.sh`
> >
> >  OPKGSH=`ls openpkg-*-kol.sh`
> >
> > +#Build the Kolab bootstrap script
> >  if [ ! -f "$OPKGSH" ]; then
> >      mycmd="sh $OPKG --prefix=/kolab --user=kolab --group=kolab"
> >      echo $mycmd
> > @@ -45,13 +68,26 @@ else
> >      echo "there is already an openpkg installation script, continue..."
> >  fi
> >
> > +#Install the bootstrap script
> >  if [ ! -d /kolab ]; then
> >      echo installing openpkg into /kolab...
> >      mycmd="sh $OPKGSH"
> >      echo $mycmd
> >      $mycmd
> >  else
> > -    echo "there is already an openpkg installation under /kolab,
> > continue..." +    #If the directory exists check if it is empty.
> > +    #This will allow more flexibility for people who want to use binding
> > +    #and symlinks
> > +    listing=`ls /kolab/*`
> > +    echo $listing
> > +    if [ "x$listing" = "x" ]; then
> > +       #Directory is empty
> > +       mycmd="sh $OPKGSH"
> > +       echo $mycmd
> > +       $mycmd
> > +    else
> > +      echo "there is already an openpkg installation under /kolab,
> > continue..." +    fi
> >  fi
> >
> >  echo starting building the rpms...
> > @@ -59,16 +95,15 @@ echo starting building the rpms...
> >  for prog in make patch binutils gcc procmail zlib expat readline
> > libiconv \ perl perl-openpkg perl-ds perl-time perl-xml perl-term
> > perl-crypto \ perl-conv openssl perl-ssl perl-sys perl-util perl-mail
> > perl-net \ -       perl-www m4 bison flex pcre fsl gdbm db mm ncurses sed
> > imap gettext ; do +       perl-www m4 bison flex pcre fsl gdbm mm ncurses
> > sed imap gettext perl-ldap; do exists=`/kolab/bin/rpm -q $prog | grep -v
> > "not installed"`
> >      echo exists: $exists
> >
> >      PATH=/kolab/bin:$PATH
> >
> >      if [ "x$exists" = "x" ]; then
> > -        wget -P /kolab/RPM/PKG -nv -c
> > ftp://ftp.openpkg.org/current/SRC/$prog-[0-9]*.src.rpm echo building the
> > program $prog ...
> > -        mycmd="/kolab/bin/rpm --rebuild
> > /kolab/RPM/PKG/$prog-[0-9]*.src.rpm" +        mycmd="/kolab/bin/rpm
> > --rebuild $sourcedir/$prog-[0-9]*.src.rpm" echo $mycmd
> >          $mycmd || exit 1
> >      #install it
> > @@ -83,40 +118,43 @@ for prog in make patch binutils gcc proc
> >  done
> >  echo openpkg is now bootstrapped !
> >
> > -exit
> > +#exit
> > +
> > +cd $cvsdir
> > +for prog in db openldap sasl postfix proftpd imapd apache kolab; do
> > +    exists=`/kolab/bin/rpm -q $prog | grep -v "not installed"`
> > +    echo exists: $exists
> >
> > -cd /kolab/RPM/SRC
> > -CVSROOT=:pserver:anonymous at intevation.de:/home/kroupware/jail/kolabrepos
> >itory -for prog in openldap sasl postfix proftpd imapd apache monit kolab;
> > do -    cvs co -d $prog server/$prog
> > -    cd $prog && make
> > -    cd -
> > -    /kolab/bin/rpm -Uhv /kolab/RPM/PKG/$prog-[0-9]*-kol.rpm
> > +    if [ "x$exists" = "x" ]; then
> > +      cd server/$prog && make || exit 1
> > +      cd -
> > +      /kolab/bin/rpm -Uhv /kolab/RPM/PKG/$prog-[0-9]*-kol.rpm || exit 1
> > +    else
> > +      echo "PROGRAM $prog is already installed!"
> > +    fi
> >  done
> >
> > -cd $sourcedir
> > -wget -P /kolab/RPM/PKG -nv -c
> > ftp://ftp.openpkg.org/current/SRC/perl-ldap-[0-9]*.src.rpm -echo building
> > the program perl-ldap ...
> > -mycmd="/kolab/bin/rpm --rebuild /kolab/RPM/PKG/perl-ldap-[0-9]*.src.rpm"
> > -echo $mycmd
> > -$mycmd || exit 1
> > +#cd $sourcedir
> > +#echo building the program perl-ldap ...
> > +#mycmd="/kolab/bin/rpm --rebuild $sourcedir/perl-ldap-[0-9]*.src.rpm"
> > +#echo $mycmd
> > +#$mycmd || exit 1
> >  #install it
> > -mycmd="/kolab/bin/rpm -Uhv /kolab/RPM/PKG/perl-ldap-[0-9]*-kol.rpm"
> > -echo $mycmd
> > -$mycmd || exit 1
> > +#mycmd="/kolab/bin/rpm -Uhv /kolab/RPM/PKG/perl-ldap-[0-9]*-kol.rpm"
> > +#echo $mycmd
> > +#$mycmd || exit 1
> >  #delete tmp files
> >  rm -rf /kolab/RPM/TMP/*
> >
> >  echo
> >  echo the kolab server should be installed successfully now...
> >  echo to start the server execute
> > -echo /kolab/etc/rc.d/rc.monit start
> > -echo
> > +echo Starting the bootstrap script...
> > +cmd="/kolab/etc/kolab/kolab_bootstrap -b"
> > +echo "($cmd)"
> > +$cmd
> >  echo of course no other servers should be running, which already
> >  echo use the ports for mail or http or so...
> > -echo
> > -echo then you can connect to the monitoring process on
> > -echo http://localhost:2812 with user kolab and password monit
> >  echo
> >  echo to connect to the administration server connect to
> >  echo https://localhost/ with username manager. the password is
> > cvs server: Diffing doc/administration
> > cvs server: Diffing doc/technical
> > cvs server: Diffing imapd
> > Index: imapd/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/imapd/Makefile,v
> > retrieving revision 1.7
> > diff -u -p -u -r1.7 Makefile
> > --- imapd/Makefile      27 May 2003 14:38:41 -0000      1.7
> > +++ imapd/Makefile      28 May 2003 10:02:45 -0000
> > @@ -1,11 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > -
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >  all:
> >         rpm -ihv $(KOLABPKGURI)/imapd-2.1.13-20030502.src.rpm
> > -       patch < kolab.patch
> > -       rpm -ba imapd.spec --define 'with_groupfile_hack yes' --define
> > 'with_vhost_hack yes' +       cd $(KOLABRPMSRC)/imapd && patch <
> > $(KOLABCVSDIR)/server/imapd/kolab.patch && rpm -ba imapd.spec --define
> > 'with_groupfile_hack yes' --define 'with_vhost_hack yes'
> >
> >  clean:
> >         rm -rf /kolab/RPM/TMP/cyrus-imapd* cyrus* imapd* rc.imapd
> > vhosthack.patch fsl.imapd groupfile.patch cvs server: Diffing kolab
> > Index: kolab/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/kolab/Makefile,v
> > retrieving revision 1.7
> > diff -u -p -u -r1.7 Makefile
> > --- kolab/Makefile      18 May 2003 15:49:14 -0000      1.7
> > +++ kolab/Makefile      28 May 2003 10:02:45 -0000
> > @@ -1,6 +1,13 @@
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +
> >  all:
> > -       cd kolab && tar cvzf ../kolab-1.0.tar.gz *
> > -       rpm -ba kolab.spec
> > +       #test -d $(KOLABRPMSRC)/kolab && mkdir $(KOLABRPMSRC)/kolab
> > +       test -d $(KOLABRPMSRC)/kolab || mkdir $(KOLABRPMSRC)/kolab
> > +       cd kolab && tar cvzf $(KOLABRPMSRC)/kolab/kolab-1.0.tar.gz *
> > +       cp Makefile rc.kolab kolab.spec $(KOLABRPMSRC)/kolab/
> > +       cd $(KOLABRPMSRC)/kolab && rpm -ba kolab.spec
> >  binary:
> >         rpm -bB kolab.spec
> >
> > cvs server: Diffing kolab/kolab
> > cvs server: Diffing kolab/kolab/admin
> > cvs server: Diffing kolab/kolab/admin/addressbook
> > cvs server: Diffing kolab/kolab/admin/administrator
> > cvs server: Diffing kolab/kolab/admin/expert
> > cvs server: Diffing kolab/kolab/admin/include
> > cvs server: Diffing kolab/kolab/admin/kolab
> > cvs server: Diffing kolab/kolab/admin/login
> > cvs server: Diffing kolab/kolab/admin/maintainer
> > cvs server: Diffing kolab/kolab/admin/pics
> > cvs server: Diffing kolab/kolab/admin/server
> > cvs server: Diffing kolab/kolab/admin/service
> > cvs server: Diffing kolab/kolab/admin/sharedfolder
> > cvs server: Diffing kolab/kolab/admin/statistics
> > cvs server: Diffing kolab/kolab/admin/user
> > cvs server: Diffing kolab/tools
> > cvs server: Diffing monit
> > cvs server: Diffing openldap
> > Index: openldap/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/openldap/Makefile,v
> > retrieving revision 1.6
> > diff -u -p -u -r1.6 Makefile
> > --- openldap/Makefile   27 May 2003 14:38:40 -0000      1.6
> > +++ openldap/Makefile   28 May 2003 10:02:46 -0000
> > @@ -1,10 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > -
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >  all:
> >         rpm -ihv $(KOLABPKGURI)/openldap-2.1.20-20030520.src.rpm
> > -       rpm -ba openldap.spec --define 'with_sasl no'
> > +       cd $(KOLABRPMSRC)/openldap && rpm -ba openldap.spec --define
> > 'with_sasl no'
> >
> >  clean:
> >         rm -rf /kolab/RPM/TMP/openldap* openldap* rc.openldap
> > cvs server: Diffing postfix
> > Index: postfix/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/postfix/Makefile,v
> > retrieving revision 1.6
> > diff -u -p -u -r1.6 Makefile
> > --- postfix/Makefile    27 May 2003 14:38:41 -0000      1.6
> > +++ postfix/Makefile    28 May 2003 10:02:46 -0000
> > @@ -1,10 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > -
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >  all:
> >         rpm -ihv $(KOLABPKGURI)/postfix-2.0.10-20030524.src.rpm
> > -       rpm -ba postfix.spec --define 'with_sasl yes' --define 'with_tls
> > yes' --define 'with_ldap yes' +       cd $(KOLABRPMSRC)/postfix && rpm
> > -ba postfix.spec --define 'with_sasl yes' --define 'with_tls yes'
> > --define 'with_ldap yes' clean:
> >         rm -rf /kolab/RPM/TMP/postfix* etc.tar fsl.postfix
> > pfixtls*.tar.gz pflogsum* postfix-*.patch postfix-*.tar.gz postfix.patch
> > postfix.spec rc.postfix
> >
> > cvs server: Diffing proftpd
> > Index: proftpd/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/proftpd/Makefile,v
> > retrieving revision 1.6
> > diff -u -p -u -r1.6 Makefile
> > --- proftpd/Makefile    27 May 2003 14:38:41 -0000      1.6
> > +++ proftpd/Makefile    28 May 2003 10:02:46 -0000
> > @@ -1,11 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > -
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >  all:
> >         rpm -ihv $(KOLABPKGURI)/proftpd-1.2.8-20030328.src.rpm
> > -       patch < kolab.patch
> > -       rpm -ba proftpd.spec --define 'with_ldap yes'
> > +       cd $(KOLABRPMSRC)/proftpd && patch <
> > $(KOLABCVSDIR)/server/proftpd/kolab.patch && rpm -ba proftpd.spec
> > --define 'with_ldap yes'
> >
> >  clean:
> >         rm -rf proftpd* rc.proftpd /kolab/RPM/TMP/proftpd* mod_ldap.patch
> > cvs server: Diffing sasl
> > Index: sasl/Makefile
> > ===================================================================
> > RCS file: /kolabrepository/server/sasl/Makefile,v
> > retrieving revision 1.5
> > diff -u -p -u -r1.5 Makefile
> > --- sasl/Makefile       27 May 2003 14:38:41 -0000      1.5
> > +++ sasl/Makefile       28 May 2003 10:02:46 -0000
> > @@ -1,10 +1,16 @@
> >  ifeq "x$(KOLABPKGURI)" "x"
> >    KOLABPKGURI = ftp://ftp.openpkg.org/current/SRC
> >  endif
> > -
> > +ifeq "x$(KOLABRPMSRC)" "x"
> > +  KOLABRPMSRC = /kolab/RPM/SRC
> > +endif
> > +ifeq "x$(KOLABCVSDIR)" "x"
> > +  KOLABCVSDIR = $(CURDIR)
> > +endif
> > +
> >  all:
> >         rpm -ihv $(KOLABPKGURI)/sasl-2.1.13-20030417.src.rpm
> > -       rpm -ba sasl.spec --define 'with_ldap yes'
> > +       cd $(KOLABRPMSRC)/sasl && rpm -ba sasl.spec --define 'with_ldap
> > yes'
> >
> >  clean:
> >         rm -rf cyrus*.tar.gz fsl.sasl rc.sasl sasl.patch sasl.spec
> > saslauthd.conf /kolab/RPM/TMP/cyrus-sasl*
>
> _______________________________________________
> Kolab-devel mailing list
> Kolab-devel at intevation.org
> https://kroupware.org/mailman/listinfo/kolab-devel

-- 
Stephan  Buys
Technical Director
Code Fusion cc.
Tel: +27 11 391 1412
Mobile: +27 83 294 1876
Email: s.buys at codefusion.co.za




More information about the devel mailing list