preperation: for build only hosts: wget http://www.eklenet.de/uploads/files/mta-fake_1.0_all.deb dpkg -i mta-fake_1.0_all.deb because of contradictory dependencies the following packages will be installed alternating: libkrb5-dev heimdal-dev for the source packages, in /etc/apt/sources.list.d/kolab.list: #deb-src http://obs.kolabsys.com/repositories/Kolab:/Development/Debian_7.0/ ./ deb-src http://obs.kolabsys.com:82/Kolab:/3.4/Debian_7.0/ ./ # do not activate the updates repository for now! #wget -qO - http://obs.kolabsys.com/repositories/Kolab:/Development/Debian_7.0/Release.key | apt-key add - wget -qO - http://obs.kolabsys.com:82/Kolab:/3.4/Debian_7.0/Release.key | apt-key add - (at the time of writing the build system is broken, signed with the wrong key. so we have to use "--allow-unauthenticate" for some items below) apt-get update Package Build: #$ wget http://obs.kolabsys.com/repositories/Kolab:/Development/Debian_7.0/Sources $ wget http://obs.kolabsys.com:82/Kolab:/3.4/Debian_7.0/Sources ###$ cat Sources | grep -A 3 Files: | grep -v -e "Files:" -e "--" | sed -e 's/.* \([^ ]*.dsc\)/\1/' -e 's/.* \([^ ]*.tar.gz\)/\1/' -e 's/.* \([^ ]*.diff.gz\)/\1/' -e 's/.* \([^ ]*.tar.bz2\)/\1/' -e 's/.* \([^ ]*.diff.gz\)/\1/' > files.txt $ cat Sources | grep -A 3 Files: | grep -v -e "Files:" -e "--" | awk '{print $3}' > files.txt #$ while read i; do wget http://obs.kolabsys.com/repositories/Kolab:/Development/Debian_7.0/$i; done < files.txt $ while read i; do wget http://obs.kolabsys.com:82/Kolab:/3.4/Debian_7.0/$i; done < files.txt $ cat Sources | grep "Package:" | sed -e "s/Package: //" > tobuild.txt for i in *dsc; do dpkg-source -x "$i"; done #### dieser punkt nicht: #### (remember --allow-unauthenticate if there's still the wrong signing key...) for i in `cat tobuild.txt`; do apt-get -y build-dep $i; done for i in `cat tobuild.txt`; do apt-get source $i; done #### ### begin patches ### # cyrus patches, run inside cyrus directory patch < cyrus-signed-char-for-ARM.patch patch < kolabDelegate-for-distribution-groups.patch ### end patches ### build and install first: xapian-core cyrus-imapd libkolabxml-dev python-icalendar 389-ds-base-dev libcalendaring-dev gyp libv8 nodejs hint on development: - patch cyrus-imapd for ARM build: "-fsigned-char" xapian-core: #####apt-get source xapian-core #dpkg-source -x xapian-core_1.2.16-0~kolab1.dsc apt-get build-dep xapian-core cd xapian-core-1.2.16/ dpkg-buildpackage -j4 -us -uc cd .. dpkg -i libxapian-dev_1.2.16-0~kolab1_armhf.deb libxapian22_1.2.16-0~kolab1_armhf.deb #cyrus-imapd: ####apt-get source --only-source cyrus-imapd #dpkg-source -x cyrus-imapd_2.5~dev2014011701-0~kolab1.dsc apt-get build-dep --only-source cyrus-imapd # ^ libkrb5-dev -> heimdal-dev cd cyrus-imapd-2.5~dev2015021301/ dpkg-buildpackage -j4 -us -uc cd .. apt-get build-dep libkolabxml # ^ libkrb5-dev -> heimdal-dev #dpkg-source -x libkolabxml_1.1~dev20140624-0~kolab1.dsc cd libkolabxml-1.1.git.1422810799/ dpkg-buildpackage -j4 -us -uc cd .. #dpkg-source -x python-icalendar_3.8.2.dsc cd python-icalendar-3.8.2 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile 389-ds-base #dpkg-source -x 389-ds-base_1.2.11.29-0.dsc cd 389-ds-base-1.2.11.30 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile libcalendaring-dev #dpkg-source -x libcalendaring_4.9.1-1.dsc cd libcalendaring-4.9.1/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile gyp cd gyp-0.1~svn1729 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile libv8 cd libv8-3.14-3.14.5.8/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile nodejs #dpkg-source -x nodejs_0.10.29~dfsg-1~bpo70+1.dsc dpkg -i gyp_0.1~svn1729-3~bpo7+1_all.deb libv8-3.14.5_3.14.5.8-8~bpo70+1_armhf.deb libv8-3.14-dev_3.14.5.8-8~bpo70+1_armhf.deb apt-get build-dep nodejs cd nodejs-0.10.29~dfsg/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile node-less dpkg -i nodejs_0.10.29~dfsg-1~bpo70+1_armhf.deb apt-get build-dep less.js cd less.js-1.7.0/ dpkg-buildpackage -j4 -us -uc cd .. (hint: remember "--allow-unauthenticated") apt-get install python-tz # if python-icalendar requires python-ordereddict, then deinstall python-2.6 and rebuild python-icalendar ## dpkg -r python2.6-minimal python2.6 python-all python-nose ## apt-get install python2.6-minimal python2.6 python-all python-nose # dpkg -i python-icalendar_3.8.2_all.deb libkolabxml-dev_1.1.git.1422810799_armhf.deb libkolabxml1_1.1.git.1422810799_armhf.deb 389-ds-base-dev_1.2.11.30-1_armhf.deb 389-ds-base-libs_1.2.11.30-1_armhf.deb libcalendaring-dev_4.9.git.1408631364_armhf.deb libcalendaring_4.9.git.1408631364_armhf.deb #dpkg -i python-icalendar_3.4-1_all.deb libkolabxml-dev_1.1~dev20140624-0~kolab1_armhf.deb libkolabxml1_1.1~dev20140624-0~kolab1_armhf.deb 389-ds-base-dev_1.2.11.29-0_armhf.deb 389-ds-base-libs_1.2.11.29-0_armhf.deb libcalendaring-dev_4.9.0-3_armhf.deb libcalendaring_4.9.0-3_armhf.deb node-less_1.7.0-2_all.deb #dpkg -i python-icalendar_3.8.2_all.deb libkolabxml-dev_1.1.git.1422810799_armhf.deb libkolabxml1_1.1.git.1422810799_armhf.deb 389-ds-base-dev_1.2.11.30-1_armhf.deb 389-ds-base-libs_1.2.11.30-1_armhf.deb libcalendaring-dev_4.9.git.1424359330_armhf.deb libcalendaring_4.9.git.1424359330_armhf.deb node-less_1.7.0-2_all.deb dpkg -i python-icalendar_3.8.2_all.deb libkolabxml-dev_1.1.git.1422810799_armhf.deb libkolabxml1_1.1.git.1422810799_armhf.deb 389-ds-base-dev_1.2.11.30-1_armhf.deb 389-ds-base-libs_1.2.11.30-1_armhf.deb libcalendaring-dev_4.9.1-1_armhf.deb libcalendaring_4.9.1-1_armhf.deb node-less_1.7.0-2_all.deb ([bugs, still needed?] for jss: ln -s /usr/lib/jvm/java-6-openjdk-armhf/ /usr/lib/jvm/java-6-openjdk for 389-admin: ln -s /usr/sbin/apache2 /usr/sbin/apache2.worker ) #edit tobuild.txt and remove cyrus-imapd libkolabxml python-icalendar 389-ds-base libcalendaring-dev libcalendaring xapian-core for i in `cat tobuild.txt`; do apt-get -y build-dep $i; done TODO: bessere möglichkeit finden: #for i in `find . -maxdepth 1 -type d`; do if [ -f "${i}/debian/rules" -a ! -f "${i}/debian/tmp" ]; then cd ${i}; dpkg-buildpackage -j4 -us -uc -nc; cd ..; fi; done; #for i in `find . -maxdepth 1 -type d`; do if [ \( -f "${i}/debian/rules" \) -a \( ! -d "${i}/debian/tmp" \) ]; then cd ${i}; dpkg-buildpackage -j4 -us -uc -nc ; cd ..; fi; done #for i in `find . -maxdepth 1 -type d`; do if [ -f "${i}/debian/rules" ]; then cat "${i}"/debian/*.debhelper.log | grep dh_builddeb || ( cd ${i}; echo dpkg-buildpackage -j4 -us -uc -nc ${i} ; cd .. ) fi; done for i in `find . -maxdepth 1 -type d`; do if [ -f "${i}/debian/rules" ]; then cat "${i}"/debian/*.debhelper.log | grep dh_builddeb || ( cd ${i}; dpkg-buildpackage -j4 -us -uc -nc ; cd .. ) fi; done #dpkg -i libv8-3.14.5_3.14.5.8-8~bpo70+1_armhf.deb libv8-3.14-dev_3.14.5.8-8~bpo70+1_armhf.deb see if everything got build: cat Sources | grep "Binary:" | sed -e "s/Binary: //" -e "s/, / /g" -e "s/\n/ /g" | tr ' ' '\n' | sort > built-in.txt ls *deb | sed "s/^\([^_]*\)_.*deb/\1/" | sort > built-out.txt vimdiff built* -> there shouldn't be anything on the left which is not on the right mkdir -p /srv/packages/debian/kolab/3.4/ mkdir /srv/packages/debian/kolab/3.4/conf mkdir /srv/packages/debian/kolab/3.4/db mkdir /srv/packages/debian/kolab/3.4/dists mkdir /srv/packages/debian/kolab/3.4/pool cat > /srv/packages/debian/kolab/3.4/conf/distributions < files.txt $ cat Sources | grep -A 3 Files: | grep -v -e "Files:" -e "--" | awk '{print $3}' > files.txt (on updates, say the upstream packages have changed: $ vimdiff files.txt files.old.txt and delete all directories and files which were superseded) $ while read i; do wget -c http://obs.kolabsys.com:82/Kolab:/3.4:/Updates/Debian_7.0/$i; done < files.txt $ cat Sources | grep "Package:" | sed -e "s/Package: //" > tobuild.txt $ for i in *dsc; do dpkg-source -x "$i"; done #### dieser punkt nicht: #### #for i in `cat tobuild.txt`; do apt-get -y build-dep $i; done #for i in `cat tobuild.txt`; do apt-get source $i; done #### build and install first (if present): xapian-core cyrus-imapd libkolabxml-dev python-icalendar 389-ds-base-dev libcalendaring-dev gyp libv8 nodejs xapian-core: #####apt-get source xapian-core #dpkg-source -x xapian-core_1.2.16-0~kolab1.dsc apt-get build-dep xapian-core cd xapian-core-1.2.16/ dpkg-buildpackage -j4 -us -uc cd .. dpkg -i libxapian-dev_1.2.16-0~kolab1_armhf.deb libxapian22_1.2.16-0~kolab1_armhf.deb #cyrus-imapd: ####apt-get source --only-source cyrus-imapd #dpkg-source -x cyrus-imapd_2.5~dev2014011701-0~kolab1.dsc apt-get build-dep --only-source cyrus-imapd # ^ libkrb5-dev -> heimdal-dev cd cyrus-imapd-2.5~dev2015021301/ dpkg-buildpackage -j4 -us -uc cd .. apt-get build-dep libkolabxml # ^ libkrb5-dev -> heimdal-dev #dpkg-source -x libkolabxml_1.1~dev20140624-0~kolab1.dsc cd libkolabxml-1.1.git.1422810799/ dpkg-buildpackage -j4 -us -uc cd .. #dpkg-source -x python-icalendar_3.8.2.dsc cd python-icalendar-3.8.2 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile 389-ds-base #dpkg-source -x 389-ds-base_1.2.11.29-0.dsc cd 389-ds-base-1.2.11.30 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile libcalendaring-dev #dpkg-source -x libcalendaring_4.9.1-1.dsc cd libcalendaring-4.9.1/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile gyp cd gyp-0.1~svn1729 dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile libv8 cd libv8-3.14-3.14.5.8/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile nodejs #dpkg-source -x nodejs_0.10.29~dfsg-1~bpo70+1.dsc dpkg -i gyp_0.1~svn1729-3~bpo7+1_all.deb libv8-3.14.5_3.14.5.8-8~bpo70+1_armhf.deb libv8-3.14-dev_3.14.5.8-8~bpo70+1_armhf.deb apt-get build-dep nodejs cd nodejs-0.10.29~dfsg/ dpkg-buildpackage -j4 -us -uc cd .. ####apt-get source --compile node-less dpkg -i nodejs_0.10.29~dfsg-1~bpo70+1_armhf.deb apt-get build-dep less.js cd less.js-1.7.0/ dpkg-buildpackage -j4 -us -uc cd .. apt-get install python-tz dpkg -i python-icalendar_3.8.2_all.deb libkolabxml-dev_1.1.git.1422810799_armhf.deb libkolabxml1_1.1.git.1422810799_armhf.deb 389-ds-base-dev_1.2.11.30-1_armhf.deb 389-ds-base-libs_1.2.11.30-1_armhf.deb libcalendaring-dev_4.9.1-1_armhf.deb libcalendaring_4.9.1-1_armhf.deb node-less_1.7.0-2_all.deb for i in `cat tobuild.txt`; do apt-get -y build-dep $i; done ##for i in `find . -maxdepth 1 -type d`; do if [ -f "${i}/debian/rules" ]; then cd ${i}; dpkg-buildpackage -j4 -us -uc; cd ..; fi; done; for i in `find . -maxdepth 1 -type d`; do if [ -f "${i}/debian/rules" ]; then cat "${i}"/debian/*.debhelper.log | grep dh_builddeb || ( cd ${i}; dpkg-buildpackage -j4 -us -uc -nc ; cd .. ) fi; done # everything got built? cat Sources | grep "Binary:" | sed -e "s/Binary: //" -e "s/, / /g" -e "s/\n/ /g" | tr ' ' '\n' | sort > built-in.txt ls *deb | sed "s/^\([^_]*\)_.*deb/\1/" | sort > built-out.txt vimdiff built* -> there shouldn't be anything on the left which is not on the right mkdir -p /srv/packages/debian/kolab/3.4-updates/ mkdir /srv/packages/debian/kolab/3.4-updates/conf mkdir /srv/packages/debian/kolab/3.4-updates/db mkdir /srv/packages/debian/kolab/3.4-updates/dists mkdir /srv/packages/debian/kolab/3.4-updates/pool cat > /srv/packages/debian/kolab/3.4-updates/conf/distributions < yes WARNUNG: nichtvertrauenswürdige Versionen der folgenden Pakete werden installiert! -> ja