diff options
author | Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> | 2012-08-23 12:58:26 (GMT) |
---|---|---|
committer | Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> | 2012-08-23 12:58:26 (GMT) |
commit | 916c3e2934b13bbb4f40b9fb9f04ed84cf142407 (patch) | |
tree | cfdd4d39661014c579349d948a81d96972e25467 | |
parent | ac3c06213465512c0c6f01c5bad882edfd846039 (diff) | |
download | kolab-scripts-916c3e2934b13bbb4f40b9fb9f04ed84cf142407.tar.gz |
Add package-version-matrix.sh
-rwxr-xr-x | package-version-matrix/package-versions-matrix.sh | 871 |
1 files changed, 871 insertions, 0 deletions
diff --git a/package-version-matrix/package-versions-matrix.sh b/package-version-matrix/package-versions-matrix.sh new file mode 100755 index 0000000..b189c83 --- /dev/null +++ b/package-version-matrix/package-versions-matrix.sh @@ -0,0 +1,871 @@ +#!/bin/bash + +# Script el extravaganza to generate the pages that contain software version +# matrices for Kolab product series on different Linux distributions and +# platform versions. +# +# 1) Uses a dependency tree (repoquery --tree-requires or debtree) to determine +# all packages in the dependency tree. +# +# 2) A statically configured list of RPM packaging names and corresponding +# aliases is used throughout the rest of the script. +# +# 3) A statically configured list of packages that we find irrelevant is +# stripped from the list generated in 1), using any alternative found in 2). +# +# 4) Any Kolab repositories are disabled / removed and the installation's native +# repositories are queried for the availability and version of the software +# packages in the list resulting from 3). + +function usage() { + echo "Usage: $0 --kolab-version <VERSION>" + echo "" + echo "Where <VERSION> is one of:" + echo "" + echo " - 2.4" + echo " - 3.0" + exit 1 +} + +function version_compare() { + ## Usage: version_compare version1 version2 + ## + ## Returns 0 if version1 <= version2, 1 if otherwise + ## + [ $# -ne 3 ] && return + package_name=$1 + wanted_version=$2 + actual_version=$3 + + if [ -x "$(which rpmdev-vercmp 2>/dev/null)" ]; then + retval=`rpmdev-vercmp "${wanted_version}" "${actual_version}" >/dev/null 2>&1; echo $?` + ## Return code 0 says version1 == version2 + ## Return code 12 says version1 < version2, + [ ${retval} -ne 12 -a ${retval} -ne 0 ] && retval=0 || retval=1 + + else + retval=`dpkg --compare-versions "${wanted_version}" gt "${actual_version}" >/dev/null 2>&1; echo $?` + fi + + return ${retval} +} + +while [ $# -ne 0 ]; do + case $1 in + --kolab-version) + kolab_version=$2 + shift; shift + ;; + *) + usage + ;; + esac +done + +if [ -z "${kolab_version}" ]; then + usage +fi + +package_list_native=`mktemp /tmp/package_list_native.XXX` +package_list_kolab=`mktemp /tmp/package_list_kolab.XXX` +package_list_wanted=`mktemp /tmp/package_list_wanted.XXX` + +if [ -x "$(which repoquery 2>/dev/null)" ]; then + repoquery --tree-requires kolab 2>&1 | \ + sed -r -e 's/(.*)\\_\s{2}//g' | \ + awk '{print $1}' | \ + sort -u | \ + while read pkg; do \ + repoquery --source --show-dupes $pkg | tail -n 1; \ + done | sort -u > ${package_list_wanted} +fi + +# Package names (SRPM name) that are in the dependency tree, but that are not +# interesting. See also the pkgs and alt_names arrays, for package SRPM names +# that will need to be translated to (for example) Debian package names. +declare -a pkgsni + +pkgsni[${#pkgsni[@]}]="acl"; +pkgsni[${#pkgsni[@]}]="alsa-lib"; +pkgsni[${#pkgsni[@]}]="altermime"; +pkgsni[${#pkgsni[@]}]="amanda"; +pkgsni[${#pkgsni[@]}]="apr"; +pkgsni[${#pkgsni[@]}]="apr-util"; +pkgsni[${#pkgsni[@]}]="arj"; +pkgsni[${#pkgsni[@]}]="atk"; +pkgsni[${#pkgsni[@]}]="attr"; +pkgsni[${#pkgsni[@]}]="audit"; +pkgsni[${#pkgsni[@]}]="authconfig"; +pkgsni[${#pkgsni[@]}]="avahi"; +pkgsni[${#pkgsni[@]}]="basesystem"; +pkgsni[${#pkgsni[@]}]="bash"; +pkgsni[${#pkgsni[@]}]="binutils"; +pkgsni[${#pkgsni[@]}]="boost"; +pkgsni[${#pkgsni[@]}]="bzip2"; +pkgsni[${#pkgsni[@]}]="cabextract"; +pkgsni[${#pkgsni[@]}]="ca-certificates"; +pkgsni[${#pkgsni[@]}]="cairo"; +pkgsni[${#pkgsni[@]}]="checkpolicy"; +pkgsni[${#pkgsni[@]}]="chkconfig"; +pkgsni[${#pkgsni[@]}]="coreutils"; +pkgsni[${#pkgsni[@]}]="cpio"; +pkgsni[${#pkgsni[@]}]="cracklib"; +pkgsni[${#pkgsni[@]}]="cronie"; +pkgsni[${#pkgsni[@]}]="crontabs"; +pkgsni[${#pkgsni[@]}]="cryptsetup"; +pkgsni[${#pkgsni[@]}]="cups"; +pkgsni[${#pkgsni[@]}]="curl"; +pkgsni[${#pkgsni[@]}]="db4"; +pkgsni[${#pkgsni[@]}]="dbus"; +pkgsni[${#pkgsni[@]}]="diffutils"; +pkgsni[${#pkgsni[@]}]="e2fsprogs"; +pkgsni[${#pkgsni[@]}]="elfutils"; +pkgsni[${#pkgsni[@]}]="eventlog"; +pkgsni[${#pkgsni[@]}]="expat"; +pkgsni[${#pkgsni[@]}]="fedora-logos"; +pkgsni[${#pkgsni[@]}]="fedora-release"; +pkgsni[${#pkgsni[@]}]="fedora-usermgmt"; +pkgsni[${#pkgsni[@]}]="file"; +pkgsni[${#pkgsni[@]}]="filesystem"; +pkgsni[${#pkgsni[@]}]="findutils"; +pkgsni[${#pkgsni[@]}]="fipscheck"; +pkgsni[${#pkgsni[@]}]="flac"; +pkgsni[${#pkgsni[@]}]="fontconfig"; +pkgsni[${#pkgsni[@]}]="fontpackages"; +pkgsni[${#pkgsni[@]}]="freetype"; +pkgsni[${#pkgsni[@]}]="freetype-freeworld"; +pkgsni[${#pkgsni[@]}]="freeze"; +pkgsni[${#pkgsni[@]}]="gamin"; +pkgsni[${#pkgsni[@]}]="gawk"; +pkgsni[${#pkgsni[@]}]="gcc"; +pkgsni[${#pkgsni[@]}]="gdbm"; +pkgsni[${#pkgsni[@]}]="gdk-pixbuf2"; +pkgsni[${#pkgsni[@]}]="generic-logos"; +pkgsni[${#pkgsni[@]}]="generic-release"; +pkgsni[${#pkgsni[@]}]="giflib"; +pkgsni[${#pkgsni[@]}]="glib2"; +pkgsni[${#pkgsni[@]}]="glibc"; +pkgsni[${#pkgsni[@]}]="gmp"; +pkgsni[${#pkgsni[@]}]="gnupg"; +pkgsni[${#pkgsni[@]}]="gnutls"; +pkgsni[${#pkgsni[@]}]="grep"; +pkgsni[${#pkgsni[@]}]="gsm"; +pkgsni[${#pkgsni[@]}]="gtk2"; +pkgsni[${#pkgsni[@]}]="gzip"; +pkgsni[${#pkgsni[@]}]="hicolor-icon-theme"; +pkgsni[${#pkgsni[@]}]="httpd"; +pkgsni[${#pkgsni[@]}]="hwdata"; +pkgsni[${#pkgsni[@]}]="icu"; +pkgsni[${#pkgsni[@]}]="initscripts"; +pkgsni[${#pkgsni[@]}]="iproute"; +pkgsni[${#pkgsni[@]}]="iptables"; +pkgsni[${#pkgsni[@]}]="iputils"; +pkgsni[${#pkgsni[@]}]="jasper"; +pkgsni[${#pkgsni[@]}]="java-1.5.0-gcj"; +pkgsni[${#pkgsni[@]}]="java-1.7.0-openjdk"; +pkgsni[${#pkgsni[@]}]="java_cup"; +pkgsni[${#pkgsni[@]}]="jline"; +pkgsni[${#pkgsni[@]}]="jpackage-utils"; +pkgsni[${#pkgsni[@]}]="json-c"; +pkgsni[${#pkgsni[@]}]="kde-settings"; +pkgsni[${#pkgsni[@]}]="keyutils"; +pkgsni[${#pkgsni[@]}]="kmod"; +pkgsni[${#pkgsni[@]}]="krb5"; +pkgsni[${#pkgsni[@]}]="lcms"; +pkgsni[${#pkgsni[@]}]="lcms2"; +pkgsni[${#pkgsni[@]}]="libaio"; +pkgsni[${#pkgsni[@]}]="libart_lgpl"; +pkgsni[${#pkgsni[@]}]="libasyncns"; +pkgsni[${#pkgsni[@]}]="libbsd"; +pkgsni[${#pkgsni[@]}]="libcap"; +pkgsni[${#pkgsni[@]}]="libcap-ng"; +pkgsni[${#pkgsni[@]}]="libcgroup"; +pkgsni[${#pkgsni[@]}]="libdrm"; +pkgsni[${#pkgsni[@]}]="libedit"; +pkgsni[${#pkgsni[@]}]="libevent"; +pkgsni[${#pkgsni[@]}]="libffi"; +pkgsni[${#pkgsni[@]}]="libgcrypt"; +pkgsni[${#pkgsni[@]}]="libgpg-error"; +pkgsni[${#pkgsni[@]}]="libICE"; +pkgsni[${#pkgsni[@]}]="libidn"; +pkgsni[${#pkgsni[@]}]="libjpeg-turbo"; +pkgsni[${#pkgsni[@]}]="libmcrypt"; +pkgsni[${#pkgsni[@]}]="libmng"; +pkgsni[${#pkgsni[@]}]="libmspack"; +pkgsni[${#pkgsni[@]}]="libnet"; +pkgsni[${#pkgsni[@]}]="libogg"; +pkgsni[${#pkgsni[@]}]="libpciaccess"; +pkgsni[${#pkgsni[@]}]="libpng"; +pkgsni[${#pkgsni[@]}]="libpwquality"; +pkgsni[${#pkgsni[@]}]="libselinux"; +pkgsni[${#pkgsni[@]}]="libsemanage"; +pkgsni[${#pkgsni[@]}]="libsepol"; +pkgsni[${#pkgsni[@]}]="libSM"; +pkgsni[${#pkgsni[@]}]="libsndfile"; +pkgsni[${#pkgsni[@]}]="libssh2"; +pkgsni[${#pkgsni[@]}]="libtasn1"; +pkgsni[${#pkgsni[@]}]="libthai"; +pkgsni[${#pkgsni[@]}]="libtiff"; +pkgsni[${#pkgsni[@]}]="libtool"; +pkgsni[${#pkgsni[@]}]="libusb"; +pkgsni[${#pkgsni[@]}]="libusb1"; +pkgsni[${#pkgsni[@]}]="libutempter"; +pkgsni[${#pkgsni[@]}]="libvorbis"; +pkgsni[${#pkgsni[@]}]="libX11"; +pkgsni[${#pkgsni[@]}]="libXau"; +pkgsni[${#pkgsni[@]}]="libxcb"; +pkgsni[${#pkgsni[@]}]="libXcomposite"; +pkgsni[${#pkgsni[@]}]="libXcursor"; +pkgsni[${#pkgsni[@]}]="libXdamage"; +pkgsni[${#pkgsni[@]}]="libXext"; +pkgsni[${#pkgsni[@]}]="libXfixes"; +pkgsni[${#pkgsni[@]}]="libXft"; +pkgsni[${#pkgsni[@]}]="libXi"; +pkgsni[${#pkgsni[@]}]="libXinerama"; +pkgsni[${#pkgsni[@]}]="libxml2"; +pkgsni[${#pkgsni[@]}]="libXrandr"; +pkgsni[${#pkgsni[@]}]="libXrender"; +pkgsni[${#pkgsni[@]}]="libxslt"; +pkgsni[${#pkgsni[@]}]="libXtst"; +pkgsni[${#pkgsni[@]}]="libXxf86vm"; +pkgsni[${#pkgsni[@]}]="libzip"; +pkgsni[${#pkgsni[@]}]="linux-atm"; +pkgsni[${#pkgsni[@]}]="lm_sensors"; +pkgsni[${#pkgsni[@]}]="logrotate"; +pkgsni[${#pkgsni[@]}]="lua"; +pkgsni[${#pkgsni[@]}]="lvm2"; +pkgsni[${#pkgsni[@]}]="lzo"; +pkgsni[${#pkgsni[@]}]="lzop"; +pkgsni[${#pkgsni[@]}]="m4"; +pkgsni[${#pkgsni[@]}]="mailcap"; +pkgsni[${#pkgsni[@]}]="mailx"; +pkgsni[${#pkgsni[@]}]="make"; +pkgsni[${#pkgsni[@]}]="mesa"; +pkgsni[${#pkgsni[@]}]="mod_nss"; +pkgsni[${#pkgsni[@]}]="module-init-tools"; +pkgsni[${#pkgsni[@]}]="MySQL-python"; +pkgsni[${#pkgsni[@]}]="nc"; +pkgsni[${#pkgsni[@]}]="ncurses"; +pkgsni[${#pkgsni[@]}]="net-snmp"; +pkgsni[${#pkgsni[@]}]="net-tools"; +pkgsni[${#pkgsni[@]}]="newt"; +pkgsni[${#pkgsni[@]}]="nomarch"; +pkgsni[${#pkgsni[@]}]="nspr"; +pkgsni[${#pkgsni[@]}]="nss"; +pkgsni[${#pkgsni[@]}]="nss-myhostname"; +pkgsni[${#pkgsni[@]}]="nss-softokn"; +pkgsni[${#pkgsni[@]}]="nss-util"; +pkgsni[${#pkgsni[@]}]="openssl"; +pkgsni[${#pkgsni[@]}]="p11-kit"; +pkgsni[${#pkgsni[@]}]="p7zip"; +pkgsni[${#pkgsni[@]}]="pam"; +pkgsni[${#pkgsni[@]}]="pango"; +pkgsni[${#pkgsni[@]}]="pciutils"; +pkgsni[${#pkgsni[@]}]="pcre"; +pkgsni[${#pkgsni[@]}]="perl"; +pkgsni[${#pkgsni[@]}]="perl-AnyEvent"; +pkgsni[${#pkgsni[@]}]="perl-AnyEvent-AIO"; +pkgsni[${#pkgsni[@]}]="perl-AnyEvent-BDB"; +pkgsni[${#pkgsni[@]}]="perl-Archive-Tar"; +pkgsni[${#pkgsni[@]}]="perl-Archive-Zip"; +pkgsni[${#pkgsni[@]}]="perl-Async-MergePoint"; +pkgsni[${#pkgsni[@]}]="perl-Authen-SASL"; +pkgsni[${#pkgsni[@]}]="perl-BDB"; +pkgsni[${#pkgsni[@]}]="perl-BerkeleyDB"; +pkgsni[${#pkgsni[@]}]="perl-Carp"; +pkgsni[${#pkgsni[@]}]="perl-common-sense"; +pkgsni[${#pkgsni[@]}]="perl-Compress-Raw-Bzip2"; +pkgsni[${#pkgsni[@]}]="perl-Compress-Raw-Zlib"; +pkgsni[${#pkgsni[@]}]="perl-Convert-ASN1"; +pkgsni[${#pkgsni[@]}]="perl-Convert-BinHex"; +pkgsni[${#pkgsni[@]}]="perl-Convert-TNEF"; +pkgsni[${#pkgsni[@]}]="perl-Convert-UUlib"; +pkgsni[${#pkgsni[@]}]="perl-Coro"; +pkgsni[${#pkgsni[@]}]="perl-Crypt-OpenSSL-Bignum"; +pkgsni[${#pkgsni[@]}]="perl-Crypt-OpenSSL-Random"; +pkgsni[${#pkgsni[@]}]="perl-Crypt-OpenSSL-RSA"; +pkgsni[${#pkgsni[@]}]="perl-Curses"; +pkgsni[${#pkgsni[@]}]="perl-DBD-MySQL"; +pkgsni[${#pkgsni[@]}]="perl-DBD-SQLite"; +pkgsni[${#pkgsni[@]}]="perl-DBI"; +pkgsni[${#pkgsni[@]}]="perl-Digest"; +pkgsni[${#pkgsni[@]}]="perl-Digest-HMAC"; +pkgsni[${#pkgsni[@]}]="perl-Digest-SHA1"; +pkgsni[${#pkgsni[@]}]="perl-Email-Date-Format"; +pkgsni[${#pkgsni[@]}]="perl-Encode-Detect"; +pkgsni[${#pkgsni[@]}]="perl-Encode-Locale"; +pkgsni[${#pkgsni[@]}]="perl-Error"; +pkgsni[${#pkgsni[@]}]="perl-EV"; +pkgsni[${#pkgsni[@]}]="perl-Event"; +pkgsni[${#pkgsni[@]}]="perl-Event-Lib"; +pkgsni[${#pkgsni[@]}]="perl-ExtUtils-MakeMaker"; +pkgsni[${#pkgsni[@]}]="perl-ExtUtils-Manifest"; +pkgsni[${#pkgsni[@]}]="perl-FCGI"; +pkgsni[${#pkgsni[@]}]="perl-File-Listing"; +pkgsni[${#pkgsni[@]}]="perl-Glib"; +pkgsni[${#pkgsni[@]}]="perl-GSSAPI"; +pkgsni[${#pkgsni[@]}]="perl-Guard"; +pkgsni[${#pkgsni[@]}]="perl-Heap"; +pkgsni[${#pkgsni[@]}]="perl-HTML-Parser"; +pkgsni[${#pkgsni[@]}]="perl-HTML-Tagset"; +pkgsni[${#pkgsni[@]}]="perl-HTTP-Cookies"; +pkgsni[${#pkgsni[@]}]="perl-HTTP-Daemon"; +pkgsni[${#pkgsni[@]}]="perl-HTTP-Date"; +pkgsni[${#pkgsni[@]}]="perl-HTTP-Message"; +pkgsni[${#pkgsni[@]}]="perl-HTTP-Negotiate"; +pkgsni[${#pkgsni[@]}]="perl-IO-AIO"; +pkgsni[${#pkgsni[@]}]="perl-IO-Async"; +pkgsni[${#pkgsni[@]}]="perl-IO-Compress"; +pkgsni[${#pkgsni[@]}]="perl-IO-Multiplex"; +pkgsni[${#pkgsni[@]}]="perl-IO-Socket-INET6"; +pkgsni[${#pkgsni[@]}]="perl-IO-Socket-SSL"; +pkgsni[${#pkgsni[@]}]="perl-IO-stringy"; +pkgsni[${#pkgsni[@]}]="perl-IO-Tty"; +pkgsni[${#pkgsni[@]}]="perl-LDAP"; +pkgsni[${#pkgsni[@]}]="perl-libwww-perl"; +pkgsni[${#pkgsni[@]}]="perl-LWP-MediaTypes"; +pkgsni[${#pkgsni[@]}]="perl-Mail-DKIM"; +pkgsni[${#pkgsni[@]}]="perl-Mail-SPF"; +pkgsni[${#pkgsni[@]}]="perl-MailTools"; +pkgsni[${#pkgsni[@]}]="perl-MIME-Lite"; +pkgsni[${#pkgsni[@]}]="perl-MIME-tools"; +pkgsni[${#pkgsni[@]}]="perl-MIME-Types"; +pkgsni[${#pkgsni[@]}]="perl-Mozilla-LDAP"; +pkgsni[${#pkgsni[@]}]="perl-NetAddr-IP"; +pkgsni[${#pkgsni[@]}]="perl-Net-DNS"; +pkgsni[${#pkgsni[@]}]="perl-Net-HTTP"; +pkgsni[${#pkgsni[@]}]="perl-Net-LibIDN"; +pkgsni[${#pkgsni[@]}]="perl-Net-Server"; +pkgsni[${#pkgsni[@]}]="perl-Net-SMTP-SSL"; +pkgsni[${#pkgsni[@]}]="perl-Net-SSLeay"; +pkgsni[${#pkgsni[@]}]="perl-POE"; +pkgsni[${#pkgsni[@]}]="perl-Razor-Agent"; +pkgsni[${#pkgsni[@]}]="perl-Scalar-List-Utils"; +pkgsni[${#pkgsni[@]}]="perl-Socket"; +pkgsni[${#pkgsni[@]}]="perl-Socket6"; +pkgsni[${#pkgsni[@]}]="perl-Socket-GetAddrInfo"; +pkgsni[${#pkgsni[@]}]="perl-TermReadKey"; +pkgsni[${#pkgsni[@]}]="perl-threads"; +pkgsni[${#pkgsni[@]}]="perl-threads-shared"; +pkgsni[${#pkgsni[@]}]="perl-TimeDate"; +pkgsni[${#pkgsni[@]}]="perl-Unix-Syslog"; +pkgsni[${#pkgsni[@]}]="perl-URI"; +pkgsni[${#pkgsni[@]}]="perl-version"; +pkgsni[${#pkgsni[@]}]="perl-WWW-RobotRules"; +pkgsni[${#pkgsni[@]}]="perl-XML-SAX-Base"; +pkgsni[${#pkgsni[@]}]="php-gettext"; +pkgsni[${#pkgsni[@]}]="php-pear"; +pkgsni[${#pkgsni[@]}]="php-ZendFramework"; +pkgsni[${#pkgsni[@]}]="pixman"; +pkgsni[${#pkgsni[@]}]="pkgconfig"; +pkgsni[${#pkgsni[@]}]="policycoreutils"; +pkgsni[${#pkgsni[@]}]="popt"; +pkgsni[${#pkgsni[@]}]="portreserve"; +pkgsni[${#pkgsni[@]}]="procmail"; +pkgsni[${#pkgsni[@]}]="procps"; +pkgsni[${#pkgsni[@]}]="psmisc"; +pkgsni[${#pkgsni[@]}]="pulseaudio"; +pkgsni[${#pkgsni[@]}]="python"; +pkgsni[${#pkgsni[@]}]="python-imaging"; +pkgsni[${#pkgsni[@]}]="python-IPy"; +pkgsni[${#pkgsni[@]}]="python-markdown"; +pkgsni[${#pkgsni[@]}]="python-pygments"; +pkgsni[${#pkgsni[@]}]="python-setuptools"; +pkgsni[${#pkgsni[@]}]="python-sqlalchemy"; +pkgsni[${#pkgsni[@]}]="qt"; +pkgsni[${#pkgsni[@]}]="readline"; +pkgsni[${#pkgsni[@]}]="rhino"; +pkgsni[${#pkgsni[@]}]="rpm"; +pkgsni[${#pkgsni[@]}]="rsyslog"; +pkgsni[${#pkgsni[@]}]="sed"; +pkgsni[${#pkgsni[@]}]="selinux-policy"; +pkgsni[${#pkgsni[@]}]="setools"; +pkgsni[${#pkgsni[@]}]="setup"; +pkgsni[${#pkgsni[@]}]="shadow-utils"; +pkgsni[${#pkgsni[@]}]="shared-mime-info"; +pkgsni[${#pkgsni[@]}]="sinjdoc"; +pkgsni[${#pkgsni[@]}]="slang"; +pkgsni[${#pkgsni[@]}]="sqlite"; +pkgsni[${#pkgsni[@]}]="svrcore"; +pkgsni[${#pkgsni[@]}]="sysklogd"; +pkgsni[${#pkgsni[@]}]="syslog-ng"; +pkgsni[${#pkgsni[@]}]="systemd"; +pkgsni[${#pkgsni[@]}]="systemtap"; +pkgsni[${#pkgsni[@]}]="sysvinit"; +pkgsni[${#pkgsni[@]}]="tar"; +pkgsni[${#pkgsni[@]}]="tcp_wrappers"; +pkgsni[${#pkgsni[@]}]="texinfo"; +pkgsni[${#pkgsni[@]}]="tmpwatch"; +pkgsni[${#pkgsni[@]}]="tzdata"; +pkgsni[${#pkgsni[@]}]="udev"; +pkgsni[${#pkgsni[@]}]="ustr"; +pkgsni[${#pkgsni[@]}]="util-linux"; +pkgsni[${#pkgsni[@]}]="xerces-c"; +pkgsni[${#pkgsni[@]}]="xinetd"; +pkgsni[${#pkgsni[@]}]="xz"; +pkgsni[${#pkgsni[@]}]="zip"; +pkgsni[${#pkgsni[@]}]="zlib"; + +## +## Package alternative names, as package names differ between distributions +## +declare -a pkg_names +declare -a alt_names + +pkg_names[${#pkg_names[@]}]="389-adminutil"; alt_names[${#alt_names[@]}]="libadminutil0"; +pkg_names[${#pkg_names[@]}]="clamav"; alt_names[${#alt_names[@]}]="clamav-server"; +pkg_names[${#pkg_names[@]}]="cyrus-imapd"; alt_names[${#alt_names[@]}]="cyrus-imapd-2.2"; +pkg_names[${#pkg_names[@]}]="cyrus-sasl"; alt_names[${#alt_names[@]}]="cyrus-sasl-lib libsasl2-2"; +pkg_names[${#pkg_names[@]}]="dimp"; alt_names[${#alt_names[@]}]="dimp1"; +pkg_names[${#pkg_names[@]}]="horde"; alt_names[${#alt_names[@]}]="horde3"; +pkg_names[${#pkg_names[@]}]="idm-console-framework"; alt_names[${#alt_names[@]}]="libidm-console-framework-java"; +pkg_names[${#pkg_names[@]}]="imp"; alt_names[${#alt_names[@]}]="imp4"; +pkg_names[${#pkg_names[@]}]="ingo"; alt_names[${#alt_names[@]}]="ingo1"; +pkg_names[${#pkg_names[@]}]="jss"; alt_names[${#alt_names[@]}]="libjss-java"; +pkg_names[${#pkg_names[@]}]="kolab-community-release"; alt_names[${#alt_names[@]}]="kolab-${kolab_version}-community-release"; +pkg_names[${#pkg_names[@]}]="kronolith"; alt_names[${#alt_names[@]}]="kronolith2"; +pkg_names[${#pkg_names[@]}]="ldapjdk"; alt_names[${#alt_names[@]}]="libldap-java"; +pkg_names[${#pkg_names[@]}]="mnemo"; alt_names[${#alt_names[@]}]="mnemo2"; +pkg_names[${#pkg_names[@]}]="mod_nss"; alt_names[${#alt_names[@]}]="libapache2-mod-nss"; +pkg_names[${#pkg_names[@]}]="mozldap"; alt_names[${#alt_names[@]}]="libmozldap-0d"; +pkg_names[${#pkg_names[@]}]="nag"; alt_names[${#alt_names[@]}]="nag2"; +pkg_names[${#pkg_names[@]}]="openldap"; alt_names[${#alt_names[@]}]="libldap-2.4-2"; +pkg_names[${#pkg_names[@]}]="perl-Kolab"; alt_names[${#alt_names[@]}]="libkolab-perl"; +pkg_names[${#pkg_names[@]}]="perl-LDAP"; alt_names[${#alt_names[@]}]="libnet-ldap-perl"; +pkg_names[${#pkg_names[@]}]="perl-URI"; alt_names[${#alt_names[@]}]="liburi-perl"; +pkg_names[${#pkg_names[@]}]="php"; alt_names[${#alt_names[@]}]="php5"; +pkg_names[${#pkg_names[@]}]="php-channel-Horde"; alt_names[${#alt_names[@]}]="php-channel-horde pear-horde-channel"; +pkg_names[${#pkg_names[@]}]="php-channel-PHPUnit"; alt_names[${#alt_names[@]}]="php-channel-phpunit phpunit"; +pkg_names[${#pkg_names[@]}]="php-pear-Auth-SASL"; alt_names[${#alt_names[@]}]="php-auth-sasl" +pkg_names[${#pkg_names[@]}]="php-pear-Cache"; alt_names[${#alt_names[@]}]="php-cache" +pkg_names[${#pkg_names[@]}]="php-pear-Console-Table"; alt_names[${#alt_names[@]}]="php-console-table" +pkg_names[${#pkg_names[@]}]="php-pear-Date"; alt_names[${#alt_names[@]}]="php-date" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays"; alt_names[${#alt_names[@]}]="php-date-holidays" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Austria"; alt_names[${#alt_names[@]}]="php-date-holidays-austria" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Brazil"; alt_names[${#alt_names[@]}]="php-date-holidays-brazil" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Denmark"; alt_names[${#alt_names[@]}]="php-date-holidays-denmark" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Discordian"; alt_names[${#alt_names[@]}]="php-date-holidays-discordian" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-EnglandWales"; alt_names[${#alt_names[@]}]="php-date-holidays-englandwales" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Germany"; alt_names[${#alt_names[@]}]="php-date-holidays-germany" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Iceland"; alt_names[${#alt_names[@]}]="php-date-holidays-iceland" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Ireland"; alt_names[${#alt_names[@]}]="php-date-holidays-ireland" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Italy"; alt_names[${#alt_names[@]}]="php-date-holidays-italy" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Japan"; alt_names[${#alt_names[@]}]="php-date-holidays-japan" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Netherlands"; alt_names[${#alt_names[@]}]="php-date-holidays-netherlands" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Norway"; alt_names[${#alt_names[@]}]="php-date-holidays-norway" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Romania"; alt_names[${#alt_names[@]}]="php-date-holidays-romania" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Slovenia"; alt_names[${#alt_names[@]}]="php-date-holidays-slovenia" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Sweden"; alt_names[${#alt_names[@]}]="php-date-holidays-sweden" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-Ukraine"; alt_names[${#alt_names[@]}]="php-date-holidays-ukraine" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-UNO"; alt_names[${#alt_names[@]}]="php-date-holidays-uno" +pkg_names[${#pkg_names[@]}]="php-pear-Date-Holidays-USA"; alt_names[${#alt_names[@]}]="php-date-holidays-usa" +pkg_names[${#pkg_names[@]}]="php-pear-DB"; alt_names[${#alt_names[@]}]="php-db" +pkg_names[${#pkg_names[@]}]="php-pear-File"; alt_names[${#alt_names[@]}]="php-file" +pkg_names[${#pkg_names[@]}]="php-pear-File-CSV"; alt_names[${#alt_names[@]}]="php-file" +pkg_names[${#pkg_names[@]}]="php-pear-File-Find"; alt_names[${#alt_names[@]}]="php-file-find" +pkg_names[${#pkg_names[@]}]="php-pear-File-PDF"; alt_names[${#alt_names[@]}]="php-fpdf" +pkg_names[${#pkg_names[@]}]="php-pear-HTTP-Request"; alt_names[${#alt_names[@]}]="php-http-request" +pkg_names[${#pkg_names[@]}]="php-pear-HTTP-Request2"; alt_names[${#alt_names[@]}]="php-http-request2" +pkg_names[${#pkg_names[@]}]="php-pear-HTTP-WebDAV-Server"; alt_names[${#alt_names[@]}]="php-http-webdav-server" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Alarm"; alt_names[${#alt_names[@]}]="php-horde-alarm" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Argv"; alt_names[${#alt_names[@]}]="php-horde-argv" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Auth"; alt_names[${#alt_names[@]}]="php-horde-auth" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Block"; alt_names[${#alt_names[@]}]="php-horde-block" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Browser"; alt_names[${#alt_names[@]}]="php-horde-browser" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Cache"; alt_names[${#alt_names[@]}]="php-horde-cache" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Cipher"; alt_names[${#alt_names[@]}]="php-horde-cipher" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-CLI"; alt_names[${#alt_names[@]}]="php-horde-cli" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Compress"; alt_names[${#alt_names[@]}]="php-horde-compress" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Crypt"; alt_names[${#alt_names[@]}]="php-horde-crypt" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-DataTree"; alt_names[${#alt_names[@]}]="php-horde-datatree" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Date"; alt_names[${#alt_names[@]}]="php-horde-date" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-DOM"; alt_names[${#alt_names[@]}]="php-horde-dom" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Editor"; alt_names[${#alt_names[@]}]="php-horde-editor" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Feed"; alt_names[${#alt_names[@]}]="php-horde-feed" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-File_CSV"; alt_names[${#alt_names[@]}]="php-horde-file_csv" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-File_PDF"; alt_names[${#alt_names[@]}]="php-horde-file_pdf" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Form"; alt_names[${#alt_names[@]}]="php-horde-form" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Framework"; alt_names[${#alt_names[@]}]="php-horde-framework" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Group"; alt_names[${#alt_names[@]}]="php-horde-group" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-History"; alt_names[${#alt_names[@]}]="php-horde-history" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Http_Client"; alt_names[${#alt_names[@]}]="php-horde-http_client" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-iCalendar"; alt_names[${#alt_names[@]}]="php-horde-icalendar" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Identity"; alt_names[${#alt_names[@]}]="php-horde-identity" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Image"; alt_names[${#alt_names[@]}]="php-horde-image" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-IMAP"; alt_names[${#alt_names[@]}]="php-horde-imap" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Kolab"; alt_names[${#alt_names[@]}]="php-horde-kolab" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-LDAP"; alt_names[${#alt_names[@]}]="php-horde-ldap" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Loader"; alt_names[${#alt_names[@]}]="php-horde-loader" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Lock"; alt_names[${#alt_names[@]}]="php-horde-lock" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Log"; alt_names[${#alt_names[@]}]="php-horde-log" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Maintenance"; alt_names[${#alt_names[@]}]="php-horde-maintenance" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-MIME"; alt_names[${#alt_names[@]}]="php-horde-mime" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Mobile"; alt_names[${#alt_names[@]}]="php-horde-mobile" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Net_SMS"; alt_names[${#alt_names[@]}]="php-horde-net_sms" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-NLS"; alt_names[${#alt_names[@]}]="php-horde-nls" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Notification"; alt_names[${#alt_names[@]}]="php-horde-notification" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Perms"; alt_names[${#alt_names[@]}]="php-horde-perms" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Prefs"; alt_names[${#alt_names[@]}]="php-horde-prefs" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-RPC"; alt_names[${#alt_names[@]}]="php-horde-rpc" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Secret"; alt_names[${#alt_names[@]}]="php-horde-secret" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Serialize"; alt_names[${#alt_names[@]}]="php-horde-serialize" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-SessionHandler"; alt_names[${#alt_names[@]}]="php-horde-sessionhandler" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-SessionObjects"; alt_names[${#alt_names[@]}]="php-horde-sessionobjects" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Share"; alt_names[${#alt_names[@]}]="php-horde-share" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-SpellChecker"; alt_names[${#alt_names[@]}]="php-horde-spellchecker" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-SQL"; alt_names[${#alt_names[@]}]="php-horde-sql" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-SyncML"; alt_names[${#alt_names[@]}]="php-horde-syncml" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Template"; alt_names[${#alt_names[@]}]="php-horde-template" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Text_Diff"; alt_names[${#alt_names[@]}]="php-horde-text-diff" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Text_Filter"; alt_names[${#alt_names[@]}]="php-horde-text-filter" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Text_Flowed"; alt_names[${#alt_names[@]}]="php-horde-text-flowed" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Text_reST"; alt_names[${#alt_names[@]}]="php-horde-text-rest" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Text_Textile"; alt_names[${#alt_names[@]}]="php-horde-text-textile" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Token"; alt_names[${#alt_names[@]}]="php-horde-token" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Tree"; alt_names[${#alt_names[@]}]="php-horde-tree" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-UI"; alt_names[${#alt_names[@]}]="php-horde-ui" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-Util"; alt_names[${#alt_names[@]}]="php-horde-util" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-VC"; alt_names[${#alt_names[@]}]="php-horde-vc" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-VFS"; alt_names[${#alt_names[@]}]="php-horde-vfs" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-XML_Element"; alt_names[${#alt_names[@]}]="php-horde-xml-element" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-XML_WBXML"; alt_names[${#alt_names[@]}]="php-horde-xml-wbxml" +pkg_names[${#pkg_names[@]}]="php-pear-Horde-YAML"; alt_names[${#alt_names[@]}]="php-horde-yaml" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-Config"; alt_names[${#alt_names[@]}]="php-kolab-config" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-Filter"; alt_names[${#alt_names[@]}]="php-kolab-filter" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-Format"; alt_names[${#alt_names[@]}]="php-kolab-format" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-FreeBusy"; alt_names[${#alt_names[@]}]="php-kolab-freebusy" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-Server"; alt_names[${#alt_names[@]}]="php-kolab-server" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-Storage"; alt_names[${#alt_names[@]}]="php-kolab-storage" +pkg_names[${#pkg_names[@]}]="php-pear-Kolab-ZPush"; alt_names[${#alt_names[@]}]="php-kolab-zpush" +pkg_names[${#pkg_names[@]}]="php-pear-Log"; alt_names[${#alt_names[@]}]="php-log" +pkg_names[${#pkg_names[@]}]="php-pear-Mail"; alt_names[${#alt_names[@]}]="php-mail" +pkg_names[${#pkg_names[@]}]="php-pear-Mail-Mime"; alt_names[${#alt_names[@]}]="php-mail-mime" +pkg_names[${#pkg_names[@]}]="php-pear-Mail-mimeDecode"; alt_names[${#alt_names[@]}]="php-mail-mimedecode" +pkg_names[${#pkg_names[@]}]="php-pear-Net-DIME"; alt_names[${#alt_names[@]}]="php-net-dime" +pkg_names[${#pkg_names[@]}]="php-pear-Net-IMAP"; alt_names[${#alt_names[@]}]="php-net-imap" +pkg_names[${#pkg_names[@]}]="php-pear-Net-LDAP"; alt_names[${#alt_names[@]}]="php-net-ldap" +pkg_names[${#pkg_names[@]}]="php-pear-Net-LDAP2"; alt_names[${#alt_names[@]}]="php-net-ldap2" +pkg_names[${#pkg_names[@]}]="php-pear-Net-LMTP"; alt_names[${#alt_names[@]}]="php-net-lmtp" +pkg_names[${#pkg_names[@]}]="php-pear-Net-Sieve"; alt_names[${#alt_names[@]}]="php-net-sieve" +pkg_names[${#pkg_names[@]}]="php-pear-Net-SMTP"; alt_names[${#alt_names[@]}]="php-net-smtp" +pkg_names[${#pkg_names[@]}]="php-pear-Net-Socket"; alt_names[${#alt_names[@]}]="php-net-socket" +pkg_names[${#pkg_names[@]}]="php-pear-Net-URL"; alt_names[${#alt_names[@]}]="php-net-url" +pkg_names[${#pkg_names[@]}]="php-pear-PHPUnit"; alt_names[${#alt_names[@]}]="php-phpunit" +pkg_names[${#pkg_names[@]}]="php-pear-Services-Weather"; alt_names[${#alt_names[@]}]="php-services-weather" +pkg_names[${#pkg_names[@]}]="php-pear-SOAP"; alt_names[${#alt_names[@]}]="php-soap" +pkg_names[${#pkg_names[@]}]="php-pear-XML-Parser"; alt_names[${#alt_names[@]}]="php-xml-parser" +pkg_names[${#pkg_names[@]}]="php-pear-XML-Serializer"; alt_names[${#alt_names[@]}]="php-xml-serializer" +pkg_names[${#pkg_names[@]}]="php-pear-XML-Util"; alt_names[${#alt_names[@]}]="php-xml-util" +pkg_names[${#pkg_names[@]}]="roundcubemail"; alt_names[${#alt_names[@]}]="roundcube"; +pkg_names[${#pkg_names[@]}]="roundcubemail-plugins-kolab"; alt_names[${#alt_names[@]}]="roundcube-plugins-kolab"; +pkg_names[${#pkg_names[@]}]="sqlite"; alt_names[${#alt_names[@]}]="sqlite3"; +pkg_names[${#pkg_names[@]}]="sqlite2"; alt_names[${#alt_names[@]}]="sqlite"; +pkg_names[${#pkg_names[@]}]="turba"; alt_names[${#alt_names[@]}]="turba2"; +pkg_names[${#pkg_names[@]}]="uw-imap"; alt_names[${#alt_names[@]}]="libc-client libc-client2007e"; + +## +## Determine if the packages are interesting. +## +declare -a pkgs +declare -a pkg_versions + +# TODO: Combine with existing output: +#wget -q -O- "http://wiki.kolab.org/index.php?title=Template:Pkg_version_table_${kolab_version}&action=edit" | grep -E "^{{pkg_version_matrix_row\|" | sed -r -e 's/\{\{pkg_version_matrix_row\|name=(.*)\|distribution=.*$/\1/g' + + +for pkg_detail in `cat ${package_list_wanted}`; do + pkg=`echo ${pkg_detail} | rev | cut -d'-' -f3- | rev` + pkg_version=`echo ${pkg_detail} | rev | cut -d'-' -f2 | rev` + + pkgni=0 + + # A very quick one for the sake of speed. + if [ -z "$(echo ${pkgsni[@]} | grep -E "(^|\s)${pkg}(\s|$)")" ]; then + echo "{{pkg_version_matrix_row|name=${pkg}|distribution={{{distribution}}}|kolab_version=${kolab_version}}}" + pkgs[${#pkgs[@]}]=${pkg} + pkg_versions[${#pkg_versions[@]}]=${pkg_version} + pkgni=1 + fi + + # A very slow one for the sake of accuracy. + if [ ${pkgni} -eq 0 ]; then + i=0 + while [ ${i} -lt ${#pkgsni[@]} ]; do + if [ "${pkgsni[${i}]}" == "${pkg}" ]; then + pkgni=1 + i=${#pkgsni[@]} + fi + + if [ ${pkgni} -eq 0 ]; then + x=0 + while [ ${x} -lt ${#pkg_names[@]} ]; do + if [ "${pkgsni[${i}]}" == "${pkg_names[${x}]}" ]; then + for alt_pkg_name in ${alt_names[${x}]}; do + if [ "${pkgsni[${i}]}" == "${alt_pkg_name}" ]; then + pkgni=1 + x=${#pkg_names[@]} + i=${#pkgsni[@]} + fi + done + fi + let x++ + done + fi + + let i++ + done + fi + + if [ ${pkgni} -eq 0 ]; then + pkgs[${#pkgs[@]}]=${pkg} + pkg_versions[${#pkg_versions[@]}]=${pkg_version} + fi +done + +# Placeholder so we can do version comparisons between runs against native and +# kolab. +declare -a pkg_versions_native +declare -a pkg_versions_kolab + +if [ -x "$(which apt-cache 2>/dev/null)" ]; then + + rm -rf \ + /etc/apt/preferences.d/kolab* \ + /etc/apt/sources.list.d/kolab* + + apt-get update >/dev/null 2>&1 + + x=0 + while [ ${x} -lt ${#pkgs[@]} ]; do + pkg=${pkgs[${x}]} + + _pkg_names="" + pkg_versions_native[${x}]="" + + y=0 + while [ ${y} -lt ${#pkg_names[@]} ]; do + if [ "${pkg_names[${y}]}" == "${pkg}" ]; then + _pkg_names="${alt_names[${y}]} ${pkg_names[${y}]}" + break + fi + + let y++ + done + + if [ -z "${_pkg_names}" ]; then + _pkg_names="${pkg}" + fi + + for _pkg in ${_pkg_names}; do + if [ -z "${pkg_versions_native[${x}]}" ]; then + pkg_versions_native[${x}]=`apt-cache policy ${_pkg} | grep -E "\s{2}Candidate:" | sed -r -e 's/\s{2}Candidate: (.*)/\1/g' | grep -v "(none)"` + fi + done + + let x++ + done + + cat > /etc/apt/preferences.d/kolab <<EOF +Package: * +Pin: release o=Debian +Pin-Priority: 400 +EOF + + dist_codename=`facter lsbdistcodename` + if [ -z "${dist_codename}" ]; then + case $(facter lsbmajdistrelease) in + 6) + dist_codename="squeeze" + ;; + 7) + dist_codename="wheezy" + ;; + esac + fi + + cat > /etc/apt/sources.list.d/kolab-${kolab_version}.list <<EOF +deb http://mirror.kolabsys.com/pub/debian/kolab-${kolab_version} ${dist_codename} release updates updates-testing development +deb-src http://mirror.kolabsys.com/pub/debian/kolab-${kolab_version} ${dist_codename} release updates updates-testing development +EOF + + apt-get update >/dev/null 2>&1 + + x=0 + while [ ${x} -lt ${#pkgs[@]} ]; do + pkg=${pkgs[${x}]} + + _pkg_names="" + pkg_versions_kolab[${x}]="" + + y=0 + while [ ${y} -lt ${#pkg_names[@]} ]; do + if [ "${pkg_names[${y}]}" == "${pkg}" ]; then + _pkg_names="${alt_names[${y}]} ${pkg_names[${y}]}" + break + fi + + let y++ + done + + if [ -z "${_pkg_names}" ]; then + _pkg_names="${pkg}" + fi + + for _pkg in ${_pkg_names}; do + if [ -z "${pkg_versions_kolab[${x}]}" ]; then + pkg_versions_kolab[${x}]=`apt-cache policy ${_pkg} | grep -E "\s{2}Candidate:" | sed -r -e 's/\s{2}Candidate: (.*)/\1/g' | grep -v "(none)"` + fi + done + + let x++ + done + + x=0 + while [ ${x} -lt ${#pkgs[@]} ]; do + pkg=${pkgs[${x}]} + + wanted_version=${pkg_versions[${x}]} + + suffix="" + retval="" + + if [ ! -z "${wanted_version}" ]; then + if [ -z "${pkg_versions_kolab[${x}]}" ]; then + if [ ! -z "${pkg_versions_native[${x}]}" ]; then + retval=`version_compare "${pkg}" "${wanted_version}" "${pkg_versions_native[${x}]}"` + fi + else + retval=`version_compare "${pkg}" "${wanted_version}" "${pkg_versions_native[${x}]}"` + fi + fi + + # Native + if [ -z "${pkg_versions_native[${x}]}" ]; then + echo " | ${pkg} = Not Available${suffix}" >> ${package_list_native} + else + if [ ! -z "${retval}" -a "${retval}" == "0" -a ! -z "${wanted_version}" ]; then + suffix=" (Outdated, want ${wanted_version})" + fi + + echo " | ${pkg} = ${pkg_versions_native[${x}]}${suffix}" >> ${package_list_native} + fi + + # Kolab + if [ -z "${pkg_versions_kolab[${x}]}" ]; then + if [ -z "${pkg_versions_native[${x}]}" ]; then + echo " | ${pkg} = Not Available${suffix}" >> ${package_list_kolab} + else + if [ ! -z "${retval}" -a "${retval}" == "0" -a ! -z "${wanted_version}" ]; then + echo " | ${pkg} = Outdated" >> ${package_list_kolab} + else + echo " | ${pkg} = Not Applicable${suffix}" >> ${package_list_kolab} + fi + fi + else + if [ ! -z "${retval}" -a "${retval}" == "0" -a ! -z "${wanted_version}" ]; then + suffix=" (Outdated)" + fi + + echo " | ${pkg} = ${pkg_versions_kolab[${x}]}${suffix}" >> ${package_list_kolab} + fi + + let x++ + + done + + echo " | #default = Irrelevant" + + apt-get update >/dev/null 2>&1 + +else + x=0 + while [ ${x} -lt ${#pkgs[@]} ]; do + pkg=${pkgs[${x}]} + + _pkg_names="" + available_version_native="" + available_version_kolab="" + installed_version="" + + wanted_version=${pkg_versions[${x}]} + + y=0 + while [ ${y} -lt ${#pkg_names[@]} ]; do + if [ "${pkg_names[${y}]}" == "${pkg}" ]; then + _pkg_names="${pkg_names[${y}]} ${alt_names[${y}]}" + break + fi + + let y++ + done + + if [ -z "${_pkg_names}" ]; then + _pkg_names="${pkg}" + fi + + for _pkg in ${_pkg_names}; do + if [ -z "${available_version_native}" ]; then + available_version_native=`repoquery --disablerepo=\*kolab\* --disablerepo=\*rpmfusion\* --queryformat="%{VERSION}" ${_pkg} | tail -n 1` + fi + + if [ -z "${available_version_kolab}" ]; then + available_version_kolab=`repoquery --disablerepo=\* --enablerepo=kolab-${kolab_version} --enablerepo=kolab-${kolab_version}-updates --enablerepo=kolab-${kolab_version}-development --queryformat="%{VERSION}" ${_pkg} | tail -n 1` + fi + + if [ -z "${installed_version}" ]; then + installed_version=`rpmquery --queryformat="%{VERSION}" ${_pkg} 2>/dev/null | grep -v "not installed" | tail -n 1` + fi + + done + + suffix="" + retval="" + + if [ ! -z "${wanted_version}" ]; then + if [ -z "${available_version_kolab}" ]; then + if [ ! -z "${available_version_native}" ]; then + retval=`version_compare "${pkg}" "${wanted_version}" "${pkg_versions_native[${x}]}"` + fi + else + retval=`version_compare "${pkg}" "${wanted_version}" "${pkg_versions_native[${x}]}"` + fi + fi + + if [ -z "${installed_version}" ]; then + suffix=" (Not needed for installation)" + else + if [ ! -z "${retval}" -a "${retval}" == "0" -a ! -z "${wanted_version}" ]; then + suffix=" (Outdated, want ${wanted_version})" + fi + fi + + # Native + if [ -z "${available_version_native}" ]; then + echo " | ${pkg} = Not Available${suffix}" >> ${package_list_native} + else + echo " | ${pkg} = ${available_version_native}${suffix}" >> ${package_list_native} + fi + + # Kolab + if [ -z "${available_version_kolab}" ]; then + if [ -z "${available_version_native}" ]; then + echo " | ${pkg} = Not Available${suffix}" >> ${package_list_kolab} + fi + else + echo " | ${pkg} = ${available_version_kolab}${suffix}" >> ${package_list_kolab} + fi + + let x++ + + done + +fi + +echo ""; echo "== Native Packages =="; echo "" +cat ${package_list_native} | sort -u +echo " | #default = OK" + + +echo ""; echo "== Kolab Packages =="; echo "" +cat ${package_list_kolab} | sort -u +echo " | #default = OK" |