[Kolab-devel] Kolab Build Scripts
Stephan Buys
s.buys at codefusion.co.za
Wed May 28 13:59:19 CEST 2003
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/kolabrepository
-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*
-------------- next part --------------
A non-text attachment was scrubbed...
Name: buildkolab.sh
Type: application/x-shellscript
Size: 4451 bytes
Desc: not available
URL: <http://lists.kolab.org/pipermail/devel/attachments/20030528/d40343bc/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: getpackages.sh
Type: application/x-shellscript
Size: 2900 bytes
Desc: not available
URL: <http://lists.kolab.org/pipermail/devel/attachments/20030528/d40343bc/attachment-0001.bin>
More information about the devel
mailing list