summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>2012-08-23 12:58:26 (GMT)
committerJeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>2012-08-23 12:58:26 (GMT)
commit916c3e2934b13bbb4f40b9fb9f04ed84cf142407 (patch)
treecfdd4d39661014c579349d948a81d96972e25467
parentac3c06213465512c0c6f01c5bad882edfd846039 (diff)
downloadkolab-scripts-916c3e2934b13bbb4f40b9fb9f04ed84cf142407.tar.gz
Add package-version-matrix.sh
-rwxr-xr-xpackage-version-matrix/package-versions-matrix.sh871
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"