aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2011-01-08 02:18:55 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2011-01-08 02:18:55 +0000
commite6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea (patch)
tree87f0f269c1cb104a21376ceb2c16dcda2bc33e57
parent4e3cd9489085923fcb20993f62f59632cedb03f3 (diff)
downloadperl-URPM-e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea.tar
perl-URPM-e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea.tar.gz
perl-URPM-e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea.tar.bz2
perl-URPM-e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea.tar.xz
perl-URPM-e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea.zip
merge rpm5 branch
-rw-r--r--MANIFEST1
-rw-r--r--Makefile.PL28
-rw-r--r--NEWS49
-rw-r--r--TODO6
-rw-r--r--URPM.pm43
-rw-r--r--URPM.xs1789
-rw-r--r--URPM/Resolve.pm2
-rw-r--r--t/parse.t19
-rw-r--r--t/res/basesystem-minimal.resolve.nosuggests141
-rw-r--r--t/res/basesystem.resolve.suggests527
-rw-r--r--t/res/synthesis.hdlist.xzbin0 -> 550284 bytes
-rw-r--r--t/res/task-kde4.resolve.suggests2059
-rw-r--r--t/resolve.t71
-rw-r--r--t/synthesis.t18
-rw-r--r--xfile.h176
15 files changed, 4005 insertions, 924 deletions
diff --git a/MANIFEST b/MANIFEST
index cf8bc4f..988e406 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2,6 +2,7 @@ README
MANIFEST
Makefile.PL
typemap
+xfile.h
URPM.xs
URPM.pm
URPM/Build.pm
diff --git a/Makefile.PL b/Makefile.PL
index 0308b27..cc74aa4 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -21,13 +21,9 @@ sub hexversion {
return int($major<<16) + int($minor<<8) + int($micro<<0)
}
-my $version = `LC_ALL=C $rpm_path --version`;
-# fix compiling with RCs:
-$version =~ s/(-.*)|(\.DEVEL)//;
-chomp $version;
-$version =~ s/(RPM version )|(rpm \(RPM\) )//;
+my $version = `pkg-config --modversion rpm`;
my $hversion = hexversion($version);
-$hversion ge hexversion("4.2") or die "Unable to build URPM with too old (or undetected) rpm version $version\n";
+$hversion ge hexversion("5.3") or die "Unable to build URPM with too old (or undetected) rpm version $version\n";
# to generate the ChangeLog depending on the checkout layout
my $commonusername = "../common/";
@@ -49,14 +45,12 @@ ChangeLog:
**MM**
}
-my @rpmflags;
-my $ldflags = `pkg-config --libs rpm`;
-if ($hversion ge hexversion("4.4.90") && $hversion lt hexversion("5.0")) {
- # rpm.org version
- push @rpmflags, "-DRPM_ORG";
- $ldflags .= ' -lrpmbuild';
-}
-my $ccflags = join(' ', '-Wall -Wextra -fno-strict-aliasing', @rpmflags);
+my $ldflags = `pkg-config --libs rpm liblzma`;
+chomp($ldflags);
+$ldflags .= " -lmagic";
+my $includes = `pkg-config --cflags-only-I rpm liblzma`;
+my $ccflags = join(' ', '-Wall -Wextra -fno-strict-aliasing', `pkg-config --cflags-only-other rpm liblzma`);
+chomp($ccflags);
print "Found RPM version $version (compiling with flags: $ccflags)\n";
@@ -67,8 +61,8 @@ WriteMakefile(
},
CCFLAGS => $ccflags,
VERSION_FROM => 'URPM.pm',
- LIBS => [ $ldflags ],
- INC => '-I/usr/include/rpm',
- dist => { COMPRESS => "bzip2", SUFFIX => ".bz2" },
+ dynamic_lib => { OTHERLDFLAGS => $ldflags },
+ INC => $includes,
+ dist => { COMPRESS => "xz -f", SUFFIX => ".xz" },
realclean => { FILES => "t/RPMS/noarch/*" },
);
diff --git a/NEWS b/NEWS
index 65c9c41..3912b21 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,54 @@
-Version 3.38 - 16 November 2010
+Version 4.4 - 6 Jan 2011, by Per Øyvind Karlsen
+
+- check URPM::Transactin::add() for errors and return them if any (#61746)
+- make URPM::Package::get_tag() & URPM::Package::get_tag_modifiers() accept
+ string name of tags
+- URPM::DB::traverse_tag() & URPM::DB::traverse_tag_find() will now accept
+ all available rpm tags
+
+Version 4.3 - 11 Dec 2010, by Per Øyvind Karlsen
+
+- fix issue with packages added to synthesis having disttag/disttag, but without
+ those added to NVRA, leading to segfault
+- fix broken support for parsing hdlists, use rpmgi iterator from rpmlib to
+ simplify code and get packages ordered as an extra benefit in the process.
+- URPM::Package::fullname will now always return six items for array in stead
+ of four to make room for disttag & distepoch, arch will still be returned as
+ last item (ie. array[5] in stead of array[3]) (#61702)
+- URPM::Package::files_md5sum() has been renamed to URPM::Package::files_digest()
+- fix NEVRA parsing of 'gpg-pubkey'
+
+Version 4.2 - 3 Dec 2010, by Per Øyvind Karlsen
+
+- fix URPM::Package::files()
+
+Version 4.1 - 19 Nov 2010, by Per Øyvind Karlsen
+
+- improve return value checking on headerGet() usage
+- fix update_provides_files with RPMTAG_OLDFILENAMES
+- ditch legacy compatibility use of headerPut() on FILENAME_TAG
+
+Version 4.0 - 11 Nov 2010, by Per Øyvind Karlsen
+
+- add support for uncompressed & xz/lzma compressed synthesis
+- fix URPM::DB::open() to work properly with relative paths
+- ditch legacy behaviour compatibility for packages without epoch, always promote
+ epoch
+- pick up package name format from %_build_name_fmt rather than hardcoding it
+- add URPM::Package::evr()
+- add URPM::rpmEVRcmp() & URPM::rpmEVRcompare()
+- add regression tests for resolving
+- use rpmEVRcompare() from rpmlib everywhere
+- add full support for %distepoch/%disttag
+- refactorize code
+- rewrite for native rpm5 API (ditching rpm.org compatibility)
+
+Version 3.38 - 16 November 2010, by Joao Victor Martins
- fix the key parsing to handle PEM encapsulated header portion (bug
#61636)
-Version 3.37 - 20 September 2010
+Version 3.37 - 20 October 2010
- fix crashing on undefined packages (#54521)
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..8ba27a8
--- /dev/null
+++ b/TODO
@@ -0,0 +1,6 @@
+* downgrade support
+* symlink & parentdir dependencies
+
+* RPM ACID
+** enabler/disabler?
+** bdb transaction log cleaning (ie. using db_archive)
diff --git a/URPM.pm b/URPM.pm
index f94ab99..29d5b28 100644
--- a/URPM.pm
+++ b/URPM.pm
@@ -11,7 +11,7 @@ use URPM::Resolve;
use URPM::Signature;
our @ISA = qw(DynaLoader);
-our $VERSION = '3.38';
+our $VERSION = '4.4';
URPM->bootstrap($VERSION);
@@ -311,7 +311,7 @@ parse_synthesis()).
Force the re-reading of the RPM configuration files.
-=item URPM::ranges_overlap($range1, $range2 [, $nopromoteepoch])
+=item URPM::ranges_overlap($range1, $range2)
This utility function compares two version ranges, in order to calculate
dependencies properly. The ranges have roughly the form
@@ -320,12 +320,13 @@ dependencies properly. The ranges have roughly the form
where epoch, version and release are RPM-style version numbers.
-If the optional parameter $nopromoteepoch is true, and if the 2nd range has no
-epoch while the first one has one, then the 2nd range is assumed to have an
-epoch C<== 0>.
+=item URPM::rpmEVRcmp($a, $b)
-B<Warning>: $nopromoteepoch actually defaults to 1, so if you're going to
-pass a variable, make sure undef is treated like 1, not 0.
+Segmented string compare.
+
+=item URPM::rpmEVRcompare($a, $b)
+
+Compare EVR containers for equality.
=item $urpm->parse_synthesis($file [, callback => sub {...} ])
@@ -517,6 +518,8 @@ Writes a line of information in a synthesis file.
=item $package->epoch()
+=item $package->evr()
+
=item $package->excludearchs()
=item $package->exclusivearchs()
@@ -527,14 +530,14 @@ Writes a line of information in a synthesis file.
List of files in this rpm.
+=item $package->files_digest()
+
=item $package->files_flags()
=item $package->files_gid()
=item $package->files_group()
-=item $package->files_md5sum()
-
=item $package->files_mode()
=item $package->files_mtime()
@@ -569,13 +572,13 @@ List of files in this rpm.
=item $package->fullname()
-Returns a 4 element list: name, version, release and architecture in an array
-context. Returns a string NAME-VERSION-RELEASE.ARCH in scalar context.
+Returns a 6 element list: name, version, release, disttag, distepoch and architecture
+in an array context. Returns a string NAME-VERSION-RELEASE[-DISTTAGDISTEPOCH].ARCH
+in scalar context.
-=item $package->get_tag($tagid)
+=item $package->get_tag($tagname)
-Returns an array containing values of $tagid. $tagid is the numerical value of
-rpm tags. See rpmlib.h.
+Returns an array containing values of $tagname. $tagname is the name of a valid rpm tag.
=item $package->queryformat($format)
@@ -584,9 +587,9 @@ Querying the package like rpm --queryformat do.
The function calls directly the rpmlib, then use header informations, so it
silently failed if you use synthesis instead of hdlist/rpm/header files or rpmdb.
-=item $package->get_tag_modifiers($tagid)
+=item $package->get_tag_modifiers($tagname)
-Return an array of human readable view of tag values. $tagid is the numerical value of rpm tags.
+Return an array of human readable view of tag values. $tagname is the name of a valid rpm tag.
=item $package->group()
@@ -616,7 +619,7 @@ The rpm's bare name.
=item $package->obsoletes_nosense()
-=item $package->obsoletes_overlap($s, [$nopromoteepoch, [$direction] ])
+=item $package->obsoletes_overlap($s, [$direction])
=item $package->os()
@@ -630,7 +633,7 @@ The rpm's bare name.
=item $package->provides_nosense()
-=item $package->provides_overlap($s, [$nopromoteepoch,] [$direction])
+=item $package->provides_overlap($s, [$direction])
=item $package->rate()
@@ -869,9 +872,9 @@ B<transaction_state>: $state object
Copyright 2002, 2003, 2004, 2005 MandrakeSoft SA
-Copyright 2005, 2006, 2007, 2008 Mandriva SA
+Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 Mandriva SA
-FranE<ccedil>ois Pons (original author), Rafael Garcia-Suarez, Pixel <pixel@mandriva.com> (current maintainer)
+FranE<ccedil>ois Pons (original author), Rafael Garcia-Suarez, Pascal "Pixel" Rigaux, Christophe Fergeau, Per E<macr>yvind Karlsen <peroyvind@mandriva.org> (current maintainer)
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
diff --git a/URPM.xs b/URPM.xs
index ff6af0f..bc1e0ea 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -1,5 +1,5 @@
/* Copyright (c) 2002, 2003, 2004, 2005 MandrakeSoft SA
- * Copyright (c) 2005, 2006, 2007, 2008 Mandriva SA
+ * Copyright (c) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Mandriva SA
*
* All rights reserved.
* This program is free software; you can redistribute it and/or
@@ -20,7 +20,6 @@
#include <sys/wait.h>
#include <fcntl.h>
#include <unistd.h>
-#include <zlib.h>
#include <libintl.h>
#undef Fflush
@@ -28,25 +27,23 @@
#undef Stat
#undef Fstat
-#ifdef RPM_ORG
-static inline void *_free(const void * p) {
- if (p != NULL) free((void *)p);
- return NULL;
-}
-typedef struct rpmSpec_s * Spec;
-#else
-#include <rpm/rpm46compat.h>
-#endif
+#define _RPMGI_INTERNAL
+#define _RPMEVR_INTERNAL
+#define _RPMPS_INTERNAL
-#include <rpm/rpmio.h>
-#include <rpm/rpmdb.h>
-#include <rpm/rpmts.h>
-#include <rpm/rpmte.h>
-#include <rpm/rpmps.h>
-#include <rpm/rpmpgp.h>
-#include <rpm/rpmcli.h>
-#include <rpm/rpmbuild.h>
-#include <rpm/rpmlog.h>
+#include <rpmio.h>
+#include <rpmtag.h>
+#include <rpmdb.h>
+#include <pkgio.h>
+#include <rpmcb.h>
+#include <rpmte.h>
+#include <rpmps.h>
+#include <rpmbuild.h>
+#include <rpmgi.h>
+#include <rpmlog.h>
+#include <rpmconstant.h>
+
+#include "xfile.h"
struct s_Package {
char *info;
@@ -100,33 +97,48 @@ typedef struct s_Package* URPM__Package;
#define FLAG_RATE_INVALID 0
-#define FILENAME_TAG 1000000
-#define FILESIZE_TAG 1000001
-
#define FILTER_MODE_ALL_FILES 0
#define FILTER_MODE_CONF_FILES 2
-/* promote epoch sense should be :
- 0 for compability with old packages
- 1 for rpm 4.2 and better new approach. */
-#define PROMOTE_EPOCH_SENSE 1
-
-static ssize_t write_nocheck(int fd, const void *buf, size_t count) {
+static ssize_t
+write_nocheck(int fd, const void *buf, size_t count) {
return write(fd, buf, count);
}
-static const void* unused_variable(const void *p) {
+
+static const void*
+unused_variable(const void *p) {
return p;
}
static int rpmError_callback_data;
-int rpmError_callback() {
+static int
+rpmError_callback() {
write_nocheck(rpmError_callback_data, rpmlogMessage(), strlen(rpmlogMessage()));
return RPMLOG_DEFAULT;
}
static int rpm_codeset_is_utf8 = 0;
+static struct s_backup {
+ char *ptr;
+ char chr;
+} char_backups[32];
+
+static int BI = 0;
+
+static void
+backup_char(char *c) {
+ char_backups[BI].chr = *c,
+ *(char_backups[BI++].ptr = &(*c)) = 0; /* mark end of string to enable searching backwards */
+}
+
+static void
+restore_chars() {
+ for(; BI > 0; char_backups[BI].ptr = NULL)
+ BI--, *char_backups[BI].ptr = char_backups[BI].chr;
+}
+
static SV*
newSVpv_utf8(const char *s, STRLEN len)
{
@@ -135,47 +147,253 @@ newSVpv_utf8(const char *s, STRLEN len)
return sv;
}
+/* XXX: RPMTAG_NVRA doesn't have disttag & distepoch */
+#if 0
+static const char *
+get_nvra(Header header) {
+ HE_t val = (HE_t)memset(alloca(sizeof(*val)), 0, sizeof(*val));
+
+ val->tag = RPMTAG_NVRA;
+ if(headerGet(header, val, 0))
+ return val->p.str;
+ return "";
+}
+
+#else
+
+/* Since the NVRA format won't change, we'll store it in a global variable so
+ * that we only have to expand the macro once.
+ */
+static const char *nvra_fmt = NULL;
+
+static const char *
+get_nvra_fmt() {
+ if(!nvra_fmt) {
+ char *qfmt = rpmExpand("%{?___NVRA:%___NVRA}%{?!___NVRA:/%_build_name_fmt}", NULL);
+ /* On older rpm versions '%___NVRA' isn't defined, so then we'll have to create
+ * it from the '%_build_name_fmt'
+ */
+ if(qfmt[0] == '/') {
+ char *tmp;
+ const char macroName[] = "___NVRA";
+ if(strcasecmp(tmp = qfmt+strlen(qfmt)-4, ".rpm") == 0)
+ *tmp = '\0';
+ tmp = qfmt;
+ /* As %{ARCH} will be incorrect with source rpms, we replace it with a
+ * conditional expression so that we get '.src.rpm' for source rpms.
+ * This we'll do in a uhm.. "creative" way replacing '%{ARCH}' with '%{XXXX}',
+ * which is a macro we'll define for the conditional expression,
+ * when expanded it will return the format macro with the conditional
+ * expression.
+ */
+ while((size_t)(tmp = strcasestr(tmp, "%{ARCH}")+2) != 2)while(*tmp != '}')
+ *tmp++ = 'X';
+
+ rpmDefineMacro(NULL, "XXXX %%|ARCH?{%%|SOURCERPM?{%%{ARCH}}:{src}|}:{}|", RMIL_DEFAULT);
+ tmp = rpmExpand((tmp = strrchr(qfmt, '/')) ? tmp+1 : qfmt, NULL);
+
+ qfmt = realloc(qfmt, strlen(tmp) + sizeof(macroName)+1);
+ sprintf(qfmt, "%s %s", macroName, tmp);
+ rpmDefineMacro(NULL, qfmt, RMIL_DEFAULT);
+ sprintf(qfmt, "%s", qfmt+sizeof(macroName));
+ _free(tmp);
+ }
+ nvra_fmt = qfmt;
+ }
+ return nvra_fmt;
+}
+
+static const char *
+get_nvra(Header h) {
+ const char *qfmt = get_nvra_fmt();
+ const char *NVRA = headerSprintf(h, qfmt, NULL, NULL, NULL);
+ return NVRA;
+}
+
+#endif
+
+static int
+do_rpmEVRcompare(const char *a, const char *b) {
+ int compare;
+
+ EVR_t lEVR = rpmEVRnew(RPMSENSE_EQUAL, 0),
+ rEVR = rpmEVRnew(RPMSENSE_EQUAL, 0);
+ rpmEVRparse(a, lEVR);
+ rpmEVRparse(b, rEVR);
+ compare = rpmEVRcompare(lEVR, rEVR);
+ lEVR = rpmEVRfree(lEVR),
+ rEVR = rpmEVRfree(rEVR);
+ return compare;
+}
+
+static rpmTag
+rpmtag_from_string(const char *tag)
+{
+ static rpmconst tag_c = NULL,
+ qv_c = NULL;
+ static const char tag_context[] = "rpmtag",
+ qv_context[] = "rpmqvsources";
+ /* XXX: rpmcli.h: @todo Reassign to tag values. */
+ if (!strcmp(tag, "whatprovides"))
+ return RPMTAG_PROVIDENAME;
+ else if (!strcmp(tag, "whatrequires"))
+ return RPMTAG_REQUIRENAME;
+ else if (!strcmp(tag, "path"))
+ return RPMTAG_BASENAMES;
+
+ if(tag_c == NULL) {
+ tag_c = rpmconstNew();
+ if(!rpmconstInitToContext(tag_c, tag_context))
+ croak("unknown context [%s]", tag_context);
+ }
+ if(rpmconstFindName(tag_c, tag, 0))
+ return rpmconstValue(tag_c);
+ if(qv_c == NULL) {
+ qv_c = rpmconstNew();
+ if(!rpmconstInitToContext(qv_c, qv_context))
+ croak("unknown context [%s]", qv_context);
+ }
+ if(rpmconstFindName(qv_c, tag, 0))
+ return rpmconstValue(qv_c);
+ croak("unknown tag [%s]", tag);
+}
+
+static const char *
+get_name(Header header, rpmTag tag) {
+ HE_t val = (HE_t)memset(alloca(sizeof(*val)), 0, sizeof(*val));
+
+ val->tag = tag;
+ if(headerGet(header, val, 0)) {
+ if (val->t == RPM_STRING_TYPE)
+ return val->p.str;
+ else if(val->t == RPM_STRING_ARRAY_TYPE || val->t == RPM_I18NSTRING_TYPE)
+ return val->p.argv[val->ix];
+ }
+ return "";
+}
+
+static int
+get_int(Header header, rpmTag tag) {
+ HE_t val = (HE_t)memset(alloca(sizeof(*val)), 0, sizeof(*val));
+ int ret = 0;
+
+ val->tag = tag;
+ if(headerGet(header, val, 0)) {
+ ret = (val->t == RPM_UINT32_TYPE) ? val->p.ui32p[val->ix >= 0 ? val->ix : 0] : 0;
+ val->p.ui32p = _free(val->p.ui32p);
+ }
+ return ret;
+}
+
+/* This function might modify strings that needs to be reverted after use
+ * with restore_chars()
+ */
+static const char *
+get_evr(URPM__Package pkg) {
+ const char *evr = NULL;
+ if(pkg->provides) {
+ evr = strrchr(pkg->provides, ' ')+1;
+ char *tmp = strrchr(evr, ']');
+ if(tmp)
+ backup_char(tmp);
+ } else if(pkg->h) {
+ HE_t val = (HE_t)memset(alloca(sizeof(*val)), 0, sizeof(*val));
+ val->tag = RPMTAG_PROVIDEVERSION;
+ headerGet(pkg->h, val, 0);
+ evr = val->p.argv[val->c-1];
+ }
+ return evr;
+}
+
+/* This function might modify strings that needs to be restored after use
+ * with restore_chars()
+ */
static void
-get_fullname_parts(URPM__Package pkg, char **name, char **version, char **release, char **arch, char **eos) {
- char *_version = NULL, *_release = NULL, *_arch = NULL, *_eos = NULL;
+get_fullname_parts_info(URPM__Package pkg, char **name, int *epoch, char **version, char **release, char **disttag, char **distepoch, char **arch, char **eos) {
+ char *_version = NULL, *_release = NULL, *_disttag = NULL, *_distepoch = NULL, *_arch = NULL, *_eos = NULL, *tmp = NULL, *tmp2 = NULL;
+ /* XXX: Could've probably be written in a more generic way, only thing we
+ * really want to do is to check for arch field, which will be missing in
+ * the case of gpg-pubkey at least..
+ */
+ int pubkey;
if ((_eos = strchr(pkg->info, '@')) != NULL) {
- *_eos = 0; /* mark end of string to enable searching backwards */
- if ((_arch = strrchr(pkg->info, '.')) != NULL) {
- *_arch = 0;
- if ((release != NULL || version != NULL || name != NULL) && (_release = strrchr(pkg->info, '-')) != NULL) {
- *_release = 0;
- if ((version != NULL || name != NULL) && (_version = strrchr(pkg->info, '-')) != NULL) {
- if (name != NULL) *name = pkg->info;
- if (version != NULL) *version = _version + 1;
+ if (epoch != NULL) *epoch = isdigit(_eos[1]) ? atoi(_eos+1) : 0;
+ if (name != NULL || version != NULL || release != NULL || disttag != NULL || distepoch != NULL || arch != NULL) {
+ backup_char(_eos++);
+ if (eos != NULL) *eos = _eos;
+ if ((pubkey = !strncmp(pkg->info, "gpg-pubkey", 10)) || (_arch = strrchr(pkg->info, '.')) != NULL) {
+ if (!pubkey)
+ backup_char(_arch++);
+ if (arch != NULL) *arch = pubkey ? "" : _arch;
+ if (distepoch != NULL || disttag != NULL || release != NULL || version != NULL || name != NULL) {
+ if ((_distepoch = strchr(strrchr(pkg->provides, '-'), ':')) != NULL) {
+ if ((tmp = strrchr(++_distepoch, ']'))) {
+ backup_char(tmp);
+ if ((tmp = strstr(pkg->info, _distepoch)))
+ backup_char(tmp);
+ else {
+ /* If synthesis is generated with older versions, disttag & distepoch will
+ * not be part of NVRA at beginning of line, but as it'll still be part of
+ * filename which is located at end of line, we can live with it as long
+ * as we're aware of it and take the necessary precautions to cope.
+ */
+ if ((tmp = strrchr(_eos, '-'))) {
+ if ((tmp2 = strstr(tmp++, _distepoch))) {
+ backup_char(tmp2);
+ _disttag = tmp;
+ }
+ }
+ }
+ }
+ }
+ if (distepoch != NULL) *distepoch = _distepoch ? _distepoch : "";
+ if (disttag != NULL || release != NULL || version != NULL || name != NULL) {
+ if (_disttag == NULL) {
+ /* XXX: re-verify this logic, see comment above.. */
+ if ((_disttag = strrchr(pkg->info, '-')) != NULL && (strstr(pkg->provides, _disttag)) == NULL) {
+ backup_char(_disttag++);
+ } else _disttag = NULL;
+ }
+ if (disttag != NULL) *disttag = _disttag ? _disttag : "";
+ if ((release != NULL || version != NULL || name != NULL) && (_release = strrchr(pkg->info, '-')) != NULL) {
+ backup_char(_release++);
+ if (release != NULL) *release = _release;
+ if ((version != NULL || name != NULL) && (_version = strrchr(pkg->info, '-')) != NULL) {
+ backup_char(_version++);
+ if (version != NULL) *version = _version;
+ if (name != NULL) *name = pkg->info;
+ }
+ }
+ }
}
- if (release != NULL) *release = _release + 1;
- *_release = '-';
}
- if (arch != NULL) *arch = _arch + 1;
- *_arch = '.';
}
- if (eos != NULL) *eos = _eos;
- *_eos = '@';
}
}
-static char *
-get_name(Header header, int32_t tag) {
- struct rpmtd_s val;
-
- headerGet(header, tag, &val, HEADERGET_MINMEM);
- char *name = (char *) rpmtdGetString(&val);
- return name ? name : "";
+static void
+get_fullname_parts_header(Header h, char **name, int *epoch, char **version, char **release, char **disttag, char **distepoch, char **arch, char **eos) {
+ if (name != NULL) *name = (char*)get_name(h, RPMTAG_NAME);
+ if (epoch != NULL) *epoch = get_int(h, RPMTAG_EPOCH);
+ if (version != NULL) *version = (char*)get_name(h, RPMTAG_VERSION);
+ if (release != NULL) *release = (char*)get_name(h, RPMTAG_RELEASE);
+ if (disttag != NULL) *disttag = (char*)get_name(h, RPMTAG_DISTTAG);
+ if (distepoch != NULL) *distepoch = (char*)get_name(h, RPMTAG_DISTEPOCH);
+ if (arch != NULL) *arch = headerIsEntry(h, RPMTAG_SOURCERPM) ? (char*)get_name(h, RPMTAG_ARCH) : "src";
+ if (eos != NULL) *eos = NULL;
}
static int
-get_int(Header header, int32_t tag) {
- struct rpmtd_s val;
+get_fullname_parts(URPM__Package pkg, char **name, int *epoch, char **version, char **release, char **disttag, char **distepoch, char **arch, char **eos) {
+ if(pkg->info)
+ get_fullname_parts_info(pkg, name, epoch, version, release, disttag, distepoch, arch, eos);
+ else if(pkg->h)
+ get_fullname_parts_header(pkg->h, name, epoch, version, release, disttag, distepoch, arch, eos);
+ else
+ return 1;
- headerGet(header, tag, &val, HEADERGET_DEFAULT);
- uint32_t *ep = rpmtdGetUint32(&val);
- return ep ? *ep : 0;
+ return 0;
}
static int
@@ -184,14 +402,15 @@ sigsize_to_filesize(int sigsize) {
}
static int
-print_list_entry(char *buff, int sz, const char *name, uint32_t flags, const char *evr) {
+print_list_entry(char *buff, int sz, const char *name, rpmsenseFlags flags, const char *evr) {
int len = strlen(name);
char *p = buff;
if (len >= sz || !strncmp(name, "rpmlib(", 7)) return -1;
memcpy(p, name, len); p += len;
- if (flags & (RPMSENSE_PREREQ|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_SCRIPT_POST)) {
+ /* XXX: RPMSENSE_PREREQ obsolete, remove? */
+ if (flags & (RPMSENSE_PREREQ|RPMSENSE_TRIGGER)) {
if (p - buff + 3 >= sz) return -1;
memcpy(p, "[*]", 4); p += 3;
}
@@ -199,13 +418,10 @@ print_list_entry(char *buff, int sz, const char *name, uint32_t flags, const cha
len = strlen(evr);
if (len > 0) {
if (p - buff + 6 + len >= sz) return -1;
+ static const char *Fstr[] = { "?0","<",">","?3","==","<=",">=","?7" };
+ uint32_t Fx = ((flags >> 1) & 0x7);
*p++ = '[';
- if (flags & RPMSENSE_LESS) *p++ = '<';
- if (flags & RPMSENSE_GREATER) *p++ = '>';
- if (flags & RPMSENSE_EQUAL) *p++ = '=';
- if ((flags & (RPMSENSE_LESS|RPMSENSE_EQUAL|RPMSENSE_GREATER)) == RPMSENSE_EQUAL) *p++ = '=';
- *p++ = ' ';
- memcpy(p, evr, len); p+= len;
+ p = stpcpy( stpcpy( stpcpy(p, Fstr[Fx]), " "), evr);
*p++ = ']';
}
}
@@ -215,85 +431,46 @@ print_list_entry(char *buff, int sz, const char *name, uint32_t flags, const cha
}
static int
-ranges_overlap(uint32_t aflags, char *sa, uint32_t bflags, char *sb, int b_nopromote) {
+ranges_overlap(rpmsenseFlags aflags, char *sa, rpmsenseFlags bflags, char *sb) {
if (!aflags || !bflags)
return 1; /* really faster to test it there instead of later */
else {
- int sense = 0;
char *eosa = strchr(sa, ']');
char *eosb = strchr(sb, ']');
- char *ea, *va, *ra, *eb, *vb, *rb;
-
- if (eosa) *eosa = 0;
- if (eosb) *eosb = 0;
- /* parse sa as an [epoch:]version[-release] */
- for (ea = sa; *sa >= '0' && *sa <= '9'; ++sa);
- if (*sa == ':') {
- *sa++ = 0; /* ea could be an empty string (should be interpreted as 0) */
- va = sa;
- } else {
- va = ea; /* no epoch */
- ea = NULL;
- }
- if ((ra = strrchr(sa, '-'))) *ra++ = 0;
- /* parse sb as an [epoch:]version[-release] */
- for (eb = sb; *sb >= '0' && *sb <= '9'; ++sb);
- if (*sb == ':') {
- *sb++ = 0; /* ea could be an empty string (should be interpreted as 0) */
- vb = sb;
- } else {
- vb = eb; /* no epoch */
- eb = NULL;
- }
- if ((rb = strrchr(sb, '-'))) *rb++ = 0;
- /* now compare epoch */
- if (ea && eb)
- sense = rpmvercmp(*ea ? ea : "0", *eb ? eb : "0");
- else if (ea && *ea && atol(ea) > 0)
- sense = b_nopromote ? 1 : 0;
- else if (eb && *eb && atol(eb) > 0)
- sense = -1;
- /* now compare version and release if epoch has not been enough */
- if (sense == 0) {
- sense = rpmvercmp(va, vb);
- if (sense == 0 && ra && *ra && rb && *rb)
- sense = rpmvercmp(ra, rb);
- }
- /* restore all character that have been modified inline */
- if (rb) rb[-1] = '-';
- if (ra) ra[-1] = '-';
- if (eb) vb[-1] = ':';
- if (ea) va[-1] = ':';
- if (eosb) *eosb = ']';
- if (eosa) *eosa = ']';
- /* finish the overlap computation */
- if (sense < 0 && ((aflags & RPMSENSE_GREATER) || (bflags & RPMSENSE_LESS)))
- return 1;
- else if (sense > 0 && ((aflags & RPMSENSE_LESS) || (bflags & RPMSENSE_GREATER)))
- return 1;
- else if (sense == 0 && (((aflags & RPMSENSE_EQUAL) && (bflags & RPMSENSE_EQUAL)) ||
- ((aflags & RPMSENSE_LESS) && (bflags & RPMSENSE_LESS)) ||
- ((aflags & RPMSENSE_GREATER) && (bflags & RPMSENSE_GREATER))))
- return 1;
- else
- return 0;
+ EVR_t lEVR = rpmEVRnew(aflags, 0),
+ rEVR = rpmEVRnew(bflags, 0);
+ int result;
+
+ if(eosa) backup_char(eosa);
+ if(eosb) backup_char(eosb);
+ rpmEVRparse(sa, lEVR);
+ rpmEVRparse(sb, rEVR);
+ /* TODO: upstream bug? should rpmEVRparse really reset Flags? */
+ lEVR->Flags = aflags;
+ rEVR->Flags = bflags;
+ result = rpmEVRoverlap(lEVR, rEVR);
+ rpmEVRfree(lEVR);
+ rpmEVRfree(rEVR);
+ restore_chars();
+
+ return result;
}
}
static int has_old_suggests;
-int32_t is_old_suggests(int32_t flags) {
- int is = flags & RPMSENSE_MISSINGOK;
+rpmsenseFlags is_old_suggests(rpmsenseFlags flags) {
+ rpmsenseFlags is = flags & RPMSENSE_MISSINGOK;
if (is) has_old_suggests = is;
return is;
}
-int32_t is_not_old_suggests(int32_t flags) {
+rpmsenseFlags is_not_old_suggests(rpmsenseFlags flags) {
return !is_old_suggests(flags);
}
-typedef int (*callback_list_str)(char *s, int slen, const char *name, const uint32_t flags, const char *evr, void *param);
+typedef int (*callback_list_str)(char *s, int slen, const char *name, const rpmsenseFlags flags, const char *evr, void *param);
static int
-callback_list_str_xpush(char *s, int slen, const char *name, uint32_t flags, const char *evr, __attribute__((unused)) void *param) {
+callback_list_str_xpush(char *s, int slen, const char *name, rpmsenseFlags flags, const char *evr, __attribute__((unused)) void *param) {
dSP;
if (s) {
XPUSHs(sv_2mortal(newSVpv(s, slen)));
@@ -308,7 +485,7 @@ callback_list_str_xpush(char *s, int slen, const char *name, uint32_t flags, con
return 0;
}
static int
-callback_list_str_xpush_requires(char *s, int slen, const char *name, const uint32_t flags, const char *evr, __attribute__((unused)) void *param) {
+callback_list_str_xpush_requires(char *s, int slen, const char *name, const rpmsenseFlags flags, const char *evr, __attribute__((unused)) void *param) {
dSP;
if (s) {
XPUSHs(sv_2mortal(newSVpv(s, slen)));
@@ -323,7 +500,7 @@ callback_list_str_xpush_requires(char *s, int slen, const char *name, const uint
return 0;
}
static int
-callback_list_str_xpush_old_suggests(char *s, int slen, const char *name, uint32_t flags, const char *evr, __attribute__((unused)) void *param) {
+callback_list_str_xpush_old_suggests(char *s, int slen, const char *name, rpmsenseFlags flags, const char *evr, __attribute__((unused)) void *param) {
dSP;
if (s) {
XPUSHs(sv_2mortal(newSVpv(s, slen)));
@@ -340,14 +517,13 @@ callback_list_str_xpush_old_suggests(char *s, int slen, const char *name, uint32
struct cb_overlap_s {
char *name;
- int32_t flags;
+ rpmsenseFlags flags;
char *evr;
int direction; /* indicate to compare the above at left or right to the iteration element */
- int b_nopromote;
};
static int
-callback_list_str_overlap(char *s, int slen, const char *name, uint32_t flags, const char *evr, void *param) {
+callback_list_str_overlap(char *s, int slen, const char *name, rpmsenseFlags flags, const char *evr, void *param) {
struct cb_overlap_s *os = (struct cb_overlap_s *)param;
int result = 0;
char *eos = NULL;
@@ -381,9 +557,9 @@ callback_list_str_overlap(char *s, int slen, const char *name, uint32_t flags, c
if (!strcmp(name, os->name)) {
/* perform overlap according to direction needed, negative for left */
if (os->direction < 0)
- result = ranges_overlap(os->flags, os->evr, flags, (char *) evr, os->b_nopromote);
+ result = ranges_overlap(os->flags, os->evr, flags, (char *) evr);
else
- result = ranges_overlap(flags, (char *) evr, os->flags, os->evr, os->b_nopromote);
+ result = ranges_overlap(flags, (char *) evr, os->flags, os->evr);
}
/* fprintf(stderr, "cb_list_str_overlap result=%d, os->direction=%d, os->name=%s, os->evr=%s, name=%s, evr=%s\n",
@@ -397,7 +573,7 @@ callback_list_str_overlap(char *s, int slen, const char *name, uint32_t flags, c
}
static int
-return_list_str(char *s, Header header, int32_t tag_name, int32_t tag_flags, int32_t tag_version, callback_list_str f, void *param) {
+return_list_str(char *s, Header header, rpmTag tag_name, rpmTag tag_flags, rpmTag tag_version, callback_list_str f, void *param) {
int count = 0;
if (s != NULL) {
@@ -424,148 +600,153 @@ return_list_str(char *s, Header header, int32_t tag_name, int32_t tag_flags, int
if (f(s, eos ? eos-s : 0, NULL, 0, NULL, param)) return -count;
}
} else if (header) {
- struct rpmtd_s list, flags, list_evr;
-
- if (headerGet(header, tag_name, &list, HEADERGET_DEFAULT)) {
- if (tag_flags) headerGet(header, tag_flags, &flags, HEADERGET_DEFAULT);
- if (tag_version) headerGet(header, tag_version, &list_evr, HEADERGET_DEFAULT);
- while (rpmtdNext(&list) >= 0) {
+ HE_t list = memset(alloca(sizeof(*list)), 0, sizeof(*list));
+
+ list->tag = tag_name;
+ if (headerGet(header, list, 0)) {
+ HE_t flags = memset(alloca(sizeof(*flags)), 0, sizeof(*flags));
+ HE_t list_evr = memset(alloca(sizeof(*list_evr)), 0, sizeof(*list_evr));
+ if (tag_flags) {
+ flags->tag = tag_flags;
+ headerGet(header, flags, 0);
+ }
+ if (tag_version) {
+ list_evr->tag = tag_version;
+ headerGet(header, list_evr, 0);
+ }
+ for (list->ix = 0; list->ix < (int)list->c; list->ix++) {
++count;
- uint32_t *flag = rpmtdNextUint32(&flags);
- if (f(NULL, 0, rpmtdGetString(&list), flag ? *flag : 0,
- rpmtdNextString(&list_evr), param)) {
- rpmtdFreeData(&list);
- if (tag_flags) rpmtdFreeData(&flags);
- if (tag_version) rpmtdFreeData(&list_evr);
+ rpmsenseFlags *flag = (list->ix < (int)flags->c) ? (rpmsenseFlags*)flags->p.ui32p : NULL;
+ if (f(NULL, 0, list->p.argv[list->ix], flag ? flag[list->ix] : 0,
+ (list_evr->ix < (int)list_evr->c) ? list_evr->p.argv[list->ix] : NULL,
+ param)) {
+ list->p.ptr = _free(list->p.ptr);
+ if (tag_flags) flags->p.ui32p = _free(flags->p.ptr);
+ if (tag_version) list_evr->p.argv = _free(list_evr->p.ptr);
return -count;
}
}
- rpmtdFreeData(&list);
- if (tag_flags) rpmtdFreeData(&flags);
- if (tag_version) rpmtdFreeData(&list_evr);
+ list->p.ptr = _free(list->p.ptr);
+ if (tag_flags) flags->p.ptr = _free(flags->p.ptr);
+ if (tag_version) list_evr->p.ptr = _free(list_evr->p.ptr);
}
}
return count;
}
static int
-xpush_simple_list_str(Header header, int32_t tag_name) {
+xpush_simple_list_str(Header header, rpmTag tag_name) {
dSP;
if (header) {
- struct rpmtd_s list;
- const char *val;
- int size;
+ HE_t list = memset(alloca(sizeof(*list)), 0, sizeof(*list));
- if (!headerGet(header, tag_name, &list, HEADERGET_DEFAULT)) return 0;
- size = rpmtdCount(&list);
+ list->tag = tag_name;
+ if (!headerGet(header, list, 0)) return 0;
- while ((val = rpmtdNextString(&list))) {
- XPUSHs(sv_2mortal(newSVpv(val, 0)));
+ for (list->ix = 0; list->ix < (int)list->c; list->ix++) {
+ XPUSHs(sv_2mortal(newSVpv(list->p.argv[list->ix], 0)));
}
- rpmtdFreeData(&list);
+ list->p.ptr = _free(list->p.ptr);
PUTBACK;
- return size;
+ return list->c;
} else return 0;
}
-void
-return_list_int32_t(Header header, int32_t tag_name) {
+static void
+return_list_int32_t(Header header, rpmTag tag_name) {
dSP;
if (header) {
- struct rpmtd_s list;
+ HE_t list = memset(alloca(sizeof(*list)), 0, sizeof(*list));
- if (headerGet(header, tag_name, &list, HEADERGET_DEFAULT)) {
- uint32_t *val;
- while ((val = rpmtdNextUint32(&list)))
- XPUSHs(sv_2mortal(newSViv(*val)));
- rpmtdFreeData(&list);
+ list->tag = tag_name;
+ if (headerGet(header, list, 0)) {
+ for (list->ix = 0; list->ix < (int)list->c; list->ix++) {
+ XPUSHs(sv_2mortal(newSViv(list->p.ui32p[list->ix])));
+ }
+ list->p.ptr = _free(list->p.ptr);
}
}
PUTBACK;
}
-void
-return_list_uint_16(Header header, int32_t tag_name) {
+static void
+return_list_uint_16(Header header, rpmTag tag_name) {
dSP;
if (header) {
- struct rpmtd_s list;
- if (headerGet(header, tag_name, &list, HEADERGET_DEFAULT)) {
- int count = rpmtdCount(&list);
- int i;
- uint16_t *list_ = list.data;
- for(i = 0; i < count; i++) {
- XPUSHs(sv_2mortal(newSViv(list_[i])));
+ HE_t list = memset(alloca(sizeof(*list)), 0, sizeof(*list));
+
+ list->tag = tag_name;
+ if (headerGet(header, list, 0)) {
+ for(list->ix = 0; list->ix < (int)list->c; list->ix++) {
+ XPUSHs(sv_2mortal(newSViv(list->p.ui16p[list->ix])));
}
- rpmtdFreeData(&list);
+ list->p.ptr = _free(list->p.ptr);
}
}
PUTBACK;
}
-void
-return_list_tag_modifier(Header header, int32_t tag_name) {
+static void
+return_list_tag_modifier(Header header, const char *tag_name) {
dSP;
- int i;
- struct rpmtd_s td;
- if (!headerGet(header, tag_name, &td, HEADERGET_DEFAULT)) return;
- int count = rpmtdCount(&td);
- int32_t *list = td.data;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ rpmTag tag = isdigit(*tag_name) ? (rpmTag)atoi(tag_name) : rpmtag_from_string(tag_name);
+
+ he->tag = tag;
+ if (!headerGet(header, he, 0)) return;
- for (i = 0; i < count; i++) {
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++) {
char buff[15];
char *s = buff;
- switch (tag_name) {
+ rpmTagType tags = he->p.ui32p[he->ix];
+ switch (tag) {
case RPMTAG_FILEFLAGS:
- if (list[i] & RPMFILE_CONFIG) *s++ = 'c';
- if (list[i] & RPMFILE_DOC) *s++ = 'd';
- if (list[i] & RPMFILE_GHOST) *s++ = 'g';
- if (list[i] & RPMFILE_LICENSE) *s++ = 'l';
- if (list[i] & RPMFILE_MISSINGOK) *s++ = 'm';
- if (list[i] & RPMFILE_NOREPLACE) *s++ = 'n';
- if (list[i] & RPMFILE_SPECFILE) *s++ = 'S';
- if (list[i] & RPMFILE_README) *s++ = 'R';
- if (list[i] & RPMFILE_EXCLUDE) *s++ = 'e';
- if (list[i] & RPMFILE_ICON) *s++ = 'i';
- if (list[i] & RPMFILE_UNPATCHED) *s++ = 'u';
- if (list[i] & RPMFILE_PUBKEY) *s++ = 'p';
+ if (tags & RPMFILE_CONFIG) *s++ = 'c';
+ if (tags & RPMFILE_DOC) *s++ = 'd';
+ if (tags & RPMFILE_GHOST) *s++ = 'g';
+ if (tags & RPMFILE_LICENSE) *s++ = 'l';
+ if (tags & RPMFILE_MISSINGOK) *s++ = 'm';
+ if (tags & RPMFILE_NOREPLACE) *s++ = 'n';
+ if (tags & RPMFILE_SPECFILE) *s++ = 'S';
+ if (tags & RPMFILE_README) *s++ = 'R';
+ if (tags & RPMFILE_EXCLUDE) *s++ = 'e';
+ if (tags & RPMFILE_ICON) *s++ = 'i';
+ if (tags & RPMFILE_UNPATCHED) *s++ = 'u';
+ if (tags & RPMFILE_PUBKEY) *s++ = 'p';
break;
default:
- rpmtdFreeData(&td);
+ he->p.ptr = _free(he->p.ptr);
return;
}
*s = '\0';
XPUSHs(sv_2mortal(newSVpv(buff, strlen(buff))));
}
- rpmtdFreeData(&td);
+ he->p.ptr = _free(he->p.ptr);
PUTBACK;
}
-void
-return_list_tag(URPM__Package pkg, int32_t tag_name) {
+static void
+return_list_tag(URPM__Package pkg, const char *tag_name) {
dSP;
+ rpmTag tag = isdigit(*tag_name) ? (rpmTag)atoi(tag_name) : rpmtag_from_string(tag_name);
+
if (pkg->h != NULL) {
- struct rpmtd_s td;
- if (headerGet(pkg->h, tag_name, &td, HEADERGET_DEFAULT)) {
- void *list = td.data;
- int32_t count = rpmtdCount(&td);
- if (tag_name == RPMTAG_ARCH) {
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+
+ he->tag = tag;
+ if (headerGet(pkg->h, he, 0)) {
+ void *list = he->p.ptr;
+ if (tag == RPMTAG_ARCH) {
XPUSHs(sv_2mortal(newSVpv(headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? (char *) list : "src", 0)));
} else
- switch (rpmtdType(&td)) {
- case RPM_NULL_TYPE:
- break;
-#ifdef RPM_ORG
- case RPM_CHAR_TYPE:
-#endif
- case RPM_INT8_TYPE:
- case RPM_INT16_TYPE:
- case RPM_INT32_TYPE:
+ switch (he->t) {
+ case RPM_UINT8_TYPE:
+ case RPM_UINT16_TYPE:
+ case RPM_UINT32_TYPE:
{
- int i;
- int *r;
- r = (int *)list;
- for (i=0; i < count; i++) {
- XPUSHs(sv_2mortal(newSViv(r[i])));
+ int *r = (int *)list;
+ for (he->ix=0; he->ix < (int)he->c; he->ix++) {
+ XPUSHs(sv_2mortal(newSViv(r[he->ix])));
}
}
break;
@@ -576,134 +757,133 @@ return_list_tag(URPM__Package pkg, int32_t tag_name) {
break;
case RPM_STRING_ARRAY_TYPE:
{
- int i;
- char **s;
-
- s = (char **)list;
- for (i = 0; i < count; i++) {
- XPUSHs(sv_2mortal(newSVpv(s[i], 0)));
+ const char **s = (const char **)list;
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ XPUSHs(sv_2mortal(newSVpv(s[he->ix], 0)));
}
}
break;
case RPM_I18NSTRING_TYPE:
break;
- case RPM_INT64_TYPE:
+ case RPM_UINT64_TYPE:
break;
}
+ list = _free(list);
}
} else {
char *name;
+ int epoch;
char *version;
char *release;
+ char *disttag;
+ char *distepoch;
+
char *arch;
char *eos;
- switch (tag_name) {
+ switch (tag) {
case RPMTAG_NAME:
{
- get_fullname_parts(pkg, &name, &version, &release, &arch, &eos);
- if (version - name < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(name, version-name - 1)));
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ if(!strlen(name))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(name, 0)));
}
break;
+ case RPMTAG_EPOCH: {
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ XPUSHs(sv_2mortal(newSViv(epoch)));
+ }
case RPMTAG_VERSION:
{
- get_fullname_parts(pkg, &name, &version, &release, &arch, &eos);
- if (release - version < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(version, release-version - 1)));
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ if(!strlen(version))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(version, 0)));
}
break;
case RPMTAG_RELEASE:
{
- get_fullname_parts(pkg, &name, &version, &release, &arch, &eos);
- if (arch - release < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(release, arch-release - 1)));
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ if(!strlen(release))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(release, 0)));
+ }
+ break;
+ case RPMTAG_DISTTAG:
+ {
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ XPUSHs(sv_2mortal(newSVpv(disttag, 0)));
+ }
+ break;
+ case RPMTAG_DISTEPOCH:
+ {
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ XPUSHs(sv_2mortal(newSVpv(distepoch, 0)));
}
break;
case RPMTAG_ARCH:
{
- get_fullname_parts(pkg, &name, &version, &release, &arch, &eos);
- XPUSHs(sv_2mortal(newSVpv(arch, eos-arch)));
+ get_fullname_parts_info(pkg, &name, &epoch, &version, &release, &arch, &disttag, &distepoch, &eos);
+ XPUSHs(sv_2mortal(newSVpv(arch, 0)));
}
break;
case RPMTAG_SUMMARY:
XPUSHs(sv_2mortal(newSVpv(pkg->summary, 0)));
break;
+ default:
+ croak("unexpected tag");
+ break;
}
+ restore_chars();
}
PUTBACK;
}
-void
+static void
return_files(Header header, int filter_mode) {
dSP;
if (header) {
- char buff[4096];
- char *p, *s;
+ const char *s;
STRLEN len;
- unsigned int i;
- struct rpmtd_s td_flags, td_fmodes;
- int32_t *flags = NULL;
- uint16_t *fmodes = NULL;
+ const char **list = NULL;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ rpmsenseFlags *flags = NULL;
if (filter_mode) {
- headerGet(header, RPMTAG_FILEFLAGS, &td_flags, HEADERGET_DEFAULT);
- headerGet(header, RPMTAG_FILEMODES, &td_fmodes, HEADERGET_DEFAULT);
- flags = td_flags.data;
- fmodes = td_fmodes.data;
- }
+ he->tag = RPMTAG_FILEFLAGS;
+ if(headerGet(header, he, 0))
+ flags = (rpmsenseFlags*)he->p.ui32p;
- struct rpmtd_s td_baseNames, td_dirIndexes, td_dirNames, td_list;
- headerGet(header, RPMTAG_BASENAMES, &td_baseNames, HEADERGET_DEFAULT);
- headerGet(header, RPMTAG_DIRINDEXES, &td_dirIndexes, HEADERGET_DEFAULT);
- headerGet(header, RPMTAG_DIRNAMES, &td_dirNames, HEADERGET_DEFAULT);
-
- char **baseNames = td_baseNames.data;
- char **dirNames = td_dirNames.data;
- int32_t *dirIndexes = td_dirIndexes.data;
-
- char **list = NULL;
- if (!baseNames || !dirNames || !dirIndexes) {
- if (!headerGet(header, RPMTAG_OLDFILENAMES, &td_list, HEADERGET_DEFAULT)) return;
- list = td_list.data;
}
- for(i = 0; i < rpmtdCount(&td_baseNames); i++) {
- if (list) {
- s = list[i];
- len = strlen(list[i]);
- } else {
- len = strlen(dirNames[dirIndexes[i]]);
- if (len >= sizeof(buff)) continue;
- memcpy(p = buff, dirNames[dirIndexes[i]], len + 1); p += len;
- len = strlen(baseNames[i]);
- if (p - buff + len >= sizeof(buff)) continue;
- memcpy(p, baseNames[i], len + 1); p += len;
- s = buff;
- len = p-buff;
- }
+ he->tag = RPMTAG_FILEPATHS;
+ if (!headerGet(header, he, 0)) return;
+ list = he->p.argv;
+
+ for(he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ s = list[he->ix];
+ len = strlen(list[he->ix]);
if (filter_mode) {
- if ((filter_mode & FILTER_MODE_CONF_FILES) && flags && (flags[i] & RPMFILE_CONFIG) == 0) continue;
+ if ((filter_mode & FILTER_MODE_CONF_FILES) && flags && (flags[he->ix] & RPMFILE_CONFIG) == 0) continue;
}
XPUSHs(sv_2mortal(newSVpv(s, len)));
}
-
- free(baseNames);
- free(dirNames);
- free(list);
+ flags = _free(flags);
+ list = _free(list);
}
PUTBACK;
}
-void
+static void
return_problems(rpmps ps, int translate_message, int raw_message) {
dSP;
if (ps && rpmpsNumProblems(ps) > 0) {
rpmpsi iterator = rpmpsInitIterator(ps);
while (rpmpsNextIterator(iterator) >= 0) {
- rpmProblem p = rpmpsGetProblem(iterator);
+ rpmProblem p = rpmpsGetProblem(iterator->ps, iterator->ix);
if (translate_message) {
/* translate error using rpm localization */
@@ -761,31 +941,41 @@ return_problems(rpmps ps, int translate_message, int raw_message) {
}
static char *
-pack_list(Header header, int32_t tag_name, int32_t tag_flags, int32_t tag_version, int32_t (*check_flag)(int32_t)) {
+pack_list(Header header, rpmTag tag_name, rpmTag tag_flags, rpmTag tag_version, rpmsenseFlags (*check_flag)(rpmsenseFlags)) {
char buff[65536];
- int32_t *flags = NULL;
- char **list_evr = NULL;
- unsigned int i;
+ rpmsenseFlags *flags = NULL;
+ const char **list_evr = NULL;
char *p = buff;
-
- struct rpmtd_s td;
- if (headerGet(header, tag_name, &td, HEADERGET_DEFAULT)) {
- char **list = td.data;
-
- struct rpmtd_s td_flags, td_list_evr;
- if (tag_flags && headerGet(header, tag_flags, &td_flags, HEADERGET_DEFAULT)) flags = td_flags.data;
- if (tag_version && headerGet(header, tag_version, &td_list_evr, HEADERGET_DEFAULT)) list_evr = td_list_evr.data;
- for(i = 0; i < rpmtdCount(&td); i++) {
- if (check_flag && !check_flag(flags[i])) continue;
- int len = print_list_entry(p, sizeof(buff)-(p-buff)-1, list[i], flags ? flags[i] : 0, list_evr ? list_evr[i] : NULL);
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+
+ he->tag = tag_name;
+ if (headerGet(header, he, 0)) {
+ const char **list = he->p.argv;
+
+ if (tag_flags) {
+ HE_t he_flags = memset(alloca(sizeof(*he_flags)), 0, sizeof(*he_flags));
+ he_flags->tag = tag_flags;
+ if(headerGet(header, he_flags, 0))
+ flags = (rpmsenseFlags*)he_flags->p.ui32p;
+ }
+ if (tag_version) {
+ HE_t he_list_evr = memset(alloca(sizeof(*he_list_evr)), 0, sizeof(*he_list_evr));
+ he_list_evr->tag = tag_version;
+ if(headerGet(header, he_list_evr, 0))
+ list_evr = he_list_evr->p.argv;
+ }
+ for(he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ if (check_flag && !check_flag(flags[he->ix])) continue;
+ int len = print_list_entry(p, sizeof(buff)-(p-buff)-1, list[he->ix], flags ? flags[he->ix] : 0, list_evr ? list_evr[he->ix] : NULL);
if (len < 0) continue;
p += len;
*p++ = '@';
}
if (p > buff) p[-1] = 0;
- free(list);
- free(list_evr);
+ flags = _free(flags);
+ list = _free(list);
+ list_evr = _free(list_evr);
}
return p > buff ? memcpy(malloc(p-buff), buff, p-buff) : NULL;
@@ -797,15 +987,14 @@ pack_header(URPM__Package pkg) {
if (pkg->info == NULL) {
char buff[1024];
char *p = buff;
- char *name = get_name(pkg->h, RPMTAG_NAME);
- char *version = get_name(pkg->h, RPMTAG_VERSION);
- char *release = get_name(pkg->h, RPMTAG_RELEASE);
- char *arch = headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? get_name(pkg->h, RPMTAG_ARCH) : "src";
-
- p += 1 + snprintf(buff, sizeof(buff), "%s-%s-%s.%s@%d@%d@%s", name, version, release, arch,
+ const char *group = get_name(pkg->h, RPMTAG_GROUP);
+ const char *nvra = get_nvra(pkg->h);
+ p += 1 + snprintf(buff, sizeof(buff), "%s@%d@%d@%s", nvra,
get_int(pkg->h, RPMTAG_EPOCH), get_int(pkg->h, RPMTAG_SIZE),
- get_name(pkg->h, RPMTAG_GROUP));
+ group);
pkg->info = memcpy(malloc(p-buff), buff, p-buff);
+ _free(group);
+ _free(nvra);
}
if (pkg->filesize == 0) pkg->filesize = sigsize_to_filesize(get_int(pkg->h, RPMTAG_SIGSIZE));
if (pkg->requires == NULL && pkg->suggests == NULL)
@@ -822,10 +1011,8 @@ pack_header(URPM__Package pkg) {
if (pkg->provides == NULL)
pkg->provides = pack_list(pkg->h, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDEVERSION, NULL);
if (pkg->summary == NULL) {
- char *summary = get_name(pkg->h, RPMTAG_SUMMARY);
- int len = 1 + strlen(summary);
-
- pkg->summary = memcpy(malloc(len), summary, len);
+ const char *summary = get_name(pkg->h, RPMTAG_SUMMARY);
+ pkg->summary = (char*)summary;
}
if (!(pkg->flag & FLAG_NO_HEADER_FREE)) pkg->h =headerFree(pkg->h);
@@ -834,7 +1021,7 @@ pack_header(URPM__Package pkg) {
}
static void
-update_hash_entry(HV *hash, char *name, STRLEN len, int force, IV use_sense, URPM__Package pkg) {
+update_hash_entry(HV *hash, const char *name, STRLEN len, int force, IV use_sense, URPM__Package pkg) {
SV** isv;
if (!len) len = strlen(name);
@@ -860,7 +1047,7 @@ update_hash_entry(HV *hash, char *name, STRLEN len, int force, IV use_sense, URP
}
static void
-update_provide_entry(char *name, STRLEN len, int force, IV use_sense, URPM__Package pkg, HV *provides) {
+update_provide_entry(const char *name, STRLEN len, int force, IV use_sense, URPM__Package pkg, HV *provides) {
update_hash_entry(provides, name, len, force, use_sense, pkg);
}
@@ -868,30 +1055,37 @@ static void
update_provides(URPM__Package pkg, HV *provides) {
if (pkg->h) {
int len;
- struct rpmtd_s td, td_flags;
- int32_t *flags = NULL;
- unsigned int i;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ rpmsenseFlags *flags = NULL;
/* examine requires for files which need to be marked in provides */
- if (headerGet(pkg->h, RPMTAG_REQUIRENAME, &td, HEADERGET_DEFAULT)) {
- char **list = td.data;
- for (i = 0; i < rpmtdCount(&td); ++i) {
- len = strlen(list[i]);
- if (list[i][0] == '/') (void)hv_fetch(provides, list[i], len, 1);
+ he->tag = RPMTAG_REQUIRENAME;
+ if (headerGet(pkg->h, he, 0)) {
+ const char **list = he->p.argv;
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ len = strlen(list[he->ix]);
+ if (list[he->ix][0] == '/') (void)hv_fetch(provides, list[he->ix], len, 1);
}
+ list = _free(list);
}
/* update all provides */
- if (headerGet(pkg->h, RPMTAG_PROVIDENAME, &td, HEADERGET_DEFAULT)) {
- char **list = td.data;
- if (headerGet(pkg->h, RPMTAG_PROVIDEFLAGS, &td_flags, HEADERGET_DEFAULT))
- flags = td_flags.data;
- for (i = 0; i < rpmtdCount(&td); ++i) {
- len = strlen(list[i]);
- if (!strncmp(list[i], "rpmlib(", 7)) continue;
- update_provide_entry(list[i], len, 1, flags && flags[i] & (RPMSENSE_PREREQ|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_SCRIPT_POST|RPMSENSE_LESS|RPMSENSE_EQUAL|RPMSENSE_GREATER),
- pkg, provides);
+ he->tag = RPMTAG_PROVIDENAME;
+ if (headerGet(pkg->h, he, 0)) {
+ const char **list = he->p.argv;
+
+ he->tag = RPMTAG_PROVIDEFLAGS;
+ if (headerGet(pkg->h, he, 0)) {
+ HE_t he_flags = memset(alloca(sizeof(*he_flags)), 0, sizeof(*he_flags));
+ flags = (rpmsenseFlags*)he_flags->p.ui32p;
+ }
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ len = strlen(list[he->ix]);
+ update_provide_entry(list[he->ix], len, 1, flags && flags[he->ix] & (RPMSENSE_PREREQ|RPMSENSE_TRIGGER),
+ pkg, provides);
}
+ flags = _free(flags);
+ list = _free(list);
}
} else {
char *ps, *s, *es;
@@ -929,14 +1123,14 @@ update_provides(URPM__Package pkg, HV *provides) {
static void
update_obsoletes(URPM__Package pkg, HV *obsoletes) {
if (pkg->h) {
- struct rpmtd_s td;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
/* update all provides */
- if (headerGet(pkg->h, RPMTAG_OBSOLETENAME, &td, HEADERGET_DEFAULT)) {
- char **list = td.data;
- unsigned int i;
- for (i = 0; i < rpmtdCount(&td); ++i)
- update_hash_entry(obsoletes, list[i], 0, 1, 0, pkg);
+ he->tag = RPMTAG_OBSOLETENAME;
+ if (headerGet(pkg->h, he, 0)) {
+ const char **list = he->p.argv;
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++)
+ update_hash_entry(obsoletes, list[he->ix], 0, 1, 0, pkg);
}
} else {
char *ps, *s;
@@ -960,51 +1154,24 @@ static void
update_provides_files(URPM__Package pkg, HV *provides) {
if (pkg->h) {
STRLEN len;
- char **list = NULL;
- unsigned int i;
-
- struct rpmtd_s td_baseNames, td_dirIndexes, td_dirNames;
- if (headerGet(pkg->h, RPMTAG_BASENAMES, &td_baseNames, HEADERGET_DEFAULT) &&
- headerGet(pkg->h, RPMTAG_DIRINDEXES, &td_dirIndexes, HEADERGET_DEFAULT) &&
- headerGet(pkg->h, RPMTAG_DIRNAMES, &td_dirNames, HEADERGET_DEFAULT)) {
-
- char **baseNames = td_baseNames.data;
- char **dirNames = td_dirNames.data;
- int32_t *dirIndexes = td_dirIndexes.data;
-
- char buff[4096];
- char *p;
-
- for(i = 0; i < rpmtdCount(&td_baseNames); i++) {
- len = strlen(dirNames[dirIndexes[i]]);
- if (len >= sizeof(buff)) continue;
- memcpy(p = buff, dirNames[dirIndexes[i]], len + 1); p += len;
- len = strlen(baseNames[i]);
- if (p - buff + len >= sizeof(buff)) continue;
- memcpy(p, baseNames[i], len + 1); p += len;
-
- update_provide_entry(buff, p-buff, 0, 0, pkg, provides);
- }
+ const char **list = NULL;
+ HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
- free(baseNames);
- free(dirNames);
- } else {
- struct rpmtd_s td;
- headerGet(pkg->h, RPMTAG_OLDFILENAMES, &td, HEADERGET_DEFAULT);
- if (list) {
- for (i = 0; i < rpmtdCount(&td); i++) {
- len = strlen(list[i]);
+ he->tag = RPMTAG_FILEPATHS;
+ if(headerGet(pkg->h, he, 0)) {
+ list = he->p.argv;
+ for (he->ix = 0; he->ix < (int)he->c; he->ix++) {
+ len = strlen(list[he->ix]);
- update_provide_entry(list[i], len, 0, 0, pkg, provides);
- }
-
- free(list);
+ update_provide_entry(list[he->ix], len, 0, 0, pkg, provides);
}
+
+ list = _free(list);
}
}
}
-int
+static int
open_archive(char *filename, pid_t *pid, int *empty_archive) {
int fd;
struct {
@@ -1181,10 +1348,8 @@ static void drop_tags(Header *h) {
headerDel(*h, RPMTAG_FILESIZES); /* ? */
headerDel(*h, RPMTAG_FILERDEVS); /* it seems unused. always empty */
headerDel(*h, RPMTAG_FILEVERIFYFLAGS); /* only used for -V */
-#ifndef RPM_ORG
headerDel(*h, RPMTAG_FILEDIGESTALGOS); /* only used for -V */
headerDel(*h, RPMTAG_FILEDIGESTS); /* only used for -V */ /* alias: RPMTAG_FILEMD5S */
-#endif
/* keep RPMTAG_FILEFLAGS for %config (rpmnew) to work */
/* keep RPMTAG_FILELANGS for %lang (_install_langs) to work */
/* keep RPMTAG_FILELINKTOS for checking conflicts between symlinks */
@@ -1235,24 +1400,12 @@ update_header(char *filename, URPM__Package pkg, __attribute__((unused)) int kee
rpmtsSetVSFlags(ts, _RPMVSF_NOSIGNATURES | vsflags);
if (fd != NULL && rpmReadPackageFile(ts, fd, filename, &header) == 0 && header) {
char *basename;
-#ifndef RPM_ORG
struct stat sb;
-#else
- int32_t size;
-#endif
basename = strrchr(filename, '/');
-#ifndef RPM_ORG
Fstat(fd, &sb);
-#else
- size = fdSize(fd);
-#endif
Fclose(fd);
- /* this is only kept for compatibility with older distros
- (where ->filename on "unpacked" URPM::Package rely on FILENAME_TAG) */
- headerPutString(header, FILENAME_TAG, basename != NULL ? basename + 1 : filename);
-
if (pkg->h && !(pkg->flag & FLAG_NO_HEADER_FREE)) pkg->h = headerFree(pkg->h);
pkg->h = header;
pkg->flag &= ~FLAG_NO_HEADER_FREE;
@@ -1268,7 +1421,20 @@ update_header(char *filename, URPM__Package pkg, __attribute__((unused)) int kee
close(d);
if (fd != NULL) {
if (pkg->h && !(pkg->flag & FLAG_NO_HEADER_FREE)) pkg->h = headerFree(pkg->h);
- pkg->h = headerRead(fd, HEADER_MAGIC_YES);
+ const char item[] = "Header";
+ const char * msg = NULL;
+ rpmRC rc = rpmpkgRead(item, fd, &pkg->h, &msg);
+
+ switch (rc) {
+ default:
+ rpmlog(RPMLOG_ERR, "%s: %s: %s\n", "rpmpkgRead", item, msg);
+ case RPMRC_NOTFOUND:
+ pkg->h = NULL;
+ case RPMRC_OK:
+ break;
+ }
+ msg = (const char*)_free(msg);
+
pkg->flag &= ~FLAG_NO_HEADER_FREE;
Fclose(fd);
return 1;
@@ -1296,10 +1462,11 @@ ts_nosignature(rpmts ts) {
rpmtsSetVSFlags(ts, _RPMVSF_NODIGESTS | _RPMVSF_NOSIGNATURES);
}
-static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h,
+static void *
+rpmRunTransactions_callback(__attribute__((unused)) const void *h,
const rpmCallbackType what,
- const rpm_loff_t amount,
- const rpm_loff_t total,
+ const rpmuint64_t amount,
+ const rpmuint64_t total,
fnpyKey pkgKey,
rpmCallbackData data) {
static struct timeval tprev;
@@ -1412,25 +1579,6 @@ static void *rpmRunTransactions_callback(__attribute__((unused)) const void *h,
return callback == td->callback_open ? fd : NULL;
}
-int rpmtag_from_string(char *tag)
-{
- if (!strcmp(tag, "name"))
- return RPMTAG_NAME;
- else if (!strcmp(tag, "whatprovides"))
- return RPMTAG_PROVIDENAME;
- else if (!strcmp(tag, "whatrequires"))
- return RPMTAG_REQUIRENAME;
- else if (!strcmp(tag, "whatconflicts"))
- return RPMTAG_CONFLICTNAME;
- else if (!strcmp(tag, "group"))
- return RPMTAG_GROUP;
- else if (!strcmp(tag, "triggeredby"))
- return RPMTAG_TRIGGERNAME;
- else if (!strcmp(tag, "path"))
- return RPMTAG_BASENAMES;
- else croak("unknown tag [%s]", tag);
-}
-
MODULE = URPM PACKAGE = URPM::Package PREFIX = Pkg_
void
@@ -1451,94 +1599,88 @@ Pkg_DESTROY(pkg)
void
Pkg_name(pkg)
URPM::Package pkg
+ INIT:
+ char *name;
PPCODE:
- if (pkg->info) {
- char *name;
- char *version;
-
- get_fullname_parts(pkg, &name, &version, NULL, NULL, NULL);
- if (version - name < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(name, version-name-1)));
- } else if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(get_name(pkg->h, RPMTAG_NAME), 0)));
- }
+ if(get_fullname_parts(pkg, &name, NULL, NULL, NULL, NULL, NULL, NULL, NULL))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(name, 0)));
+ restore_chars();
void
Pkg_version(pkg)
URPM::Package pkg
+ INIT:
+ char *version;
PPCODE:
- if (pkg->info) {
- char *version;
- char *release;
-
- get_fullname_parts(pkg, NULL, &version, &release, NULL, NULL);
- if (release - version < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(version, release-version-1)));
- } else if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(get_name(pkg->h, RPMTAG_VERSION), 0)));
- }
+ if(get_fullname_parts(pkg, NULL, NULL, &version, NULL, NULL, NULL, NULL, NULL))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(version, 0)));
+ restore_chars();
void
Pkg_release(pkg)
URPM::Package pkg
+ INIT:
+ char *release;
PPCODE:
- if (pkg->info) {
- char *release;
- char *arch;
+ if(get_fullname_parts(pkg, NULL, NULL, NULL, &release, NULL, NULL, NULL, NULL))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(release, 0)));
+ restore_chars();
- get_fullname_parts(pkg, NULL, NULL, &release, &arch, NULL);
- if (arch - release < 1) croak("invalid fullname");
- XPUSHs(sv_2mortal(newSVpv(release, arch-release-1)));
- } else if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(get_name(pkg->h, RPMTAG_RELEASE), 0)));
- }
+void Pkg_disttag(pkg)
+ URPM::Package pkg
+ INIT:
+ char *disttag;
+ PPCODE:
+ if(get_fullname_parts(pkg, NULL, NULL, NULL, NULL, &disttag, NULL, NULL, NULL))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(disttag, 0)));
+ restore_chars();
+
+void Pkg_distepoch(pkg)
+ URPM::Package pkg
+ INIT:
+ char *distepoch;
+ PPCODE:
+ if(get_fullname_parts(pkg, NULL, NULL, NULL, NULL, NULL, &distepoch, NULL, NULL))
+ croak("invalid fullname");
+ XPUSHs(sv_2mortal(newSVpv(distepoch, 0)));
+ restore_chars();
void
Pkg_arch(pkg)
URPM::Package pkg
+ INIT:
+ char *arch;
PPCODE:
- if (pkg->info) {
- char *arch;
- char *eos;
- get_fullname_parts(pkg, NULL, NULL, NULL, &arch, &eos);
- XPUSHs(sv_2mortal(newSVpv(arch, eos-arch)));
- } else if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? get_name(pkg->h, RPMTAG_ARCH) : "src", 0)));
- }
+ get_fullname_parts(pkg, NULL, NULL, NULL, NULL, NULL, NULL, &arch, NULL);
+ XPUSHs(sv_2mortal(newSVpv(arch, 0)));
+ restore_chars();
int
Pkg_is_arch_compat__XS(pkg)
URPM::Package pkg
INIT:
-#ifndef RPM_ORG
- char * platform;
-#endif
+ const char * platform;
CODE:
read_config_files(0);
if (pkg->info) {
char *arch;
- char *eos;
- get_fullname_parts(pkg, NULL, NULL, NULL, &arch, &eos);
- *eos = 0;
-#ifndef RPM_ORG
+ get_fullname_parts(pkg, NULL, NULL, NULL, NULL, NULL, NULL, &arch, NULL);
platform = rpmExpand(arch, "-%{_target_vendor}-%{_target_os}%{?_gnu}", NULL);
RETVAL = rpmPlatformScore(platform, NULL, 0);
_free(platform);
-#else
- RETVAL = rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch);
-#endif
- *eos = '@';
+ restore_chars();
} else if (pkg->h && headerIsEntry(pkg->h, RPMTAG_SOURCERPM)) {
- char *arch = get_name(pkg->h, RPMTAG_ARCH);
-#ifndef RPM_ORG
+ const char *arch = get_name(pkg->h, RPMTAG_ARCH);
platform = rpmExpand(arch, "-%{_target_vendor}-%{_target_os}%{?_gnu}", NULL);
RETVAL = rpmPlatformScore(platform, NULL, 0);
+ _free(arch);
_free(platform);
-#else
- RETVAL = rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch);
-#endif
} else {
RETVAL = 0;
}
@@ -1549,35 +1691,29 @@ int
Pkg_is_platform_compat(pkg)
URPM::Package pkg
INIT:
-#ifndef RPM_ORG
- char * platform = NULL;
- struct rpmtd_s val;
-#endif
+ const char * platform = NULL;
+ HE_t val = memset(alloca(sizeof(*val)), 0, sizeof(*val));
+
CODE:
-#ifndef RPM_ORG
read_config_files(0);
+ RETVAL = 0;
if (pkg->h && headerIsEntry(pkg->h, RPMTAG_PLATFORM)) {
- (void) headerGet(pkg->h, RPMTAG_PLATFORM, &val, HEADERGET_DEFAULT);
- platform = (char *) rpmtdGetString(&val);
- RETVAL = rpmPlatformScore(platform, NULL, 0);
- platform = headerFreeData(platform, val.type);
+ val->tag = RPMTAG_PLATFORM;
+ if(headerGet(pkg->h, val, 0)) {
+ platform = val->p.str;
+ RETVAL = rpmPlatformScore(platform, NULL, 0);
+ platform = _free(platform);
+ }
} else if (pkg->info) {
char *arch;
char *eos;
- get_fullname_parts(pkg, NULL, NULL, NULL, &arch, &eos);
- *eos = 0;
+ get_fullname_parts(pkg, NULL, NULL, NULL, NULL, NULL, NULL, &arch, &eos);
platform = rpmExpand(arch, "-%{_target_vendor}-", eos, "%{?_gnu}", NULL);
RETVAL = rpmPlatformScore(platform, NULL, 0);
- *eos = '@';
+ restore_chars();
_free(platform);
- } else {
-#else
- croak("is_platform_compat() is available only since rpm 4.4.8");
- { /* to match last } and avoid another #ifdef for it */
-#endif
- RETVAL = 0;
- }
+ }
OUTPUT:
RETVAL
@@ -1697,62 +1833,55 @@ Pkg_payload_format(pkg)
}
void
+Pkg_evr(pkg)
+ URPM::Package pkg
+ PREINIT:
+ const char *evr;
+ PPCODE:
+ evr = get_evr(pkg);
+ XPUSHs(sv_2mortal(newSVpv(evr, 0)));
+
+void
Pkg_fullname(pkg)
URPM::Package pkg
PREINIT:
I32 gimme = GIMME_V;
PPCODE:
- if (pkg->info) {
- if (gimme == G_SCALAR) {
+ if (gimme == G_ARRAY) {
+ char *name, *version, *release, *disttag, *distepoch, *arch, *eos;
+ int items = 6;
+
+ if(get_fullname_parts(pkg, &name, NULL, &version, &release, &disttag, &distepoch, &arch, &eos))
+ croak("invalid fullname");
+
+ EXTEND(SP, items);
+ PUSHs(sv_2mortal(newSVpv(name, 0)));
+ PUSHs(sv_2mortal(newSVpv(version, 0)));
+ PUSHs(sv_2mortal(newSVpv(release, 0)));
+ PUSHs(sv_2mortal(newSVpv(disttag, 0)));
+ PUSHs(sv_2mortal(newSVpv(distepoch, 0)));
+ PUSHs(sv_2mortal(newSVpv(arch, 0)));
+ restore_chars();
+ } else if (gimme == G_SCALAR) {
+ if (pkg->info) {
char *eos;
- if ((eos = strchr(pkg->info, '@')) != NULL) {
+ if ((eos = strchr(pkg->info, '@')) != NULL)
XPUSHs(sv_2mortal(newSVpv(pkg->info, eos-pkg->info)));
- }
- } else if (gimme == G_ARRAY) {
- char *name, *version, *release, *arch, *eos;
- get_fullname_parts(pkg, &name, &version, &release, &arch, &eos);
- if (version - name < 1 || release - version < 1 || arch - release < 1)
- croak("invalid fullname");
- EXTEND(SP, 4);
- PUSHs(sv_2mortal(newSVpv(name, version-name-1)));
- PUSHs(sv_2mortal(newSVpv(version, release-version-1)));
- PUSHs(sv_2mortal(newSVpv(release, arch-release-1)));
- PUSHs(sv_2mortal(newSVpv(arch, eos-arch)));
- }
- } else if (pkg->h) {
- char *name = get_name(pkg->h, RPMTAG_NAME);
- char *version = get_name(pkg->h, RPMTAG_VERSION);
- char *release = get_name(pkg->h, RPMTAG_RELEASE);
- char *arch = headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? get_name(pkg->h, RPMTAG_ARCH) : "src";
-
- if (gimme == G_SCALAR) {
- XPUSHs(sv_2mortal(newSVpvf("%s-%s-%s.%s", name, version, release, arch)));
- } else if (gimme == G_ARRAY) {
- EXTEND(SP, 4);
- PUSHs(sv_2mortal(newSVpv(name, 0)));
- PUSHs(sv_2mortal(newSVpv(version, 0)));
- PUSHs(sv_2mortal(newSVpv(release, 0)));
- PUSHs(sv_2mortal(newSVpv(arch, 0)));
+ } else if (pkg->h) {
+ const char *nvra = get_nvra(pkg->h);
+ XPUSHs(sv_2mortal(newSVpvf("%s", nvra)));
+ _free(nvra);
}
}
int
Pkg_epoch(pkg)
URPM::Package pkg
+ PREINIT:
+ int epoch;
CODE:
- if (pkg->info) {
- char *s, *eos;
-
- if ((s = strchr(pkg->info, '@')) != NULL) {
- if ((eos = strchr(s+1, '@')) != NULL) *eos = 0; /* mark end of string to enable searching backwards */
- RETVAL = atoi(s+1);
- if (eos != NULL) *eos = '@';
- } else {
- RETVAL = 0;
- }
- } else if (pkg->h) {
- RETVAL = get_int(pkg->h, RPMTAG_EPOCH);
- } else RETVAL = 0;
+ get_fullname_parts(pkg, NULL, &epoch, NULL, NULL, NULL, NULL, NULL, NULL);
+ RETVAL = epoch;
OUTPUT:
RETVAL
@@ -1762,109 +1891,55 @@ Pkg_compare_pkg(lpkg, rpkg)
URPM::Package rpkg
PREINIT:
int compare = 0;
- int lepoch;
- char *lversion;
- char *lrelease;
+ char *levr;
char *larch;
- char *leos;
- int repoch;
- char *rversion;
- char *rrelease;
+ char *revr;
char *rarch;
- char *reos;
CODE:
if (lpkg == rpkg) RETVAL = 0;
else {
- if (lpkg->info) {
- char *s;
-
- if ((s = strchr(lpkg->info, '@')) != NULL) {
- if ((leos = strchr(s+1, '@')) != NULL) *leos = 0; /* mark end of string to enable searching backwards */
- lepoch = atoi(s+1);
- if (leos != NULL) *leos = '@';
- } else {
- lepoch = 0;
- }
- get_fullname_parts(lpkg, NULL, &lversion, &lrelease, &larch, &leos);
- /* temporarily mark end of each substring */
- lrelease[-1] = 0;
- larch[-1] = 0;
- } else if (lpkg->h) {
- lepoch = get_int(lpkg->h, RPMTAG_EPOCH);
- lversion = get_name(lpkg->h, RPMTAG_VERSION);
- lrelease = get_name(lpkg->h, RPMTAG_RELEASE);
- larch = headerIsEntry(lpkg->h, RPMTAG_SOURCERPM) ? get_name(lpkg->h, RPMTAG_ARCH) : "src";
- } else croak("undefined package");
- if (rpkg->info) {
- char *s;
-
- if ((s = strchr(rpkg->info, '@')) != NULL) {
- if ((reos = strchr(s+1, '@')) != NULL) *reos = 0; /* mark end of string to enable searching backwards */
- repoch = atoi(s+1);
- if (reos != NULL) *reos = '@';
- } else {
- repoch = 0;
- }
- get_fullname_parts(rpkg, NULL, &rversion, &rrelease, &rarch, &reos);
- /* temporarily mark end of each substring */
- rrelease[-1] = 0;
- rarch[-1] = 0;
- } else if (rpkg->h) {
- repoch = get_int(rpkg->h, RPMTAG_EPOCH);
- rversion = get_name(rpkg->h, RPMTAG_VERSION);
- rrelease = get_name(rpkg->h, RPMTAG_RELEASE);
- rarch = headerIsEntry(rpkg->h, RPMTAG_SOURCERPM) ? get_name(rpkg->h, RPMTAG_ARCH) : "src";
- } else {
- /* restore info string modified */
- if (lpkg->info) {
- lrelease[-1] = '-';
- larch[-1] = '.';
- }
+ levr = (char*)get_evr(lpkg);
+ revr = (char*)get_evr(rpkg);
+ if(levr == NULL || revr == NULL) {
+ restore_chars();
croak("undefined package");
}
- compare = lepoch - repoch;
+ compare = do_rpmEVRcompare(levr, revr);
if (!compare) {
- compare = rpmvercmp(lversion, rversion);
- if (!compare) {
- compare = rpmvercmp(lrelease, rrelease);
- if (!compare) {
- int lscore, rscore;
- char *eolarch = strchr(larch, '@');
- char *eorarch = strchr(rarch, '@');
-
- read_config_files(0);
- if (eolarch) *eolarch = 0; lscore = rpmMachineScore(RPM_MACHTABLE_INSTARCH, larch);
- if (eorarch) *eorarch = 0; rscore = rpmMachineScore(RPM_MACHTABLE_INSTARCH, rarch);
- if (lscore == 0) {
- if (rscore == 0)
+ int lscore, rscore;
+ char *platform = NULL;
+ if(get_fullname_parts(lpkg, NULL, NULL, NULL, NULL, NULL, NULL, &larch, NULL) ||
+ get_fullname_parts(rpkg, NULL, NULL, NULL, NULL, NULL, NULL, &rarch, NULL))
+ croak("undefined package");
+
+ read_config_files(0);
+
+ platform = rpmExpand(larch, "-%{_target_vendor}-%{_target_os}%{?_gnu}", NULL);
+ lscore = rpmPlatformScore(platform, NULL, 0);
+ platform = _free(platform);
+
+ platform = rpmExpand(rarch, "-%{_target_vendor}-%{_target_os}%{?_gnu}", NULL);
+ rscore = rpmPlatformScore(platform, NULL, 0);
+ platform = _free(platform);
+
+ if (lscore == 0) {
+ if (rscore == 0)
#if 0
- /* Nanar: TODO check this
- * hu ?? what is the goal of strcmp, some of arch are equivalent */
- compare = 0
+ /* Nanar: TODO check this
+ * hu ?? what is the goal of strcmp, some of arch are equivalent */
+ compare = 0
#endif
- compare = strcmp(larch, rarch);
- else
- compare = -1;
- } else {
- if (rscore == 0)
- compare = 1;
- else
- compare = rscore - lscore; /* score are lower for better */
- }
- if (eolarch) *eolarch = '@';
- if (eorarch) *eorarch = '@';
- }
+ compare = strcmp(larch, rarch);
+ else
+ compare = -1;
+ } else {
+ if (rscore == 0)
+ compare = 1;
+ else
+ compare = rscore - lscore; /* score are lower for better */
}
}
- /* restore info string modified */
- if (lpkg->info) {
- lrelease[-1] = '-';
- larch[-1] = '.';
- }
- if (rpkg->info) {
- rrelease[-1] = '-';
- rarch[-1] = '.';
- }
+ restore_chars();
RETVAL = compare;
}
OUTPUT:
@@ -1876,68 +1951,25 @@ Pkg_compare(pkg, evr)
char *evr
PREINIT:
int compare = 0;
- int _epoch;
- char *_version;
- char *_release;
- char *_eos;
+ EVR_t lEVR = rpmEVRnew(RPMSENSE_EQUAL, 0),
+ rEVR = rpmEVRnew(RPMSENSE_EQUAL, 0);
CODE:
- if (pkg->info) {
- char *s;
-
- if ((s = strchr(pkg->info, '@')) != NULL) {
- if ((_eos = strchr(s+1, '@')) != NULL) *_eos = 0; /* mark end of string to enable searching backwards */
- _epoch = atoi(s+1);
- if (_eos != NULL) *_eos = '@';
- } else {
- _epoch = 0;
- }
- get_fullname_parts(pkg, NULL, &_version, &_release, &_eos, NULL);
- /* temporarily mark end of each substring */
- _release[-1] = 0;
- _eos[-1] = 0;
- } else if (pkg->h) {
- _epoch = get_int(pkg->h, RPMTAG_EPOCH);
- } else croak("undefined package");
if (!compare) {
- char *epoch, *version, *release;
-
- /* extract epoch and version from evr */
- version = evr;
- while (*version && isdigit(*version)) version++;
- if (*version == ':') {
- epoch = evr;
- *version++ = 0;
- if (!*epoch) epoch = "0";
- compare = _epoch - (*epoch ? atoi(epoch) : 0);
- version[-1] = ':'; /* restore in memory modification */
- } else {
- /* there is no epoch defined, so assume epoch = 0 */
- version = evr;
- compare = _epoch;
- }
- if (!compare) {
- if (!pkg->info)
- _version = get_name(pkg->h, RPMTAG_VERSION);
- /* continue extracting release if any */
- if ((release = strrchr(version, '-')) != NULL) {
- *release++ = 0;
- compare = rpmvercmp(_version, version);
- if (!compare) {
- /* need to compare with release here */
- if (!pkg->info)
- _release = get_name(pkg->h, RPMTAG_RELEASE);
- compare = rpmvercmp(_release, release);
- }
- release[-1] = '-'; /* restore in memory modification */
- } else {
- compare = rpmvercmp(_version, version);
- }
- }
- }
- /* restore info string modified */
- if (pkg->info) {
- _release[-1] = '-';
- _eos[-1] = '.';
+ int i;
+
+ /* This will remove fields from _evr (from the right) that evr is missing
+ * so that ie. if only version is given as an argument, it won't compare
+ * release etc.
+ */
+ rpmEVRparse(get_evr(pkg), lEVR);
+ rpmEVRparse(evr, rEVR);
+ for(i = RPMEVR_V; i <= RPMEVR_D; i++)
+ if(!*(rEVR->F[i]))
+ lEVR->F[i] = "";
+
+ compare = rpmEVRcompare(lEVR, rEVR);
+ rpmEVRfree(lEVR);
+ rpmEVRfree(rEVR);
}
RETVAL = compare;
OUTPUT:
@@ -1948,12 +1980,10 @@ Pkg_size(pkg)
URPM::Package pkg
CODE:
if (pkg->info) {
- char *s, *eos;
+ char *s;
if ((s = strchr(pkg->info, '@')) != NULL && (s = strchr(s+1, '@')) != NULL) {
- if ((eos = strchr(s+1, '@')) != NULL) *eos = 0; /* mark end of string to enable searching backwards */
RETVAL = atoi(s+1);
- if (eos != NULL) *eos = '@';
} else {
RETVAL = 0;
}
@@ -2005,12 +2035,9 @@ Pkg_filename(pkg)
memcpy(eon, savbuf, 4);
}
} else if (pkg->h) {
- char *name = get_name(pkg->h, RPMTAG_NAME);
- char *version = get_name(pkg->h, RPMTAG_VERSION);
- char *release = get_name(pkg->h, RPMTAG_RELEASE);
- char *arch = headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? get_name(pkg->h, RPMTAG_ARCH) : "src";
-
- XPUSHs(sv_2mortal(newSVpvf("%s-%s-%s.%s.rpm", name, version, release, arch)));
+ const char *nvra = get_nvra(pkg->h);
+ XPUSHs(sv_2mortal(newSVpvf("%s.rpm", nvra)));
+ _free(nvra);
}
# deprecated
@@ -2027,12 +2054,9 @@ Pkg_header_filename(pkg)
} else if (pkg->h) {
char buff[1024];
char *p = buff;
- char *name = get_name(pkg->h, RPMTAG_NAME);
- char *version = get_name(pkg->h, RPMTAG_VERSION);
- char *release = get_name(pkg->h, RPMTAG_RELEASE);
- char *arch = headerIsEntry(pkg->h, RPMTAG_SOURCERPM) ? get_name(pkg->h, RPMTAG_ARCH) : "src";
-
- p += snprintf(buff, sizeof(buff), "%s-%s-%s.%s", name, version, release, arch);
+ const char *nvra = get_nvra(pkg->h);
+ p += snprintf(buff, sizeof(buff), "%s", nvra);
+ _free(nvra);
XPUSHs(sv_2mortal(newSVpv(buff, p-buff)));
}
@@ -2102,10 +2126,9 @@ Pkg_obsoletes_nosense(pkg)
SPAGAIN;
int
-Pkg_obsoletes_overlap(pkg, s, b_nopromote=1, direction=-1)
+Pkg_obsoletes_overlap(pkg, s, direction=-1)
URPM::Package pkg
char *s
- int b_nopromote
int direction
PREINIT:
struct cb_overlap_s os;
@@ -2129,7 +2152,6 @@ Pkg_obsoletes_overlap(pkg, s, b_nopromote=1, direction=-1)
} else
os.evr = "";
os.direction = direction;
- os.b_nopromote = b_nopromote;
/* mark end of name */
if (eon) { eonc = *eon; *eon = 0; }
/* return_list_str returns a negative value is the callback has returned non-zero */
@@ -2175,10 +2197,9 @@ Pkg_provides_nosense(pkg)
SPAGAIN;
int
-Pkg_provides_overlap(pkg, s, b_nopromote=1, direction=1)
+Pkg_provides_overlap(pkg, s, direction=1)
URPM::Package pkg
char *s
- int b_nopromote
int direction
PREINIT:
struct cb_overlap_s os;
@@ -2202,7 +2223,6 @@ Pkg_provides_overlap(pkg, s, b_nopromote=1, direction=1)
} else
os.evr = "";
os.direction = direction;
- os.b_nopromote = b_nopromote;
/* mark end of name */
if (eon) { eonc = *eon; *eon = 0; }
/* return_list_str returns a negative value is the callback has returned non-zero */
@@ -2245,24 +2265,6 @@ Pkg_dirnames(pkg)
xpush_simple_list_str(pkg->h, RPMTAG_DIRNAMES);
SPAGAIN;
-void Pkg_distepoch(pkg)
- URPM::Package pkg
- PPCODE:
-#ifdef RPMTAG_DISTEPOCH
- if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(get_name(pkg->h, RPMTAG_DISTEPOCH), 0)));
- }
-#else
- croak("distepoch isn't available with this rpm version");
-#endif
-
-void Pkg_disttag(pkg)
- URPM::Package pkg
- PPCODE:
- if (pkg->h) {
- XPUSHs(sv_2mortal(newSVpv(get_name(pkg->h, RPMTAG_DISTTAG), 0)));
- }
-
void
Pkg_filelinktos(pkg)
URPM::Package pkg
@@ -2280,14 +2282,19 @@ Pkg_files(pkg)
SPAGAIN;
void
-Pkg_files_md5sum(pkg)
+Pkg_files_digest(pkg)
URPM::Package pkg
PPCODE:
PUTBACK;
- xpush_simple_list_str(pkg->h, RPMTAG_FILEMD5S);
+ xpush_simple_list_str(pkg->h, RPMTAG_FILEDIGESTS);
SPAGAIN;
void
+Pkg_files_md5sum(pkg)
+ PPCODE:
+ croak("files_md5sum() is dead. use files_digest() instead");
+
+void
Pkg_files_owner(pkg)
URPM::Package pkg
PPCODE:
@@ -2391,7 +2398,7 @@ Pkg_queryformat(pkg, fmt)
char *s;
PPCODE:
if (pkg->h) {
- s = headerFormat(pkg->h, fmt, NULL);
+ s = headerSprintf(pkg->h, fmt, NULL, NULL, NULL);
if (s) {
XPUSHs(sv_2mortal(newSVpv_utf8(s,0)));
}
@@ -2400,7 +2407,7 @@ Pkg_queryformat(pkg, fmt)
void
Pkg_get_tag(pkg, tagname)
URPM::Package pkg
- int tagname;
+ char *tagname
PPCODE:
PUTBACK;
return_list_tag(pkg, tagname);
@@ -2409,7 +2416,7 @@ Pkg_get_tag(pkg, tagname)
void
Pkg_get_tag_modifiers(pkg, tagname)
URPM::Package pkg
- int tagname;
+ char *tagname
PPCODE:
PUTBACK;
return_list_tag_modifier(pkg->h, tagname);
@@ -2516,7 +2523,14 @@ Pkg_build_header(pkg, fileno)
FD_t fd;
if ((fd = fdDup(fileno)) != NULL) {
- headerWrite(fd, pkg->h, HEADER_MAGIC_YES);
+ const char item[] = "Header";
+ const char * msg = NULL;
+ rpmRC rc = rpmpkgWrite(item, fd, pkg->h, &msg);
+ if (rc != RPMRC_OK) {
+ rpmlog(RPMLOG_ERR, "%s: %s: %s\n", "rpmkpgWrite", item, msg);
+ rc = RPMRC_FAIL;
+ }
+ msg = (const char*)_free(msg);
Fclose(fd);
} else croak("unable to get rpmio handle on fileno %d", fileno);
} else croak("no header available for package");
@@ -2796,7 +2810,18 @@ Db_open(prefix=NULL, write_perm=0)
db = malloc(sizeof(struct s_Transaction));
db->count = 1;
db->ts = rpmtsCreate();
- rpmtsSetRootDir(db->ts, prefix && prefix[0] ? prefix : NULL);
+ if(prefix && prefix[0] && prefix[0] != '/') {
+ char relpath[PATH_MAX];
+ size_t len;
+
+ if(getcwd(relpath, sizeof(relpath)) == NULL)
+ croak("%s", strerror(errno));
+ len = strlen(relpath);
+ snprintf(&(relpath[len]), sizeof(relpath)-len, "/%s", prefix);
+ rpmtsSetRootDir(db->ts, relpath);
+ } else {
+ rpmtsSetRootDir(db->ts, prefix && prefix[0] ? prefix : NULL);
+ }
if (rpmtsOpenDB(db->ts, write_perm ? O_RDWR | O_CREAT : O_RDONLY) == 0) {
RETVAL = db;
} else {
@@ -2808,7 +2833,7 @@ Db_open(prefix=NULL, write_perm=0)
RETVAL
int
-Db_rebuild(prefix="")
+Db_rebuild(prefix=NULL)
char *prefix
PREINIT:
rpmts ts;
@@ -2822,7 +2847,7 @@ Db_rebuild(prefix="")
RETVAL
int
-Db_verify(prefix="")
+Db_verify(prefix=NULL)
char *prefix
PREINIT:
rpmts ts;
@@ -2847,13 +2872,13 @@ Db_traverse(db,callback)
SV *callback
PREINIT:
Header header;
- rpmdbMatchIterator mi;
+ rpmmi mi;
int count = 0;
CODE:
db->ts = rpmtsLink(db->ts, "URPM::DB::traverse");
ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, RPMDBI_PACKAGES, NULL, 0);
- while ((header = rpmdbNextIterator(mi))) {
+ while ((header = rpmmiNext(mi))) {
if (SvROK(callback)) {
dSP;
URPM__Package pkg = calloc(1, sizeof(struct s_Package));
@@ -2872,7 +2897,7 @@ Db_traverse(db,callback)
}
++count;
}
- rpmdbFreeIterator(mi);
+ mi = rpmmiFree(mi);
(void)rpmtsFree(db->ts);
RETVAL = count;
OUTPUT:
@@ -2886,13 +2911,14 @@ Db_traverse_tag(db,tag,names,callback)
SV *callback
PREINIT:
Header header;
- rpmdbMatchIterator mi;
+ rpmmi mi;
int count = 0;
CODE:
if (SvROK(names) && SvTYPE(SvRV(names)) == SVt_PVAV) {
AV* names_av = (AV*)SvRV(names);
int len = av_len(names_av);
- int i, rpmtag;
+ int i;
+ rpmTag rpmtag;
rpmtag = rpmtag_from_string(tag);
@@ -2903,7 +2929,7 @@ Db_traverse_tag(db,tag,names,callback)
db->ts = rpmtsLink(db->ts, "URPM::DB::traverse_tag");
ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, rpmtag, name, str_len);
- while ((header = rpmdbNextIterator(mi))) {
+ while ((header = rpmmiNext(mi))) {
if (SvROK(callback)) {
dSP;
URPM__Package pkg = calloc(1, sizeof(struct s_Package));
@@ -2922,7 +2948,7 @@ Db_traverse_tag(db,tag,names,callback)
}
++count;
}
- (void)rpmdbFreeIterator(mi);
+ (void)rpmmiFree(mi);
(void)rpmtsFree(db->ts);
}
} else croak("bad arguments list");
@@ -2938,15 +2964,15 @@ Db_traverse_tag_find(db,tag,name,callback)
SV *callback
PREINIT:
Header header;
- rpmdbMatchIterator mi;
+ rpmmi mi;
CODE:
- int rpmtag = rpmtag_from_string(tag);
+ rpmTag rpmtag = rpmtag_from_string(tag);
int found = 0;
db->ts = rpmtsLink(db->ts, "URPM::DB::traverse_tag");
ts_nosignature(db->ts);
mi = rpmtsInitIterator(db->ts, rpmtag, name, 0);
- while ((header = rpmdbNextIterator(mi))) {
+ while ((header = rpmmiNext(mi))) {
dSP;
URPM__Package pkg = calloc(1, sizeof(struct s_Package));
@@ -2967,14 +2993,14 @@ Db_traverse_tag_find(db,tag,name,callback)
break;
}
}
- (void)rpmdbFreeIterator(mi);
+ (void)rpmmiFree(mi);
(void)rpmtsFree(db->ts);
RETVAL = found;
OUTPUT:
RETVAL
URPM::Transaction
-Db_create_transaction(db, prefix="/")
+Db_create_transaction(db, prefix=NULL)
URPM::DB db
char *prefix
CODE:
@@ -3010,11 +3036,8 @@ Trans_add(trans, pkg, ...)
CODE:
if ((pkg->flag & FLAG_ID) <= FLAG_ID_MAX && pkg->h != NULL) {
int update = 0;
-#ifndef RPM_ORG
+ int rc;
rpmRelocation relocations = NULL;
-#else
- rpmRelocation *relocations = NULL;
-#endif
/* compability mode with older interface of add */
if (items == 3) {
update = SvIV(ST(2));
@@ -3030,33 +3053,29 @@ Trans_add(trans, pkg, ...)
if (SvROK(ST(i+1)) && SvTYPE(SvRV(ST(i+1))) == SVt_PVAV) {
AV *excludepath = (AV*)SvRV(ST(i+1));
I32 j = 1 + av_len(excludepath);
-#ifndef RPM_ORG
int relno = 0;
relocations = malloc(sizeof(rpmRelocation));
-#else
- relocations = calloc(j + 1, sizeof(rpmRelocation));
-#endif
while (--j >= 0) {
SV **e = av_fetch(excludepath, j, 0);
if (e != NULL && *e != NULL) {
-#ifndef RPM_ORG
rpmfiAddRelocation(&relocations, &relno, SvPV_nolen(*e), NULL);
-#else
- relocations[j].oldPath = SvPV_nolen(*e);
-#endif
}
}
}
}
}
}
- RETVAL = rpmtsAddInstallElement(trans->ts, pkg->h, (fnpyKey)(1+(long)(pkg->flag & FLAG_ID)), update, relocations) == 0;
+ rc = rpmtsAddInstallElement(trans->ts, pkg->h, (fnpyKey)(1+(long)(pkg->flag & FLAG_ID)), update, relocations);
+ if(rc) {
+ rpmps ps = rpmtsProblems(trans->ts);
+ PUTBACK;
+ return_problems(ps, 1, 0);
+ SPAGAIN;
+ }
+
/* free allocated memory, check rpm is copying it just above, at least in 4.0.4 */
-#ifndef RPM_ORG
rpmfiFreeRelocations(relocations);
-#else
- free(relocations);
-#endif
+ RETVAL = rc == 0;
} else RETVAL = 0;
OUTPUT:
RETVAL
@@ -3067,7 +3086,7 @@ Trans_remove(trans, name)
char *name
PREINIT:
Header h;
- rpmdbMatchIterator mi;
+ rpmmi mi;
int count = 0;
char *boa = NULL, *bor = NULL;
CODE:
@@ -3084,15 +3103,15 @@ Trans_remove(trans, name)
*boa = '.'; boa = NULL;
}
}
- mi = rpmtsInitIterator(trans->ts, RPMDBI_LABEL, name, 0);
- while ((h = rpmdbNextIterator(mi))) {
- unsigned int recOffset = rpmdbGetIteratorOffset(mi);
+ mi = rpmtsInitIterator(trans->ts, RPMTAG_NVRA, name, 0);
+ while ((h = rpmmiNext(mi))) {
+ unsigned int recOffset = rpmmiInstance(mi);
if (recOffset != 0) {
rpmtsAddEraseElement(trans->ts, h, recOffset);
++count;
}
}
- rpmdbFreeIterator(mi);
+ mi = rpmmiFree(mi);
if (boa) *boa = '.';
RETVAL=count;
OUTPUT:
@@ -3103,12 +3122,12 @@ Trans_traverse(trans, callback)
URPM::Transaction trans
SV *callback
PREINIT:
- rpmdbMatchIterator mi;
+ rpmmi mi;
Header h;
int c = 0;
CODE:
mi = rpmtsInitIterator(trans->ts, RPMDBI_PACKAGES, NULL, 0);
- while ((h = rpmdbNextIterator(mi))) {
+ while ((h = rpmmiNext(mi))) {
if (SvROK(callback)) {
dSP;
URPM__Package pkg = calloc(1, sizeof(struct s_Package));
@@ -3123,7 +3142,7 @@ Trans_traverse(trans, callback)
}
++c;
}
- rpmdbFreeIterator(mi);
+ mi = rpmmiFree(mi);
RETVAL = c;
OUTPUT:
RETVAL
@@ -3134,7 +3153,7 @@ Trans_check(trans, ...)
PREINIT:
I32 gimme = GIMME_V;
int translate_message = 0;
- int i;
+ int i, r;
PPCODE:
for (i = 1; i < items-1; i+=2) {
STRLEN len;
@@ -3144,28 +3163,24 @@ Trans_check(trans, ...)
translate_message = SvIV(ST(i+1));
}
}
- if (rpmtsCheck(trans->ts)) {
+ r = rpmtsCheck(trans->ts);
+ rpmps ps = rpmtsProblems(trans->ts);
+ if (rpmpsNumProblems(ps) > 0) {
if (gimme == G_SCALAR) {
XPUSHs(sv_2mortal(newSViv(0)));
} else if (gimme == G_ARRAY) {
- XPUSHs(sv_2mortal(newSVpv("error while checking dependencies", 0)));
- }
- } else {
- rpmps ps = rpmtsProblems(trans->ts);
- if (rpmpsNumProblems(ps) > 0) {
- if (gimme == G_SCALAR) {
- XPUSHs(sv_2mortal(newSViv(0)));
- } else if (gimme == G_ARRAY) {
- /* now translation is handled by rpmlib, but only for version 4.2 and above */
- PUTBACK;
- return_problems(ps, 1, 0);
- SPAGAIN;
- }
- } else if (gimme == G_SCALAR) {
- XPUSHs(sv_2mortal(newSViv(1)));
+ /* now translation is handled by rpmlib, but only for version 4.2 and above */
+ PUTBACK;
+ return_problems(ps, 1, 0);
+ SPAGAIN;
}
- ps = rpmpsFree(ps);
+ } else if (gimme == G_SCALAR) {
+ XPUSHs(sv_2mortal(newSViv(1)));
}
+ if(r == 1)
+ XPUSHs(sv_2mortal(newSVpv("error while checking dependencies", 0)));
+
+ ps = rpmpsFree(ps);
void
Trans_order(trans)
@@ -3204,6 +3219,16 @@ Trans_Element_name(trans, index)
RETVAL
char *
+Trans_Element_epoch(trans, index)
+ URPM::Transaction trans
+ int index
+ CODE:
+ rpmte te = rpmtsElement(trans->ts, index);
+ RETVAL = te ? (char *) rpmteE(te) : NULL;
+ OUTPUT:
+ RETVAL
+
+char *
Trans_Element_version(trans, index)
URPM::Transaction trans
int index
@@ -3224,6 +3249,17 @@ Trans_Element_release(trans, index)
RETVAL
char *
+Trans_Element_distepoch(trans, index)
+ URPM::Transaction trans
+ int index
+ CODE:
+ rpmte te = rpmtsElement(trans->ts, index);
+ RETVAL = te ? (char *) rpmteD(te) : NULL;
+ OUTPUT:
+ RETVAL
+
+
+char *
Trans_Element_fullname(trans, index)
URPM::Transaction trans
int index
@@ -3346,12 +3382,29 @@ int
rpmvercmp(one, two)
char *one
char *two
-
+
+int
+rpmEVRcmp(one, two)
+ char *one
+ char *two
+
+int
+rpmEVRcompare(one, two)
+ char *one
+ char *two
+ PREINIT:
+ int compare;
+ CODE:
+ compare = do_rpmEVRcompare(one, two);
+ RETVAL = compare;
+ OUTPUT:
+ RETVAL
+
+
int
-Urpm_ranges_overlap(a, b, b_nopromote=1)
+Urpm_ranges_overlap(a, b)
char *a
char *b
- int b_nopromote
PREINIT:
char *sa = a, *sb = b;
int aflags = 0, bflags = 0;
@@ -3381,7 +3434,7 @@ Urpm_ranges_overlap(a, b, b_nopromote=1)
else break;
++sb;
}
- RETVAL = ranges_overlap(aflags, sa, bflags, sb, b_nopromote);
+ RETVAL = ranges_overlap(aflags, sa, bflags, sb);
}
OUTPUT:
RETVAL
@@ -3404,7 +3457,8 @@ Urpm_parse_synthesis__XS(urpm, filename, ...)
char *p, *eol;
int buff_len;
struct s_Package pkg;
- gzFile f;
+ xFile xF;
+ lzma_ret ret = LZMA_STREAM_END;
int start_id = 1 + av_len(depslist);
SV *callback = NULL;
@@ -3421,12 +3475,12 @@ Urpm_parse_synthesis__XS(urpm, filename, ...)
}
PUTBACK;
- if ((f = gzopen(filename, "rb")) != NULL) {
+ if ((xF = xOpen(filename)).type < XF_FAIL) {
memset(&pkg, 0, sizeof(struct s_Package));
buff[sizeof(buff)-1] = 0;
p = buff;
int ok = 1;
- while ((buff_len = gzread(f, p, sizeof(buff)-1-(p-buff))) >= 0 &&
+ while ((buff_len = xRead(&xF, &ret, p, sizeof(buff)-1-(p-buff))) >= 0 &&
(buff_len += p-buff)) {
buff[buff_len] = 0;
p = buff;
@@ -3438,11 +3492,11 @@ Urpm_parse_synthesis__XS(urpm, filename, ...)
} while ((eol = strchr(p, '\n')) != NULL);
} else {
/* a line larger than sizeof(buff) has been encountered, bad file problably */
- fprintf(stderr, "invalid line <%s>\n", p);
+ fprintf(stderr, "invalid line <%s>\n%s\n", p, buff);
ok = 0;
break;
}
- if (gzeof(f)) {
+ if (xF.eof) {
if (!parse_line(depslist, provides, obsoletes, &pkg, p, urpm, callback)) ok = 0;
break;
} else {
@@ -3452,7 +3506,8 @@ Urpm_parse_synthesis__XS(urpm, filename, ...)
p = &buff[buff_len-(p-buff)];
}
}
- if (gzclose(f) != 0) ok = 0;
+ if(ret != LZMA_STREAM_END) ok = 0;
+ if (xClose(&xF) != 0) ok = 0;
SPAGAIN;
if (ok) {
XPUSHs(sv_2mortal(newSViv(start_id)));
@@ -3493,10 +3548,12 @@ Urpm_parse_hdlist__XS(urpm, filename, ...)
close(d);
if (empty_archive) {
- XPUSHs(sv_2mortal(newSViv(1 + av_len(depslist))));
- XPUSHs(sv_2mortal(newSViv(av_len(depslist))));
+ XPUSHs(sv_2mortal(newSViv(1 + av_len(depslist))));
+ XPUSHs(sv_2mortal(newSViv(av_len(depslist))));
} else if (d >= 0 && fd) {
- Header header;
+ rpmts ts = NULL;
+ rpmgi gi = NULL;
+ rpmRC rc = RPMRC_NOTFOUND;
int start_id = 1 + av_len(depslist);
int packing = 0;
SV *callback = NULL;
@@ -3519,30 +3576,39 @@ Urpm_parse_hdlist__XS(urpm, filename, ...)
}
PUTBACK;
- do {
- header=headerRead(fd, HEADER_MAGIC_YES);
- if (header != NULL) {
- struct s_Package pkg, *_pkg;
- SV *sv_pkg;
-
- memset(&pkg, 0, sizeof(struct s_Package));
- pkg.flag = 1 + av_len(depslist);
- pkg.h = header;
- sv_pkg = sv_setref_pv(newSVpv("", 0), "URPM::Package",
- _pkg = memcpy(malloc(sizeof(struct s_Package)), &pkg, sizeof(struct s_Package)));
- if (call_package_callback(urpm, sv_pkg, callback)) {
- if (provides) {
- update_provides(_pkg, provides);
- update_provides_files(_pkg, provides);
- }
- if (obsoletes) update_obsoletes(_pkg, obsoletes);
- if (packing) pack_header(_pkg);
- av_push(depslist, sv_pkg);
+ rc = RPMRC_NOTFOUND;
+ ts = rpmtsCreate();
+ rpmtsSetRootDir(ts, NULL);
+ gi = rpmgiNew(ts, RPMDBI_HDLIST, NULL, 0);
+
+ rpmtsSetVSFlags(ts, _RPMVSF_NOSIGNATURES | RPMVSF_NOHDRCHK | _RPMVSF_NOPAYLOAD | _RPMVSF_NOHEADER);
+ gi->active = 1;
+ gi->fd = fd;
+ while ((rc = rpmgiNext(gi)) == RPMRC_OK) {
+ struct s_Package pkg, *_pkg;
+ SV *sv_pkg;
+
+ memset(&pkg, 0, sizeof(struct s_Package));
+ pkg.flag = 1 + av_len(depslist);
+ pkg.h = rpmgiHeader(gi);
+ /* prevent rpmgiNext() from freeing header */
+ gi->h = NULL;
+ sv_pkg = sv_setref_pv(newSVpv("", 0), "URPM::Package",
+ _pkg = memcpy(malloc(sizeof(struct s_Package)), &pkg, sizeof(struct s_Package)));
+ if (call_package_callback(urpm, sv_pkg, callback)) {
+ if (provides) {
+ update_provides(_pkg, provides);
+ update_provides_files(_pkg, provides);
}
+ if (obsoletes) update_obsoletes(_pkg, obsoletes);
+ if (packing) pack_header(_pkg);
+ av_push(depslist, sv_pkg);
}
- } while (header != NULL);
+ }
+ gi = rpmgiFree(gi);
+ ts = rpmtsFree(ts);
- int ok = Fclose(fd) == 0;
+ int ok = 1;
if (pid) {
kill(pid, SIGTERM);
@@ -3559,9 +3625,9 @@ Urpm_parse_hdlist__XS(urpm, filename, ...)
XPUSHs(sv_2mortal(newSViv(av_len(depslist))));
}
} else {
- SV **nofatal = hv_fetch((HV*)SvRV(urpm), "nofatal", 7, 0);
- if (!nofatal || !SvIV(*nofatal))
- croak("cannot open hdlist file %s", filename);
+ SV **nofatal = hv_fetch((HV*)SvRV(urpm), "nofatal", 7, 0);
+ if (!nofatal || !SvIV(*nofatal))
+ croak("cannot open hdlist file %s", filename);
}
} else croak("first argument should contain a depslist ARRAY reference");
} else croak("first argument should be a reference to a HASH");
@@ -3681,7 +3747,7 @@ Urpm_verify_rpm(filename, ...)
} else {
read_config_files(0);
ts = rpmtsCreate();
- rpmtsSetRootDir(ts, "/");
+ rpmtsSetRootDir(ts, NULL);
rpmtsOpenDB(ts, O_RDONLY);
if (rpmVerifySignatures(&qva, ts, fd, filename)) {
RETVAL = 0;
@@ -3727,7 +3793,7 @@ Urpm_get_gpg_fingerprint(filename)
char *
-Urpm_verify_signature(filename, prefix="/")
+Urpm_verify_signature(filename, prefix=NULL)
char *filename
char *prefix
PREINIT:
@@ -3752,10 +3818,12 @@ Urpm_verify_signature(filename, prefix="/")
switch(rc) {
case RPMRC_OK:
if (h) {
- char *fmtsig = headerFormat(
+ char *fmtsig = headerSprintf(
h,
"%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:"
"{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|",
+ NULL,
+ NULL,
NULL);
snprintf(result, sizeof(result), "OK (%s)", fmtsig);
free(fmtsig);
@@ -3800,7 +3868,7 @@ Urpm_import_pubkey_file(db, filename)
RETVAL = 0;
} else if (rc != PGPARMOR_PUBKEY) {
RETVAL = 0;
- } else if (rpmtsImportPubkey(ts, pkt, pktlen) != RPMRC_OK) {
+ } else if (rpmcliImportPubkey(ts, pkt, pktlen) != RPMRC_OK) {
RETVAL = 0;
} else {
RETVAL = 1;
@@ -3823,18 +3891,12 @@ int
Urpm_archscore(arch)
const char * arch
PREINIT:
-#ifndef RPM_ORG
char * platform = NULL;
-#endif
CODE:
read_config_files(0);
-#ifndef RPM_ORG
platform = rpmExpand(arch, "-%{_target_vendor}-%{_target_os}%{?_gnu}", NULL);
RETVAL=rpmPlatformScore(platform, NULL, 0);
_free(platform);
-#else
- RETVAL=rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch);
-#endif
OUTPUT:
RETVAL
@@ -3842,18 +3904,12 @@ int
Urpm_osscore(os)
const char * os
PREINIT:
-#ifndef RPM_ORG
char * platform = NULL;
-#endif
CODE:
read_config_files(0);
-#ifndef RPM_ORG
platform = rpmExpand("%{_target_cpu}-%{_target_vendor}-", os, "%{?_gnu}", NULL);
RETVAL=rpmPlatformScore(platform, NULL, 0);
_free(platform);
-#else
- RETVAL=rpmMachineScore(RPM_MACHTABLE_INSTOS, os);
-#endif
OUTPUT:
RETVAL
@@ -3862,13 +3918,7 @@ Urpm_platformscore(platform)
const char * platform
CODE:
read_config_files(0);
-#ifndef RPM_ORG
RETVAL=rpmPlatformScore(platform, NULL, 0);
-#else
- unused_variable(platform);
- croak("platformscore() is available only since rpm 4.4.8");
- RETVAL=0;
-#endif
OUTPUT:
RETVAL
@@ -3880,9 +3930,22 @@ Urpm_stream2header(fp)
URPM__Package pkg;
PPCODE:
if ((fd = fdDup(fileno(fp)))) {
- pkg = (URPM__Package)malloc(sizeof(struct s_Package));
- memset(pkg, 0, sizeof(struct s_Package));
- pkg->h = headerRead(fd, HEADER_MAGIC_YES);
+ const char item[] = "Header";
+ const char * msg = NULL;
+ rpmRC rc;
+
+ pkg = (URPM__Package)calloc(1, sizeof(struct s_Package));
+ rc = rpmpkgRead(item, fd, &pkg->h, &msg);
+
+ switch (rc) {
+ default:
+ rpmlog(RPMLOG_ERR, "%s: %s: %s\n", "rpmpkgRead", item, msg);
+ case RPMRC_NOTFOUND:
+ pkg->h = NULL;
+ case RPMRC_OK:
+ break;
+ }
+ msg = (const char*)_free(msg);
if (pkg->h) {
SV *sv_pkg;
EXTEND(SP, 1);
@@ -3907,26 +3970,28 @@ Urpm_spec2srcheader(specfile)
#define SPEC_ANYARCH 1
/* Do not verify whether sources exist */
#define SPEC_FORCE 1
- if (!parseSpec(ts, specfile, "/", NULL, 0, NULL, NULL, SPEC_ANYARCH, SPEC_FORCE)) {
+ if (!parseSpec(ts, specfile, "/", 0, NULL, NULL, SPEC_ANYARCH, SPEC_FORCE, 0)) {
SV *sv_pkg;
+ HE_t he;
+
spec = rpmtsSetSpec(ts, NULL);
-#ifdef RPM_ORG
- if (! spec->sourceHeader)
-#endif
- initSourceHeader(spec);
- pkg = (URPM__Package)malloc(sizeof(struct s_Package));
- memset(pkg, 0, sizeof(struct s_Package));
- headerPutString(spec->sourceHeader, RPMTAG_SOURCERPM, "");
+ initSourceHeader(spec, NULL);
+ pkg = (URPM__Package)calloc(1, sizeof(struct s_Package));
+ he = (HE_t)memset(alloca(sizeof(*he)), 0, sizeof(*he));
+
+ he->tag = RPMTAG_SOURCERPM;
+ he->p.str = "";
+ he->c = 1;
+ headerPut(spec->sourceHeader, he, 0);
{
- struct rpmtd_s td = {
- .tag = RPMTAG_ARCH,
- .type = RPM_STRING_TYPE,
- .data = (void *) "src",
- .count = 1,
- };
+ HE_t he = (HE_t)memset(alloca(sizeof(*he)), 0, sizeof(*he));
+ he->tag = RPMTAG_ARCH;
+ he->t = RPM_STRING_TYPE;
+ he->p.str = "src";
+ he->c = 1,
/* parseSpec() sets RPMTAG_ARCH to %{_target_cpu} whereas we really a header similar to .src.rpm header */
- headerMod(spec->sourceHeader, &td);
+ headerMod(spec->sourceHeader, he, 0);
}
pkg->h = headerLink(spec->sourceHeader);
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index 4090313..b5cb975 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -500,7 +500,7 @@ sub unsatisfied_requires {
if (my ($pn, $ps) = property2name_range($_)) {
$ps or $state->{cached_installed}{$pn}{$p->fullname} = undef;
$pn eq $n or next;
- URPM::ranges_overlap($ps, $s, 1) and ++$satisfied;
+ URPM::ranges_overlap($ps, $s) and ++$satisfied;
}
}
});
diff --git a/t/parse.t b/t/parse.t
index cc9d3ba..376916c 100644
--- a/t/parse.t
+++ b/t/parse.t
@@ -65,9 +65,7 @@ is($pkg->get_tag(1001), '1.0', 'version');
is($pkg->get_tag(1002), '1mdk', 'release');
is($pkg->queryformat("%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}"), "test-rpm-1.0-1mdk.noarch",
q/get headers from hdlist/);
-rpm_is_jbj_version() ?
- ok($pkg->is_platform_compat() > 0, "can evaluate platform score") :
- pass('no platform compat');
+ok($pkg->is_platform_compat() > 0, "can evaluate platform score");
my $headers = eval { [ $b->parse_rpms_build_headers(rpms => [ "tmp/RPMS/noarch/test-rpm-1.0-1mdk.noarch.rpm" ],
dir => 'headers') ] };
@@ -81,11 +79,11 @@ is("$start $end", "2 2", 'parse_headers');
# Version comparison
-ok(URPM::rpmvercmp("1-1mdk", "1-1mdk") == 0, "Same value = 0");
-ok(URPM::rpmvercmp("0:1-1mdk", "1-1mdk") == -1, "Same value, epoch 0 on left = 1");
-ok(URPM::rpmvercmp("1-1mdk", "1-2mdk") == -1, "Right value win = -1");
-ok(URPM::rpmvercmp("1-2mdk", "1-1mdk") == 1, "Left value win = 1");
-ok(URPM::rpmvercmp("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1");
+ok(URPM::rpmEVRcompare("1-1mdk", "1-1mdk") == 0, "Same value = 0");
+ok(URPM::rpmEVRcompare("0:1-1mdk", "1-1mdk") == 0, "Same value, epoch 0 on left = 0");
+ok(URPM::rpmEVRcompare("1-1mdk", "1-2mdk") == -1, "Right value win = -1");
+ok(URPM::rpmEVRcompare("1-2mdk", "1-1mdk") == 1, "Left value win = 1");
+ok(URPM::rpmEVRcompare("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1");
{
open(my $hdfh, "zcat hdlist.cz 2>/dev/null |") or die $!;
@@ -112,8 +110,3 @@ ok(URPM::rpmvercmp("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1");
ok(!defined $pkg, "bad spec");
END { unlink "bad.spec" }
}
-
-sub rpm_is_jbj_version {
- # checking for --yaml support
- `rpm --help` =~ /yaml/;
-}
diff --git a/t/res/basesystem-minimal.resolve.nosuggests b/t/res/basesystem-minimal.resolve.nosuggests
new file mode 100644
index 0000000..057e94a
--- /dev/null
+++ b/t/res/basesystem-minimal.resolve.nosuggests
@@ -0,0 +1,141 @@
+basesystem-minimal-2010.0-2mdv2010.1.x86_64
+util-linux-ng-2.18-1mdv2011.0.x86_64
+glibc-2.12.1-3mnb2.x86_64
+dash-static-0.5.6.1-1mdv2011.0.x86_64
+lib64blkid1-2.18-1mdv2011.0.x86_64
+bash-4.1-7mdv2011.0.x86_64
+lib64termcap2-2.0.8-49mdv2010.1.x86_64
+lib64uuid1-2.18-1mdv2011.0.x86_64
+lib64audit1-2.0.4-5mdv2010.1.x86_64
+diffutils-3.0-1mdv2011.0.x86_64
+info-install-4.13a-1mdv2010.1.x86_64
+xz-4.999.9beta-2mdv2010.1.x86_64
+lib64lzma2-4.999.9beta-2mdv2010.1.x86_64
+lib64sigsegv2-2.8-2mdv2010.1.x86_64
+lib64mount1-2.18-1mdv2011.0.x86_64
+coreutils-8.5-2mdv2011.0.x86_64
+lib64gmp10-5.0.1-1mdv2010.1.x86_64
+lib64cap2-2.19-5mdv2010.1.x86_64
+lib64attr1-2.4.44-1mdv2010.1.x86_64
+pam-1.1.1-2mdv2010.1.x86_64
+pam_tcb-1.0.3-6mdv2010.1.x86_64
+lib64tcb0-1.0.3-6mdv2010.1.x86_64
+setup-2.7.18-1mdv2010.1.x86_64
+run-parts-3.2.1-6mdv2010.1.x86_64
+shadow-utils-4.1.4.2-6mdv2010.1.x86_64
+lib64pam_userpass1-1.0.2-4mdv2010.1.x86_64
+lib64pam0-1.1.1-2mdv2010.1.x86_64
+lib64crack2-2.8.16-1mdv2010.1.x86_64
+lib64dbnss4.8-4.8.30-1mdv2011.0.x86_64
+tcb-1.0.3-6mdv2010.1.x86_64
+nss_tcb-1.0.3-6mdv2010.1.x86_64
+rpm-helper-0.23.1-1mdv2010.1.noarch
+grep-2.7-1mdv2011.0.x86_64
+lib64pcre0-8.10-1mdv2011.0.x86_64
+libgcc1-4.5.1-1mnb2.x86_64
+libstdc++6-4.5.1-1mnb2.x86_64
+perl-base-5.12.2-4mdv2011.0.x86_64
+findutils-4.5.9-1mdv2011.0.x86_64
+chkconfig-1.3.37-5mdv2010.1.x86_64
+lib64popt0-1.15-9mdv2010.1.x86_64
+popt-data-1.15-9mdv2010.1.x86_64
+cracklib-dicts-2.8.16-1mdv2010.1.x86_64
+lib64acl1-2.2.49-2mdv2010.1.x86_64
+gawk-3.1.8-1mdv2011.0.x86_64
+zlib1-1.2.3-15mdv2010.1.x86_64
+lib64uClibc0.9.30.1-0.9.30.1-13mdv2011.0.x86_64
+uClibc-0.9.30.1-13mdv2011.0.x86_64
+lib64ncursesw5-5.7-4.20100925.1mdv2011.0.x86_64
+ncurses-5.7-4.20100925.1mdv2011.0.x86_64
+lib64ncurses5-5.7-4.20100925.1mdv2011.0.x86_64
+udev-162-2mnb2.x86_64
+lib64usb-compat0.1_4-0.1.3-3mdv2010.1.x86_64
+lib64usb1.0_0-1.0.8-1mdv2011.0.x86_64
+ldetect-lst-0.1.288-1mdv2011.0.x86_64
+gzip-1.4-1mdv2010.1.x86_64
+less-436-3mdv2010.1.x86_64
+file-5.04-1mdv2010.1.x86_64
+lib64magic1-5.04-1mdv2010.1.x86_64
+mktemp-1.7-1mdv2011.0.x86_64
+lib64glib2.0_0-2.26.0-1mdv2011.0.x86_64
+glib2.0-common-2.26.0-1mdv2011.0.x86_64
+lib64gio2.0_0-2.26.0-1mdv2011.0.x86_64
+lib64gamin-1_0-0.1.10-4mdv2010.1.x86_64
+gamin-0.1.10-4mdv2010.1.x86_64
+psmisc-22.13-1mdv2011.0.x86_64
+which-2.20-5mdv2010.1.x86_64
+rpm-4.6.1-1mnb2.x86_64
+lib64rpm4.6-4.6.1-1mnb2.x86_64
+lib64elfutils1-0.149-1mdv2011.0.x86_64
+lib64sqlite3_0-3.7.2-1mdv2011.0.x86_64
+lib64lua5.1-5.1.4-8mdv2010.1.x86_64
+lib64readline6-6.1-2mdv2010.1.x86_64
+lib64bzip2_1-1.0.6-1mdv2011.0.x86_64
+lib64db4.8-4.8.30-1mdv2011.0.x86_64
+update-alternatives-1.9.0-6mdv2010.1.noarch
+rpm-mandriva-setup-1.107-1mdv2011.0.x86_64
+rpm-manbo-setup-2-21mnb2.noarch
+bzip2-1.0.6-1mdv2011.0.x86_64
+cpio-2.11-1mdv2010.1.x86_64
+rmt-0.4b42-1mdv2010.1.x86_64
+crontabs-1.10-15mdv2010.1.noarch
+net-tools-1.60-32mdv2010.1.x86_64
+timezone-2010l-1mdv2011.0.x86_64
+makedev-4.4-10mdv2010.1.noarch
+sed-4.2.1-2mdv2010.1.x86_64
+perl-MDK-Common-1.2.26-3mdv2011.0.noarch
+perl-File-Sync-0.90.0-4mdv2011.0.x86_64
+termcap-11.0.1-18mdv2010.1.noarch
+mingetty-1.08-5mdv2010.1.x86_64
+kbd-1.15.2-1mdv2010.1.x86_64
+tar-1.23-4mdv2011.0.x86_64
+time-1.7-35mdv2010.1.x86_64
+common-licenses-1.0-16mdv2010.1.noarch
+cronie-1.4.4-2mdv2010.1.x86_64
+rsyslog-4.6.4-1mdv2011.0.x86_64
+logrotate-3.7.9-1mdv2011.0.x86_64
+sash-3.7-10mdv2010.1.x86_64
+e2fsprogs-1.41.12-1mnb2.x86_64
+lib64ext2fs2-1.41.12-1mnb2.x86_64
+utempter-0.5.5-10mdv2010.1.x86_64
+lib64utempter0-0.5.5-10mdv2010.1.x86_64
+etcskel-1.63-26mdv2010.1.noarch
+rootfiles-11.0-5mdv2010.1.noarch
+sysvinit-2.87-6mdv2010.1.x86_64
+sysvinit-tools-2.87-6mdv2010.1.x86_64
+passwd-0.78-1mdv2011.0.x86_64
+libuser-0.56.18-1mdv2011.0.x86_64
+lib64user1-0.56.18-1mdv2011.0.x86_64
+initscripts-8.99-15mdv2010.1.x86_64
+sound-scripts-0.60-1mdv2010.1.noarch
+procps-3.2.8-4mdv2011.0.x86_64
+aumix-text-2.9.1-1mdv2011.0.x86_64
+module-init-tools-3.6-10mdv2010.1.x86_64
+lib64modprobe0-3.6-10mdv2010.1.x86_64
+ifmetric-0.3-8mnb2.x86_64
+prcsys-0.0.3-6mdv2010.1.x86_64
+ethtool-6-6mdv2010.1.x86_64
+resolvconf-1.46-1mdv2011.0.noarch
+iproute2-2.6.34-1mdv2011.0.x86_64
+iputils-20100418-1mdv2011.0.x86_64
+lib64idn11-1.19-1mdv2011.0.x86_64
+lib64openssl1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64openssl-engines1.0.0-1.0.0a-6mdv2011.0.x86_64
+dmsetup-1.02.44-5mnb2.x86_64
+lib64devmapper1.02-1.02.44-5mnb2.x86_64
+lib64udev0-162-2mnb2.x86_64
+lib64devmapper-event1.02-1.02.44-5mnb2.x86_64
+gettext-base-0.18.1.1-1mdv2011.0.x86_64
+lib64intl8-0.18.1.1-1mdv2011.0.x86_64
+ifplugd-0.28-12mdv2010.1.x86_64
+lib64daemon0-0.14-1mdv2010.1.x86_64
+filesystem-2.1.9-9mdv2010.1.x86_64
+mandriva-release-Powerpack-2011.0-0.1mdv2011.0.x86_64
+mandriva-release-common-2011.0-0.1mdv2011.0.x86_64
+vim-enhanced-7.3.003-2mdv2011.0.x86_64
+lib64python2.6-2.6.6-1mdv2011.0.x86_64
+lib64tcl8.6-8.6-0.b1.3mdv2010.1.x86_64
+vim-common-7.3.003-2mdv2011.0.x86_64
+lib64nss3-3.12.7-2mdv2011.0.x86_64
+nss-3.12.7-2mdv2011.0.x86_64
+lib64nspr4-4.8.6-2mdv2011.0.x86_64
diff --git a/t/res/basesystem.resolve.suggests b/t/res/basesystem.resolve.suggests
new file mode 100644
index 0000000..18d5494
--- /dev/null
+++ b/t/res/basesystem.resolve.suggests
@@ -0,0 +1,527 @@
+basesystem-2010.0-2mdv2010.1.x86_64
+basesystem-minimal-2010.0-2mdv2010.1.x86_64
+util-linux-ng-2.18-1mdv2011.0.x86_64
+glibc-2.12.1-3mnb2.x86_64
+dash-static-0.5.6.1-1mdv2011.0.x86_64
+lib64blkid1-2.18-1mdv2011.0.x86_64
+bash-4.1-7mdv2011.0.x86_64
+lib64termcap2-2.0.8-49mdv2010.1.x86_64
+lib64uuid1-2.18-1mdv2011.0.x86_64
+lib64audit1-2.0.4-5mdv2010.1.x86_64
+diffutils-3.0-1mdv2011.0.x86_64
+info-install-4.13a-1mdv2010.1.x86_64
+xz-4.999.9beta-2mdv2010.1.x86_64
+lib64lzma2-4.999.9beta-2mdv2010.1.x86_64
+lib64sigsegv2-2.8-2mdv2010.1.x86_64
+lib64mount1-2.18-1mdv2011.0.x86_64
+coreutils-8.5-2mdv2011.0.x86_64
+lib64gmp10-5.0.1-1mdv2010.1.x86_64
+lib64cap2-2.19-5mdv2010.1.x86_64
+lib64attr1-2.4.44-1mdv2010.1.x86_64
+pam-1.1.1-2mdv2010.1.x86_64
+pam_tcb-1.0.3-6mdv2010.1.x86_64
+lib64tcb0-1.0.3-6mdv2010.1.x86_64
+setup-2.7.18-1mdv2010.1.x86_64
+run-parts-3.2.1-6mdv2010.1.x86_64
+shadow-utils-4.1.4.2-6mdv2010.1.x86_64
+lib64pam_userpass1-1.0.2-4mdv2010.1.x86_64
+lib64pam0-1.1.1-2mdv2010.1.x86_64
+lib64crack2-2.8.16-1mdv2010.1.x86_64
+lib64dbnss4.8-4.8.30-1mdv2011.0.x86_64
+tcb-1.0.3-6mdv2010.1.x86_64
+nss_tcb-1.0.3-6mdv2010.1.x86_64
+rpm-helper-0.23.1-1mdv2010.1.noarch
+grep-2.7-1mdv2011.0.x86_64
+lib64pcre0-8.10-1mdv2011.0.x86_64
+libgcc1-4.5.1-1mnb2.x86_64
+libstdc++6-4.5.1-1mnb2.x86_64
+perl-base-5.12.2-4mdv2011.0.x86_64
+findutils-4.5.9-1mdv2011.0.x86_64
+chkconfig-1.3.37-5mdv2010.1.x86_64
+lib64popt0-1.15-9mdv2010.1.x86_64
+popt-data-1.15-9mdv2010.1.x86_64
+cracklib-dicts-2.8.16-1mdv2010.1.x86_64
+lib64acl1-2.2.49-2mdv2010.1.x86_64
+gawk-3.1.8-1mdv2011.0.x86_64
+zlib1-1.2.3-15mdv2010.1.x86_64
+lib64uClibc0.9.30.1-0.9.30.1-13mdv2011.0.x86_64
+uClibc-0.9.30.1-13mdv2011.0.x86_64
+lib64ncursesw5-5.7-4.20100925.1mdv2011.0.x86_64
+ncurses-5.7-4.20100925.1mdv2011.0.x86_64
+lib64ncurses5-5.7-4.20100925.1mdv2011.0.x86_64
+udev-162-2mnb2.x86_64
+lib64usb-compat0.1_4-0.1.3-3mdv2010.1.x86_64
+lib64usb1.0_0-1.0.8-1mdv2011.0.x86_64
+ldetect-lst-0.1.288-1mdv2011.0.x86_64
+gzip-1.4-1mdv2010.1.x86_64
+less-436-3mdv2010.1.x86_64
+file-5.04-1mdv2010.1.x86_64
+lib64magic1-5.04-1mdv2010.1.x86_64
+mktemp-1.7-1mdv2011.0.x86_64
+lib64glib2.0_0-2.26.0-1mdv2011.0.x86_64
+glib2.0-common-2.26.0-1mdv2011.0.x86_64
+lib64gio2.0_0-2.26.0-1mdv2011.0.x86_64
+lib64gamin-1_0-0.1.10-4mdv2010.1.x86_64
+gamin-0.1.10-4mdv2010.1.x86_64
+psmisc-22.13-1mdv2011.0.x86_64
+which-2.20-5mdv2010.1.x86_64
+rpm-4.6.1-1mnb2.x86_64
+lib64rpm4.6-4.6.1-1mnb2.x86_64
+lib64elfutils1-0.149-1mdv2011.0.x86_64
+lib64sqlite3_0-3.7.2-1mdv2011.0.x86_64
+lib64lua5.1-5.1.4-8mdv2010.1.x86_64
+lib64readline6-6.1-2mdv2010.1.x86_64
+lib64bzip2_1-1.0.6-1mdv2011.0.x86_64
+lib64db4.8-4.8.30-1mdv2011.0.x86_64
+lib64nss3-3.12.7-2mdv2011.0.x86_64
+nss-3.12.7-2mdv2011.0.x86_64
+lib64nspr4-4.8.6-2mdv2011.0.x86_64
+update-alternatives-1.9.0-6mdv2010.1.noarch
+rpm-mandriva-setup-1.107-1mdv2011.0.x86_64
+rpm-manbo-setup-2-21mnb2.noarch
+bzip2-1.0.6-1mdv2011.0.x86_64
+cpio-2.11-1mdv2010.1.x86_64
+rmt-0.4b42-1mdv2010.1.x86_64
+crontabs-1.10-15mdv2010.1.noarch
+net-tools-1.60-32mdv2010.1.x86_64
+timezone-2010l-1mdv2011.0.x86_64
+vim-enhanced-7.3.003-2mdv2011.0.x86_64
+lib64python2.6-2.6.6-1mdv2011.0.x86_64
+lib64tcl8.6-8.6-0.b1.3mdv2010.1.x86_64
+vim-common-7.3.003-2mdv2011.0.x86_64
+makedev-4.4-10mdv2010.1.noarch
+sed-4.2.1-2mdv2010.1.x86_64
+perl-MDK-Common-1.2.26-3mdv2011.0.noarch
+perl-File-Sync-0.90.0-4mdv2011.0.x86_64
+termcap-11.0.1-18mdv2010.1.noarch
+mingetty-1.08-5mdv2010.1.x86_64
+kbd-1.15.2-1mdv2010.1.x86_64
+tar-1.23-4mdv2011.0.x86_64
+time-1.7-35mdv2010.1.x86_64
+common-licenses-1.0-16mdv2010.1.noarch
+cronie-1.4.4-2mdv2010.1.x86_64
+rsyslog-4.6.4-1mdv2011.0.x86_64
+logrotate-3.7.9-1mdv2011.0.x86_64
+sash-3.7-10mdv2010.1.x86_64
+e2fsprogs-1.41.12-1mnb2.x86_64
+lib64ext2fs2-1.41.12-1mnb2.x86_64
+utempter-0.5.5-10mdv2010.1.x86_64
+lib64utempter0-0.5.5-10mdv2010.1.x86_64
+etcskel-1.63-26mdv2010.1.noarch
+rootfiles-11.0-5mdv2010.1.noarch
+passwd-0.78-1mdv2011.0.x86_64
+libuser-0.56.18-1mdv2011.0.x86_64
+lib64user1-0.56.18-1mdv2011.0.x86_64
+sysvinit-2.87-6mdv2010.1.x86_64
+sysvinit-tools-2.87-6mdv2010.1.x86_64
+initscripts-8.99-15mdv2010.1.x86_64
+sound-scripts-0.60-1mdv2010.1.noarch
+procps-3.2.8-4mdv2011.0.x86_64
+aumix-text-2.9.1-1mdv2011.0.x86_64
+module-init-tools-3.6-10mdv2010.1.x86_64
+lib64modprobe0-3.6-10mdv2010.1.x86_64
+ifmetric-0.3-8mnb2.x86_64
+prcsys-0.0.3-6mdv2010.1.x86_64
+ethtool-6-6mdv2010.1.x86_64
+resolvconf-1.46-1mdv2011.0.noarch
+iproute2-2.6.34-1mdv2011.0.x86_64
+iputils-20100418-1mdv2011.0.x86_64
+lib64idn11-1.19-1mdv2011.0.x86_64
+lib64openssl1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64openssl-engines1.0.0-1.0.0a-6mdv2011.0.x86_64
+dmsetup-1.02.44-5mnb2.x86_64
+lib64devmapper1.02-1.02.44-5mnb2.x86_64
+lib64udev0-162-2mnb2.x86_64
+lib64devmapper-event1.02-1.02.44-5mnb2.x86_64
+gettext-base-0.18.1.1-1mdv2011.0.x86_64
+lib64intl8-0.18.1.1-1mdv2011.0.x86_64
+ifplugd-0.28-12mdv2010.1.x86_64
+lib64daemon0-0.14-1mdv2010.1.x86_64
+mandriva-release-Powerpack-2011.0-0.1mdv2011.0.x86_64
+mandriva-release-common-2011.0-0.1mdv2011.0.x86_64
+filesystem-2.1.9-9mdv2010.1.x86_64
+kernel-desktop-2.6.35.6-1mnb-1-1mnb2.x86_64
+sysfsutils-2.1.0-10mnb2.x86_64
+lib64sysfs2-2.1.0-10mnb2.x86_64
+kernel-firmware-20100804-1mnb2.noarch
+bootloader-utils-1.15-5mdv2010.1.noarch
+drakxtools-backend-13.35-4mdv2011.0.x86_64
+perl-5.12.2-4mdv2011.0.x86_64
+lib64gdbm3-1.8.3-13mdv2010.1.x86_64
+perl-String-ShellQuote-1.40.0-2mdv2011.0.noarch
+drakx-kbd-mouse-x11-0.90-1mdv2010.1.x86_64
+usermode-consoleonly-1.106-1mdv2011.0.x86_64
+drakxtools-curses-13.35-4mdv2011.0.x86_64
+perl-Curses-UI-0.960.700-1mdv2011.0.noarch
+perl-Term-ReadKey-2.30-10mdv2011.0.x86_64
+perl-Curses-1.280.0-3mdv2011.0.x86_64
+drakx-net-text-0.90-2mdv2011.0.noarch
+libdrakx-net-0.90-2mdv2011.0.noarch
+crda-1.1.1-1mdv2010.1.x86_64
+lib64nl1-1.1-5mdv2010.1.x86_64
+lib64gcrypt11-1.4.6-3mdv2011.0.x86_64
+multiarch-utils-1.0.10-1mdv2010.1.noarch
+lib64gpg-error0-1.9-1mdv2011.0.x86_64
+libgpg-error-common-1.9-1mdv2011.0.x86_64
+lib64pth20-2.0.7-7mdv2010.1.x86_64
+wireless-regdb-20091125-1mdv2010.1.noarch
+iw-0.9.21-1mdv2011.0.x86_64
+perl-Net-Telnet-3.30.0-1mdv2011.0.noarch
+perl-Libconf-0.42.10-2mdv2011.0.x86_64
+perl-Text-DelimMatch-1.06-6mdv2011.0.noarch
+urpmi-6.38-1mdv2011.0.noarch
+eject-2.1.5-8mdv2010.1.x86_64
+perl-MDV-Distribconf-4.02-2mdv2011.0.noarch
+perl-Config-IniFiles-2.580.0-2mdv2011.0.noarch
+perl-Locale-gettext-1.50.0-4mdv2011.0.x86_64
+meta-task-2010.1-11mdv2010.1.noarch
+gnupg-1.4.10-2mdv2010.1.x86_64
+lib64ldap2.4_2-2.4.23-1mdv2011.0.x86_64
+lib64sasl2-2.1.23-8mdv2010.1.x86_64
+openldap-2.4.23-1mdv2011.0.x86_64
+lib64curl4-7.21.1-1mdv2011.0.x86_64
+lib64ssh2_1-1.2.7-1mdv2011.0.x86_64
+rootcerts-20100827.00-1mdv2011.0.x86_64
+lib64krb53-1.8.3-1mdv2011.0.x86_64
+krb5-1.8.3-1mdv2011.0.x86_64
+perl-URPM-3.36-2mdv2011.0.x86_64
+perl-MDV-Packdrakeng-1.13-6mdv2011.0.noarch
+genhdlist2-5.9-4mdv2011.0.x86_64
+perl-XML-LibXML-1.700.0-7mdv2011.0.x86_64
+perl-XML-SAX-0.960.0-1mdv2011.0.noarch
+perl-XML-NamespaceSupport-1.110.0-1mdv2011.0.noarch
+lib64xml2_2-2.7.7-1mdv2010.1.x86_64
+perl-Time-ZoneInfo-0.300.0-2mdv2011.0.noarch
+perl-Filesys-Df-0.920.0-5mdv2011.0.x86_64
+monitor-edid-3.0-1mdv2010.1.x86_64
+lib64x86_1-1.1-7mdv2010.1.x86_64
+dmidecode-2.10-3mdv2010.1.x86_64
+perl-File-FnMatch-0.20.0-3mdv2011.0.x86_64
+lib64ldetect0.11-0.11.1-3mdv2010.1.x86_64
+lib64pci3-3.1.7-2mdv2010.1.x86_64
+lib64parted0-2.3-1mdv2011.0.x86_64
+mkinitrd-6.0.93-19mnb2.x86_64
+nash-6.0.93-19mnb2.x86_64
+kpartx-0.4.8-17mdv2010.1.x86_64
+curl-7.21.1-1mdv2011.0.x86_64
+lilo-22.8-3mdv2010.1.x86_64
+html2text-1.3.2a-8mdv2010.1.x86_64
+glibc-2.12.1-3mnb2.x86_64
+dash-static-0.5.6.1-1mdv2011.0.x86_64
+libgcc1-4.5.1-1mnb2.x86_64
+libstdc++6-4.5.1-1mnb2.x86_64
+lib64gvfs0-1.6.4-1mdv2011.0.x86_64
+lib64cdio_cdda0-0.82-1mdv2010.1.x86_64
+lib64cdio12-0.82-1mdv2010.1.x86_64
+lib64gnome-keyring0-2.32.0-1mdv2011.0.x86_64
+libgnome-keyring-i18n-2.32.0-1mdv2011.0.x86_64
+lib64dbus-1_3-1.4.0-1mdv2011.0.x86_64
+dbus-1.4.0-1mdv2011.0.x86_64
+bash-4.1-7mdv2011.0.x86_64
+lib64termcap2-2.0.8-49mdv2010.1.x86_64
+lib64expat1-2.0.1-12mdv2010.1.x86_64
+chkconfig-1.3.37-5mdv2010.1.x86_64
+lib64popt0-1.15-9mdv2010.1.x86_64
+popt-data-1.15-9mdv2010.1.x86_64
+rpm-helper-0.23.1-1mdv2010.1.noarch
+grep-2.7-1mdv2011.0.x86_64
+lib64pcre0-8.10-1mdv2011.0.x86_64
+perl-base-5.12.2-4mdv2011.0.x86_64
+findutils-4.5.9-1mdv2011.0.x86_64
+info-install-4.13a-1mdv2010.1.x86_64
+xz-4.999.9beta-2mdv2010.1.x86_64
+lib64lzma2-4.999.9beta-2mdv2010.1.x86_64
+shadow-utils-4.1.4.2-6mdv2010.1.x86_64
+lib64audit1-2.0.4-5mdv2010.1.x86_64
+lib64pam_userpass1-1.0.2-4mdv2010.1.x86_64
+lib64pam0-1.1.1-2mdv2010.1.x86_64
+lib64crack2-2.8.16-1mdv2010.1.x86_64
+lib64dbnss4.8-4.8.30-1mdv2011.0.x86_64
+lib64tcb0-1.0.3-6mdv2010.1.x86_64
+setup-2.7.18-1mdv2010.1.x86_64
+run-parts-3.2.1-6mdv2010.1.x86_64
+tcb-1.0.3-6mdv2010.1.x86_64
+pam_tcb-1.0.3-6mdv2010.1.x86_64
+nss_tcb-1.0.3-6mdv2010.1.x86_64
+coreutils-8.5-2mdv2011.0.x86_64
+lib64gmp10-5.0.1-1mdv2010.1.x86_64
+lib64cap2-2.19-5mdv2010.1.x86_64
+lib64attr1-2.4.44-1mdv2010.1.x86_64
+pam-1.1.1-2mdv2010.1.x86_64
+cracklib-dicts-2.8.16-1mdv2010.1.x86_64
+lib64acl1-2.2.49-2mdv2010.1.x86_64
+lib64gcrypt11-1.4.6-3mdv2011.0.x86_64
+multiarch-utils-1.0.10-1mdv2010.1.noarch
+perl-MDK-Common-1.2.26-3mdv2011.0.noarch
+perl-File-Sync-0.90.0-4mdv2011.0.x86_64
+lib64gpg-error0-1.9-1mdv2011.0.x86_64
+libgpg-error-common-1.9-1mdv2011.0.x86_64
+lib64pth20-2.0.7-7mdv2010.1.x86_64
+lib64glib2.0_0-2.26.0-1mdv2011.0.x86_64
+glib2.0-common-2.26.0-1mdv2011.0.x86_64
+lib64gio2.0_0-2.26.0-1mdv2011.0.x86_64
+lib64gamin-1_0-0.1.10-4mdv2010.1.x86_64
+gamin-0.1.10-4mdv2010.1.x86_64
+zlib1-1.2.3-15mdv2010.1.x86_64
+lib64uClibc0.9.30.1-0.9.30.1-13mdv2011.0.x86_64
+uClibc-0.9.30.1-13mdv2011.0.x86_64
+gnome-keyring-2.32.0-1mdv2011.0.x86_64
+lib64gcr0-2.32.0-1mdv2011.0.x86_64
+lib64gtk+-x11-2.0_0-2.22.0-1mdv2011.0.x86_64
+lib64cairo2-1.10.0-1mdv2011.0.x86_64
+lib64freetype6-2.4.2-1mdv2011.0.x86_64
+lib64fontconfig1-2.8.0-2mdv2010.1.x86_64
+lib64xml2_2-2.7.7-1mdv2010.1.x86_64
+fontconfig-2.8.0-2mdv2010.1.x86_64
+lib64xrender1-0.9.6-1mdv2011.0.x86_64
+lib64x11_6-1.3.99.902-1mdv2011.0.x86_64
+lib64xcb1-1.7-1mdv2011.0.x86_64
+lib64xau6-1.0.6-1mdv2011.0.x86_64
+lib64xdmcp6-1.0.3-2mdv2010.1.x86_64
+lib64png3-1.2.44-2mdv2011.0.x86_64
+lib64pixman-1_0-0.19.4-1mdv2011.0.x86_64
+lib64xcursor1-1.1.10-2mdv2010.1.x86_64
+lib64xfixes3-4.0.5-1mdv2011.0.x86_64
+lib64gdk_pixbuf2.0_0-2.22.0-1mdv2011.0.x86_64
+lib64tiff3-3.9.4-3mdv2011.0.x86_64
+lib64jbig1-2.0-4mdv2010.1.x86_64
+lib64jpeg8-8b-1mdv2011.0.x86_64
+gdk-pixbuf2.0-2.22.0-1mdv2011.0.x86_64
+common-licenses-1.0-16mdv2010.1.noarch
+lib64jasper1-1.900.1-10mdv2010.1.x86_64
+lib64xext6-1.1.2-1mdv2011.0.x86_64
+lib64xi6-1.3.2-1mdv2011.0.x86_64
+lib64pango1.0_0-1.28.3-1mdv2011.0.x86_64
+lib64pango1.0_0-modules-1.28.3-1mdv2011.0.x86_64
+lib64thai0-0.1.13-1mdv2010.1.x86_64
+thai-data-0.1.13-1mdv2010.1.x86_64
+lib64datrie1-0.2.3-1mdv2010.1.x86_64
+lib64xft2-2.1.14-1mdv2010.1.x86_64
+pango-1.28.3-1mdv2011.0.x86_64
+gtk+2.0-2.22.0-1mdv2011.0.x86_64
+lib64gtk+2.0_0-2.22.0-1mdv2011.0.x86_64
+lib64atk1.0_0-1.32.0-1mdv2011.0.x86_64
+atk1.0-common-1.32.0-1mdv2011.0.x86_64
+lib64cups2-1.4.4-2mdv2011.0.x86_64
+lib64ext2fs2-1.41.12-1mnb2.x86_64
+lib64blkid1-2.18-1mdv2011.0.x86_64
+lib64uuid1-2.18-1mdv2011.0.x86_64
+e2fsprogs-1.41.12-1mnb2.x86_64
+openssl-1.0.0a-6mdv2011.0.x86_64
+rootcerts-20100827.00-1mdv2011.0.x86_64
+perl-WWW-Curl-4.130.0-1mdv2011.0.x86_64
+lib64curl4-7.21.1-1mdv2011.0.x86_64
+lib64ldap2.4_2-2.4.23-1mdv2011.0.x86_64
+lib64sasl2-2.1.23-8mdv2010.1.x86_64
+openldap-2.4.23-1mdv2011.0.x86_64
+lib64openssl1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64openssl-engines1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64ssh2_1-1.2.7-1mdv2011.0.x86_64
+lib64krb53-1.8.3-1mdv2011.0.x86_64
+krb5-1.8.3-1mdv2011.0.x86_64
+lib64idn11-1.19-1mdv2011.0.x86_64
+net-tools-1.60-32mdv2010.1.x86_64
+lib64avahi-client3-0.6.27-1mdv2011.0.x86_64
+avahi-0.6.27-1mdv2011.0.x86_64
+lib64gdbm3-1.8.3-13mdv2010.1.x86_64
+lib64avahi-core7-0.6.27-1mdv2011.0.x86_64
+lib64avahi-common3-0.6.27-1mdv2011.0.x86_64
+lib64daemon0-0.14-1mdv2010.1.x86_64
+lib64xcomposite1-0.4.2-1mdv2011.0.x86_64
+lib64xdamage1-1.1.3-1mdv2011.0.x86_64
+lib64xinerama1-1.1-1mdv2010.1.x86_64
+lib64xrandr2-1.3.0-3mdv2010.1.x86_64
+lib64gudev1.0_0-162-2mnb2.x86_64
+lib64udev0-162-2mnb2.x86_64
+lib64avahi-glib1-0.6.27-1mdv2011.0.x86_64
+lib64soup-2.4_1-2.32.0-1mdv2011.0.x86_64
+lib64sqlite3_0-3.7.2-1mdv2011.0.x86_64
+lib64gnutls26-2.10.1-1mdv2011.0.x86_64
+lib64tasn1_3-2.7-1mdv2011.0.x86_64
+lib64lzo2_2-2.03-3mdv2010.1.x86_64
+lib64proxy1-0.4.6-1mdv2011.0.x86_64
+lib64modman1-0.4.6-1mdv2011.0.x86_64
+lib64GConf2_4-2.32.0-1mdv2011.0.x86_64
+lib64ORBit2_0-2.14.19-1mdv2011.0.x86_64
+ORBit2-2.14.19-1mdv2011.0.x86_64
+lib64IDL2_0-0.8.14-1mdv2010.1.x86_64
+GConf2-2.32.0-1mdv2011.0.x86_64
+lib64dbus-glib-1_2-0.88-1mdv2011.0.x86_64
+psmisc-22.13-1mdv2011.0.x86_64
+lib64ncurses5-5.7-4.20100925.1mdv2011.0.x86_64
+ncurses-5.7-4.20100925.1mdv2011.0.x86_64
+lib64polkit1_0-0.99-1mdv2011.0.x86_64
+polkit-0.99-1mdv2011.0.x86_64
+consolekit-0.4.2-1mdv2011.0.x86_64
+lib64consolekit0-0.4.2-1mdv2011.0.x86_64
+sed-4.2.1-2mdv2010.1.x86_64
+update-alternatives-1.9.0-6mdv2010.1.noarch
+gvfs-1.6.4-1mdv2011.0.x86_64
+lib64gdu0-2.32.0-1mdv2011.0.x86_64
+gnome-disk-utility-2.32.0-1mdv2011.0.x86_64
+lib64notify1-0.4.5-3mdv2010.1.x86_64
+notification-daemon-0.5.0-1mdv2011.0.x86_64
+lib64canberra-gtk0-0.25-1mdv2011.0.x86_64
+canberra-gtk-0.25-1mdv2011.0.x86_64
+lib64canberra0-0.25-1mdv2011.0.x86_64
+lib64ltdl7-2.2.10-1mdv2011.0.x86_64
+lib64tdb1-1.2.1-1mdv2010.1.x86_64
+lib64pulseaudio0-0.9.21-33mdv2011.0.x86_64
+lib64sm6-1.1.1-2mdv2010.1.x86_64
+lib64ice6-1.0.6-2mdv2010.1.x86_64
+lib64xtst6-1.1.0-2mdv2010.1.x86_64
+lib64asyncns0-0.8-1mdv2010.1.x86_64
+lib64speex1-1.2-0.rc1.3mdv2010.1.x86_64
+lib64samplerate0-0.1.7-3mdv2010.1.x86_64
+lib64flac8-1.2.1-7mdv2010.1.x86_64
+lib64ogg0-1.2.0-1mdv2010.1.x86_64
+lib64sndfile1-1.0.21-2mdv2010.1.x86_64
+lib64vorbisenc2-1.3.1-1mdv2010.1.x86_64
+lib64vorbis0-1.3.1-1mdv2010.1.x86_64
+lib64xcb-atom1-0.3.6-1mdv2010.1.x86_64
+lib64wrap0-7.6-40mdv2010.1.x86_64
+pulseaudio-client-config-0.9.21-33mdv2011.0.x86_64
+ccp-0.4.1-4mdv2010.1.noarch
+perl-5.12.2-4mdv2011.0.x86_64
+lib64db4.8-4.8.30-1mdv2011.0.x86_64
+canberra-common-0.25-1mdv2011.0.x86_64
+sound-theme-freedesktop-0.7-2mdv2010.1.noarch
+lib64alsa2-1.0.23-4mdv2011.0.x86_64
+lib64python2.6-2.6.6-1mdv2011.0.x86_64
+libalsa-data-1.0.23-4mdv2011.0.x86_64
+lib64vorbisfile3-1.3.1-1mdv2010.1.x86_64
+lib64wnck-1_22-2.30.5-1mdv2011.0.x86_64
+libwnck-2.30.5-1mdv2011.0.x86_64
+lib64startup-notification-1_0-0.10-2mdv2010.1.x86_64
+lib64xcb-aux0-0.3.6-1mdv2010.1.x86_64
+lib64nautilus1-2.32.0-1mdv2011.0.x86_64
+lib64gdu-gtk0-2.32.0-1mdv2011.0.x86_64
+lib64avahi-ui1-0.6.27-1mdv2011.0.x86_64
+lib64atasmart4-0.17-1mdv2010.1.x86_64
+udisks-1.0.1-1mdv2010.1.x86_64
+udev-162-2mnb2.x86_64
+lib64usb-compat0.1_4-0.1.3-3mdv2010.1.x86_64
+lib64usb1.0_0-1.0.8-1mdv2011.0.x86_64
+ldetect-lst-0.1.288-1mdv2011.0.x86_64
+gzip-1.4-1mdv2010.1.x86_64
+less-436-3mdv2010.1.x86_64
+file-5.04-1mdv2010.1.x86_64
+lib64magic1-5.04-1mdv2010.1.x86_64
+lib64ncursesw5-5.7-4.20100925.1mdv2011.0.x86_64
+mktemp-1.7-1mdv2011.0.x86_64
+util-linux-ng-2.18-1mdv2011.0.x86_64
+diffutils-3.0-1mdv2011.0.x86_64
+lib64sigsegv2-2.8-2mdv2010.1.x86_64
+lib64mount1-2.18-1mdv2011.0.x86_64
+gawk-3.1.8-1mdv2011.0.x86_64
+mtools-4.0.13-1mdv2010.1.x86_64
+lib64lvm2app2.1-2.02.61-5mnb2.x86_64
+lib64devmapper1.02-1.02.44-5mnb2.x86_64
+lib64readline6-6.1-2mdv2010.1.x86_64
+lib64devmapper-event1.02-1.02.44-5mnb2.x86_64
+lib64sgutils2-1.29-1mdv2010.1.x86_64
+lib64parted0-2.3-1mdv2011.0.x86_64
+polkit-gnome-0.99-1mdv2011.0.x86_64
+libproxy-webkit-0.4.6-1mdv2011.0.x86_64
+lib64webkitgtk1.0_2-1.2.4-1mdv2011.0.x86_64
+lib64xt6-1.0.8-1mdv2010.1.x86_64
+lib64gstreamer-plugins-base0.10-0.10.30-3mdv2011.0.x86_64
+lib64gstreamer0.10_0.10-0.10.30-3mdv2011.0.x86_64
+gstreamer0.10-tools-0.10.30-3mdv2011.0.x86_64
+lib64icu44-4.4.1-1mdv2011.0.x86_64
+webkit-1.2.4-1mdv2011.0.x86_64
+lib64xslt1-1.1.26-2mdv2010.1.x86_64
+lib64enchant1-1.6.0-1mdv2011.0.x86_64
+lib64aspell15-0.60.6-7mdv2010.1.x86_64
+lib64voikko1-3.0-1mdv2011.0.x86_64
+lib64hunspell1.2_0-1.2.12-3mdv2011.0.x86_64
+enchant-1.6.0-1mdv2011.0.x86_64
+lib64gail18-2.22.0-1mdv2011.0.x86_64
+webkit1.0-1.2.4-1mdv2011.0.x86_64
+cronie-anacron-1.4.4-2mdv2010.1.x86_64
+crontabs-1.10-15mdv2010.1.noarch
+crda-1.1.1-1mdv2010.1.x86_64
+lib64nl1-1.1-5mdv2010.1.x86_64
+wireless-regdb-20091125-1mdv2010.1.noarch
+perl-Digest-SHA-5.480.0-4mdv2011.0.x86_64
+perl-Archive-Extract-0.420.0-1mdv2011.0.noarch
+perl-CGI-3.490.0-2mdv2011.0.noarch
+perl-Time-Piece-1.200.0-3mdv2011.0.x86_64
+perl-Archive-Tar-1.680.0-1mdv2011.0.noarch
+perl-Module-Build-0.360.700-1mdv2011.0.noarch
+perl-Module-CoreList-2.370.0-1mdv2011.0.noarch
+aria2-1.10.3-1mdv2011.0.x86_64
+lib64cares2-1.7.3-1mdv2011.0.x86_64
+perl-Hal-Cdroms-0.03-4mdv2011.0.noarch
+perl-Net-DBus-0.33.6-7mdv2011.0.x86_64
+perl-XML-Twig-3.350.0-2mdv2011.0.noarch
+perl-XML-Parser-2.360.0-5mdv2011.0.x86_64
+xdg-user-dirs-gtk-0.8-4mdv2010.1.x86_64
+xdg-user-dirs-0.13-1mdv2011.0.x86_64
+ia_ora-gnome-1.0.24-1mdv2010.1.x86_64
+lib64ia_ora-gnome-1.0.24-1mdv2010.1.x86_64
+gnome-icon-theme-2.31.0-1mdv2011.0.noarch
+hicolor-icon-theme-0.12-1mdv2010.1.noarch
+pkgconfig-0.25-1mdv2011.0.x86_64
+nss_mdns-0.10-8mdv2010.1.x86_64
+initscripts-8.99-15mdv2010.1.x86_64
+which-2.20-5mdv2010.1.x86_64
+sound-scripts-0.60-1mdv2010.1.noarch
+procps-3.2.8-4mdv2011.0.x86_64
+aumix-text-2.9.1-1mdv2011.0.x86_64
+module-init-tools-3.6-10mdv2010.1.x86_64
+lib64modprobe0-3.6-10mdv2010.1.x86_64
+sysvinit-2.87-6mdv2010.1.x86_64
+sysvinit-tools-2.87-6mdv2010.1.x86_64
+ifmetric-0.3-8mnb2.x86_64
+mingetty-1.08-5mdv2010.1.x86_64
+prcsys-0.0.3-6mdv2010.1.x86_64
+ethtool-6-6mdv2010.1.x86_64
+resolvconf-1.46-1mdv2011.0.noarch
+iproute2-2.6.34-1mdv2011.0.x86_64
+iputils-20100418-1mdv2011.0.x86_64
+dmsetup-1.02.44-5mnb2.x86_64
+gettext-base-0.18.1.1-1mdv2011.0.x86_64
+lib64intl8-0.18.1.1-1mdv2011.0.x86_64
+ifplugd-0.28-12mdv2010.1.x86_64
+gvfs-fuse-1.6.4-1mdv2011.0.x86_64
+lib64fuse2-2.8.4-1mdv2010.1.x86_64
+fuse-2.8.4-1mdv2010.1.x86_64
+makedev-4.4-10mdv2010.1.noarch
+gvfs-gphoto2-1.6.4-1mdv2011.0.x86_64
+lib64gphoto2-2.4.10-1mdv2011.0.x86_64
+lib64exif12-0.6.19-1mdv2010.1.x86_64
+libexif12-common-0.6.19-1mdv2010.1.x86_64
+libgphoto-common-2.4.10-1mdv2011.0.x86_64
+lib64gd2-2.0.35-14mdv2010.1.x86_64
+lib64xpm4-3.5.8-2mdv2010.1.x86_64
+lib64hal1-0.5.14-4mdv2011.0.x86_64
+hal-0.5.14-4mdv2011.0.x86_64
+pciutils-3.1.7-2mdv2010.1.x86_64
+lib64pci3-3.1.7-2mdv2010.1.x86_64
+cryptsetup-1.1.3-1mdv2011.0.x86_64
+usbutils-0.90-1mdv2011.0.x86_64
+policykit-0.9-7mdv2010.1.x86_64
+lib64polkit2-0.9-7mdv2010.1.x86_64
+acl-2.2.49-2mdv2010.1.x86_64
+hal-info-0.0-5.20091130.1mdv2010.1.noarch
+lib64lockdev1-1.0.3-11mdv2011.0.x86_64
+gvfs-archive-1.6.4-1mdv2011.0.x86_64
+lib64archive2-2.8.4-1mdv2011.0.x86_64
+lib64bzip2_1-1.0.6-1mdv2011.0.x86_64
+gvfs-smb-1.6.4-1mdv2011.0.x86_64
+lib64smbclient0-3.5.5-1mdv2011.0.x86_64
+lib64talloc2-2.0.1-1mdv2010.1.x86_64
+lib64wbclient0-3.5.5-1mdv2011.0.x86_64
+notification-daemon-engine-nodoka-0.1.0-2mdv2010.1.x86_64
+lib64alsa-plugins-pulseaudio-1.0.23-2mdv2010.1.x86_64
+alsa-plugins-pulse-config-1.0.23-2mdv2010.1.x86_64
+mdadm-3.1.4-1mnb2.x86_64
+ntfsprogs-2.0.0-6mdv2010.1.x86_64
+lib64ntfs10-2.0.0-6mdv2010.1.x86_64
+xfsprogs-3.1.2-1mnb2.x86_64
+lib64xfs1-3.1.2-1mnb2.x86_64
+dosfstools-3.0.9-1mdv2010.1.x86_64
+webkit1.0-webinspector-1.2.4-1mdv2011.0.x86_64
+perl-ExtUtils-CBuilder-0.270.300-2mdv2011.0.noarch
+ntfs-3g-2010.8.8-1mdv2011.0.x86_64
diff --git a/t/res/synthesis.hdlist.xz b/t/res/synthesis.hdlist.xz
new file mode 100644
index 0000000..0739961
--- /dev/null
+++ b/t/res/synthesis.hdlist.xz
Binary files differ
diff --git a/t/res/task-kde4.resolve.suggests b/t/res/task-kde4.resolve.suggests
new file mode 100644
index 0000000..12fdb05
--- /dev/null
+++ b/t/res/task-kde4.resolve.suggests
@@ -0,0 +1,2059 @@
+task-kde4-4.5.65-1mdv2011.0.noarch
+task-kde4-minimal-4.5.65-1mdv2011.0.noarch
+plasma-applet-folderview-4.5.68-1mdv2011.0.x86_64
+lib64kfile4-4.5.68-1mdv2011.0.x86_64
+glibc-2.12.1-3mnb2.x86_64
+dash-static-0.5.6.1-1mdv2011.0.x86_64
+lib64qtgui4-4.7.0-3mdv2011.0.x86_64
+lib64mng1-1.0.10-11mdv2010.1.x86_64
+lib64lcms1-1.19-2mdv2010.1.x86_64
+zlib1-1.2.3-15mdv2010.1.x86_64
+lib64uClibc0.9.30.1-0.9.30.1-13mdv2011.0.x86_64
+uClibc-0.9.30.1-13mdv2011.0.x86_64
+bash-4.1-7mdv2011.0.x86_64
+lib64termcap2-2.0.8-49mdv2010.1.x86_64
+lib64jpeg8-8b-1mdv2011.0.x86_64
+lib64freetype6-2.4.2-1mdv2011.0.x86_64
+libgcc1-4.5.1-1mnb2.x86_64
+lib64sm6-1.1.1-2mdv2010.1.x86_64
+lib64ice6-1.0.6-2mdv2010.1.x86_64
+lib64tiff3-3.9.4-3mdv2011.0.x86_64
+libstdc++6-4.5.1-1mnb2.x86_64
+lib64jbig1-2.0-4mdv2010.1.x86_64
+lib64xext6-1.1.2-1mdv2011.0.x86_64
+lib64x11_6-1.3.99.902-1mdv2011.0.x86_64
+coreutils-8.5-2mdv2011.0.x86_64
+lib64gmp10-5.0.1-1mdv2010.1.x86_64
+lib64cap2-2.19-5mdv2010.1.x86_64
+lib64attr1-2.4.44-1mdv2010.1.x86_64
+pam-1.1.1-2mdv2010.1.x86_64
+pam_tcb-1.0.3-6mdv2010.1.x86_64
+lib64tcb0-1.0.3-6mdv2010.1.x86_64
+setup-2.7.18-1mdv2010.1.x86_64
+run-parts-3.2.1-6mdv2010.1.x86_64
+shadow-utils-4.1.4.2-6mdv2010.1.x86_64
+lib64audit1-2.0.4-5mdv2010.1.x86_64
+lib64pam_userpass1-1.0.2-4mdv2010.1.x86_64
+lib64pam0-1.1.1-2mdv2010.1.x86_64
+lib64crack2-2.8.16-1mdv2010.1.x86_64
+lib64dbnss4.8-4.8.30-1mdv2011.0.x86_64
+tcb-1.0.3-6mdv2010.1.x86_64
+nss_tcb-1.0.3-6mdv2010.1.x86_64
+rpm-helper-0.23.1-1mdv2010.1.noarch
+grep-2.7-1mdv2011.0.x86_64
+lib64pcre0-8.10-1mdv2011.0.x86_64
+perl-base-5.12.2-4mdv2011.0.x86_64
+findutils-4.5.9-1mdv2011.0.x86_64
+info-install-4.13a-1mdv2010.1.x86_64
+xz-4.999.9beta-2mdv2010.1.x86_64
+lib64lzma2-4.999.9beta-2mdv2010.1.x86_64
+chkconfig-1.3.37-5mdv2010.1.x86_64
+lib64popt0-1.15-9mdv2010.1.x86_64
+popt-data-1.15-9mdv2010.1.x86_64
+cracklib-dicts-2.8.16-1mdv2010.1.x86_64
+lib64acl1-2.2.49-2mdv2010.1.x86_64
+lib64xcb1-1.7-1mdv2011.0.x86_64
+lib64xau6-1.0.6-1mdv2011.0.x86_64
+lib64xdmcp6-1.0.3-2mdv2010.1.x86_64
+lib64qtcore4-4.7.0-3mdv2011.0.x86_64
+lib64glib2.0_0-2.26.0-1mdv2011.0.x86_64
+glib2.0-common-2.26.0-1mdv2011.0.x86_64
+lib64gio2.0_0-2.26.0-1mdv2011.0.x86_64
+lib64gamin-1_0-0.1.10-4mdv2010.1.x86_64
+gamin-0.1.10-4mdv2010.1.x86_64
+qt4-common-4.7.0-3mdv2011.0.x86_64
+lib64fontconfig1-2.8.0-2mdv2010.1.x86_64
+lib64xml2_2-2.7.7-1mdv2010.1.x86_64
+fontconfig-2.8.0-2mdv2010.1.x86_64
+lib64xrender1-0.9.6-1mdv2011.0.x86_64
+lib64qtsvg4-4.7.0-3mdv2011.0.x86_64
+lib64png3-1.2.44-2mdv2011.0.x86_64
+lib64qtxml4-4.7.0-3mdv2011.0.x86_64
+lib64kio5-4.5.68-1mdv2011.0.x86_64
+lib64nepomuk4-4.5.68-1mdv2011.0.x86_64
+lib64sopranoclient1-2.5.62-0.1170808.1mdv2011.0.x86_64
+soprano-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64sopranoindex1-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64soprano4-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64clucene0-0.9.21b-3mdv2010.1.x86_64
+soprano-plugin-virtuoso-2.5.62-0.1170808.1mdv2011.0.x86_64
+virtuoso-opensource-6.1.2-1mdv2011.0.x86_64
+lib64openssl1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64openssl-engines1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64iodbc2-3.52.7-1mdv2010.1.x86_64
+soprano-plugin-common-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64raptor1-1.4.21-1mdv2010.1.x86_64
+lib64curl4-7.21.1-1mdv2011.0.x86_64
+lib64ldap2.4_2-2.4.23-1mdv2011.0.x86_64
+lib64sasl2-2.1.23-8mdv2010.1.x86_64
+openldap-2.4.23-1mdv2011.0.x86_64
+lib64ssh2_1-1.2.7-1mdv2011.0.x86_64
+rootcerts-20100827.00-1mdv2011.0.x86_64
+lib64krb53-1.8.3-1mdv2011.0.x86_64
+lib64ext2fs2-1.41.12-1mnb2.x86_64
+lib64blkid1-2.18-1mdv2011.0.x86_64
+lib64uuid1-2.18-1mdv2011.0.x86_64
+e2fsprogs-1.41.12-1mnb2.x86_64
+krb5-1.8.3-1mdv2011.0.x86_64
+lib64idn11-1.19-1mdv2011.0.x86_64
+lib64qtdbus4-4.7.0-3mdv2011.0.x86_64
+lib64sopranoserver1-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64qtnetwork4-4.7.0-3mdv2011.0.x86_64
+lib64kdeui5-4.5.68-1mdv2011.0.x86_64
+lib64dbusmenu-qt2-0.6.2-1mdv2011.0.x86_64
+lib64xfixes3-4.0.5-1mdv2011.0.x86_64
+lib64xtst6-1.1.0-2mdv2010.1.x86_64
+lib64kdecore5-4.5.68-1mdv2011.0.x86_64
+qt4-style-iaora-0.3.1-2mdv2011.0.x86_64
+kde4-style-iaora-common-0.3.1-2mdv2011.0.x86_64
+lib64bzip2_1-1.0.6-1mdv2011.0.x86_64
+kde4-style-iaora-0.3.1-2mdv2011.0.x86_64
+lib64kdecorations4-4.5.68-1mdv2011.0.x86_64
+kde-l10n-en_GB-4.5.0-1mdv2011.0.noarch
+locales-en-2.12.1-1mdv2011.0.x86_64
+locales-2.12.1-1mdv2011.0.x86_64
+rpm-4.6.1-1mnb2.x86_64
+lib64rpm4.6-4.6.1-1mnb2.x86_64
+lib64elfutils1-0.149-1mdv2011.0.x86_64
+lib64sqlite3_0-3.7.2-1mdv2011.0.x86_64
+lib64lua5.1-5.1.4-8mdv2010.1.x86_64
+lib64readline6-6.1-2mdv2010.1.x86_64
+lib64ncurses5-5.7-4.20100925.1mdv2011.0.x86_64
+ncurses-5.7-4.20100925.1mdv2011.0.x86_64
+lib64magic1-5.04-1mdv2010.1.x86_64
+lib64db4.8-4.8.30-1mdv2011.0.x86_64
+lib64nss3-3.12.7-2mdv2011.0.x86_64
+nss-3.12.7-2mdv2011.0.x86_64
+lib64nspr4-4.8.6-2mdv2011.0.x86_64
+update-alternatives-1.9.0-6mdv2010.1.noarch
+rpm-mandriva-setup-1.107-1mdv2011.0.x86_64
+rpm-manbo-setup-2-21mnb2.noarch
+mktemp-1.7-1mdv2011.0.x86_64
+bzip2-1.0.6-1mdv2011.0.x86_64
+gawk-3.1.8-1mdv2011.0.x86_64
+lib64sigsegv2-2.8-2mdv2010.1.x86_64
+cpio-2.11-1mdv2010.1.x86_64
+rmt-0.4b42-1mdv2010.1.x86_64
+kdelibs4-core-4.5.68-1mdv2011.0.x86_64
+lib64khtml5-4.5.68-1mdv2011.0.x86_64
+lib64phonon4-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64pulseglib20-0.9.21-33mdv2011.0.x86_64
+lib64asyncns0-0.8-1mdv2010.1.x86_64
+lib64flac8-1.2.1-7mdv2010.1.x86_64
+lib64ogg0-1.2.0-1mdv2010.1.x86_64
+lib64xi6-1.3.2-1mdv2011.0.x86_64
+lib64sndfile1-1.0.21-2mdv2010.1.x86_64
+lib64vorbisenc2-1.3.1-1mdv2010.1.x86_64
+lib64vorbis0-1.3.1-1mdv2010.1.x86_64
+lib64xcb-atom1-0.3.6-1mdv2010.1.x86_64
+lib64wrap0-7.6-40mdv2010.1.x86_64
+lib64dbus-1_3-1.4.0-1mdv2011.0.x86_64
+dbus-1.4.0-1mdv2011.0.x86_64
+lib64expat1-2.0.1-12mdv2010.1.x86_64
+lib64pulseaudio0-0.9.21-33mdv2011.0.x86_64
+lib64ltdl7-2.2.10-1mdv2011.0.x86_64
+lib64speex1-1.2-0.rc1.3mdv2010.1.x86_64
+lib64samplerate0-0.1.7-3mdv2010.1.x86_64
+lib64tdb1-1.2.1-1mdv2010.1.x86_64
+pulseaudio-client-config-0.9.21-33mdv2011.0.x86_64
+ccp-0.4.1-4mdv2010.1.noarch
+perl-5.12.2-4mdv2011.0.x86_64
+lib64gdbm3-1.8.3-13mdv2010.1.x86_64
+lib64ktexteditor4-4.5.68-1mdv2011.0.x86_64
+lib64kparts4-4.5.68-1mdv2011.0.x86_64
+lib64nepomukutils4-4.5.68-1mdv2011.0.x86_64
+lib64nepomukquery4-4.5.68-1mdv2011.0.x86_64
+lib64kjs4-4.5.68-1mdv2011.0.x86_64
+lib64gif4-4.1.6-7mdv2010.1.x86_64
+lib64aspell15-0.60.6-7mdv2010.1.x86_64
+lib64krosscore4-4.5.68-1mdv2011.0.x86_64
+lib64qtscript4-4.7.0-3mdv2011.0.x86_64
+lib64kntlm4-4.5.68-1mdv2011.0.x86_64
+shared-mime-info-0.80-1mdv2011.0.x86_64
+pkgconfig-0.25-1mdv2011.0.x86_64
+shared-desktop-ontologies-0.5-1mdv2010.1.noarch
+docbook-dtd42-xml-1.0-11mdv2010.1.noarch
+sgml-common-0.6.3-17mdv2010.1.noarch
+libxml2-utils-2.7.7-1mdv2010.1.x86_64
+lib64ilmbase6-1.0.2-2mdv2011.0.x86_64
+lib64OpenEXR6-1.7.0-1mdv2011.0.x86_64
+lib64kemoticons4-4.5.68-1mdv2011.0.x86_64
+lib64kjsembed4-4.5.68-1mdv2011.0.x86_64
+lib64jasper1-1.900.1-10mdv2010.1.x86_64
+lib64katepartinterfaces4-4.5.68-1mdv2011.0.x86_64
+lib64kcmutils4-4.5.68-1mdv2011.0.x86_64
+lib64xslt1-1.1.26-2mdv2010.1.x86_64
+lib64gcrypt11-1.4.6-3mdv2011.0.x86_64
+multiarch-utils-1.0.10-1mdv2010.1.noarch
+perl-MDK-Common-1.2.26-3mdv2011.0.noarch
+perl-File-Sync-0.90.0-4mdv2011.0.x86_64
+lib64gpg-error0-1.9-1mdv2011.0.x86_64
+libgpg-error-common-1.9-1mdv2011.0.x86_64
+lib64pth20-2.0.7-7mdv2010.1.x86_64
+lib64polkit-qt-core-10-0.96.1-1mdv2011.0.x86_64
+lib64polkit1_0-0.99-1mdv2011.0.x86_64
+polkit-0.99-1mdv2011.0.x86_64
+consolekit-0.4.2-1mdv2011.0.x86_64
+lib64dbus-glib-1_2-0.88-1mdv2011.0.x86_64
+lib64consolekit0-0.4.2-1mdv2011.0.x86_64
+lib64kunittest4-4.5.68-1mdv2011.0.x86_64
+lib64enchant1-1.6.0-1mdv2011.0.x86_64
+lib64voikko1-3.0-1mdv2011.0.x86_64
+lib64hunspell1.2_0-1.2.12-3mdv2011.0.x86_64
+enchant-1.6.0-1mdv2011.0.x86_64
+lib64streamanalyzer0-0.7.2-2mdv2011.0.x86_64
+lib64streams0-0.7.2-2mdv2011.0.x86_64
+lib64solid4-4.5.68-1mdv2011.0.x86_64
+kdebase4-workspace-4.5.68-1mdv2011.0.x86_64
+lib64xcursor1-1.1.10-2mdv2010.1.x86_64
+lib64lm_sensors4-3.1.2-3mdv2010.1.x86_64
+lib64kfontinstui4-4.5.68-1mdv2011.0.x86_64
+lib64kfontinst4-4.5.68-1mdv2011.0.x86_64
+lib64xft2-2.1.14-1mdv2010.1.x86_64
+xprop-1.1.0-1mdv2010.1.x86_64
+lib64kpty4-4.5.68-1mdv2011.0.x86_64
+lib64utempter0-0.5.5-10mdv2010.1.x86_64
+lib64oxygenstyle4-4.5.68-1mdv2011.0.x86_64
+desktop-common-data-2010.1-2mdv2010.1.noarch
+xdg-utils-1.0.3-0.20100204.3mdv2011.0.x86_64
+desktop-file-utils-0.17-1mdv2011.0.x86_64
+xset-1.2.0-1mdv2011.0.x86_64
+lib64xmu6-1.0.5-2mdv2010.1.x86_64
+lib64xt6-1.0.8-1mdv2010.1.x86_64
+perl-XML-Parser-2.360.0-5mdv2011.0.x86_64
+xdg-user-dirs-0.13-1mdv2011.0.x86_64
+perl-Locale-gettext-1.50.0-4mdv2011.0.x86_64
+hicolor-icon-theme-0.12-1mdv2010.1.noarch
+menu-messages-2011.0-0.1mdv2011.0.noarch
+lib64gpsd19-2.95-1mdv2011.0.x86_64
+lib64bluez3-4.72-1mdv2011.0.x86_64
+lib64ksgrd4-4.5.68-1mdv2011.0.x86_64
+python-kde4-4.5.68-1mdv2011.0.x86_64
+python-2.6.6-1mdv2011.0.x86_64
+lib64ncursesw5-5.7-4.20100925.1mdv2011.0.x86_64
+lib64python2.6-2.6.6-1mdv2011.0.x86_64
+lib64akonadi-kde4-4.5.68-1mdv2011.0.x86_64
+kdepimlibs4-core-4.5.68-1mdv2011.0.x86_64
+lib64kabc_file_core4-4.5.68-1mdv2011.0.x86_64
+lib64kabc4-4.5.68-1mdv2011.0.x86_64
+lib64kresources4-4.5.68-1mdv2011.0.x86_64
+lib64mailtransport4-4.5.68-1mdv2011.0.x86_64
+lib64kmime4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-kmime4-4.5.68-1mdv2011.0.x86_64
+lib64kcal4-4.5.68-1mdv2011.0.x86_64
+lib64kpimutils4-4.5.68-1mdv2011.0.x86_64
+lib64icalss0-0.46-1mdv2011.0.x86_64
+lib64ical0-0.46-1mdv2011.0.x86_64
+lib64qtsql4-4.7.0-3mdv2011.0.x86_64
+lib64akonadiprotocolinternals1-1.4.52-1mdv2011.0.x86_64
+lib64polkit-qt-core0-0.9.3-1mdv2010.1.x86_64
+lib64polkit2-0.9-7mdv2010.1.x86_64
+policykit-0.9-7mdv2010.1.x86_64
+lib64kprintutils4-4.5.68-1mdv2011.0.x86_64
+lib64polkit-qt-gui0-0.9.3-1mdv2010.1.x86_64
+lib64kdnssd4-4.5.68-1mdv2011.0.x86_64
+python-sip-4.11-1mdv2011.0.x86_64
+lib64kidletime4-4.5.68-1mdv2011.0.x86_64
+lib64xscrnsaver1-1.2.0-3mdv2010.1.x86_64
+lib64knewstuff2_4-4.5.68-1mdv2011.0.x86_64
+python-qt4-4.7.5-1mdv2011.0.x86_64
+python-qt4-svg-4.7.5-1mdv2011.0.x86_64
+python-qt4-core-4.7.5-1mdv2011.0.x86_64
+python-qt4-sql-4.7.5-1mdv2011.0.x86_64
+python-qt4-gui-4.7.5-1mdv2011.0.x86_64
+python-qt4-designer-4.7.5-1mdv2011.0.x86_64
+lib64qtdesigner4-4.7.0-3mdv2011.0.x86_64
+python-qt4-multimedia-4.7.5-1mdv2011.0.x86_64
+lib64qtmultimedia4-4.7.0-3mdv2011.0.x86_64
+python-qt4-test-4.7.5-1mdv2011.0.x86_64
+lib64qttest4-4.7.0-3mdv2011.0.x86_64
+python-qt4-xmlpatterns-4.7.5-1mdv2011.0.x86_64
+lib64qtxmlpatterns4-4.7.0-3mdv2011.0.x86_64
+qt4-xmlpatterns-4.7.0-3mdv2011.0.x86_64
+python-qt4-xml-4.7.5-1mdv2011.0.x86_64
+python-qt4-network-4.7.5-1mdv2011.0.x86_64
+python-qt4-webkit-4.7.5-1mdv2011.0.x86_64
+lib64qtwebkit4-4.7.0-3mdv2011.0.x86_64
+python-qt4-script-4.7.5-1mdv2011.0.x86_64
+python-qt4-opengl-4.7.5-1mdv2011.0.x86_64
+lib64qtopengl4-4.7.0-3mdv2011.0.x86_64
+lib64mesagl1-7.8.1-6mdv2010.1.x86_64
+lib64drm2-2.4.22-1mdv2011.0.x86_64
+libdrm-common-2.4.22-1mdv2011.0.x86_64
+lib64xxf86vm1-1.1.0-1mdv2010.1.x86_64
+lib64dri-drivers-7.8.1-6mdv2010.1.x86_64
+lib64drm_radeon1-2.4.22-1mdv2011.0.x86_64
+lib64drm_intel1-2.4.22-1mdv2011.0.x86_64
+lib64xdamage1-1.1.3-1mdv2011.0.x86_64
+lib64knewstuff34-4.5.68-1mdv2011.0.x86_64
+lib64attica0-0.1.91-1mdv2011.0.x86_64
+lib64plasma3-4.5.68-1mdv2011.0.x86_64
+lib64threadweaver4-4.5.68-1mdv2011.0.x86_64
+lib64kdewebkit5-4.5.68-1mdv2011.0.x86_64
+lib64qca2-2.0.2-6.1111917.1mdv2010.1.x86_64
+lib64processcore4-4.5.68-1mdv2011.0.x86_64
+lib64kephal4-4.5.68-1mdv2011.0.x86_64
+lib64solidcontrol4-4.5.68-1mdv2011.0.x86_64
+lib64solidcontrolifaces4-4.5.68-1mdv2011.0.x86_64
+lib64xrandr2-1.3.0-3mdv2010.1.x86_64
+lib64plasmagenericshell4-4.5.68-1mdv2011.0.x86_64
+lib64kworkspace4-4.5.68-1mdv2011.0.x86_64
+lib64usb-compat0.1_4-0.1.3-3mdv2010.1.x86_64
+lib64usb1.0_0-1.0.8-1mdv2011.0.x86_64
+lib64kwineffects1-4.5.68-1mdv2011.0.x86_64
+lib64xcomposite1-0.4.2-1mdv2011.0.x86_64
+lib64kdesu5-4.5.68-1mdv2011.0.x86_64
+lib64kholidays4-4.5.68-1mdv2011.0.x86_64
+lib64plasma-geolocation-interface4-4.5.68-1mdv2011.0.x86_64
+lib64cln6-1.3.1-1mdv2010.1.x86_64
+lib64plasma_applet_system_monitor4-4.5.68-1mdv2011.0.x86_64
+lib64qalculate5-0.9.7-6mdv2010.1.x86_64
+libqalculate-data-0.9.7-6mdv2010.1.x86_64
+lib64microblog4-4.5.68-1mdv2011.0.x86_64
+lib64xinerama1-1.1-1mdv2010.1.x86_64
+lib64processui4-4.5.68-1mdv2011.0.x86_64
+lib64knotifyconfig4-4.5.68-1mdv2011.0.x86_64
+lib64dmtx0-0.7.2-1mdv2011.0.x86_64
+lib64taskmanager4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-kcal4-4.5.68-1mdv2011.0.x86_64
+mandriva-kde-translation-2010.1-5mdv2010.1.noarch
+lib64kdefakes5-4.5.68-1mdv2011.0.x86_64
+lib64weather_ion4-4.5.68-1mdv2011.0.x86_64
+lib64qimageblitz4-0.0.6-1mdv2011.0.x86_64
+lib64kde3support4-4.5.68-1mdv2011.0.x86_64
+lib64qt3support4-4.7.0-3mdv2011.0.x86_64
+strigi-0.7.2-2mdv2011.0.x86_64
+lib64exiv2_9-0.20-2mdv2011.0.x86_64
+kdebase4-runtime-4.5.68-1mdv2011.0.x86_64
+lib64kwalletbackend4-4.5.68-1mdv2011.0.x86_64
+lib64kmediaplayer4-4.5.68-1mdv2011.0.x86_64
+oxygen-icon-theme-4.5.68-1mdv2011.0.noarch
+lib64alsa2-1.0.23-4mdv2011.0.x86_64
+libalsa-data-1.0.23-4mdv2011.0.x86_64
+soprano-plugin-redland-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64redland0-1.0.11-1mdv2011.0.x86_64
+lib64rasqal2-0.9.20-1mdv2011.0.x86_64
+lib64mpfr4-3.0.0-3mdv2011.0.x86_64
+lib64ssh4-0.4.6-1mdv2011.0.x86_64
+lib64smbclient0-3.5.5-1mdv2011.0.x86_64
+lib64talloc2-2.0.1-1mdv2010.1.x86_64
+lib64wbclient0-3.5.5-1mdv2011.0.x86_64
+lib64molletnetwork4-4.5.68-1mdv2011.0.x86_64
+polkit-kde-1-0.95.1-3mdv2010.1.x86_64
+lib64polkit-qt-agent-10-0.96.1-1mdv2011.0.x86_64
+pm-utils-1.2.6.1-2mdv2010.1.x86_64
+pciutils-3.1.7-2mdv2010.1.x86_64
+lib64pci3-3.1.7-2mdv2010.1.x86_64
+ldetect-lst-0.1.288-1mdv2011.0.x86_64
+gzip-1.4-1mdv2010.1.x86_64
+less-436-3mdv2010.1.x86_64
+file-5.04-1mdv2010.1.x86_64
+radeontool-1.6.0-0mdv2010.1.x86_64
+lib64pciaccess0-0.12.0-1mdv2011.0.x86_64
+hal-info-0.0-5.20091130.1mdv2010.1.noarch
+bootloader-utils-1.15-5mdv2010.1.noarch
+initscripts-8.99-15mdv2010.1.x86_64
+which-2.20-5mdv2010.1.x86_64
+ifmetric-0.3-8mnb2.x86_64
+net-tools-1.60-32mdv2010.1.x86_64
+util-linux-ng-2.18-1mdv2011.0.x86_64
+lib64mount1-2.18-1mdv2011.0.x86_64
+udev-162-2mnb2.x86_64
+diffutils-3.0-1mdv2011.0.x86_64
+sed-4.2.1-2mdv2010.1.x86_64
+dmsetup-1.02.44-5mnb2.x86_64
+lib64devmapper1.02-1.02.44-5mnb2.x86_64
+lib64udev0-162-2mnb2.x86_64
+lib64devmapper-event1.02-1.02.44-5mnb2.x86_64
+gettext-base-0.18.1.1-1mdv2011.0.x86_64
+lib64intl8-0.18.1.1-1mdv2011.0.x86_64
+iputils-20100418-1mdv2011.0.x86_64
+psmisc-22.13-1mdv2011.0.x86_64
+sound-scripts-0.60-1mdv2010.1.noarch
+aumix-text-2.9.1-1mdv2011.0.x86_64
+procps-3.2.8-4mdv2011.0.x86_64
+module-init-tools-3.6-10mdv2010.1.x86_64
+lib64modprobe0-3.6-10mdv2010.1.x86_64
+sysvinit-2.87-6mdv2010.1.x86_64
+sysvinit-tools-2.87-6mdv2010.1.x86_64
+mingetty-1.08-5mdv2010.1.x86_64
+prcsys-0.0.3-6mdv2010.1.x86_64
+ethtool-6-6mdv2010.1.x86_64
+resolvconf-1.46-1mdv2011.0.noarch
+iproute2-2.6.34-1mdv2011.0.x86_64
+ifplugd-0.28-12mdv2010.1.x86_64
+lib64daemon0-0.14-1mdv2010.1.x86_64
+drakxtools-backend-13.35-4mdv2011.0.x86_64
+perl-String-ShellQuote-1.40.0-2mdv2011.0.noarch
+dmidecode-2.10-3mdv2010.1.x86_64
+lib64ldetect0.11-0.11.1-3mdv2010.1.x86_64
+common-licenses-1.0-16mdv2010.1.noarch
+drakx-kbd-mouse-x11-0.90-1mdv2010.1.x86_64
+usermode-consoleonly-1.106-1mdv2011.0.x86_64
+lib64user1-0.56.18-1mdv2011.0.x86_64
+libuser-0.56.18-1mdv2011.0.x86_64
+drakxtools-curses-13.35-4mdv2011.0.x86_64
+drakx-net-text-0.90-2mdv2011.0.noarch
+libdrakx-net-0.90-2mdv2011.0.noarch
+iw-0.9.21-1mdv2011.0.x86_64
+lib64nl1-1.1-5mdv2010.1.x86_64
+wireless-regdb-20091125-1mdv2010.1.noarch
+crda-1.1.1-1mdv2010.1.x86_64
+perl-Net-Telnet-3.30.0-1mdv2011.0.noarch
+perl-Libconf-0.42.10-2mdv2011.0.x86_64
+perl-Text-DelimMatch-1.06-6mdv2011.0.noarch
+perl-Curses-UI-0.960.700-1mdv2011.0.noarch
+perl-Term-ReadKey-2.30-10mdv2011.0.x86_64
+perl-Curses-1.280.0-3mdv2011.0.x86_64
+urpmi-6.38-1mdv2011.0.noarch
+meta-task-2010.1-11mdv2010.1.noarch
+perl-URPM-3.36-2mdv2011.0.x86_64
+perl-MDV-Packdrakeng-1.13-6mdv2011.0.noarch
+genhdlist2-5.9-4mdv2011.0.x86_64
+perl-Time-ZoneInfo-0.300.0-2mdv2011.0.noarch
+perl-Filesys-Df-0.920.0-5mdv2011.0.x86_64
+eject-2.1.5-8mdv2010.1.x86_64
+perl-MDV-Distribconf-4.02-2mdv2011.0.noarch
+perl-Config-IniFiles-2.580.0-2mdv2011.0.noarch
+gnupg-1.4.10-2mdv2010.1.x86_64
+perl-XML-LibXML-1.700.0-7mdv2011.0.x86_64
+perl-XML-NamespaceSupport-1.110.0-1mdv2011.0.noarch
+perl-XML-SAX-0.960.0-1mdv2011.0.noarch
+curl-7.21.1-1mdv2011.0.x86_64
+monitor-edid-3.0-1mdv2010.1.x86_64
+lib64x86_1-1.1-7mdv2010.1.x86_64
+perl-File-FnMatch-0.20.0-3mdv2011.0.x86_64
+lib64parted0-2.3-1mdv2011.0.x86_64
+pm-fallback-policy-0.1-7mdv2010.1.noarch
+vbetool-1.1-5mdv2010.1.x86_64
+lib64plasmaclock4-4.5.68-1mdv2011.0.x86_64
+lib64khotkeysprivate4-4.5.68-1mdv2011.0.x86_64
+lib64ksignalplotter4-4.5.68-1mdv2011.0.x86_64
+xmessage-1.0.3-1mdv2010.1.x86_64
+lib64xaw7-1.0.7-2mdv2010.1.x86_64
+lib64xpm4-3.5.8-2mdv2010.1.x86_64
+lib64kscreensaver5-4.5.68-1mdv2011.0.x86_64
+lib64xkbfile1-1.0.6-1mdv2010.1.x86_64
+lib64syndication4-4.5.68-1mdv2011.0.x86_64
+lib64polkitkdeprivate4-4.5.68-1mdv2011.0.x86_64
+qt4-qtdbus-4.7.0-3mdv2011.0.x86_64
+lib64systemsettingsview2-4.5.68-1mdv2011.0.x86_64
+lib64konq5-4.5.68-1mdv2011.0.x86_64
+ark-4.5.68-1mdv2011.0.x86_64
+lib64kerfuffle4-4.5.68-1mdv2011.0.x86_64
+lib64archive2-2.8.4-1mdv2011.0.x86_64
+kdeutils4-core-4.5.68-1mdv2011.0.x86_64
+kdeartwork4-kscreensaver-4.5.68-2mdv2011.0.x86_64
+lib64mesaglu1-7.8.1-6mdv2010.1.x86_64
+dolphin-4.5.68-1mdv2011.0.x86_64
+kfind-4.5.68-1mdv2011.0.x86_64
+lib64dolphinprivate4-4.5.68-1mdv2011.0.x86_64
+konsole-4.5.68-1mdv2011.0.x86_64
+x11-font-misc-misc-1.1.0-1mdv2010.1.noarch
+mkfontscale-1.0.7-1mdv2010.1.x86_64
+lib64fontenc1-1.0.5-1mdv2010.1.x86_64
+mkfontdir-1.0.5-1mdv2010.1.x86_64
+kdialog-4.5.68-1mdv2011.0.x86_64
+dbus-x11-1.4.0-1mdv2011.0.x86_64
+kmozillahelper-0.6.2-2mdv2011.0.x86_64
+kde4-nsplugins-4.5.68-1mdv2011.0.x86_64
+gwenview-4.5.68-1mdv2011.0.x86_64
+kdegraphics4-core-4.5.68-1mdv2011.0.x86_64
+lib64ksane0-4.5.68-1mdv2011.0.x86_64
+lib64sane1-1.0.21-2mdv2010.1.x86_64
+lib64v4l0-0.8.1-1mdv2011.0.x86_64
+v4l-utils-0.8.1-1mdv2011.0.x86_64
+lib64sysfs2-2.1.0-10mnb2.x86_64
+lib64v4l-wrappers-0.8.1-1mdv2011.0.x86_64
+lib64gphoto2-2.4.10-1mdv2011.0.x86_64
+lib64exif12-0.6.19-1mdv2010.1.x86_64
+libexif12-common-0.6.19-1mdv2010.1.x86_64
+libgphoto-common-2.4.10-1mdv2011.0.x86_64
+lib64gd2-2.0.35-14mdv2010.1.x86_64
+lib64hal1-0.5.14-4mdv2011.0.x86_64
+hal-0.5.14-4mdv2011.0.x86_64
+cryptsetup-1.1.3-1mdv2011.0.x86_64
+usbutils-0.90-1mdv2011.0.x86_64
+acl-2.2.49-2mdv2010.1.x86_64
+lib64lockdev1-1.0.3-11mdv2011.0.x86_64
+lib64ieee1284_3-0.2.11-8mdv2010.1.x86_64
+lib64gwenviewlib4-4.5.68-1mdv2011.0.x86_64
+lib64kipi8-4.5.68-1mdv2011.0.x86_64
+kipi-common-4.5.68-1mdv2011.0.x86_64
+kwrite-4.5.68-1mdv2011.0.x86_64
+task-x11-2010.1-4mdv2010.1.noarch
+x11-server-xorg-1.7.7-1mdv2010.1.x86_64
+x11-driver-input-mouse-1.6.0-1mdv2011.0.x86_64
+x11-server-common-1.7.7-1mdv2010.1.x86_64
+dash-0.5.6.1-1mdv2011.0.x86_64
+x11-font-cursor-misc-1.0.1-1mdv2010.1.noarch
+xkbcomp-1.1.1-1mdv2010.1.x86_64
+rgb-1.0.3-5mdv2010.1.x86_64
+x11-data-xkbdata-2.0-1mdv2011.0.noarch
+x11-font-alias-1.0.2-1mdv2010.1.noarch
+libx11-common-1.3.99.902-1mdv2011.0.x86_64
+x11-driver-input-keyboard-1.4.0-2mdv2010.1.x86_64
+lib64xfont1-1.4.2-1mdv2011.0.x86_64
+x11-font-encodings-1.0.3-1mdv2010.1.noarch
+x11-driver-input-evdev-2.5.0-1mdv2011.0.x86_64
+lib64pixman-1_0-0.19.4-1mdv2011.0.x86_64
+setxkbmap-1.2.0-1mdv2011.0.x86_64
+xinit-1.2.1-1mdv2010.1.x86_64
+xinitrc-2.4.19-27mdv2010.1.noarch
+xdpyinfo-1.1.0-2mdv2010.1.x86_64
+lib64xxf86misc1-1.0.2-1mdv2010.1.x86_64
+lib64xxf86dga1-1.1.1-1mdv2010.1.x86_64
+lib64dmx1-1.1.0-1mdv2010.1.x86_64
+lib64xp6-1.0.0-8mdv2010.1.x86_64
+sessreg-1.0.6-1mdv2011.0.x86_64
+xsetroot-1.0.3-1mdv2010.1.x86_64
+xrdb-1.0.6-1mdv2010.1.x86_64
+gcc-cpp-4.5.1-1mnb2.x86_64
+lib64mpc2-0.8.2-1mdv2011.0.x86_64
+lib64mpfr1-2.4.2-2mdv2010.1.x86_64
+lib64gmpxx4-5.0.1-1mdv2010.1.x86_64
+lib64ppl7-0.10.2-1mdv2010.1.x86_64
+lib64cloog0-0.15.8-1mdv2010.1.x86_64
+xmodmap-1.0.5-1mdv2011.0.x86_64
+consolekit-x11-0.4.2-1mdv2011.0.x86_64
+x11-data-cursor-themes-1.0.2-2mdv2011.0.noarch
+xauth-1.0.5-1mdv2011.0.x86_64
+xhost-1.0.3-1mdv2010.1.x86_64
+iceauth-1.0.3-1mdv2010.1.x86_64
+konqueror-4.5.68-1mdv2011.0.x86_64
+lib64konquerorprivate4-4.5.68-1mdv2011.0.x86_64
+lib64konqsidebarplugin4-4.5.68-1mdv2011.0.x86_64
+kmix-4.5.68-1mdv2011.0.x86_64
+kdemultimedia4-core-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-timeoftheday-0.1-5mdv2010.1.x86_64
+plasma-applet-showdesktop-4.5.68-1mdv2011.0.x86_64
+xsettings-kde-0.11-2mdv2010.1.x86_64
+plasma-desktoptheme-aya-4.5.68-2mdv2011.0.noarch
+keditbookmarks-4.5.68-1mdv2011.0.x86_64
+lib64kbookmarkmodel_private4-4.5.68-1mdv2011.0.x86_64
+kdm-4.5.68-1mdv2011.0.x86_64
+kdmfprintplugin-0.0-0.1050414.2mdv2010.1.x86_64
+kfingermanager-0.0-0.1050414.1mdv2010.1.x86_64
+cdialog-1.1-1.20100119.1mdv2010.1.x86_64
+netbook-kde4-config-2010.1-22mdv2010.1.noarch
+mandriva-kde4-config-common-2010.1-22mdv2010.1.noarch
+mandriva-kde-icons-1.0.4-12mdv2011.0.noarch
+urw-fonts-2.0-26mdv2010.1.noarch
+mandriva-theme-Powerpack-1.4.7-2mdv2010.1.noarch
+bootsplash-3.3.3-1mdv2010.1.noarch
+plymouth-scripts-0.8.3-4mdv2010.1.x86_64
+plymouth-0.8.3-4mdv2010.1.x86_64
+lib64plymouth2-0.8.3-4mdv2010.1.x86_64
+lib64drm_nouveau1-2.4.22-1mdv2011.0.x86_64
+mkinitrd-6.0.93-19mnb2.x86_64
+nash-6.0.93-19mnb2.x86_64
+tar-1.23-4mdv2011.0.x86_64
+kpartx-0.4.8-17mdv2010.1.x86_64
+filesystem-2.1.9-9mdv2010.1.x86_64
+kernel-desktop-2.6.35.6-1mnb-1-1mnb2.x86_64
+sysfsutils-2.1.0-10mnb2.x86_64
+kernel-firmware-20100804-1mnb2.noarch
+perl-Archive-Cpio-0.70.0-1mdv2011.0.noarch
+plymouth-plugin-script-0.8.3-4mdv2010.1.x86_64
+plymouth-plugin-label-0.8.3-4mdv2010.1.x86_64
+lib64cairo2-1.10.0-1mdv2011.0.x86_64
+lib64pango1.0_0-1.28.3-1mdv2011.0.x86_64
+lib64pango1.0_0-modules-1.28.3-1mdv2011.0.x86_64
+lib64thai0-0.1.13-1mdv2010.1.x86_64
+thai-data-0.1.13-1mdv2010.1.x86_64
+lib64datrie1-0.2.3-1mdv2010.1.x86_64
+pango-1.28.3-1mdv2011.0.x86_64
+plymouth-system-theme-0.8.3-4mdv2010.1.x86_64
+mandriva-theme-common-1.4.7-2mdv2010.1.noarch
+mandriva-theme-Free-screensaver-1.4.7-2mdv2010.1.noarch
+phonon-xine-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64xine1-1.1.19-1mdv2011.0.x86_64
+xine-plugins-1.1.19-1mdv2011.0.x86_64
+lib64xcb-shape0-1.7-1mdv2011.0.x86_64
+lib64gdk_pixbuf2.0_0-2.22.0-1mdv2011.0.x86_64
+gdk-pixbuf2.0-2.22.0-1mdv2011.0.x86_64
+lib64cdio12-0.82-1mdv2010.1.x86_64
+lib64xvmc1-1.0.6-1mdv2011.0.x86_64
+lib64xcb-xv0-1.7-1mdv2011.0.x86_64
+lib64ffmpeg52-0.6-5mdv2011.0.x86_64
+lib64schroedinger1.0_0-1.0.9-1mdv2010.1.x86_64
+lib64orc0.4_0-0.4.9-1mdv2011.0.x86_64
+lib64theoraenc1-1.1.1-1mdv2010.1.x86_64
+lib64theoradec1-1.1.1-1mdv2010.1.x86_64
+lib64va1-0.31.1.1.sds4-2mdv2011.0.x86_64
+lib64vpx0-0.9.2-1mdv2011.0.x86_64
+lib64avutil50-0.6-5mdv2011.0.x86_64
+lib64modplug1-0.8.8.1-1mdv2011.0.x86_64
+lib64vcd0-0.7.23-9mdv2010.1.x86_64
+lib64iso9660_7-0.82-1mdv2010.1.x86_64
+lib64theora0-1.1.1-1mdv2010.1.x86_64
+lib64xcb-shm0-1.7-1mdv2011.0.x86_64
+lib64postproc51-0.6-5mdv2011.0.x86_64
+lib64xv1-1.0.5-1mdv2010.1.x86_64
+ktimer-4.5.68-1mdv2011.0.x86_64
+glibc-2.12.1-3mnb2.x86_64
+dash-static-0.5.6.1-1mdv2011.0.x86_64
+libstdc++6-4.5.1-1mnb2.x86_64
+libgcc1-4.5.1-1mnb2.x86_64
+lib64qtgui4-4.7.0-3mdv2011.0.x86_64
+lib64freetype6-2.4.2-1mdv2011.0.x86_64
+zlib1-1.2.3-15mdv2010.1.x86_64
+lib64uClibc0.9.30.1-0.9.30.1-13mdv2011.0.x86_64
+uClibc-0.9.30.1-13mdv2011.0.x86_64
+bash-4.1-7mdv2011.0.x86_64
+lib64termcap2-2.0.8-49mdv2010.1.x86_64
+lib64sm6-1.1.1-2mdv2010.1.x86_64
+lib64ice6-1.0.6-2mdv2010.1.x86_64
+lib64tiff3-3.9.4-3mdv2011.0.x86_64
+lib64jpeg8-8b-1mdv2011.0.x86_64
+lib64jbig1-2.0-4mdv2010.1.x86_64
+lib64xext6-1.1.2-1mdv2011.0.x86_64
+lib64x11_6-1.3.99.902-1mdv2011.0.x86_64
+coreutils-8.5-2mdv2011.0.x86_64
+lib64gmp10-5.0.1-1mdv2010.1.x86_64
+lib64attr1-2.4.44-1mdv2010.1.x86_64
+pam-1.1.1-2mdv2010.1.x86_64
+lib64audit1-2.0.4-5mdv2010.1.x86_64
+rpm-helper-0.23.1-1mdv2010.1.noarch
+perl-base-5.12.2-4mdv2011.0.x86_64
+findutils-4.5.9-1mdv2011.0.x86_64
+info-install-4.13a-1mdv2010.1.x86_64
+xz-4.999.9beta-2mdv2010.1.x86_64
+lib64lzma2-4.999.9beta-2mdv2010.1.x86_64
+setup-2.7.18-1mdv2010.1.x86_64
+run-parts-3.2.1-6mdv2010.1.x86_64
+shadow-utils-4.1.4.2-6mdv2010.1.x86_64
+lib64tcb0-1.0.3-6mdv2010.1.x86_64
+lib64pam0-1.1.1-2mdv2010.1.x86_64
+lib64crack2-2.8.16-1mdv2010.1.x86_64
+lib64dbnss4.8-4.8.30-1mdv2011.0.x86_64
+lib64pam_userpass1-1.0.2-4mdv2010.1.x86_64
+tcb-1.0.3-6mdv2010.1.x86_64
+pam_tcb-1.0.3-6mdv2010.1.x86_64
+nss_tcb-1.0.3-6mdv2010.1.x86_64
+chkconfig-1.3.37-5mdv2010.1.x86_64
+lib64popt0-1.15-9mdv2010.1.x86_64
+popt-data-1.15-9mdv2010.1.x86_64
+grep-2.7-1mdv2011.0.x86_64
+lib64pcre0-8.10-1mdv2011.0.x86_64
+cracklib-dicts-2.8.16-1mdv2010.1.x86_64
+lib64acl1-2.2.49-2mdv2010.1.x86_64
+lib64cap2-2.19-5mdv2010.1.x86_64
+lib64xcb1-1.7-1mdv2011.0.x86_64
+lib64xau6-1.0.6-1mdv2011.0.x86_64
+lib64xdmcp6-1.0.3-2mdv2010.1.x86_64
+lib64fontconfig1-2.8.0-2mdv2010.1.x86_64
+lib64xml2_2-2.7.7-1mdv2010.1.x86_64
+fontconfig-2.8.0-2mdv2010.1.x86_64
+lib64qtsvg4-4.7.0-3mdv2011.0.x86_64
+lib64qtcore4-4.7.0-3mdv2011.0.x86_64
+lib64glib2.0_0-2.26.0-1mdv2011.0.x86_64
+glib2.0-common-2.26.0-1mdv2011.0.x86_64
+lib64gio2.0_0-2.26.0-1mdv2011.0.x86_64
+lib64gamin-1_0-0.1.10-4mdv2010.1.x86_64
+gamin-0.1.10-4mdv2010.1.x86_64
+qt4-common-4.7.0-3mdv2011.0.x86_64
+lib64png3-1.2.44-2mdv2011.0.x86_64
+lib64mng1-1.0.10-11mdv2010.1.x86_64
+lib64lcms1-1.19-2mdv2010.1.x86_64
+lib64xrender1-0.9.6-1mdv2011.0.x86_64
+lib64kio5-4.5.68-1mdv2011.0.x86_64
+lib64nepomuk4-4.5.68-1mdv2011.0.x86_64
+lib64qtdbus4-4.7.0-3mdv2011.0.x86_64
+lib64qtxml4-4.7.0-3mdv2011.0.x86_64
+lib64soprano4-2.5.62-0.1170808.1mdv2011.0.x86_64
+soprano-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64sopranoindex1-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64clucene0-0.9.21b-3mdv2010.1.x86_64
+soprano-plugin-virtuoso-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64iodbc2-3.52.7-1mdv2010.1.x86_64
+soprano-plugin-common-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64raptor1-1.4.21-1mdv2010.1.x86_64
+lib64curl4-7.21.1-1mdv2011.0.x86_64
+lib64ldap2.4_2-2.4.23-1mdv2011.0.x86_64
+openldap-2.4.23-1mdv2011.0.x86_64
+lib64openssl1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64openssl-engines1.0.0-1.0.0a-6mdv2011.0.x86_64
+lib64sasl2-2.1.23-8mdv2010.1.x86_64
+rootcerts-20100827.00-1mdv2011.0.x86_64
+lib64krb53-1.8.3-1mdv2011.0.x86_64
+lib64ext2fs2-1.41.12-1mnb2.x86_64
+lib64blkid1-2.18-1mdv2011.0.x86_64
+lib64uuid1-2.18-1mdv2011.0.x86_64
+e2fsprogs-1.41.12-1mnb2.x86_64
+krb5-1.8.3-1mdv2011.0.x86_64
+lib64ssh2_1-1.2.7-1mdv2011.0.x86_64
+lib64idn11-1.19-1mdv2011.0.x86_64
+virtuoso-opensource-6.1.2-1mdv2011.0.x86_64
+lib64sopranoserver1-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64qtnetwork4-4.7.0-3mdv2011.0.x86_64
+lib64sopranoclient1-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64kdeui5-4.5.68-1mdv2011.0.x86_64
+lib64dbusmenu-qt2-0.6.2-1mdv2011.0.x86_64
+lib64xtst6-1.1.0-2mdv2010.1.x86_64
+lib64xfixes3-4.0.5-1mdv2011.0.x86_64
+lib64kdecore5-4.5.68-1mdv2011.0.x86_64
+qt4-style-iaora-0.3.1-2mdv2011.0.x86_64
+kde4-style-iaora-common-0.3.1-2mdv2011.0.x86_64
+lib64bzip2_1-1.0.6-1mdv2011.0.x86_64
+kde-l10n-en_GB-4.5.0-1mdv2011.0.noarch
+locales-en-2.12.1-1mdv2011.0.x86_64
+locales-2.12.1-1mdv2011.0.x86_64
+rpm-4.6.1-1mnb2.x86_64
+lib64rpm4.6-4.6.1-1mnb2.x86_64
+lib64sqlite3_0-3.7.2-1mdv2011.0.x86_64
+lib64magic1-5.04-1mdv2010.1.x86_64
+lib64elfutils1-0.149-1mdv2011.0.x86_64
+lib64lua5.1-5.1.4-8mdv2010.1.x86_64
+lib64readline6-6.1-2mdv2010.1.x86_64
+lib64ncurses5-5.7-4.20100925.1mdv2011.0.x86_64
+ncurses-5.7-4.20100925.1mdv2011.0.x86_64
+lib64db4.8-4.8.30-1mdv2011.0.x86_64
+lib64nss3-3.12.7-2mdv2011.0.x86_64
+nss-3.12.7-2mdv2011.0.x86_64
+lib64nspr4-4.8.6-2mdv2011.0.x86_64
+rpm-mandriva-setup-1.107-1mdv2011.0.x86_64
+rpm-manbo-setup-2-21mnb2.noarch
+gawk-3.1.8-1mdv2011.0.x86_64
+lib64sigsegv2-2.8-2mdv2010.1.x86_64
+update-alternatives-1.9.0-6mdv2010.1.noarch
+mktemp-1.7-1mdv2011.0.x86_64
+bzip2-1.0.6-1mdv2011.0.x86_64
+cpio-2.11-1mdv2010.1.x86_64
+rmt-0.4b42-1mdv2010.1.x86_64
+kdelibs4-core-4.5.68-1mdv2011.0.x86_64
+lib64kfile4-4.5.68-1mdv2011.0.x86_64
+lib64solid4-4.5.68-1mdv2011.0.x86_64
+lib64krosscore4-4.5.68-1mdv2011.0.x86_64
+lib64qtscript4-4.7.0-3mdv2011.0.x86_64
+lib64kntlm4-4.5.68-1mdv2011.0.x86_64
+docbook-dtd42-xml-1.0-11mdv2010.1.noarch
+sgml-common-0.6.3-17mdv2010.1.noarch
+libxml2-utils-2.7.7-1mdv2010.1.x86_64
+lib64kjs4-4.5.68-1mdv2011.0.x86_64
+lib64ilmbase6-1.0.2-2mdv2011.0.x86_64
+lib64kjsembed4-4.5.68-1mdv2011.0.x86_64
+lib64jasper1-1.900.1-10mdv2010.1.x86_64
+lib64katepartinterfaces4-4.5.68-1mdv2011.0.x86_64
+lib64kcmutils4-4.5.68-1mdv2011.0.x86_64
+lib64ktexteditor4-4.5.68-1mdv2011.0.x86_64
+lib64kparts4-4.5.68-1mdv2011.0.x86_64
+lib64nepomukutils4-4.5.68-1mdv2011.0.x86_64
+lib64nepomukquery4-4.5.68-1mdv2011.0.x86_64
+lib64polkit-qt-core-10-0.96.1-1mdv2011.0.x86_64
+lib64polkit1_0-0.99-1mdv2011.0.x86_64
+polkit-0.99-1mdv2011.0.x86_64
+consolekit-0.4.2-1mdv2011.0.x86_64
+lib64dbus-glib-1_2-0.88-1mdv2011.0.x86_64
+lib64dbus-1_3-1.4.0-1mdv2011.0.x86_64
+dbus-1.4.0-1mdv2011.0.x86_64
+lib64expat1-2.0.1-12mdv2010.1.x86_64
+lib64consolekit0-0.4.2-1mdv2011.0.x86_64
+lib64kunittest4-4.5.68-1mdv2011.0.x86_64
+lib64enchant1-1.6.0-1mdv2011.0.x86_64
+lib64voikko1-3.0-1mdv2011.0.x86_64
+lib64hunspell1.2_0-1.2.12-3mdv2011.0.x86_64
+enchant-1.6.0-1mdv2011.0.x86_64
+lib64aspell15-0.60.6-7mdv2010.1.x86_64
+lib64khtml5-4.5.68-1mdv2011.0.x86_64
+lib64phonon4-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64pulseglib20-0.9.21-33mdv2011.0.x86_64
+lib64asyncns0-0.8-1mdv2010.1.x86_64
+lib64flac8-1.2.1-7mdv2010.1.x86_64
+lib64ogg0-1.2.0-1mdv2010.1.x86_64
+lib64xi6-1.3.2-1mdv2011.0.x86_64
+lib64sndfile1-1.0.21-2mdv2010.1.x86_64
+lib64vorbisenc2-1.3.1-1mdv2010.1.x86_64
+lib64vorbis0-1.3.1-1mdv2010.1.x86_64
+lib64xcb-atom1-0.3.6-1mdv2010.1.x86_64
+lib64wrap0-7.6-40mdv2010.1.x86_64
+lib64pulseaudio0-0.9.21-33mdv2011.0.x86_64
+lib64speex1-1.2-0.rc1.3mdv2010.1.x86_64
+lib64samplerate0-0.1.7-3mdv2010.1.x86_64
+lib64tdb1-1.2.1-1mdv2010.1.x86_64
+pulseaudio-client-config-0.9.21-33mdv2011.0.x86_64
+ccp-0.4.1-4mdv2010.1.noarch
+perl-5.12.2-4mdv2011.0.x86_64
+lib64gdbm3-1.8.3-13mdv2010.1.x86_64
+lib64ltdl7-2.2.10-1mdv2011.0.x86_64
+lib64gif4-4.1.6-7mdv2010.1.x86_64
+shared-mime-info-0.80-1mdv2011.0.x86_64
+pkgconfig-0.25-1mdv2011.0.x86_64
+shared-desktop-ontologies-0.5-1mdv2010.1.noarch
+lib64OpenEXR6-1.7.0-1mdv2011.0.x86_64
+lib64kemoticons4-4.5.68-1mdv2011.0.x86_64
+lib64xslt1-1.1.26-2mdv2010.1.x86_64
+lib64gcrypt11-1.4.6-3mdv2011.0.x86_64
+multiarch-utils-1.0.10-1mdv2010.1.noarch
+perl-MDK-Common-1.2.26-3mdv2011.0.noarch
+perl-File-Sync-0.90.0-4mdv2011.0.x86_64
+lib64pth20-2.0.7-7mdv2010.1.x86_64
+lib64gpg-error0-1.9-1mdv2011.0.x86_64
+libgpg-error-common-1.9-1mdv2011.0.x86_64
+kde4-style-iaora-0.3.1-2mdv2011.0.x86_64
+lib64kdecorations4-4.5.68-1mdv2011.0.x86_64
+phonon-xine-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64xine1-1.1.19-1mdv2011.0.x86_64
+xine-plugins-1.1.19-1mdv2011.0.x86_64
+lib64xcb-shape0-1.7-1mdv2011.0.x86_64
+lib64gdk_pixbuf2.0_0-2.22.0-1mdv2011.0.x86_64
+gdk-pixbuf2.0-2.22.0-1mdv2011.0.x86_64
+common-licenses-1.0-16mdv2010.1.noarch
+lib64cdio12-0.82-1mdv2010.1.x86_64
+lib64xvmc1-1.0.6-1mdv2011.0.x86_64
+lib64xcb-xv0-1.7-1mdv2011.0.x86_64
+lib64ffmpeg52-0.6-5mdv2011.0.x86_64
+lib64schroedinger1.0_0-1.0.9-1mdv2010.1.x86_64
+lib64orc0.4_0-0.4.9-1mdv2011.0.x86_64
+lib64theoraenc1-1.1.1-1mdv2010.1.x86_64
+lib64theoradec1-1.1.1-1mdv2010.1.x86_64
+lib64va1-0.31.1.1.sds4-2mdv2011.0.x86_64
+lib64drm2-2.4.22-1mdv2011.0.x86_64
+libdrm-common-2.4.22-1mdv2011.0.x86_64
+lib64mesagl1-7.8.1-6mdv2010.1.x86_64
+lib64xxf86vm1-1.1.0-1mdv2010.1.x86_64
+lib64dri-drivers-7.8.1-6mdv2010.1.x86_64
+lib64drm_radeon1-2.4.22-1mdv2011.0.x86_64
+lib64drm_intel1-2.4.22-1mdv2011.0.x86_64
+lib64xdamage1-1.1.3-1mdv2011.0.x86_64
+lib64vpx0-0.9.2-1mdv2011.0.x86_64
+lib64avutil50-0.6-5mdv2011.0.x86_64
+lib64alsa2-1.0.23-4mdv2011.0.x86_64
+lib64python2.6-2.6.6-1mdv2011.0.x86_64
+libalsa-data-1.0.23-4mdv2011.0.x86_64
+lib64modplug1-0.8.8.1-1mdv2011.0.x86_64
+lib64mesaglu1-7.8.1-6mdv2010.1.x86_64
+lib64vcd0-0.7.23-9mdv2010.1.x86_64
+lib64iso9660_7-0.82-1mdv2010.1.x86_64
+lib64theora0-1.1.1-1mdv2010.1.x86_64
+lib64v4l0-0.8.1-1mdv2011.0.x86_64
+v4l-utils-0.8.1-1mdv2011.0.x86_64
+lib64sysfs2-2.1.0-10mnb2.x86_64
+lib64v4l-wrappers-0.8.1-1mdv2011.0.x86_64
+lib64xcb-shm0-1.7-1mdv2011.0.x86_64
+lib64postproc51-0.6-5mdv2011.0.x86_64
+lib64xv1-1.0.5-1mdv2010.1.x86_64
+netbook-kde4-config-2010.1-22mdv2010.1.noarch
+mandriva-kde4-config-common-2010.1-22mdv2010.1.noarch
+mandriva-kde-icons-1.0.4-12mdv2011.0.noarch
+urw-fonts-2.0-26mdv2010.1.noarch
+mandriva-theme-Free-screensaver-1.4.7-2mdv2010.1.noarch
+desktop-common-data-2010.1-2mdv2010.1.noarch
+xdg-utils-1.0.3-0.20100204.3mdv2011.0.x86_64
+xprop-1.1.0-1mdv2010.1.x86_64
+desktop-file-utils-0.17-1mdv2011.0.x86_64
+xset-1.2.0-1mdv2011.0.x86_64
+lib64xmu6-1.0.5-2mdv2010.1.x86_64
+lib64xt6-1.0.8-1mdv2010.1.x86_64
+perl-XML-Parser-2.360.0-5mdv2011.0.x86_64
+xdg-user-dirs-0.13-1mdv2011.0.x86_64
+perl-Locale-gettext-1.50.0-4mdv2011.0.x86_64
+hicolor-icon-theme-0.12-1mdv2010.1.noarch
+menu-messages-2011.0-0.1mdv2011.0.noarch
+mandriva-theme-Powerpack-1.4.7-2mdv2010.1.noarch
+bootsplash-3.3.3-1mdv2010.1.noarch
+plymouth-scripts-0.8.3-4mdv2010.1.x86_64
+plymouth-0.8.3-4mdv2010.1.x86_64
+lib64plymouth2-0.8.3-4mdv2010.1.x86_64
+lib64drm_nouveau1-2.4.22-1mdv2011.0.x86_64
+initscripts-8.99-15mdv2010.1.x86_64
+which-2.20-5mdv2010.1.x86_64
+ifmetric-0.3-8mnb2.x86_64
+net-tools-1.60-32mdv2010.1.x86_64
+util-linux-ng-2.18-1mdv2011.0.x86_64
+lib64mount1-2.18-1mdv2011.0.x86_64
+lib64ncursesw5-5.7-4.20100925.1mdv2011.0.x86_64
+udev-162-2mnb2.x86_64
+lib64usb-compat0.1_4-0.1.3-3mdv2010.1.x86_64
+lib64usb1.0_0-1.0.8-1mdv2011.0.x86_64
+ldetect-lst-0.1.288-1mdv2011.0.x86_64
+gzip-1.4-1mdv2010.1.x86_64
+less-436-3mdv2010.1.x86_64
+file-5.04-1mdv2010.1.x86_64
+diffutils-3.0-1mdv2011.0.x86_64
+sed-4.2.1-2mdv2010.1.x86_64
+dmsetup-1.02.44-5mnb2.x86_64
+lib64devmapper1.02-1.02.44-5mnb2.x86_64
+lib64udev0-162-2mnb2.x86_64
+lib64devmapper-event1.02-1.02.44-5mnb2.x86_64
+gettext-base-0.18.1.1-1mdv2011.0.x86_64
+lib64intl8-0.18.1.1-1mdv2011.0.x86_64
+iputils-20100418-1mdv2011.0.x86_64
+psmisc-22.13-1mdv2011.0.x86_64
+sound-scripts-0.60-1mdv2010.1.noarch
+aumix-text-2.9.1-1mdv2011.0.x86_64
+procps-3.2.8-4mdv2011.0.x86_64
+module-init-tools-3.6-10mdv2010.1.x86_64
+lib64modprobe0-3.6-10mdv2010.1.x86_64
+sysvinit-2.87-6mdv2010.1.x86_64
+sysvinit-tools-2.87-6mdv2010.1.x86_64
+mingetty-1.08-5mdv2010.1.x86_64
+prcsys-0.0.3-6mdv2010.1.x86_64
+ethtool-6-6mdv2010.1.x86_64
+resolvconf-1.46-1mdv2011.0.noarch
+iproute2-2.6.34-1mdv2011.0.x86_64
+ifplugd-0.28-12mdv2010.1.x86_64
+lib64daemon0-0.14-1mdv2010.1.x86_64
+mkinitrd-6.0.93-19mnb2.x86_64
+nash-6.0.93-19mnb2.x86_64
+lib64parted0-2.3-1mdv2011.0.x86_64
+tar-1.23-4mdv2011.0.x86_64
+kpartx-0.4.8-17mdv2010.1.x86_64
+filesystem-2.1.9-9mdv2010.1.x86_64
+kernel-desktop-2.6.35.6-1mnb-1-1mnb2.x86_64
+bootloader-utils-1.15-5mdv2010.1.noarch
+drakxtools-backend-13.35-4mdv2011.0.x86_64
+perl-String-ShellQuote-1.40.0-2mdv2011.0.noarch
+dmidecode-2.10-3mdv2010.1.x86_64
+lib64ldetect0.11-0.11.1-3mdv2010.1.x86_64
+lib64pci3-3.1.7-2mdv2010.1.x86_64
+drakx-kbd-mouse-x11-0.90-1mdv2010.1.x86_64
+usermode-consoleonly-1.106-1mdv2011.0.x86_64
+lib64user1-0.56.18-1mdv2011.0.x86_64
+libuser-0.56.18-1mdv2011.0.x86_64
+drakxtools-curses-13.35-4mdv2011.0.x86_64
+drakx-net-text-0.90-2mdv2011.0.noarch
+libdrakx-net-0.90-2mdv2011.0.noarch
+iw-0.9.21-1mdv2011.0.x86_64
+lib64nl1-1.1-5mdv2010.1.x86_64
+wireless-regdb-20091125-1mdv2010.1.noarch
+crda-1.1.1-1mdv2010.1.x86_64
+perl-Net-Telnet-3.30.0-1mdv2011.0.noarch
+perl-Libconf-0.42.10-2mdv2011.0.x86_64
+perl-Text-DelimMatch-1.06-6mdv2011.0.noarch
+perl-Curses-UI-0.960.700-1mdv2011.0.noarch
+perl-Term-ReadKey-2.30-10mdv2011.0.x86_64
+perl-Curses-1.280.0-3mdv2011.0.x86_64
+urpmi-6.38-1mdv2011.0.noarch
+meta-task-2010.1-11mdv2010.1.noarch
+perl-URPM-3.36-2mdv2011.0.x86_64
+perl-MDV-Packdrakeng-1.13-6mdv2011.0.noarch
+genhdlist2-5.9-4mdv2011.0.x86_64
+perl-Time-ZoneInfo-0.300.0-2mdv2011.0.noarch
+perl-Filesys-Df-0.920.0-5mdv2011.0.x86_64
+eject-2.1.5-8mdv2010.1.x86_64
+perl-MDV-Distribconf-4.02-2mdv2011.0.noarch
+perl-Config-IniFiles-2.580.0-2mdv2011.0.noarch
+gnupg-1.4.10-2mdv2010.1.x86_64
+perl-XML-LibXML-1.700.0-7mdv2011.0.x86_64
+perl-XML-NamespaceSupport-1.110.0-1mdv2011.0.noarch
+perl-XML-SAX-0.960.0-1mdv2011.0.noarch
+curl-7.21.1-1mdv2011.0.x86_64
+monitor-edid-3.0-1mdv2010.1.x86_64
+lib64x86_1-1.1-7mdv2010.1.x86_64
+perl-File-FnMatch-0.20.0-3mdv2011.0.x86_64
+sysfsutils-2.1.0-10mnb2.x86_64
+kernel-firmware-20100804-1mnb2.noarch
+perl-Archive-Cpio-0.70.0-1mdv2011.0.noarch
+plymouth-plugin-script-0.8.3-4mdv2010.1.x86_64
+plymouth-plugin-label-0.8.3-4mdv2010.1.x86_64
+lib64cairo2-1.10.0-1mdv2011.0.x86_64
+lib64pixman-1_0-0.19.4-1mdv2011.0.x86_64
+lib64pango1.0_0-1.28.3-1mdv2011.0.x86_64
+lib64pango1.0_0-modules-1.28.3-1mdv2011.0.x86_64
+lib64thai0-0.1.13-1mdv2010.1.x86_64
+thai-data-0.1.13-1mdv2010.1.x86_64
+lib64datrie1-0.2.3-1mdv2010.1.x86_64
+lib64xft2-2.1.14-1mdv2010.1.x86_64
+pango-1.28.3-1mdv2011.0.x86_64
+plymouth-system-theme-0.8.3-4mdv2010.1.x86_64
+mandriva-theme-common-1.4.7-2mdv2010.1.noarch
+lib64streamanalyzer0-0.7.2-2mdv2011.0.x86_64
+lib64streams0-0.7.2-2mdv2011.0.x86_64
+kdeutils4-core-4.5.68-1mdv2011.0.x86_64
+kdegraphics4-4.5.68-1mdv2011.0.x86_64
+kdegraphics4-core-4.5.68-1mdv2011.0.x86_64
+lib64ksane0-4.5.68-1mdv2011.0.x86_64
+lib64sane1-1.0.21-2mdv2010.1.x86_64
+lib64gphoto2-2.4.10-1mdv2011.0.x86_64
+lib64exif12-0.6.19-1mdv2010.1.x86_64
+libexif12-common-0.6.19-1mdv2010.1.x86_64
+libgphoto-common-2.4.10-1mdv2011.0.x86_64
+lib64gd2-2.0.35-14mdv2010.1.x86_64
+lib64xpm4-3.5.8-2mdv2010.1.x86_64
+lib64hal1-0.5.14-4mdv2011.0.x86_64
+hal-0.5.14-4mdv2011.0.x86_64
+pciutils-3.1.7-2mdv2010.1.x86_64
+cryptsetup-1.1.3-1mdv2011.0.x86_64
+usbutils-0.90-1mdv2011.0.x86_64
+acl-2.2.49-2mdv2010.1.x86_64
+hal-info-0.0-5.20091130.1mdv2010.1.noarch
+policykit-0.9-7mdv2010.1.x86_64
+lib64polkit2-0.9-7mdv2010.1.x86_64
+lib64lockdev1-1.0.3-11mdv2011.0.x86_64
+lib64ieee1284_3-0.2.11-8mdv2010.1.x86_64
+oxygen-icon-theme-4.5.68-1mdv2011.0.noarch
+kcron-4.5.68-1mdv2011.0.x86_64
+kdebase4-runtime-4.5.68-1mdv2011.0.x86_64
+lib64kpty4-4.5.68-1mdv2011.0.x86_64
+lib64utempter0-0.5.5-10mdv2010.1.x86_64
+lib64kwalletbackend4-4.5.68-1mdv2011.0.x86_64
+lib64kmediaplayer4-4.5.68-1mdv2011.0.x86_64
+lib64kdesu5-4.5.68-1mdv2011.0.x86_64
+lib64exiv2_9-0.20-2mdv2011.0.x86_64
+lib64kdnssd4-4.5.68-1mdv2011.0.x86_64
+lib64knotifyconfig4-4.5.68-1mdv2011.0.x86_64
+lib64kidletime4-4.5.68-1mdv2011.0.x86_64
+lib64xscrnsaver1-1.2.0-3mdv2010.1.x86_64
+soprano-plugin-redland-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64redland0-1.0.11-1mdv2011.0.x86_64
+lib64rasqal2-0.9.20-1mdv2011.0.x86_64
+lib64mpfr4-3.0.0-3mdv2011.0.x86_64
+lib64ssh4-0.4.6-1mdv2011.0.x86_64
+lib64smbclient0-3.5.5-1mdv2011.0.x86_64
+lib64talloc2-2.0.1-1mdv2010.1.x86_64
+lib64wbclient0-3.5.5-1mdv2011.0.x86_64
+lib64molletnetwork4-4.5.68-1mdv2011.0.x86_64
+lib64knewstuff34-4.5.68-1mdv2011.0.x86_64
+lib64attica0-0.1.91-1mdv2011.0.x86_64
+polkit-kde-1-0.95.1-3mdv2010.1.x86_64
+lib64polkit-qt-agent-10-0.96.1-1mdv2011.0.x86_64
+lib64qt3support4-4.7.0-3mdv2011.0.x86_64
+lib64qtsql4-4.7.0-3mdv2011.0.x86_64
+lib64plasma3-4.5.68-1mdv2011.0.x86_64
+lib64qtwebkit4-4.7.0-3mdv2011.0.x86_64
+lib64qtopengl4-4.7.0-3mdv2011.0.x86_64
+lib64threadweaver4-4.5.68-1mdv2011.0.x86_64
+lib64kdewebkit5-4.5.68-1mdv2011.0.x86_64
+lib64qca2-2.0.2-6.1111917.1mdv2010.1.x86_64
+kdenetwork4-4.5.68-1mdv2011.0.x86_64
+kdeaccessibility4-4.5.68-1mdv2011.0.x86_64
+kwallet-4.5.68-1mdv2011.0.x86_64
+lib64kde3support4-4.5.68-1mdv2011.0.x86_64
+kdeartwork4-4.5.68-2mdv2011.0.x86_64
+kcharselect-4.5.68-1mdv2011.0.x86_64
+kdegames4-4.5.68-1mdv2011.0.x86_64
+kdeplasma-addons-4.5.68-1mdv2011.0.x86_64
+kdepim4-4.5.68-2mdv2011.0.x86_64
+knetworkconf-4.5.0-1mdv2011.0.x86_64
+task-pulseaudio-2010.0-4mdv2010.1.noarch
+pulseaudio-utils-0.9.21-33mdv2011.0.x86_64
+pavucontrol-0.9.10-5mdv2010.1.x86_64
+lib64gtkmm2.4_1-2.22.0-1mdv2011.0.x86_64
+lib64sigc++2.0_0-2.2.8-1mdv2011.0.x86_64
+lib64glibmm2.4_1-2.25.5-1mdv2011.0.x86_64
+lib64pangomm2.4_1-2.26.2-1mdv2010.1.x86_64
+lib64cairomm1.0_1-1.9.1-1mdv2011.0.x86_64
+lib64gtk+-x11-2.0_0-2.22.0-1mdv2011.0.x86_64
+lib64xcursor1-1.1.10-2mdv2010.1.x86_64
+gtk+2.0-2.22.0-1mdv2011.0.x86_64
+lib64gtk+2.0_0-2.22.0-1mdv2011.0.x86_64
+lib64atk1.0_0-1.32.0-1mdv2011.0.x86_64
+atk1.0-common-1.32.0-1mdv2011.0.x86_64
+lib64cups2-1.4.4-2mdv2011.0.x86_64
+openssl-1.0.0a-6mdv2011.0.x86_64
+perl-WWW-Curl-4.130.0-1mdv2011.0.x86_64
+lib64avahi-client3-0.6.27-1mdv2011.0.x86_64
+avahi-0.6.27-1mdv2011.0.x86_64
+lib64avahi-core7-0.6.27-1mdv2011.0.x86_64
+lib64avahi-common3-0.6.27-1mdv2011.0.x86_64
+lib64xcomposite1-0.4.2-1mdv2011.0.x86_64
+lib64xinerama1-1.1-1mdv2010.1.x86_64
+lib64xrandr2-1.3.0-3mdv2010.1.x86_64
+lib64atkmm1.6_1-2.22.0-1mdv2011.0.x86_64
+lib64canberra-gtk0-0.25-1mdv2011.0.x86_64
+canberra-gtk-0.25-1mdv2011.0.x86_64
+lib64canberra0-0.25-1mdv2011.0.x86_64
+lib64vorbisfile3-1.3.1-1mdv2010.1.x86_64
+canberra-common-0.25-1mdv2011.0.x86_64
+sound-theme-freedesktop-0.7-2mdv2010.1.noarch
+lib64glademm2.4_1-2.6.7-3mdv2010.1.x86_64
+lib64glade2.0_0-2.6.4-3mdv2010.1.x86_64
+pulseaudio-0.9.21-33mdv2011.0.x86_64
+rtkit-0.8-1mdv2011.0.x86_64
+pulseaudio-module-x11-0.9.21-33mdv2011.0.x86_64
+paprefs-0.9.9-6mdv2010.1.x86_64
+pulseaudio-module-gconf-0.9.21-33mdv2011.0.x86_64
+lib64GConf2_4-2.32.0-1mdv2011.0.x86_64
+lib64ORBit2_0-2.14.19-1mdv2011.0.x86_64
+ORBit2-2.14.19-1mdv2011.0.x86_64
+lib64IDL2_0-0.8.14-1mdv2010.1.x86_64
+GConf2-2.32.0-1mdv2011.0.x86_64
+lib64gconfmm2.6_1-2.28.2-1mdv2011.0.x86_64
+digikam-1.4.0-4mdv2011.0.x86_64
+lib64digikamdatabase1-1.4.0-4mdv2011.0.x86_64
+lib64kexiv2_9-4.5.68-1mdv2011.0.x86_64
+lib64kdcraw9-4.5.68-1mdv2011.0.x86_64
+libkdcraw-common-4.5.68-1mdv2011.0.x86_64
+lib64digikamcore1-1.4.0-4mdv2011.0.x86_64
+lib64lensfun0-0.2.5-1mdv2011.0.x86_64
+lensfun-0.2.5-1mdv2011.0.x86_64
+lib64lqr0-0.4.1-3mdv2010.1.x86_64
+lib64marblewidget11-4.5.68-1mdv2011.0.x86_64
+marble-common-4.5.68-1mdv2011.0.x86_64
+lib64gpsd19-2.95-1mdv2011.0.x86_64
+lib64bluez3-4.72-1mdv2011.0.x86_64
+kdeedu4-core-4.5.68-1mdv2011.0.x86_64
+mysql-common-5.1.51-1mdv2011.0.x86_64
+mysql-client-5.1.51-1mdv2011.0.x86_64
+lib64mysql16-5.1.51-1mdv2011.0.x86_64
+perl-DBI-1.613.0-2mdv2011.0.x86_64
+mysql-common-core-5.1.51-1mdv2011.0.x86_64
+mysql-core-5.1.51-1mdv2011.0.x86_64
+lib64kabc4-4.5.68-1mdv2011.0.x86_64
+kdepimlibs4-core-4.5.68-1mdv2011.0.x86_64
+lib64kabc_file_core4-4.5.68-1mdv2011.0.x86_64
+lib64kresources4-4.5.68-1mdv2011.0.x86_64
+lib64mailtransport4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-kde4-4.5.68-1mdv2011.0.x86_64
+lib64akonadiprotocolinternals1-1.4.52-1mdv2011.0.x86_64
+lib64kmime4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-kmime4-4.5.68-1mdv2011.0.x86_64
+lib64kcal4-4.5.68-1mdv2011.0.x86_64
+lib64kpimutils4-4.5.68-1mdv2011.0.x86_64
+lib64icalss0-0.46-1mdv2011.0.x86_64
+lib64ical0-0.46-1mdv2011.0.x86_64
+qt4-database-plugin-sqlite-4.7.0-3mdv2011.0.x86_64
+lib64kipi8-4.5.68-1mdv2011.0.x86_64
+kipi-common-4.5.68-1mdv2011.0.x86_64
+kipi-plugins-1.4.0-2mdv2011.0.x86_64
+lib64cxcore2-2.1.0-1mdv2010.1.x86_64
+lib64kipiplugins1-1.4.0-2mdv2011.0.x86_64
+mjpegtools-1.9.0-7mdv2010.1.x86_64
+lib64mjpegtools1.9_0-1.9.0-7mdv2010.1.x86_64
+lib64quicktime0-1.1.5-2mdv2010.1.x86_64
+lib64dv4-1.0.0-6mdv2010.1.x86_64
+lib64SDL1.2_0-1.2.14-1mdv2010.1.x86_64
+lib64ggi2-2.2.2-14mdv2010.1.x86_64
+lib64gii1-1.0.2-13mdv2010.1.x86_64
+lib64xxf86dga1-1.1.1-1mdv2010.1.x86_64
+libggi-2.2.2-14mdv2010.1.x86_64
+lib64aa1-1.4.0-0.rc5.19mdv2010.1.x86_64
+lib64slang2-2.2.2-1mdv2010.1.x86_64
+lib64directfb1.4_0-1.4.3-2mdv2010.1.x86_64
+lib64vncserver0-0.9.7-3mdv2010.1.x86_64
+lib64SDL_gfx13-2.0.22-1mdv2011.0.x86_64
+lib64highgui2-2.1.0-1mdv2010.1.x86_64
+lib64swscaler0-0.6-5mdv2011.0.x86_64
+lib64avformats52-0.6-5mdv2011.0.x86_64
+lib64rtmp0-2.3-3mdv2011.0.x86_64
+lib64dc1394_22-2.1.2-4mdv2010.1.x86_64
+lib64raw1394_11-2.0.5-1mdv2010.1.x86_64
+lib64jack0-1.9.5-7mdv2011.0.x86_64
+jackit-1.9.5-7mdv2011.0.x86_64
+lib64freebob0-1.0.11-3mdv2010.1.x86_64
+lib64avc1394_0-0.5.3-6mdv2010.1.x86_64
+lib64iec61883_0-1.2.0-3mdv2010.1.x86_64
+lib64ffado2-2.0.1-1mdv2011.0.x86_64
+lib64xml++2.6_2-2.30.1-1mdv2010.1.x86_64
+lib64cv2-2.1.0-1mdv2010.1.x86_64
+imagemagick-6.6.4.8-1mdv2011.0.x86_64
+lib64magick4-6.6.4.8-1mdv2011.0.x86_64
+lib64rsvg2_2-2.32.0-1mdv2011.0.x86_64
+lib64croco0.6_3-0.6.2-3mdv2010.1.x86_64
+lib64wmf0.2_7-0.2.8.4-22mdv2011.0.x86_64
+lib64graph4-2.26.3-3mdv2011.0.x86_64
+lib64cdt4-2.26.3-3mdv2011.0.x86_64
+lib64djvulibre21-3.5.22-3mdv2010.1.x86_64
+lib64gvc5-2.26.3-3mdv2011.0.x86_64
+lib64pathplan4-2.26.3-3mdv2011.0.x86_64
+vorbis-tools-1.4.0-1mdv2010.1.x86_64
+lib64ao4-1.0.0-3mdv2010.1.x86_64
+mpg123-1.12.4-1mdv2011.0.x86_64
+lib64mpg123_0-1.12.4-1mdv2011.0.x86_64
+plasma-applet-yawp-0.3.4-2mdv2011.0.x86_64
+lib64weather_ion4-4.5.68-1mdv2011.0.x86_64
+lib64kunitconversion4-4.5.68-1mdv2011.0.x86_64
+nepomuk-scribo-0.6.3-8mdv2010.1.x86_64
+lib64nepomukvisualization0-0.6.3-8mdv2010.1.x86_64
+lib64nepomukutils0-0.6.3-8mdv2010.1.x86_64
+lib64nepomuktasks0-0.6.3-8mdv2010.1.x86_64
+lib64nepomukcontext0-0.6.3-8mdv2010.1.x86_64
+lib64kutils4-4.5.68-1mdv2011.0.x86_64
+lib64kprintutils4-4.5.68-1mdv2011.0.x86_64
+lib64tesseract_full2-2.04-5mdv2010.1.x86_64
+tesseract-2.04-5mdv2010.1.x86_64
+lib64nepomukannotation0-0.6.3-8mdv2010.1.x86_64
+ginkgo-0.31-1mdv2010.1.noarch
+python-kde4-4.5.68-1mdv2011.0.x86_64
+python-2.6.6-1mdv2011.0.x86_64
+lib64polkit-qt-core0-0.9.3-1mdv2010.1.x86_64
+lib64polkit-qt-gui0-0.9.3-1mdv2010.1.x86_64
+python-sip-4.11-1mdv2011.0.x86_64
+lib64knewstuff2_4-4.5.68-1mdv2011.0.x86_64
+python-qt4-4.7.5-1mdv2011.0.x86_64
+python-qt4-svg-4.7.5-1mdv2011.0.x86_64
+python-qt4-core-4.7.5-1mdv2011.0.x86_64
+python-qt4-sql-4.7.5-1mdv2011.0.x86_64
+python-qt4-gui-4.7.5-1mdv2011.0.x86_64
+python-qt4-designer-4.7.5-1mdv2011.0.x86_64
+lib64qtdesigner4-4.7.0-3mdv2011.0.x86_64
+python-qt4-multimedia-4.7.5-1mdv2011.0.x86_64
+lib64qtmultimedia4-4.7.0-3mdv2011.0.x86_64
+python-qt4-test-4.7.5-1mdv2011.0.x86_64
+lib64qttest4-4.7.0-3mdv2011.0.x86_64
+python-qt4-xmlpatterns-4.7.5-1mdv2011.0.x86_64
+lib64qtxmlpatterns4-4.7.0-3mdv2011.0.x86_64
+qt4-xmlpatterns-4.7.0-3mdv2011.0.x86_64
+python-qt4-xml-4.7.5-1mdv2011.0.x86_64
+python-qt4-network-4.7.5-1mdv2011.0.x86_64
+python-qt4-webkit-4.7.5-1mdv2011.0.x86_64
+python-qt4-script-4.7.5-1mdv2011.0.x86_64
+python-qt4-opengl-4.7.5-1mdv2011.0.x86_64
+python-mako-0.3.4-2mdv2011.0.noarch
+python-beaker-1.5.3-1mdv2010.1.noarch
+python-markupsafe-0.9.3-1mdv2011.0.x86_64
+lib64konq5-4.5.68-1mdv2011.0.x86_64
+lib64nepomukpeopletag0-0.6.3-8mdv2010.1.x86_64
+lib64scribo0-0.6.3-8mdv2010.1.x86_64
+kio-sysinfo-1.8.3-0.822583.7mdv2010.1.x86_64
+lib64hd16-16.0-2mdv2010.1.x86_64
+readahead-1.5.6-1mdv2011.0.x86_64
+lib64auparse0-2.0.4-5mdv2010.1.x86_64
+kdepasswd-4.5.68-1mdv2011.0.x86_64
+kcalc-4.5.68-1mdv2011.0.x86_64
+amarok-2.3.2-1mdv2011.0.x86_64
+lib64amarok-sqlcollection1-2.3.2-1mdv2011.0.x86_64
+lib64taglib1-1.6.3-1mdv2011.0.x86_64
+lib64amaroklib1-2.3.2-1mdv2011.0.x86_64
+lib64amarokcore1-2.3.2-1mdv2011.0.x86_64
+lib64amarokocsclient4-2.3.2-1mdv2011.0.x86_64
+lib64amarokpud1-2.3.2-1mdv2011.0.x86_64
+lib64lastfm0-0.3.0-2mdv2010.1.x86_64
+taglib-extras-1.0.1-2mdv2010.1.x86_64
+lib64gpod4-0.7.95-1mdv2011.0.x86_64
+libgpod-0.7.95-1mdv2011.0.x86_64
+lib64plist1-1.3-2mdv2010.1.x86_64
+libplist-1.3-2mdv2010.1.x86_64
+lib64sgutils2-1.29-1mdv2010.1.x86_64
+lib64imobiledevice1-1.0.2-1mdv2011.0.x86_64
+lib64usbmuxd1-1.0.5-2mdv2011.0.x86_64
+usbmuxd-1.0.5-2mdv2011.0.x86_64
+lib64tasn1_3-2.7-1mdv2011.0.x86_64
+lib64gnutls26-2.10.1-1mdv2011.0.x86_64
+lib64lzo2_2-2.03-3mdv2010.1.x86_64
+libimobiledevice-1.0.2-1mdv2011.0.x86_64
+lib64loudmouth-1_0-1.4.3-5mdv2010.1.x86_64
+kde4-audiocd-4.5.68-1mdv2011.0.x86_64
+lib64kcddb4-4.5.68-1mdv2011.0.x86_64
+lib64musicbrainz3_6-3.0.2-3mdv2010.1.x86_64
+lib64discid0-0.2.2-3mdv2010.1.x86_64
+lib64neon0.27-0.29.3-3mdv2010.1.x86_64
+lib64kcompactdisc4-4.5.68-1mdv2011.0.x86_64
+kdemultimedia4-core-4.5.68-1mdv2011.0.x86_64
+lib64audiocdplugins4-4.5.68-1mdv2011.0.x86_64
+lib64cdda0-10.2-6mdv2010.1.x86_64
+amarok-scripts-2.3.2-1mdv2011.0.x86_64
+qtscriptbindings-0.1.0-5mdv2010.1.x86_64
+amarok-utils-2.3.2-1mdv2011.0.x86_64
+lib64mtp8-1.0.3-1mdv2011.0.x86_64
+libmtp-utils-1.0.3-1mdv2011.0.x86_64
+dragonplayer-4.5.68-1mdv2011.0.x86_64
+mandriva-galaxy-data-2010.1-6mdv2010.1.noarch
+mandriva-galaxy-2009.1-14mdv2010.1.x86_64
+drakconf-12.19.1-3mdv2011.0.noarch
+perl-Gtk2-WebKit-0.80.0-3mdv2011.0.x86_64
+lib64soup-2.4_1-2.32.0-1mdv2011.0.x86_64
+lib64proxy1-0.4.6-1mdv2011.0.x86_64
+lib64modman1-0.4.6-1mdv2011.0.x86_64
+libproxy-webkit-0.4.6-1mdv2011.0.x86_64
+lib64webkitgtk1.0_2-1.2.4-1mdv2011.0.x86_64
+lib64gstreamer-plugins-base0.10-0.10.30-3mdv2011.0.x86_64
+lib64gstreamer0.10_0.10-0.10.30-3mdv2011.0.x86_64
+gstreamer0.10-tools-0.10.30-3mdv2011.0.x86_64
+lib64icu44-4.4.1-1mdv2011.0.x86_64
+webkit-1.2.4-1mdv2011.0.x86_64
+lib64gail18-2.22.0-1mdv2011.0.x86_64
+webkit1.0-1.2.4-1mdv2011.0.x86_64
+lib64gnome-keyring0-2.32.0-1mdv2011.0.x86_64
+libgnome-keyring-i18n-2.32.0-1mdv2011.0.x86_64
+gnome-keyring-2.32.0-1mdv2011.0.x86_64
+lib64gcr0-2.32.0-1mdv2011.0.x86_64
+perl-Gtk2-1.230.0-3mdv2011.0.x86_64
+perl-Glib-1.230.0-7mdv2011.0.x86_64
+perl-Pango-1.221-5mdv2011.0.x86_64
+perl-Cairo-1.70.0-4mdv2011.0.x86_64
+drakxtools-13.35-4mdv2011.0.x86_64
+mandriva-doc-common-2010.1-1.0mdv2010.1.noarch
+lib64xxf86misc1-1.0.2-1mdv2010.1.x86_64
+gurpmi-6.38-1mdv2011.0.noarch
+usermode-1.106-1mdv2011.0.x86_64
+lib64startup-notification-1_0-0.10-2mdv2010.1.x86_64
+lib64xcb-aux0-0.3.6-1mdv2010.1.x86_64
+perl-MailTools-2.60.0-1mdv2011.0.noarch
+perl-TimeDate-1.200.0-1mdv2011.0.noarch
+perl-Net-SMTP-SSL-1.10.0-1mdv2011.0.noarch
+perl-IO-Socket-SSL-1.330.0-1mdv2011.0.noarch
+perl-Net-SSLeay-1.360.0-6mdv2011.0.x86_64
+drakx-net-0.90-2mdv2011.0.noarch
+perl-Gtk2-Notify-0.50.0-2mdv2011.0.x86_64
+lib64notify1-0.4.5-3mdv2010.1.x86_64
+notification-daemon-0.5.0-1mdv2011.0.x86_64
+lib64wnck-1_22-2.30.5-1mdv2011.0.x86_64
+libwnck-2.30.5-1mdv2011.0.x86_64
+netprofile-0.28-1mdv2010.1.noarch
+font-tools-0.1-21mdv2011.0.x86_64
+t1utils-1.36-1mdv2011.0.x86_64
+ttmkfdir-3.0.9-1mdv2011.0.x86_64
+groff-1.20.1-2mdv2010.1.x86_64
+groff-for-man-1.20.1-2mdv2010.1.x86_64
+perl-URI-1.550.0-1mdv2011.0.noarch
+perl-Net-DBus-0.33.6-7mdv2011.0.x86_64
+perl-XML-Twig-3.350.0-2mdv2011.0.noarch
+drakconf-icons-12.19.1-3mdv2011.0.noarch
+mandriva-release-Powerpack-2011.0-0.1mdv2011.0.x86_64
+mandriva-release-common-2011.0-0.1mdv2011.0.x86_64
+drak3d-1.29-1mdv2010.1.noarch
+userdrake-1.13.2-3mdv2011.0.x86_64
+transfugdrake-1.9.2-1mdv2010.1.noarch
+migration-assistant-0.6.4-2mdv2010.1.x86_64
+perl-Gnome2-Vte-0.90.0-2mdv2011.0.x86_64
+lib64vte9-0.26.0-1mdv2011.0.x86_64
+vte-0.26.0-1mdv2011.0.x86_64
+harddrake-ui-13.35-4mdv2011.0.x86_64
+sane-backends-1.0.21-2mdv2010.1.x86_64
+okular-4.5.68-1mdv2011.0.x86_64
+lib64epub0-0.1.1-3mdv2010.1.x86_64
+lib64zip1-0.9.3-2mdv2010.1.x86_64
+lib64poppler-qt4-3-0.14.3-1mdv2011.0.x86_64
+lib64poppler7-0.14.3-1mdv2011.0.x86_64
+lib64openjpeg2-1.3-6mdv2010.1.x86_64
+lib64qimageblitz4-0.0.6-1mdv2011.0.x86_64
+lib64chm0-0.40-3mdv2010.1.x86_64
+lib64spectre1-0.2.6-1mdv2011.0.x86_64
+lib64gs8-8.71-72mdv2011.0.x86_64
+lib64jbig2dec0-0.10-3mdv2010.1.x86_64
+lib64okularcore1-4.5.68-1mdv2011.0.x86_64
+lib64kjsapi4-4.5.68-1mdv2011.0.x86_64
+plasma-applet-battery-4.5.68-1mdv2011.0.x86_64
+lib64solidcontrol4-4.5.68-1mdv2011.0.x86_64
+lib64solidcontrolifaces4-4.5.68-1mdv2011.0.x86_64
+plasma-krunner-powerdevil-4.5.68-1mdv2011.0.x86_64
+kontact-4.5.68-2mdv2011.0.x86_64
+lib64calendarsupport4-4.5.68-2mdv2011.0.x86_64
+lib64kcalcore4-4.5.68-1mdv2011.0.x86_64
+lib64kholidays4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-contact4-4.5.68-1mdv2011.0.x86_64
+lib64kdepimdbusinterfaces4-4.5.68-2mdv2011.0.x86_64
+lib64kcalutils4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-next4-4.5.68-2mdv2011.0.x86_64
+lib64kpimidentities4-4.5.68-1mdv2011.0.x86_64
+lib64kpimtextedit4-4.5.68-1mdv2011.0.x86_64
+lib64kdepim4-4.5.68-2mdv2011.0.x86_64
+lib64kldap4-4.5.68-1mdv2011.0.x86_64
+kdepim4-core-4.5.68-2mdv2011.0.x86_64
+akonadi-kde-4.5.68-1mdv2011.0.x86_64
+akonadi-1.4.52-1mdv2011.0.x86_64
+qt4-database-plugin-mysql-4.7.0-3mdv2011.0.x86_64
+lib64boost_program_options1.44.0-1.44.0-2mdv2011.0.x86_64
+lib64akonadi-kabc4-4.5.68-1mdv2011.0.x86_64
+lib64maildir4-4.5.68-1mdv2011.0.x86_64
+lib64microblog4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-kcal4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi-xml4-4.5.68-1mdv2011.0.x86_64
+lib64kdepim-copy4-4.5.68-1mdv2011.0.x86_64
+lib64kimap4-4.5.68-1mdv2011.0.x86_64
+lib64kmindexreader4-4.5.68-1mdv2011.0.x86_64
+lib64mbox4-4.5.68-1mdv2011.0.x86_64
+lib64akonadi_filestore4-4.5.68-1mdv2011.0.x86_64
+lib64qtdeclarative4-4.7.0-3mdv2011.0.x86_64
+lib64kontactprivate4-4.5.68-2mdv2011.0.x86_64
+lib64kontactinterface4-4.5.68-1mdv2011.0.x86_64
+kio4-ldap-4.5.68-1mdv2011.0.x86_64
+phonon-gstreamer-4.4.3-0.git20100914.1mdv2011.0.x86_64
+gstreamer0.10-plugins-good-0.10.25-1mdv2011.0.x86_64
+lib64gudev1.0_0-162-2mnb2.x86_64
+lib64shout3-2.2.2-6mdv2010.1.x86_64
+gstreamer0.10-plugins-base-0.10.30-3mdv2011.0.x86_64
+preload-0.6.4-2mdv2010.1.x86_64
+logrotate-3.7.9-1mdv2011.0.x86_64
+kamera-4.5.68-1mdv2011.0.x86_64
+konversation-1.3.1-1mdv2011.0.x86_64
+tesseract-ita-2.04-5mdv2010.1.x86_64
+lib64gvfs0-1.6.4-1mdv2011.0.x86_64
+lib64cdio_cdda0-0.82-1mdv2010.1.x86_64
+lib64avahi-glib1-0.6.27-1mdv2011.0.x86_64
+gvfs-1.6.4-1mdv2011.0.x86_64
+lib64gdu0-2.32.0-1mdv2011.0.x86_64
+gnome-disk-utility-2.32.0-1mdv2011.0.x86_64
+lib64gdu-gtk0-2.32.0-1mdv2011.0.x86_64
+lib64atasmart4-0.17-1mdv2010.1.x86_64
+lib64avahi-ui1-0.6.27-1mdv2011.0.x86_64
+lib64nautilus1-2.32.0-1mdv2011.0.x86_64
+udisks-1.0.1-1mdv2010.1.x86_64
+mtools-4.0.13-1mdv2010.1.x86_64
+lib64lvm2app2.1-2.02.61-5mnb2.x86_64
+aspell-en-6.0.0-9mdv2010.1.x86_64
+aspell-0.60.6-7mdv2010.1.x86_64
+lib64alsa-plugins-pulseaudio-1.0.23-2mdv2010.1.x86_64
+alsa-plugins-pulse-config-1.0.23-2mdv2010.1.x86_64
+perl-Digest-SHA-5.480.0-4mdv2011.0.x86_64
+perl-Archive-Extract-0.420.0-1mdv2011.0.noarch
+perl-Time-Piece-1.200.0-3mdv2011.0.x86_64
+perl-Module-CoreList-2.370.0-1mdv2011.0.noarch
+perl-CGI-3.490.0-2mdv2011.0.noarch
+perl-Archive-Tar-1.680.0-1mdv2011.0.noarch
+perl-Module-Build-0.360.700-1mdv2011.0.noarch
+plasma-applet-system-monitor-net-4.5.68-1mdv2011.0.x86_64
+lib64plasma_applet_system_monitor4-4.5.68-1mdv2011.0.x86_64
+plasma-applet-system-monitor-hwinfo-4.5.68-1mdv2011.0.x86_64
+lm_sensors-3.1.2-3mdv2010.1.x86_64
+lib64lm_sensors4-3.1.2-3mdv2010.1.x86_64
+lib64rrdtool4-1.4.4-3mdv2011.0.x86_64
+lib64dbi0-0.8.3-4mdv2010.1.x86_64
+plasma-applet-system-monitor-hdd-4.5.68-1mdv2011.0.x86_64
+plasma-applet-system-monitor-cpu-4.5.68-1mdv2011.0.x86_64
+kdebase4-workspace-googlegadgets-4.5.68-1mdv2011.0.x86_64
+lib64ggadget1.0_0-0.11.2-4mdv2011.0.x86_64
+google-gadgets-qt-0.11.2-4mdv2011.0.x86_64
+lib64ggadget-qt1.0_0-0.11.2-4mdv2011.0.x86_64
+lib64ggadget-xdg1.0_0-0.11.2-4mdv2011.0.x86_64
+google-gadgets-common-0.11.2-4mdv2011.0.x86_64
+lib64ggadget-dbus1.0_0-0.11.2-4mdv2011.0.x86_64
+lib64ggadget-webkitjs0-0.11.2-4mdv2011.0.x86_64
+lib64ggadget-js1.0_0-0.11.2-4mdv2011.0.x86_64
+kwallet-daemon-4.5.68-1mdv2011.0.x86_64
+kde4-splash-mdv-2010.1.0-1mdv2010.1.x86_64
+kdialog-4.5.68-1mdv2011.0.x86_64
+cagibi-0.1.1-1mdv2011.0.x86_64
+htdig-3.2.0-4mdv2010.1.x86_64
+gdb-7.1-1mdv2010.1.x86_64
+suspend-0.8-10.20080612mdv2010.1.x86_64
+html2text-1.3.2a-8mdv2010.1.x86_64
+aria2-1.10.3-1mdv2011.0.x86_64
+lib64cares2-1.7.3-1mdv2011.0.x86_64
+perl-Hal-Cdroms-0.03-4mdv2011.0.noarch
+unzip-6.0-2mdv2010.1.x86_64
+ffmpegthumbs-4.5.68-1mdv2011.0.x86_64
+ffmpeg-0.6-5mdv2011.0.x86_64
+fonts-ttf-liberation-1.05.2-2mdv2010.1.noarch
+x11-driver-video-1.0.0-32mdv2010.1.x86_64
+x11-driver-video-mga-1.4.13-1mdv2011.0.x86_64
+x11-driver-video-cirrus-1.3.2-1mdv2010.1.x86_64
+x11-driver-video-openchrome-0.2.904-2mdv2010.1.x86_64
+x11-driver-video-sis-0.10.3-1mdv2011.0.x86_64
+x11-driver-video-s3-0.6.3-1mdv2010.1.x86_64
+x11-driver-video-vmware-11.0.2-1mdv2011.0.x86_64
+x11-driver-video-intel-2.13.0-1mdv2011.0.x86_64
+lib64xcb-dri2_0-1.7-1mdv2011.0.x86_64
+lib64pciaccess0-0.12.0-1mdv2011.0.x86_64
+x11-driver-video-sisusb-0.9.4-1mdv2011.0.x86_64
+x11-driver-video-s3virge-1.10.4-1mdv2010.1.x86_64
+x11-driver-video-nouveau-0.0.16-0.20100816.1mdv2011.0.x86_64
+x11-driver-video-nv-2.1.18-1mdv2011.0.x86_64
+x11-driver-video-glint-1.2.5-1mdv2011.0.x86_64
+x11-driver-video-sisimedia-0.9.1-1.20091203.5mdv2010.1.x86_64
+x11-driver-video-fbdev-0.4.2-1mdv2010.1.x86_64
+x11-driver-video-ati-6.13.2-1mdv2011.0.x86_64
+x11-driver-video-neomagic-1.2.5-2mdv2011.0.x86_64
+x11-driver-video-savage-2.3.1-1mdv2010.1.x86_64
+x11-driver-video-r128-6.8.1-2mdv2010.1.x86_64
+x11-driver-video-tdfx-1.4.3-1mdv2010.1.x86_64
+x11-driver-video-vesa-2.3.0-3mdv2010.1.x86_64
+x11-driver-video-v4l-0.2.0-5mdv2010.1.x86_64
+x11-server-common-1.7.7-1mdv2010.1.x86_64
+x11-font-misc-misc-1.1.0-1mdv2010.1.noarch
+mkfontscale-1.0.7-1mdv2010.1.x86_64
+lib64fontenc1-1.0.5-1mdv2010.1.x86_64
+mkfontdir-1.0.5-1mdv2010.1.x86_64
+dash-0.5.6.1-1mdv2011.0.x86_64
+x11-font-cursor-misc-1.0.1-1mdv2010.1.noarch
+xkbcomp-1.1.1-1mdv2010.1.x86_64
+lib64xkbfile1-1.0.6-1mdv2010.1.x86_64
+rgb-1.0.3-5mdv2010.1.x86_64
+x11-data-xkbdata-2.0-1mdv2011.0.noarch
+x11-font-alias-1.0.2-1mdv2010.1.noarch
+x11-driver-video-trident-1.3.4-1mdv2011.0.x86_64
+x11-driver-video-radeonhd-1.3.0-2mdv2010.1.x86_64
+x11-driver-video-mach64-6.8.2-2mdv2010.1.x86_64
+fonts-ttf-dejavu-2.31-1mdv2011.0.noarch
+xev-1.0.4-1mdv2010.1.x86_64
+x11-driver-input-1.0.0-12mdv2010.1.x86_64
+x11-driver-input-void-1.3.0-1mdv2010.1.x86_64
+x11-driver-input-wacom-0.10.6-1mdv2010.1.x86_64
+x11-driver-input-mouse-1.6.0-1mdv2011.0.x86_64
+x11-driver-input-evtouch-0.8.8-1mdv2010.0.x86_64
+x11-driver-input-citron-2.2.2-1mdv2010.0.x86_64
+x11-driver-input-hyperpen-1.3.0-2mdv2010.1.x86_64
+x11-driver-input-keyboard-1.4.0-2mdv2010.1.x86_64
+x11-driver-input-penmount-1.4.1-1mdv2010.1.x86_64
+x11-driver-input-fpit-1.3.0-2mdv2010.1.x86_64
+x11-driver-input-evdev-2.5.0-1mdv2011.0.x86_64
+x11-driver-input-aiptek-1.3.1-1mdv2011.0.x86_64
+x11-driver-input-mutouch-1.2.1-1mdv2010.1.x86_64
+x11-driver-input-synaptics-1.3.0-1mdv2011.0.x86_64
+x11-driver-input-joystick-1.5.0-2mdv2010.1.x86_64
+x11-driver-input-acecad-1.4.0-1mdv2010.1.x86_64
+s2u-0.9.1-2mdv2010.1.x86_64
+keditbookmarks-4.5.68-1mdv2011.0.x86_64
+lib64kbookmarkmodel_private4-4.5.68-1mdv2011.0.x86_64
+xine-pulse-1.1.19-1mdv2011.0.x86_64
+kruler-4.5.68-1mdv2011.0.x86_64
+kcolorchooser-4.5.68-1mdv2011.0.x86_64
+ksnapshot-4.5.68-1mdv2011.0.x86_64
+gwenview-4.5.68-1mdv2011.0.x86_64
+lib64gwenviewlib4-4.5.68-1mdv2011.0.x86_64
+kolourpaint-4.5.68-1mdv2011.0.x86_64
+lib64kolourpaint_lgpl4-4.5.68-1mdv2011.0.x86_64
+kgamma-4.5.68-1mdv2011.0.x86_64
+krfb-4.5.68-1mdv2011.0.x86_64
+kdenetwork4-core-4.5.68-1mdv2011.0.x86_64
+lib64krfbprivate4-4.5.68-1mdv2011.0.x86_64
+kopete-4.5.68-1mdv2011.0.x86_64
+lib64kopete_oscar4-4.5.68-1mdv2011.0.x86_64
+lib64oscar1-4.5.68-1mdv2011.0.x86_64
+lib64kopete4-4.5.68-1mdv2011.0.x86_64
+lib64kopete_videodevice4-4.5.68-1mdv2011.0.x86_64
+lib64ortp8-0.16.3-1mdv2011.0.x86_64
+lib64kopeteprivacy1-4.5.68-1mdv2011.0.x86_64
+lib64kyahoo1-4.5.68-1mdv2011.0.x86_64
+lib64kopeteidentity1-4.5.68-1mdv2011.0.x86_64
+lib64kopeteaddaccountwizard1-4.5.68-1mdv2011.0.x86_64
+lib64kopetestatusmenu1-4.5.68-1mdv2011.0.x86_64
+lib64msn0.3-4.1-4mdv2010.1.x86_64
+lib64gadu3-1.9.0-1mdv2011.0.x86_64
+jasper-1.900.1-10mdv2010.1.x86_64
+lib64mesaglut3-7.8.1-6mdv2010.1.x86_64
+lib64kopetecontactlist1-4.5.68-1mdv2011.0.x86_64
+lib64mediastreamer0-3.3.2-1mdv2011.0.x86_64
+lib64gsm1-1.0.13-2mdv2010.1.x86_64
+lib64kopetechatwindow_shared1-4.5.68-1mdv2011.0.x86_64
+qca2-plugin-openssl-2.0.2-6.1111917.1mdv2010.1.x86_64
+lib64kopete_otr_shared1-4.5.68-1mdv2011.0.x86_64
+lib64otr2-3.2.0-3mdv2010.1.x86_64
+lib64meanwhile1-1.0.2-4mdv2010.1.x86_64
+kdnssd-4.5.68-1mdv2011.0.x86_64
+nss_mdns-0.10-8mdv2010.1.x86_64
+kppp-4.5.68-1mdv2011.0.x86_64
+ppp-2.4.5-2mdv2010.1.x86_64
+lib64pcap1-1.1.1-1mdv2010.1.x86_64
+kget-4.5.68-1mdv2011.0.x86_64
+lib64kgetcore4-4.5.68-1mdv2011.0.x86_64
+lib64gpgme++2-4.5.68-1mdv2011.0.x86_64
+lib64gpgme11-1.3.0-1mdv2010.1.x86_64
+gnupg2-2.0.16-4mdv2011.0.x86_64
+pinentry-0.8.0-5mdv2010.1.x86_64
+lib64adns1-1.4-6mdv2010.1.x86_64
+lib64ksba8-1.0.8-1mdv2011.0.x86_64
+lib64assuan0-2.0.1-1mdv2011.0.x86_64
+dirmngr-1.1.0-0.rc1.1mdv2010.1.x86_64
+lib64qgpgme1-4.5.68-1mdv2011.0.x86_64
+lib64kworkspace4-4.5.68-1mdv2011.0.x86_64
+krdc-4.5.68-1mdv2011.0.x86_64
+lib64krdccore1-4.5.68-1mdv2011.0.x86_64
+lib64telepathy-qt4_0-0.3.9-1mdv2011.0.x86_64
+kde4-filesharing-4.5.68-1mdv2011.0.x86_64
+kmouth-4.5.68-1mdv2011.0.x86_64
+kdeaccessibility4-core-4.5.68-1mdv2011.0.x86_64
+kmag-4.5.68-1mdv2011.0.x86_64
+kmousetool-4.5.68-1mdv2011.0.x86_64
+jovie-4.5.68-1mdv2011.0.x86_64
+lib64kttsd4-4.5.68-1mdv2011.0.x86_64
+lib64speechd2-0.6.7-3mdv2010.1.x86_64
+kdeartwork4-kscreensaver-4.5.68-2mdv2011.0.x86_64
+lib64kscreensaver5-4.5.68-1mdv2011.0.x86_64
+kdeartwork4-sounds-4.5.68-2mdv2011.0.noarch
+kdeartwork4-emoticons-4.5.68-2mdv2011.0.noarch
+kdeartwork4-styles-4.5.68-2mdv2011.0.x86_64
+kdeartwork4-color-schemes-4.5.68-2mdv2011.0.noarch
+kdeartwork4-wallpapers-4.5.68-2mdv2011.0.noarch
+bovo-4.5.68-1mdv2011.0.x86_64
+lib64kdegames5-4.5.68-1mdv2011.0.x86_64
+kdegames4-core-4.5.68-1mdv2011.0.x86_64
+kpat-4.5.68-1mdv2011.0.x86_64
+kdegames4-devel-4.5.68-1mdv2011.0.x86_64
+lib64qt4-devel-4.7.0-3mdv2011.0.x86_64
+lib64glib2.0-devel-2.26.0-1mdv2011.0.x86_64
+zlib1-devel-1.2.3-15mdv2010.1.x86_64
+glib-gettextize-2.26.0-1mdv2011.0.x86_64
+lib64pcre-devel-8.10-1mdv2011.0.x86_64
+libstdc++-devel-4.5.1-1mnb2.x86_64
+manbo-mandriva-files-gcc-4.5.1-1mnb2.x86_64
+gcc-4.5.1-1mnb2.x86_64
+lib64mpc2-0.8.2-1mdv2011.0.x86_64
+lib64mpfr1-2.4.2-2mdv2010.1.x86_64
+lib64gmpxx4-5.0.1-1mdv2010.1.x86_64
+lib64ppl7-0.10.2-1mdv2010.1.x86_64
+lib64cloog0-0.15.8-1mdv2010.1.x86_64
+gcc-cpp-4.5.1-1mnb2.x86_64
+binutils-2.20.51.0.11-1mnb2.x86_64
+glibc-devel-2.12.1-3mnb2.x86_64
+linux-userspace-headers-2.6.35-1mnb2.x86_64
+qt4-qtdbus-4.7.0-3mdv2011.0.x86_64
+phonon-devel-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64pulseaudio-devel-0.9.21-33mdv2011.0.x86_64
+lib64xtst6-devel-1.1.0-2mdv2010.1.x86_64
+lib64xext6-devel-1.1.2-1mdv2011.0.x86_64
+x11-proto-devel-7.5-8mdv2011.0.x86_64
+lib64xau6-devel-1.0.6-1mdv2011.0.x86_64
+lib64xt-devel-1.0.8-1mdv2010.1.x86_64
+lib64sm6-devel-1.1.1-2mdv2010.1.x86_64
+lib64ice6-devel-1.0.6-2mdv2010.1.x86_64
+lib64x11_6-devel-1.3.99.902-1mdv2011.0.x86_64
+lib64xcb-devel-1.7-1mdv2011.0.x86_64
+lib64xcb-xfixes0-1.7-1mdv2011.0.x86_64
+libpthread-stubs-0.3-1mdv2010.1.x86_64
+lib64xcb-dpms0-1.7-1mdv2011.0.x86_64
+lib64xcb-glx0-1.7-1mdv2011.0.x86_64
+lib64xcb-xinerama0-1.7-1mdv2011.0.x86_64
+lib64xcb-xevie0-1.7-1mdv2011.0.x86_64
+lib64xcb-composite0-1.7-1mdv2011.0.x86_64
+lib64xcb-xtest0-1.7-1mdv2011.0.x86_64
+lib64xcb-xprint0-1.7-1mdv2011.0.x86_64
+lib64xcb-damage0-1.7-1mdv2011.0.x86_64
+lib64xdmcp6-devel-1.0.3-2mdv2010.1.x86_64
+lib64xcb-randr0-1.7-1mdv2011.0.x86_64
+lib64xcb-sync0-1.7-1mdv2011.0.x86_64
+lib64xcb-xvmc0-1.7-1mdv2011.0.x86_64
+lib64xcb-screensaver0-1.7-1mdv2011.0.x86_64
+lib64xcb-record0-1.7-1mdv2011.0.x86_64
+lib64xcb-res0-1.7-1mdv2011.0.x86_64
+lib64xcb-render0-1.7-1mdv2011.0.x86_64
+lib64xcb-xf86dri0-1.7-1mdv2011.0.x86_64
+lib64xi-devel-1.3.2-1mdv2011.0.x86_64
+lib64vorbis-devel-1.3.1-1mdv2010.1.x86_64
+lib64ogg-devel-1.2.0-1mdv2010.1.x86_64
+lib64pulsezeroconf0-0.9.21-33mdv2011.0.x86_64
+lib64cap-devel-2.19-5mdv2010.1.x86_64
+lib64avahi-common-devel-0.6.27-1mdv2011.0.x86_64
+lib64flac-devel-1.2.1-7mdv2010.1.x86_64
+lib64asyncns-devel-0.8-1mdv2010.1.x86_64
+lib64wrap-devel-7.6-40mdv2010.1.x86_64
+lib64dbus-1-devel-1.4.0-1mdv2011.0.x86_64
+lib64xcb-util-devel-0.3.6-1mdv2010.1.x86_64
+lib64xcb-render-util0-0.3.6-1mdv2010.1.x86_64
+lib64xcb-image0-0.3.6-1mdv2010.1.x86_64
+lib64xcb-icccm1-0.3.6-1mdv2010.1.x86_64
+lib64xcb-property1-0.3.6-1mdv2010.1.x86_64
+lib64xcb-event1-0.3.6-1mdv2010.1.x86_64
+lib64xcb-reply1-0.3.6-1mdv2010.1.x86_64
+lib64xcb-keysyms1-0.3.6-1mdv2010.1.x86_64
+lib64avahi-client-devel-0.6.27-1mdv2011.0.x86_64
+lib64sndfile-devel-1.0.21-2mdv2010.1.x86_64
+lib64phononexperimental4-4.4.3-0.git20100914.1mdv2011.0.x86_64
+lib64png-devel-1.2.44-2mdv2011.0.x86_64
+qt4-designer-plugin-webkit-4.7.0-3mdv2011.0.x86_64
+qt4-qtconfig-4.7.0-3mdv2011.0.x86_64
+lib64qtscripttools4-4.7.0-3mdv2011.0.x86_64
+qt4-designer-plugin-phonon-4.7.0-3mdv2011.0.x86_64
+lib64qtclucene4-4.7.0-3mdv2011.0.x86_64
+lib64mesagl1-devel-7.8.1-6mdv2010.1.x86_64
+lib64drm-devel-2.4.22-1mdv2011.0.x86_64
+lib64kms1-2.4.22-1mdv2011.0.x86_64
+lib64xfixes3-devel-4.0.5-1mdv2011.0.x86_64
+mesa-7.8.1-6mdv2010.1.x86_64
+lib64xmu6-devel-1.0.5-2mdv2010.1.x86_64
+lib64xdamage-devel-1.1.3-1mdv2011.0.x86_64
+lib64xxf86vm-devel-1.1.0-1mdv2010.1.x86_64
+lib64qthelp4-4.7.0-3mdv2011.0.x86_64
+qt4-designer-plugin-qt3support-4.7.0-3mdv2011.0.x86_64
+lib64xrender1-devel-0.9.6-1mdv2011.0.x86_64
+lib64freetype6-devel-2.4.2-1mdv2011.0.x86_64
+lib64mesaglu1-devel-7.8.1-6mdv2010.1.x86_64
+lib64sqlite3-devel-3.7.2-1mdv2011.0.x86_64
+lib64jpeg-devel-8b-1mdv2011.0.x86_64
+make-3.82-2mdv2011.0.x86_64
+lib64fontconfig-devel-2.8.0-2mdv2010.1.x86_64
+lib64xml2-devel-2.7.7-1mdv2010.1.x86_64
+kdelibs4-devel-4.5.68-1mdv2011.0.x86_64
+lib64acl-devel-2.2.49-2mdv2010.1.x86_64
+lib64attr1-devel-2.4.44-1mdv2010.1.x86_64
+lib64xslt-devel-1.1.26-2mdv2010.1.x86_64
+lib64gcrypt-devel-1.4.6-3mdv2011.0.x86_64
+lib64gpg-error-devel-1.9-1mdv2011.0.x86_64
+automoc4-0.9.88-3mdv2010.1.x86_64
+lib64cups2-devel-1.4.4-2mdv2011.0.x86_64
+lib64ext2fs-devel-1.41.12-1mnb2.x86_64
+lib64openssl-devel-1.0.0a-6mdv2011.0.x86_64
+lib64krb53-devel-1.8.3-1mdv2011.0.x86_64
+cups-common-1.4.4-2mdv2011.0.x86_64
+lib64openslp1-1.2.1-10mdv2010.1.x86_64
+lib64tiff-devel-3.9.4-3mdv2011.0.x86_64
+lib64jbig-devel-2.0-4mdv2010.1.x86_64
+soprano-devel-2.5.62-0.1170808.1mdv2011.0.x86_64
+lib64clucene-devel-0.9.21b-3mdv2010.1.x86_64
+strigi-devel-0.7.2-2mdv2011.0.x86_64
+lib64bzip2-devel-1.0.6-1mdv2011.0.x86_64
+strigi-0.7.2-2mdv2011.0.x86_64
+lib64strigihtmlgui0-0.7.2-2mdv2011.0.x86_64
+lib64searchclient0-0.7.2-2mdv2011.0.x86_64
+lib64strigiqtdbusclient0-0.7.2-2mdv2011.0.x86_64
+lib64utempter0-devel-0.5.5-10mdv2010.1.x86_64
+lib64OpenEXR-devel-1.7.0-1mdv2011.0.x86_64
+lib64ilmbase-devel-1.0.2-2mdv2011.0.x86_64
+lib64xscrnsaver1-devel-1.2.0-3mdv2010.1.x86_64
+lib64sasl2-devel-2.1.23-8mdv2010.1.x86_64
+kde4-macros-4.4.95-1mdv2011.0.noarch
+cmake-2.8.2-1mdv2011.0.x86_64
+shared-desktop-ontologies-devel-0.5-1mdv2010.1.noarch
+lib64enchant-devel-1.6.0-1mdv2011.0.x86_64
+lib64avahi-compat-libdns_sd-devel-0.6.27-1mdv2011.0.x86_64
+lib64avahi-compat-libdns_sd1-0.6.27-1mdv2011.0.x86_64
+lib64gdbm-devel-1.8.3-13mdv2010.1.x86_64
+lib64pam-devel-1.1.1-2mdv2010.1.x86_64
+lib64audit-devel-2.0.4-5mdv2010.1.x86_64
+lib64xpm-devel-3.5.8-2mdv2010.1.x86_64
+lib64alsa2-devel-1.0.23-4mdv2011.0.x86_64
+lib64art_lgpl-devel-2.3.21-1mdv2010.1.x86_64
+lib64art_lgpl2-2.3.21-1mdv2010.1.x86_64
+lib64gif-devel-4.1.6-7mdv2010.1.x86_64
+lib64kdefakes5-4.5.68-1mdv2011.0.x86_64
+lib64dbusmenu-qt-devel-0.6.2-1mdv2011.0.x86_64
+lib64mad-devel-0.15.1b-9mdv2010.1.x86_64
+lib64mad0-0.15.1b-9mdv2010.1.x86_64
+lib64jasper-devel-1.900.1-10mdv2010.1.x86_64
+xsltproc-1.1.26-2mdv2010.1.x86_64
+lib64krossui4-4.5.68-1mdv2011.0.x86_64
+lib64gamin-1_0-devel-0.1.10-4mdv2010.1.x86_64
+lib64xft-devel-2.1.14-1mdv2010.1.x86_64
+lib64lzma-devel-4.999.9beta-2mdv2010.1.x86_64
+attica-devel-0.1.91-1mdv2011.0.x86_64
+lib64qca-devel-2.0.2-6.1111917.1mdv2010.1.x86_64
+lib64kimproxy4-4.5.68-1mdv2011.0.x86_64
+lib64kolfprivate4-4.5.68-1mdv2011.0.x86_64
+lib64kmahjongglib4-4.5.68-1mdv2011.0.x86_64
+kmahjongglib-4.5.68-1mdv2011.0.x86_64
+lib64pala0-4.5.68-1mdv2011.0.x86_64
+lib64kggznet4-4.5.68-1mdv2011.0.x86_64
+lib64iris_ksirk2-4.5.68-1mdv2011.0.x86_64
+lib64kggzgames4-4.5.68-1mdv2011.0.x86_64
+lib64kggzmod4-4.5.68-1mdv2011.0.x86_64
+kubrick-4.5.68-1mdv2011.0.x86_64
+kspaceduel-4.5.68-1mdv2011.0.x86_64
+ksirk-4.5.68-1mdv2011.0.x86_64
+katomic-4.5.68-1mdv2011.0.x86_64
+kmines-4.5.68-1mdv2011.0.x86_64
+ksudoku-4.5.68-1mdv2011.0.x86_64
+killbots-4.5.68-1mdv2011.0.x86_64
+lskat-4.5.68-1mdv2011.0.x86_64
+kmahjongg-4.5.68-1mdv2011.0.x86_64
+kshisen-4.5.68-1mdv2011.0.x86_64
+klines-4.5.68-1mdv2011.0.x86_64
+kbounce-4.5.68-1mdv2011.0.x86_64
+kiriki-4.5.68-1mdv2011.0.x86_64
+kigo-4.5.68-1mdv2011.0.x86_64
+gnugo-3.8-1mdv2010.1.x86_64
+knetwalk-4.5.68-1mdv2011.0.x86_64
+kapman-4.5.68-1mdv2011.0.x86_64
+kgoldrunner-4.5.68-1mdv2011.0.x86_64
+kjumpingcube-4.5.68-1mdv2011.0.x86_64
+kdesnake-4.5.68-1mdv2011.0.x86_64
+kollision-4.5.68-1mdv2011.0.x86_64
+ksquares-4.5.68-1mdv2011.0.x86_64
+ktuberling-4.5.68-1mdv2011.0.x86_64
+granatier-4.5.68-1mdv2011.0.x86_64
+kblocks-4.5.68-1mdv2011.0.x86_64
+kreversi-4.5.68-1mdv2011.0.x86_64
+kblackbox-4.5.68-1mdv2011.0.x86_64
+ktron-4.5.68-1mdv2011.0.x86_64
+kbreakout-4.5.68-1mdv2011.0.x86_64
+ksame-4.5.68-1mdv2011.0.x86_64
+konquest-4.5.68-1mdv2011.0.x86_64
+bomber-4.5.68-1mdv2011.0.x86_64
+kbattleship-4.5.68-1mdv2011.0.x86_64
+kdiamond-4.5.68-1mdv2011.0.x86_64
+palapeli-4.5.68-1mdv2011.0.x86_64
+kolf-4.5.68-1mdv2011.0.x86_64
+kfourinline-4.5.68-1mdv2011.0.x86_64
+plasma-applet-comic-4.5.68-1mdv2011.0.x86_64
+plasma-dataengine-comic-4.5.68-1mdv2011.0.x86_64
+lib64plasmacomicprovidercore1-4.5.68-1mdv2011.0.x86_64
+kdebase4-workspace-4.5.68-1mdv2011.0.x86_64
+lib64kfontinstui4-4.5.68-1mdv2011.0.x86_64
+lib64kfontinst4-4.5.68-1mdv2011.0.x86_64
+lib64oxygenstyle4-4.5.68-1mdv2011.0.x86_64
+lib64ksgrd4-4.5.68-1mdv2011.0.x86_64
+lib64processcore4-4.5.68-1mdv2011.0.x86_64
+lib64kephal4-4.5.68-1mdv2011.0.x86_64
+lib64plasmagenericshell4-4.5.68-1mdv2011.0.x86_64
+lib64kwineffects1-4.5.68-1mdv2011.0.x86_64
+lib64plasma-geolocation-interface4-4.5.68-1mdv2011.0.x86_64
+lib64cln6-1.3.1-1mdv2010.1.x86_64
+lib64qalculate5-0.9.7-6mdv2010.1.x86_64
+libqalculate-data-0.9.7-6mdv2010.1.x86_64
+lib64processui4-4.5.68-1mdv2011.0.x86_64
+lib64dmtx0-0.7.2-1mdv2011.0.x86_64
+lib64taskmanager4-4.5.68-1mdv2011.0.x86_64
+mandriva-kde-translation-2010.1-5mdv2010.1.noarch
+lib64plasmaclock4-4.5.68-1mdv2011.0.x86_64
+pm-utils-1.2.6.1-2mdv2010.1.x86_64
+radeontool-1.6.0-0mdv2010.1.x86_64
+pm-fallback-policy-0.1-7mdv2010.1.noarch
+vbetool-1.1-5mdv2010.1.x86_64
+lib64ksignalplotter4-4.5.68-1mdv2011.0.x86_64
+lib64khotkeysprivate4-4.5.68-1mdv2011.0.x86_64
+xmessage-1.0.3-1mdv2010.1.x86_64
+lib64xaw7-1.0.7-2mdv2010.1.x86_64
+lib64syndication4-4.5.68-1mdv2011.0.x86_64
+lib64polkitkdeprivate4-4.5.68-1mdv2011.0.x86_64
+lib64systemsettingsview2-4.5.68-1mdv2011.0.x86_64
+plasma-applet-luna-4.5.68-1mdv2011.0.x86_64
+plasma-applet-kolourpicker-4.5.68-1mdv2011.0.x86_64
+plasma-applet-incomingmsg-4.5.68-1mdv2011.0.x86_64
+plasma-applet-plasmaboard-4.5.68-1mdv2011.0.x86_64
+plasma-desktoptheme-default-4.5.68-1mdv2011.0.x86_64
+plasma-applet-frame-4.5.68-1mdv2011.0.x86_64
+plasma-applet-systemloadviewer-4.5.68-1mdv2011.0.x86_64
+plasma-runner-contacts-4.5.68-1mdv2011.0.x86_64
+plasma-applet-binaryclock-4.5.68-1mdv2011.0.x86_64
+plasma-runner-browserhistory-4.5.68-1mdv2011.0.x86_64
+plasma-runner-konquerorsessions-4.5.68-1mdv2011.0.x86_64
+plasma-runner-kopete-4.5.68-1mdv2011.0.x86_64
+plasma-applet-paste-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-marble-4.5.68-1mdv2011.0.x86_64
+plasma-applet-showdashboard-4.5.68-1mdv2011.0.x86_64
+plasma-applet-opendesktop-4.5.68-1mdv2011.0.x86_64
+plasma-dataengine-ocs-4.5.68-1mdv2011.0.x86_64
+plasma-applet-knowledgebase-4.5.68-1mdv2011.0.x86_64
+plasma-runner-mediawiki-4.5.68-1mdv2011.0.x86_64
+plasma-applet-fifteenpuzzle-4.5.68-1mdv2011.0.x86_64
+plasma-applet-filewatcher-4.5.68-1mdv2011.0.x86_64
+plasma-applet-life-4.5.68-1mdv2011.0.x86_64
+plasma-applet-microblog-4.5.68-1mdv2011.0.x86_64
+plasma-dataengine-microblog-4.5.68-1mdv2011.0.x86_64
+plasma-applet-rssnow-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-pattern-4.5.68-1mdv2011.0.x86_64
+plasma-applet-qalculate-4.5.68-1mdv2011.0.x86_64
+plasma-applet-konqprofiles-4.5.68-1mdv2011.0.x86_64
+plasma-applet-kimpanel-4.5.68-1mdv2011.0.x86_64
+plasma-runner-converter-4.5.68-1mdv2011.0.x86_64
+plasma-runner-konsolesessions-4.5.68-1mdv2011.0.x86_64
+plasma-runner-spellchecker-4.5.68-1mdv2011.0.x86_64
+plasma-applet-previewer-4.5.68-1mdv2011.0.x86_64
+plasma-applet-leavenote-4.5.68-1mdv2011.0.x86_64
+plasma-applet-rtm-4.5.68-1mdv2011.0.x86_64
+plasma-dataengine-rtm-4.5.68-1mdv2011.0.x86_64
+lib64rtm4-4.5.68-1mdv2011.0.x86_64
+plasma-applet-konsoleprofiles-4.5.68-1mdv2011.0.x86_64
+plasma-applet-notes-4.5.68-1mdv2011.0.x86_64
+plasma-applet-nowplaying-4.5.68-1mdv2011.0.x86_64
+plasma-runner-audioplayercontrol-4.5.68-1mdv2011.0.x86_64
+plasma-applet-weatherstation-4.5.68-1mdv2011.0.x86_64
+lib64plasmaweather4-4.5.68-1mdv2011.0.x86_64
+plasma-runner-katesessions-4.5.68-1mdv2011.0.x86_64
+plasma-applet-spellcheck-4.5.68-1mdv2011.0.x86_64
+plasma-applet-lancelot-4.5.68-1mdv2011.0.x86_64
+lib64lancelot-datamodels0-4.5.68-1mdv2011.0.x86_64
+lib64lancelot1-4.5.68-1mdv2011.0.x86_64
+plasma-applet-weather-4.5.68-1mdv2011.0.x86_64
+plasma-applet-mediaplayer-4.5.68-1mdv2011.0.x86_64
+plasma-runner-events-4.5.68-1mdv2011.0.x86_64
+plasma-applet-calculator-4.5.68-1mdv2011.0.x86_64
+plasma-applet-webslice-4.5.68-1mdv2011.0.x86_64
+plasma-applet-bball-4.5.68-1mdv2011.0.x86_64
+plasma-applet-charselect-4.5.68-1mdv2011.0.x86_64
+plasma-applet-news-4.5.68-1mdv2011.0.x86_64
+plasma-runner-datetime-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-virus-4.5.68-1mdv2011.0.x86_64
+plasma-applet-bubblemon-4.5.68-1mdv2011.0.x86_64
+plasma-applet-blackboard-4.5.68-1mdv2011.0.x86_64
+plasma-applet-fuzzy-clock-4.5.68-1mdv2011.0.x86_64
+plasma-runner-charrunner-4.5.68-1mdv2011.0.x86_64
+plasma-applet-showdesktop-4.5.68-1mdv2011.0.x86_64
+plasma-applet-timer-4.5.68-1mdv2011.0.x86_64
+plasma-applet-magnifique-4.5.68-1mdv2011.0.x86_64
+plasma-applet-dict-4.5.68-1mdv2011.0.x86_64
+plasma-applet-eyes-4.5.68-1mdv2011.0.x86_64
+plasma-applet-unitconverter-4.5.68-1mdv2011.0.x86_64
+plasma-applet-bookmarks-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-mandelbrot-4.5.68-1mdv2011.0.x86_64
+plasma-wallpaper-weather-4.5.68-1mdv2011.0.x86_64
+nepomuk-email-feeder-4.5.68-2mdv2011.0.x86_64
+lib64messageviewer4-4.5.68-2mdv2011.0.x86_64
+lib64kpgp4-4.5.68-2mdv2011.0.x86_64
+lib64messagecore4-4.5.68-2mdv2011.0.x86_64
+lib64kleo4-4.5.68-2mdv2011.0.x86_64
+kmailcvt-4.5.68-2mdv2011.0.x86_64
+ktimetracker-4.5.68-2mdv2011.0.x86_64
+lib64kcal_resourceremote4-4.5.68-2mdv2011.0.x86_64
+kmail-4.5.68-2mdv2011.0.x86_64
+kio4-pop3-4.5.68-1mdv2011.0.x86_64
+lib64sasl2-plug-ntlm-2.1.23-8mdv2010.1.x86_64
+lib64sasl2-plug-plain-2.1.23-8mdv2010.1.x86_64
+lib64sasl2-plug-digestmd5-2.1.23-8mdv2010.1.x86_64
+kio4-imap-4.5.68-1mdv2011.0.x86_64
+kmail-common-4.5.68-2mdv2011.0.x86_64
+lib64incidenceeditorsng4-4.5.68-2mdv2011.0.x86_64
+lib64kdgantt20-4.5.68-2mdv2011.0.x86_64
+lib64ktnef4-4.5.68-1mdv2011.0.x86_64
+lib64templateparser4-4.5.68-2mdv2011.0.x86_64
+lib64messagecomposer4-4.5.68-2mdv2011.0.x86_64
+kio4-smtp-4.5.68-1mdv2011.0.x86_64
+kio4-sieve-4.5.68-1mdv2011.0.x86_64
+lib64sasl2-plug-login-2.1.23-8mdv2010.1.x86_64
+lib64kmailprivate4-4.5.68-2mdv2011.0.x86_64
+lib64messagelist4-4.5.68-2mdv2011.0.x86_64
+lib64ksieve4-4.5.68-2mdv2011.0.x86_64
+kio4-mbox-4.5.68-1mdv2011.0.x86_64
+knotes-4.5.68-2mdv2011.0.x86_64
+kio4-nntp-4.5.68-1mdv2011.0.x86_64
+kdepim4-kresources-4.5.68-2mdv2011.0.x86_64
+lib64kcal_groupwise4-4.5.68-2mdv2011.0.x86_64
+lib64gwsoap4-4.5.68-2mdv2011.0.x86_64
+lib64kcal_resourceblog4-4.5.68-2mdv2011.0.x86_64
+lib64kblog4-4.5.68-1mdv2011.0.x86_64
+lib64kxmlrpcclient4-4.5.68-1mdv2011.0.x86_64
+knode-4.5.68-2mdv2011.0.x86_64
+lib64knodecommon4-4.5.68-2mdv2011.0.x86_64
+korganizer-4.5.68-2mdv2011.0.x86_64
+lib64korganizer_core4-4.5.68-2mdv2011.0.x86_64
+lib64eventviews4-4.5.68-2mdv2011.0.x86_64
+lib64korganizer_interfaces4-4.5.68-2mdv2011.0.x86_64
+lib64korganizerprivate4-4.5.68-2mdv2011.0.x86_64
+lib64akonadi-calendar4-4.5.68-1mdv2011.0.x86_64
+kalarm-4.5.68-2mdv2011.0.x86_64
+lib64kalarm_resources4-4.5.68-2mdv2011.0.x86_64
+lib64kalarm_calendar4-4.5.68-2mdv2011.0.x86_64
+kjots-4.5.68-2mdv2011.0.x86_64
+lib64grantlee_core0-0.1.4-1mdv2011.0.x86_64
+lib64grantlee_gui0-0.1.4-1mdv2011.0.x86_64
+kaddressbook-4.5.68-2mdv2011.0.x86_64
+grantlee-0.1.4-1mdv2011.0.x86_64
+lib64kaddressbookprivate4-4.5.68-2mdv2011.0.x86_64
+akonadi-common-1.4.52-1mdv2011.0.x86_64
+ksendemail-4.5.68-2mdv2011.0.x86_64
+kleopatra-4.5.68-2mdv2011.0.x86_64
+lib64kleopatraclientgui0-4.5.68-2mdv2011.0.x86_64
+lib64kleopatraclientcore0-4.5.68-2mdv2011.0.x86_64
+akregator-4.5.68-2mdv2011.0.x86_64
+lib64akregatorinterfaces4-4.5.68-2mdv2011.0.x86_64
+lib64akregatorprivate4-4.5.68-2mdv2011.0.x86_64
+pulseaudio-module-zeroconf-0.9.21-33mdv2011.0.x86_64
+gstreamer0.10-pulse-0.10.25-1mdv2011.0.x86_64
+ia_ora-gnome-1.0.24-1mdv2010.1.x86_64
+lib64ia_ora-gnome-1.0.24-1mdv2010.1.x86_64
+gnome-icon-theme-2.31.0-1mdv2011.0.noarch
+xdg-user-dirs-gtk-0.8-4mdv2010.1.x86_64
+draksnapshot-0.20.3-2mdv2011.0.noarch
+rsnapshot-1.3.1-6mdv2010.1.noarch
+rsync-3.0.7-1mdv2010.1.x86_64
+perl-XML-Validator-Schema-1.100.0-1mdv2011.0.noarch
+perl-Tree-DAG_Node-1.60.0-1mdv2011.0.noarch
+perl-XML-Filter-BufferText-1.10.0-1mdv2011.0.noarch
+perl-XML-Simple-2.180.0-1mdv2011.0.noarch
+openssh-clients-5.6p1-1mdv2011.0.x86_64
+lib64edit0-3.0-0.20090923.1mdv2010.1.x86_64
+openssh-5.6p1-1mdv2011.0.x86_64
+tcp_wrappers-7.6-40mdv2010.1.x86_64
+makedev-4.4-10mdv2010.1.noarch
+drakfax-0.17.3-3mdv2010.1.noarch
+hylafax-client-5.2.9-3mdv2010.1.x86_64
+lib64hylafax5-5.2.9-3mdv2010.1.x86_64
+hylafax-5.2.9-3mdv2010.1.x86_64
+libtiff-progs-3.9.4-3mdv2011.0.x86_64
+ghostscript-9.00-1mdv2011.0.x86_64
+ghostscript-common-9.00-1mdv2011.0.x86_64
+ghostscript-fonts-8.11-14mdv2010.1.noarch
+lib64gs9-9.00-1mdv2011.0.x86_64
+lib64paper1-1.1.23-5mdv2010.1.x86_64
+procmail-3.22-15mdv2010.1.x86_64
+system-config-printer-1.2.0-12mdv2010.1.x86_64
+pygtk2.0-libglade-2.22.0-1mdv2011.0.x86_64
+pygtk2.0-2.22.0-1mdv2011.0.x86_64
+python-numpy-1.5.0-2mdv2011.0.x86_64
+libgfortran3-4.5.1-1mnb2.x86_64
+lib64lapack3-3.2.2-1mdv2011.0.x86_64
+lib64blas3-3.2.2-1mdv2011.0.x86_64
+python-gobject-2.26.0-1mdv2011.0.x86_64
+lib64pyglib2.0_0-2.26.0-1mdv2011.0.x86_64
+python-cairo-1.8.8-1mdv2010.1.x86_64
+lib64girepository1.0_1-0.9.10-1mdv2011.0.x86_64
+gobject-introspection-0.9.10-1mdv2011.0.x86_64
+lib64ffi5-3.0.9-1mdv2010.1.x86_64
+python-notify-0.1.1-5mdv2010.1.x86_64
+python-rhpl-0.212-5mdv2010.1.x86_64
+lib64iw29-29-3mnb2.x86_64
+gnome-python-2.28.1-1mdv2010.1.x86_64
+lib64bonoboui2_0-2.24.4-1mdv2011.0.x86_64
+lib64gnomecanvas2_0-2.30.2-1mdv2011.0.x86_64
+libgnomecanvas-2.30.2-1mdv2011.0.x86_64
+libbonoboui-2.24.4-1mdv2011.0.x86_64
+lib64bonobo2_0-2.32.0-1mdv2011.0.x86_64
+libbonobo-2.32.0-1mdv2011.0.x86_64
+lib64gnome2_0-2.32.0-1mdv2011.0.x86_64
+libgnome2-2.32.0-1mdv2011.0.x86_64
+libgnome2-schemas-2.32.0-1mdv2011.0.x86_64
+lib64gnome-vfs2_0-2.24.4-1mdv2011.0.x86_64
+gnome-mime-data-2.18.0-6mdv2010.1.noarch
+gnome-vfs2-2.24.4-1mdv2011.0.x86_64
+dbus-x11-1.4.0-1mdv2011.0.x86_64
+gnome-python-bonobo-2.28.1-1mdv2010.1.x86_64
+gnome-python-canvas-2.28.1-1mdv2010.1.x86_64
+pyorbit-2.24.0-5mdv2010.1.x86_64
+lib64gnomeui2_0-2.24.4-1mdv2011.0.x86_64
+libgnomeui2-2.24.4-1mdv2011.0.x86_64
+system-config-printer-libs-1.2.0-12mdv2010.1.x86_64
+foomatic-filters-4.0.3-2mdv2010.1.x86_64
+mpage-2.5.6-3mdv2010.1.x86_64
+lib64hpip0-3.10.6-2mdv2011.0.x86_64
+lib64net-snmp20-5.5-10mdv2011.0.x86_64
+libxml2-python-2.7.7-1mdv2010.1.x86_64
+python-smbc-1.0.6-2mdv2010.1.x86_64
+system-config-printer-udev-1.2.0-12mdv2010.1.x86_64
+hplip-model-data-3.10.6-2mdv2011.0.x86_64
+python-cups-1.9.49-1mdv2010.1.x86_64
+nmap-5.21-3mdv2010.1.x86_64
+python-dbus-0.83.1-1mdv2010.1.x86_64
+rpmdrake-5.26.4-1mdv2011.0.noarch
+perl-Gtk2-SourceView2-0.100.0-3mdv2011.0.x86_64
+gtksourceview-2.10.5-1mdv2011.0.x86_64
+lib64gtksourceview-2.0_0-2.10.5-1mdv2011.0.x86_64
+perl-File-MimeInfo-0.150.0-3mdv2011.0.noarch
+perl-File-DesktopEntry-0.40.0-1mdv2011.0.noarch
+perl-File-BaseDir-0.30.0-1mdv2011.0.noarch
+mdkonline-2.77.21-1.1mdv2011.0.noarch
+perl-Crypt-SSLeay-0.580.0-5mdv2011.0.x86_64
+perl-libwww-perl-5.836.0-2mdv2011.0.noarch
+perl-HTML-Parser-3.680.0-1mdv2011.0.x86_64
+perl-HTML-Tagset-3.200.0-1mdv2011.0.noarch
+drakguard-0.7.7-1mdv2010.1.noarch
+drakmenustyle-0.14.1-3mdv2010.1.noarch
+webkit1.0-webinspector-1.2.4-1mdv2011.0.x86_64
+net_monitor-0.11-1mdv2010.1.x86_64
+vnstat-1.10-1mdv2010.1.x86_64
+notification-daemon-engine-nodoka-0.1.0-2mdv2010.1.x86_64
+xguest-1.0.8-5mdv2010.1.noarch
+kdm-4.5.68-1mdv2011.0.x86_64
+kdmfprintplugin-0.0-0.1050414.2mdv2010.1.x86_64
+kfingermanager-0.0-0.1050414.1mdv2010.1.x86_64
+cdialog-1.1-1.20100119.1mdv2010.1.x86_64
+python-sabayon-2.30.1-1mdv2011.0.x86_64
+python-ldap-2.3.11-5mdv2010.1.x86_64
+sane-backends-iscan-1.0.21-2mdv2010.1.x86_64
+poppler-data-0.4.3-1mdv2011.0.noarch
+gstreamer0.10-ffmpeg-0.10.11-1mdv2011.0.x86_64
+gstreamer0.10-soup-0.10.25-1mdv2011.0.x86_64
+codeina-0.10.7-1mdv2010.1.noarch
+python-twisted-web-10.1.0-1mdv2011.0.x86_64
+python-twisted-core-10.1.0-1mdv2011.0.x86_64
+python-zope-interface-3.5.3-1mdv2010.1.x86_64
+python-pycrypto-2.3-1mdv2011.0.x86_64
+python-OpenSSL-0.10-3mdv2010.1.x86_64
+lsb-release-2.0-27mdv2010.1.x86_64
+gstreamer0.10-python-0.10.19-1mdv2011.0.x86_64
+pyxdg-0.19-1mdv2010.1.noarch
+gnome-python-gtkmozembed-2.25.3-20mdv2011.0.x86_64
+lib64xulrunner2.0-2.0-0.b6.1mdv2011.0.x86_64
+gnome-python-extras-2.25.3-20mdv2011.0.x86_64
+gnome-python-gnomevfs-2.28.1-1mdv2010.1.x86_64
+gvfs-archive-1.6.4-1mdv2011.0.x86_64
+lib64archive2-2.8.4-1mdv2011.0.x86_64
+gvfs-gphoto2-1.6.4-1mdv2011.0.x86_64
+gvfs-smb-1.6.4-1mdv2011.0.x86_64
+gvfs-fuse-1.6.4-1mdv2011.0.x86_64
+lib64fuse2-2.8.4-1mdv2010.1.x86_64
+fuse-2.8.4-1mdv2010.1.x86_64
+mdadm-3.1.4-1mnb2.x86_64
+xfsprogs-3.1.2-1mnb2.x86_64
+lib64xfs1-3.1.2-1mnb2.x86_64
+ntfsprogs-2.0.0-6mdv2010.1.x86_64
+lib64ntfs10-2.0.0-6mdv2010.1.x86_64
+dosfstools-3.0.9-1mdv2010.1.x86_64
+perl-ExtUtils-CBuilder-0.270.300-2mdv2011.0.noarch
+plasma-applet-kimpanel-backend-scim-4.5.68-1mdv2011.0.x86_64
+scim-bridge-0.4.16-5mdv2010.1.x86_64
+scim-1.4.9-6mdv2010.1.x86_64
+lib64scim1.0_8-1.4.9-6mdv2010.1.x86_64
+scim-common-1.4.9-6mdv2010.1.x86_64
+pinentry-qt4-0.8.0-5mdv2010.1.x86_64
+kincidenceeditor-4.5.68-2mdv2011.0.x86_64
+samba-client-3.5.5-1mdv2011.0.x86_64
+samba-common-3.5.5-1mdv2011.0.x86_64
+cifs-utils-4.6-1mdv2011.0.x86_64
+lib64keyutils1-1.2-10mdv2010.1.x86_64
+mdv-rpm-summary-0.9.4-1mdv2010.1.noarch
+ntfs-3g-2010.8.8-1mdv2011.0.x86_64
+scim-bridge-gtk-0.4.16-5mdv2010.1.x86_64
+scim-gtk-1.4.9-6mdv2010.1.x86_64
+sudo-1.7.4-2.p4.1mdv2011.0.x86_64
+nss_wins-3.5.5-1mdv2011.0.x86_64
diff --git a/t/resolve.t b/t/resolve.t
new file mode 100644
index 0000000..15649e9
--- /dev/null
+++ b/t/resolve.t
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+use strict ;
+use warnings ;
+use Test::More tests => 6;
+use URPM;
+
+chdir 't' if -d 't';
+
+my $urpm;
+my $db;
+
+# There's currently not implemented any way for closing the rpmdb, so we cannot
+# delete it from perl itself, as the rpmdb won't close before perl exists,
+# which will give us errors when trying to close the rpmdb after it's been
+# deleted. Therefore we just fork a shell in the background which deletes it
+# after a 1 sec delay, which should give perl time to exit and close the
+# rpmdb before.
+END {
+ system('sh -c "sleep 1; rm -rf tmp" &');
+}
+
+sub solve_check {
+ my ($pkg, $pkgtotal, $suggest, $write) = @_;
+ my $cand_pkgs = $urpm->find_candidate_packages($pkg);
+ my @pkgs;
+ my $out;
+ my $in = "";
+ my $file = "res/$pkg.resolve";
+ if ($suggest) {
+ @pkgs = $urpm->resolve_requested($db, undef, $cand_pkgs);
+ $file .= ".suggests";
+ } else {
+ @pkgs = $urpm->resolve_requested__no_suggests_($db, undef, $cand_pkgs);
+ $file .= ".nosuggests";
+ }
+ foreach (@pkgs) {
+ $out .= $_->fullname() . "\n";
+ }
+ if ($write) {
+ open FILE, ">$file";
+
+ print FILE $out;
+ close FILE;
+ } else {
+ open(my $diff, "echo -n '$out' | diff -pu $file - |") or die $!;
+ while(<$diff>) {
+ $in .= <$diff>;
+
+ }
+ close($diff);
+ }
+ is($in, "", "$file comparision");
+
+ is(int @pkgs, $pkgtotal, "$pkg total number of packages");
+}
+
+SKIP: {
+ my $synthesis = "res/synthesis.hdlist.xz";
+
+ if (!(-r $synthesis)) {
+ skip "$synthesis missing, only found in svn", 6;
+ }
+ $db = URPM::DB::open("tmp", 1);
+ $urpm = new URPM;
+ $urpm->parse_synthesis($synthesis);
+
+ solve_check("basesystem-minimal", 141, 0, 0);
+ solve_check("basesystem", 527, 1, 0);
+ solve_check("task-kde4", 2059, 1, 0);
+}
diff --git a/t/synthesis.t b/t/synthesis.t
index 6729b3b..bc05651 100644
--- a/t/synthesis.t
+++ b/t/synthesis.t
@@ -10,9 +10,9 @@ my $file1 = 'synthesis.sample.cz';
open my $f, "| gzip -9 >$file1";
print $f <<'EOF';
-@provides@glibc-devel == 6:2.2.4-25mdk
-@requires@/sbin/install-info@glibc == 2.2.4@kernel-headers@kernel-headers >= 2.2.1@/bin/sh@/bin/sh@/bin/sh@rpmlib(PayloadFilesHavePrefix) <= 4.0-1@rpmlib(CompressedFileNames) <= 3.0.4-1
-@conflicts@texinfo < 3.11@gcc < 2.96-0.50mdk
+@provides@glibc-devel[== 6:2.2.4-25mdk]
+@requires@/sbin/install-info[*]@glibc[== 2.2.4]@kernel-headers@kernel-headers[>= 2.2.1]@/bin/sh@/bin/sh@/bin/sh@rpmlib(PayloadFilesHavePrefix)[<= 4.0-1]@rpmlib(CompressedFileNames)[<= 3.0.4-1]
+@conflicts@texinfo[< 3.11]@gcc[< 2.96-0.50mdk]
@obsoletes@libc-debug@libc-headers@libc-devel@linuxthreads-devel@glibc-debug
@info@glibc-devel-2.2.4-25mdk.i586@6@45692097@Development/C
EOF
@@ -54,7 +54,7 @@ ok(!defined $pkg->changelog_name);
ok(!defined $pkg->changelog_text);
ok(!defined $pkg->changelog_time);
-my ($name, $version, $release, $arch, @l) = $pkg->fullname;
+my ($name, $version, $release, $disttag, $distepoch, $arch, @l) = $pkg->fullname;
ok(@l == 0);
ok($name eq 'glibc-devel');
ok($version eq '2.2.4');
@@ -82,17 +82,17 @@ ok($obsoletes[4] eq 'glibc-debug');
my @conflicts = $pkg->conflicts;
ok(@conflicts == 2);
-ok($conflicts[0] eq 'texinfo < 3.11');
-ok($conflicts[1] eq 'gcc < 2.96-0.50mdk');
+ok($conflicts[0] eq 'texinfo[< 3.11]');
+ok($conflicts[1] eq 'gcc[< 2.96-0.50mdk]');
my @requires = $pkg->requires;
ok(@requires == 9);
-ok($requires[0] eq '/sbin/install-info');
-ok($requires[8] eq 'rpmlib(CompressedFileNames) <= 3.0.4-1');
+ok($requires[0] eq '/sbin/install-info[*]');
+ok($requires[8] eq 'rpmlib(CompressedFileNames)[<= 3.0.4-1]');
my @provides = $pkg->provides;
ok(@provides == 1);
-ok($provides[0] eq 'glibc-devel == 6:2.2.4-25mdk');
+ok($provides[0] eq 'glibc-devel[== 6:2.2.4-25mdk]');
my @files = $pkg->files;
ok(@files == 0);
diff --git a/xfile.h b/xfile.h
new file mode 100644
index 0000000..c8973f5
--- /dev/null
+++ b/xfile.h
@@ -0,0 +1,176 @@
+#include <magic.h>
+#include <lzma.h>
+#include <zlib.h>
+
+#define kBufferSize (1 << 15)
+
+typedef struct lzma_file {
+ uint8_t buf[kBufferSize];
+ lzma_stream strm;
+ FILE *fp;
+ lzma_bool eof;
+} lzma_FILE;
+
+typedef enum xFile_e {
+ XF_ASCII,
+ XF_GZIP,
+ XF_LZMA,
+ XF_XZ,
+ XF_FAIL
+} xFile_t;
+
+typedef struct xFile_s {
+ xFile_t type;
+ lzma_bool eof;
+ union {
+ gzFile gz;
+ lzma_FILE *xz;
+ } f;
+ FILE *fp;
+} xFile;
+
+static lzma_FILE *lzma_open(lzma_ret *lzma_error, FILE *fp, uint64_t memlimit)
+{
+ lzma_ret *ret = lzma_error;
+ lzma_FILE *lzma_file;
+ lzma_stream tmp = LZMA_STREAM_INIT;
+
+ lzma_file = calloc(1, sizeof(*lzma_file));
+
+ lzma_file->fp = fp;
+ lzma_file->eof = 0;
+ lzma_file->strm = tmp;
+
+ *ret = lzma_auto_decoder(&lzma_file->strm, memlimit, 0);
+
+ if (*ret != LZMA_OK) {
+ (void) fclose(lzma_file->fp);
+ free(lzma_file);
+ return NULL;
+ }
+ return lzma_file;
+}
+
+static ssize_t lzma_read(lzma_ret *lzma_error, lzma_FILE *lzma_file, void *buf, size_t len)
+{
+ lzma_ret *ret = lzma_error;
+ lzma_bool eof = 0;
+
+ if (!lzma_file)
+ return -1;
+ if (lzma_file->eof)
+ return 0;
+
+ lzma_file->strm.next_out = buf;
+ lzma_file->strm.avail_out = len;
+ for (;;) {
+ if (!lzma_file->strm.avail_in) {
+ lzma_file->strm.next_in = (uint8_t *)lzma_file->buf;
+ lzma_file->strm.avail_in = fread(lzma_file->buf, 1, kBufferSize, lzma_file->fp);
+ if (!lzma_file->strm.avail_in)
+ eof = 1;
+ }
+ *ret = lzma_code(&lzma_file->strm, LZMA_RUN);
+ if (*ret == LZMA_STREAM_END) {
+ lzma_file->eof = 1;
+ return len - lzma_file->strm.avail_out;
+ }
+ if (*ret != LZMA_OK)
+ return -1;
+ if (!lzma_file->strm.avail_out)
+ return len;
+ if (eof)
+ return -1;
+ }
+}
+
+
+static xFile xOpen(const char *path) {
+ xFile xF = {XF_FAIL, 0, {NULL}, NULL};
+ lzma_ret ret = LZMA_OK;
+ const char *message, *tmp;
+ magic_t cookie;
+ cookie = magic_open(MAGIC_NONE);
+ if(!magic_load(cookie, NULL)) {
+ message = magic_file(cookie, path);
+ if(strstr(message, "gzip compressed"))
+ xF.type = XF_GZIP;
+ else if(strstr(message, "xz compressed"))
+ xF.type = XF_XZ;
+ else if(strstr(message, "LZMA compressed"))
+ xF.type = XF_LZMA;
+ else if(strstr(message, "ASCII"))
+ xF.type = XF_ASCII;
+ magic_close(cookie);
+ }
+ if(xF.type == XF_FAIL && (tmp = rindex(path, '.'))) {
+ if(!strcmp(tmp, ".cz") || !strcmp(tmp, ".cz"))
+ xF.type = XF_GZIP;
+ else if(!strcmp(tmp, ".xz"))
+ xF.type = XF_XZ;
+ else if(!strcmp(tmp, ".lzma"))
+ xF.type = XF_LZMA;
+ }
+
+ switch(xF.type) {
+ case XF_GZIP:
+ xF.f.gz = gzopen(path, "rb");
+ break;
+ case XF_ASCII:
+ case XF_LZMA:
+ case XF_XZ:
+ xF.fp = fopen(path, "rb");
+ if(xF.type == XF_ASCII) break;
+ xF.f.xz = lzma_open(&ret, xF.fp, -1);
+ if(ret != LZMA_OK)
+ xF.type = XF_FAIL;
+ break;
+ default:
+ break;
+ }
+
+ return xF;
+}
+
+static int xClose(xFile *xF) {
+ int ret = -1;
+ switch(xF->type) {
+ case XF_GZIP:
+ ret = gzclose(xF->f.gz);
+ break;
+ case XF_LZMA:
+ case XF_XZ:
+ lzma_end(&xF->f.xz->strm);
+ free(xF->f.xz);
+ case XF_ASCII:
+ ret = fclose(xF->fp);
+ break;
+ default:
+ break;
+ }
+ return ret;
+}
+
+static ssize_t xRead(xFile *xF, lzma_ret *ret, void *buf, size_t len) {
+ ssize_t sz;
+ switch(xF->type) {
+ case XF_GZIP:
+ sz = gzread(xF->f.gz, buf, len);
+ xF->eof = gzeof(xF->f.gz);
+ break;
+ case XF_LZMA:
+ case XF_XZ:
+ sz = lzma_read(ret, xF->f.xz, buf, len);
+ xF->eof = xF->f.xz->eof;
+ break;
+ case XF_ASCII:
+ sz = fread(buf, 1, len, xF->fp);
+ xF->eof = feof(xF->fp);
+ break;
+ default:
+ break;
+ }
+ return sz;
+}
+
+