diff options
author | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2011-01-08 02:18:55 +0000 |
---|---|---|
committer | Per Øyvind Karlsen <peroyvind@mandriva.org> | 2011-01-08 02:18:55 +0000 |
commit | e6aaf4fd7971f354b9e10bc700ac0ddd9eaacdea (patch) | |
tree | 87f0f269c1cb104a21376ceb2c16dcda2bc33e57 | |
parent | 4e3cd9489085923fcb20993f62f59632cedb03f3 (diff) | |
download | perl-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-- | MANIFEST | 1 | ||||
-rw-r--r-- | Makefile.PL | 28 | ||||
-rw-r--r-- | NEWS | 49 | ||||
-rw-r--r-- | TODO | 6 | ||||
-rw-r--r-- | URPM.pm | 43 | ||||
-rw-r--r-- | URPM.xs | 1789 | ||||
-rw-r--r-- | URPM/Resolve.pm | 2 | ||||
-rw-r--r-- | t/parse.t | 19 | ||||
-rw-r--r-- | t/res/basesystem-minimal.resolve.nosuggests | 141 | ||||
-rw-r--r-- | t/res/basesystem.resolve.suggests | 527 | ||||
-rw-r--r-- | t/res/synthesis.hdlist.xz | bin | 0 -> 550284 bytes | |||
-rw-r--r-- | t/res/task-kde4.resolve.suggests | 2059 | ||||
-rw-r--r-- | t/resolve.t | 71 | ||||
-rw-r--r-- | t/synthesis.t | 18 | ||||
-rw-r--r-- | xfile.h | 176 |
15 files changed, 4005 insertions, 924 deletions
@@ -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/*" }, ); @@ -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) @@ -0,0 +1,6 @@ +* downgrade support +* symlink & parentdir dependencies + +* RPM ACID +** enabler/disabler? +** bdb transaction log cleaning (ie. using db_archive) @@ -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. @@ -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; } } }); @@ -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 Binary files differnew file mode 100644 index 0000000..0739961 --- /dev/null +++ b/t/res/synthesis.hdlist.xz 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); @@ -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; +} + + |