Hello community, here is the log from the commit of package libsolv for openSUSE:12.2 checked in at 2012-06-26 17:45:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.2/libsolv (Old) and /work/SRC/openSUSE:12.2/.libsolv.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsolv", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:12.2/libsolv/libsolv.changes 2012-06-25 15:45:11.000000000 +0200 +++ /work/SRC/openSUSE:12.2/.libsolv.new/libsolv.changes 2012-06-26 17:45:50.000000000 +0200 @@ -1,0 +2,5 @@ +Mon Jun 25 13:40:58 CEST 2012 - [email protected] + +- fix typo in repodata_merge_attrs [bnc#767510] + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsolv-0.1.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/.travis.yml new/libsolv-0.1.0/.travis.yml --- old/libsolv-0.1.0/.travis.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/libsolv-0.1.0/.travis.yml 2012-06-25 14:17:22.000000000 +0200 @@ -0,0 +1,5 @@ +language: C +before_script: sudo apt-get install cmake +script: mkdir build && cd build && cmake -DDEBIAN=1 -DMULTI_SEMANTICS=1 .. && make && make test + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/CMakeLists.txt new/libsolv-0.1.0/CMakeLists.txt --- old/libsolv-0.1.0/CMakeLists.txt 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/CMakeLists.txt 2012-06-25 14:17:22.000000000 +0200 @@ -20,8 +20,10 @@ OPTION (ENABLE_DEBIAN "Build with debian database/repository support?" OFF) OPTION (ENABLE_MDKREPO "Build with mandriva/mageia repository support?" OFF) OPTION (ENABLE_ARCHREPO "Build with archlinux repository support?" OFF) +OPTION (ENABLE_CUDFREPO "Build with cudf repository support?" OFF) OPTION (ENABLE_LZMA_COMPRESSION "Build with lzma/xz compression support?" OFF) +OPTION (ENABLE_BZIP2_COMPRESSION "Build with bzip2 compression support?" OFF) #IF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERISION} GREATER 2.4) #ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERISION} GREATER 2.4) @@ -112,6 +114,9 @@ IF (ENABLE_LZMA_COMPRESSION) FIND_PACKAGE (LZMA REQUIRED) ENDIF (ENABLE_LZMA_COMPRESSION) +IF (ENABLE_BZIP2_COMPRESSION) +FIND_PACKAGE (BZip2 REQUIRED) +ENDIF (ENABLE_BZIP2_COMPRESSION) IF (RPM5) MESSAGE (STATUS "Enabling RPM 5 support") @@ -167,7 +172,7 @@ FOREACH (VAR HAVE_STRCHRNUL HAVE_FOPENCOOKIE HAVE_FUNOPEN WORDS_BIGENDIAN ENABLE_RPMDB ENABLE_RPMDB_PUBKEY ENABLE_RPMMD ENABLE_SUSEREPO ENABLE_COMPS ENABLE_HELIXREPO ENABLE_MDKREPO ENABLE_ARCHREPO ENABLE_DEBIAN - ENABLE_LZMA_COMPRESSION) + ENABLE_LZMA_COMPRESSION ENABLE_BZIP2_COMPRESSION) IF(${VAR}) ADD_DEFINITIONS (-D${VAR}=1) SET (SWIG_FLAGS ${SWIG_FLAGS} -D${VAR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/bindings/CMakeLists.txt new/libsolv-0.1.0/bindings/CMakeLists.txt --- old/libsolv-0.1.0/bindings/CMakeLists.txt 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/bindings/CMakeLists.txt 2012-06-25 14:17:22.000000000 +0200 @@ -3,6 +3,9 @@ IF (ENABLE_LZMA_COMPRESSION) SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${LZMA_LIBRARY}) ENDIF (ENABLE_LZMA_COMPRESSION) +IF (ENABLE_BZIP2_COMPRESSION) +SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${BZIP2_LIBRARIES}) +ENDIF (ENABLE_BZIP2_COMPRESSION) IF (NOT DEBIAN) SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES}) ENDIF (NOT DEBIAN) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/examples/CMakeLists.txt new/libsolv-0.1.0/examples/CMakeLists.txt --- old/libsolv-0.1.0/examples/CMakeLists.txt 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/examples/CMakeLists.txt 2012-06-25 14:17:23.000000000 +0200 @@ -3,6 +3,9 @@ IF (ENABLE_LZMA_COMPRESSION) SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${LZMA_LIBRARY}) ENDIF (ENABLE_LZMA_COMPRESSION) +IF (ENABLE_BZIP2_COMPRESSION) +SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${BZIP2_LIBRARIES}) +ENDIF (ENABLE_BZIP2_COMPRESSION) IF (NOT DEBIAN) SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES}) ENDIF (NOT DEBIAN) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/examples/solv.c new/libsolv-0.1.0/examples/solv.c --- old/libsolv-0.1.0/examples/solv.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/examples/solv.c 2012-06-25 14:17:23.000000000 +0200 @@ -1494,15 +1494,19 @@ load_stub(Pool *pool, Repodata *data, void *dp) { struct repoinfo *cinfo = data->repo->appdata; + switch (cinfo->type) + { #ifdef ENABLE_SUSEREPO - if (cinfo->type == TYPE_SUSETAGS) - return susetags_load_ext(data->repo, data); + case TYPE_SUSETAGS: + return susetags_load_ext(data->repo, data); #endif #ifdef ENABLE_RPMMD - if (cinfo->type == TYPE_RPMMD) - return repomd_load_ext(data->repo, data); + case TYPE_RPMMD: + return repomd_load_ext(data->repo, data); #endif - return 0; + default: + return 0; + } } static unsigned char installedcookie[32]; @@ -1644,7 +1648,9 @@ #endif struct stat stb; Pool *sigpool = 0; +#if defined(ENABLE_SUSEREPO) || defined(ENABLE_RPMMD) Repodata *data; +#endif int badchecksum; int dorefresh; #if defined(ENABLE_DEBIAN) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/CMakeLists.txt new/libsolv-0.1.0/ext/CMakeLists.txt --- old/libsolv-0.1.0/ext/CMakeLists.txt 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/ext/CMakeLists.txt 2012-06-25 14:17:22.000000000 +0200 @@ -64,6 +64,13 @@ repo_arch.h) ENDIF (ENABLE_ARCHREPO) +IF (ENABLE_CUDFREPO) + SET (libsolvext_SRCS ${libsolvext_SRCS} + repo_cudf.c) + SET (libsolvext_HEADERS ${libsolvext_HEADERS} + repo_cudf.h) +ENDIF (ENABLE_CUDFREPO) + SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") SET (CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/ext/libsolvext.ver") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/libsolvext.ver new/libsolv-0.1.0/ext/libsolvext.ver --- old/libsolv-0.1.0/ext/libsolvext.ver 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/ext/libsolvext.ver 2012-06-25 14:17:22.000000000 +0200 @@ -7,6 +7,7 @@ repo_add_code11_products; repo_add_content; repo_add_comps; + repo_add_cudf; repo_add_deb; repo_add_debdb; repo_add_debpackages; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/repo_cudf.c new/libsolv-0.1.0/ext/repo_cudf.c --- old/libsolv-0.1.0/ext/repo_cudf.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libsolv-0.1.0/ext/repo_cudf.c 2012-06-25 14:17:22.000000000 +0200 @@ -0,0 +1,383 @@ +/* + * Copyright (c) 2012, Novell Inc. + * + * This program is licensed under the BSD license, read LICENSE.BSD + * for further information + */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <zlib.h> +#include <errno.h> + +#include "pool.h" +#include "repo.h" +#include "util.h" +#include "chksum.h" +#include "solver.h" +#include "repo_cudf.h" + +static Id +parseonedep(Pool *pool, char *p) +{ + char *n, *ne, *e, *ee; + Id name, evr; + int flags; + + while (*p == ' ' || *p == '\t' || *p == '\n') + p++; + if (!*p) + return 0; + if (!strcmp(p, "!true")) + return 0; + if (!strcmp(p, "!false")) + return pool_str2id(pool, p, 1); + n = p; + /* find end of name */ + while (*p && *p != ' ' && *p != '\t' && *p != '\n' && *p != '|') + p++; + ne = p; + while (*p == ' ' || *p == '\t' || *p == '\n') + p++; + evr = 0; + flags = 0; + e = ee = 0; + if (*p == '>' || *p == '<' || *p == '=' || *p == '!') + { + if (*p == '>') + flags |= REL_GT; + else if (*p == '=') + flags |= REL_EQ; + else if (*p == '<') + flags |= REL_LT; + else if (*p == '!') + flags |= REL_LT | REL_GT | REL_EQ; + p++; + if (flags && *p == '=') + { + if (p[-1] != '=') + flags ^= REL_EQ; + p++; + } + while (*p == ' ' || *p == '\t' || *p == '\n') + p++; + e = p; + while (*p && *p != ' ' && *p != '\t' && *p != '\n' && *p != '|') + p++; + ee = p; + while (*p == ' ' || *p == '\t' || *p == '\n') + p++; + } + name = pool_strn2id(pool, n, ne - n, 1); + if (e) + { + evr = pool_strn2id(pool, e, ee - e, 1); + name = pool_rel2id(pool, name, evr, flags, 1); + } + if (*p == '|') + { + Id id = parseonedep(pool, p + 1); + if (id) + name = pool_rel2id(pool, name, id, REL_OR, 1); + } + return name; +} +static unsigned int +makedeps(Repo *repo, char *deps, unsigned int olddeps, Id marker) +{ + Pool *pool = repo->pool; + char *p; + Id id; + + while ((p = strchr(deps, ',')) != 0) + { + *p = 0; + olddeps = makedeps(repo, deps, olddeps, marker); + *p = ','; + deps = p + 1; + } + id = parseonedep(pool, deps); + if (!id) + return olddeps; + return repo_addid_dep(repo, olddeps, id, marker); +} + +static Offset +copydeps(Pool *pool, Repo *repo, Offset fromoff, Repo *fromrepo) +{ + Id *ida, *from; + int cc; + Offset off; + + if (!fromoff) + return 0; + from = fromrepo->idarraydata + fromoff; + for (ida = from, cc = 0; *ida; ida++, cc++) + ; + if (cc == 0) + return 0; + off = repo_reserve_ids(repo, 0, cc); + memcpy(repo->idarraydata + off, from, (cc + 1) * sizeof(Id)); + repo->idarraysize += cc + 1; + return off; +} + +static void +copysolvabledata(Pool *pool, Solvable *s, Repo *repo) +{ + Repo *srepo = s->repo; + if (srepo == repo) + return; + s->provides = copydeps(pool, repo, s->provides, srepo); + s->requires = copydeps(pool, repo, s->requires, srepo); + s->conflicts = copydeps(pool, repo, s->conflicts, srepo); + s->obsoletes = copydeps(pool, repo, s->obsoletes, srepo); + s->recommends = copydeps(pool, repo, s->recommends, srepo); + s->suggests = copydeps(pool, repo, s->suggests, srepo); + s->supplements = copydeps(pool, repo, s->supplements, srepo); + s->enhances = copydeps(pool, repo, s->enhances, srepo); +} + +#define KEEP_VERSION 1 +#define KEEP_PACKAGE 2 +#define KEEP_FEATURE 3 + +static void +finishpackage(Pool *pool, Solvable *s, int keep, Queue *job) +{ + Id *idp, id, sid; + if (!s) + return; + if (!s->arch) + s->arch = ARCH_ANY; + if (!s->evr) + s->evr = ID_EMPTY; + sid = pool_rel2id(pool, s->name, s->evr, REL_EQ, 1); + s->provides = repo_addid_dep(s->repo, s->provides, sid, 0); + if (!job || !pool->installed || s->repo != pool->installed) + return; + if (keep == KEEP_VERSION) + queue_push2(job, SOLVER_INSTALL|SOLVER_SOLVABLE_NAME, sid); + else if (keep == KEEP_PACKAGE) + queue_push2(job, SOLVER_INSTALL|SOLVER_SOLVABLE_NAME, s->name); + else if (keep == KEEP_FEATURE) + { + for (idp = s->repo->idarraydata + s->provides; (id = *idp) != 0; idp++) + { + if (id != sid) /* skip self-provides */ + queue_push2(job, SOLVER_INSTALL|SOLVER_SOLVABLE_PROVIDES, id); + } + } +} + +int +repo_add_cudf(Repo *repo, Repo *installedrepo, FILE *fp, Queue *job, int flags) +{ + Pool *pool = repo->pool; + char *buf, *p; + int bufa, bufl, c; + Solvable *s; + int instanza = 0; + int inrequest = 0; + int isinstalled = 0; + int keep = 0; + Repo *xrepo; + + xrepo = repo ? repo : installedrepo; + if (!xrepo) + return -1; + + buf = solv_malloc(4096); + bufa = 4096; + bufl = 0; + s = 0; + + while (fgets(buf + bufl, bufa - bufl, fp) > 0) + { + bufl += strlen(buf + bufl); + if (bufl && buf[bufl - 1] != '\n') + { + if (bufa - bufl < 256) + { + bufa += 4096; + buf = solv_realloc(buf, bufa); + } + continue; + } + buf[--bufl] = 0; + c = getc(fp); + if (c == ' ' || c == '\t') + { + /* continuation line */ + buf[bufl++] = ' '; + continue; + } + if (c != EOF) + ungetc(c, fp); + bufl = 0; + if (*buf == '#') + continue; + if (!*buf) + { + if (s && !repo && !isinstalled) + { + repo_free_solvable(repo, s - pool->solvables, 1); + s = 0; + } + if (s) + finishpackage(pool, s, keep, job); + s = 0; + keep = 0; + instanza = 0; + inrequest = 0; + continue; + } + p = strchr(buf, ':'); + if (!p) + continue; /* hmm */ + *p++ = 0; + while (*p == ' ' || *p == '\t') + p++; + if (!instanza) + { + instanza = 1; + inrequest = 0; + if (!strcmp(buf, "request")) + { + inrequest = 1; + continue; + } + if (!strcmp(buf, "package")) + { + s = pool_id2solvable(pool, repo_add_solvable(xrepo)); + isinstalled = 0; + keep = 0; + } + } + if (inrequest) + { + if (!job) + continue; + if (!strcmp(buf, "install")) + { + Id id, *idp; + Offset off = makedeps(xrepo, p, 0, 0); + for (idp = xrepo->idarraydata + off; (id = *idp) != 0; idp++) + queue_push2(job, SOLVER_INSTALL|SOLVER_SOLVABLE_PROVIDES, id); + } + else if (!strcmp(buf, "remove")) + { + Id id, *idp; + Offset off = makedeps(xrepo, p, 0, 0); + for (idp = xrepo->idarraydata + off; (id = *idp) != 0; idp++) + queue_push2(job, SOLVER_ERASE|SOLVER_SOLVABLE_PROVIDES, id); + } + else if (!strcmp(buf, "upgrade")) + { + Id id, *idp; + Offset off = makedeps(xrepo, p, 0, 0); + for (idp = xrepo->idarraydata + off; (id = *idp) != 0; idp++) + queue_push2(job, SOLVER_INSTALL|SOLVER_ORUPDATE|SOLVER_SOLVABLE_PROVIDES, id); + } + continue; + } + if (!s) + continue; /* we ignore the preamble for now */ + switch (buf[0]) + { + case 'c': + if (!strcmp(buf, "conflicts")) + { + s->conflicts = makedeps(s->repo, p, s->conflicts, 0); + continue; + } + case 'd': + if (!strcmp(buf, "depends")) + { + s->requires = makedeps(s->repo, p, s->requires, 0); + continue; + } + break; + case 'k': + if (!strcmp(buf, "keep")) + { + if (!job) + continue; + if (!strcmp(p, "version")) + keep = KEEP_VERSION; + else if (!strcmp(p, "package")) + keep = KEEP_PACKAGE; + else if (!strcmp(p, "feature")) + keep = KEEP_FEATURE; + continue; + } + break; + case 'i': + if (!strcmp(buf, "installed")) + { + if (!strcmp(p, "true")) + { + isinstalled = 1; + if (!installedrepo) + { + repo_free_solvable(repo, s - pool->solvables, 1); + s = 0; + } + else if (s->repo != installedrepo) + { + copysolvabledata(pool, s, installedrepo); + s->repo->nsolvables--; + s->repo = installedrepo; + if (s - pool->solvables < s->repo->start) + s->repo->start = s - pool->solvables; + if (s - pool->solvables >= s->repo->end) + s->repo->end = s - pool->solvables + 1; + s->repo->nsolvables++; + } + } + continue; + } + break; + case 'p': + if (!strcmp(buf, "package")) + { + s->name = pool_str2id(pool, p, 1); + continue; + } + if (!strcmp(buf, "provides")) + { + s->provides = makedeps(s->repo, p, s->provides, 0); + continue; + } + break; + case 'r': + if (!strcmp(buf, "depends")) + { + s->recommends = makedeps(s->repo, p, s->recommends, 0); + continue; + } + break; + case 'v': + if (!strcmp(buf, "version")) + { + s->evr = pool_str2id(pool, p, 1); + continue; + } + break; + } + } + if (s && !repo && !isinstalled) + { + repo_free_solvable(repo, s - pool->solvables, 1); + s = 0; + } + if (s) + finishpackage(pool, s, keep, job); + solv_free(buf); + return 0; +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/repo_cudf.h new/libsolv-0.1.0/ext/repo_cudf.h --- old/libsolv-0.1.0/ext/repo_cudf.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libsolv-0.1.0/ext/repo_cudf.h 2012-06-25 14:17:22.000000000 +0200 @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2012, Novell Inc. + * + * This program is licensed under the BSD license, read LICENSE.BSD + * for further information + */ + +extern int repo_add_cudf(Repo *repo, Repo *installedrepo, FILE *fp, Queue *job, int flags); + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/solv_xfopen.c new/libsolv-0.1.0/ext/solv_xfopen.c --- old/libsolv-0.1.0/ext/solv_xfopen.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/ext/solv_xfopen.c 2012-06-25 14:17:22.000000000 +0200 @@ -50,31 +50,67 @@ static ssize_t cookie_gzread(void *cookie, char *buf, size_t nbytes) { - return gzread((gzFile *)cookie, buf, nbytes); + return gzread((gzFile)cookie, buf, nbytes); } static ssize_t cookie_gzwrite(void *cookie, const char *buf, size_t nbytes) { - return gzwrite((gzFile *)cookie, buf, nbytes); + return gzwrite((gzFile)cookie, buf, nbytes); } static int cookie_gzclose(void *cookie) { - return gzclose((gzFile *)cookie); + return gzclose((gzFile)cookie); } static inline FILE *mygzfopen(const char *fn, const char *mode) { - gzFile *gzf = gzopen(fn, mode); + gzFile gzf = gzopen(fn, mode); return cookieopen(gzf, mode, cookie_gzread, cookie_gzwrite, cookie_gzclose); } static inline FILE *mygzfdopen(int fd, const char *mode) { - gzFile *gzf = gzdopen(fd, mode); + gzFile gzf = gzdopen(fd, mode); return cookieopen(gzf, mode, cookie_gzread, cookie_gzwrite, cookie_gzclose); } +#ifdef ENABLE_BZIP2_COMPRESSION + +#include <bzlib.h> + +/* bzip2 compression */ + +static ssize_t cookie_bzread(void *cookie, char *buf, size_t nbytes) +{ + return BZ2_bzread((BZFILE *)cookie, buf, nbytes); +} + +static ssize_t cookie_bzwrite(void *cookie, const char *buf, size_t nbytes) +{ + return BZ2_bzwrite((BZFILE *)cookie, (char *)buf, nbytes); +} + +static int cookie_bzclose(void *cookie) +{ + BZ2_bzclose((BZFILE *)cookie); + return 0; +} + +static inline FILE *mybzfopen(const char *fn, const char *mode) +{ + BZFILE *bzf = BZ2_bzopen(fn, mode); + return cookieopen(bzf, mode, cookie_bzread, cookie_bzwrite, cookie_bzclose); +} + +static inline FILE *mybzfdopen(int fd, const char *mode) +{ + BZFILE *bzf = BZ2_bzdopen(fd, mode); + return cookieopen(bzf, mode, cookie_bzread, cookie_bzwrite, cookie_bzclose); +} + +#endif + #ifdef ENABLE_LZMA_COMPRESSION @@ -290,6 +326,10 @@ if (suf && !strcmp(suf, ".lzma")) return mylzfopen(fn, mode); #endif +#ifdef ENABLE_BZIP2_COMPRESSION + if (suf && !strcmp(suf, ".bz2")) + return mybzfopen(fn, mode); +#endif return fopen(fn, mode); } @@ -324,6 +364,10 @@ if (suf && !strcmp(suf, ".lzma")) return mylzfdopen(fd, simplemode); #endif +#ifdef ENABLE_BZIP2_COMPRESSION + if (suf && !strcmp(suf, ".bz2")) + return mybzfdopen(fd, simplemode); +#endif return fdopen(fd, mode); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/ext/testcase.c new/libsolv-0.1.0/ext/testcase.c --- old/libsolv-0.1.0/ext/testcase.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/ext/testcase.c 2012-06-25 14:17:22.000000000 +0200 @@ -53,6 +53,8 @@ { SOLVER_WEAK, "weak" }, { SOLVER_ESSENTIAL, "essential" }, { SOLVER_CLEANDEPS, "cleandeps" }, + { SOLVER_ORUPDATE, "orupdate" }, + { SOLVER_FORCEBEST, "forcebest" }, { SOLVER_SETEV, "setev" }, { SOLVER_SETEVR, "setevr" }, { SOLVER_SETARCH, "setarch" }, @@ -108,6 +110,15 @@ { 0, 0, 0 } }; +static struct disttype2str { + Id type; + const char *str; +} disttype2str[] = { + { DISTTYPE_RPM, "rpm" }, + { DISTTYPE_DEB, "deb" }, + { DISTTYPE_ARCH, "arch" }, + { 0, 0 }, +}; typedef struct strqueue { char **str; @@ -1475,7 +1486,7 @@ } /* hmm, this is not optimal... we currently search for the lowest score */ lowscore = 0; - arch = ARCH_NOARCH; + arch = pool->solvables[SYSTEMSOLVABLE].arch; for (i = 0; i < pool->lastarch; i++) { if (pool->id2arch[i] == 1 && !lowscore) @@ -1486,7 +1497,11 @@ lowscore = pool->id2arch[i]; } } - cmd = pool_tmpjoin(pool, "system ", pool_id2str(pool, arch), pool->disttype == DISTTYPE_DEB ? " deb" : " rpm"); + cmd = pool_tmpjoin(pool, "system ", pool->lastarch ? pool_id2str(pool, arch) : "unset", 0); + for (i = 0; disttype2str[i].str != 0; i++) + if (pool->disttype == disttype2str[i].type) + break; + pool_tmpappend(pool, cmd, " ", disttype2str[i].str ? disttype2str[i].str : "unknown"); if (pool->installed) cmd = pool_tmpappend(pool, cmd, " ", testcase_repoid2str(pool, pool->installed->repoid)); strqueue_push(&sq, cmd); @@ -1529,8 +1544,9 @@ Reldep *rd = pool->rels + rid; if (rd->flags != REL_NAMESPACE || rd->name == NAMESPACE_OTHERPROVIDERS) continue; - /* check if we evaluated it, also skip empty results */ - if (!(d = pool->whatprovides_rel[rid]) || !pool->whatprovidesdata[d]) + /* evaluate all namespace ids, skip empty results */ + d = pool_whatprovides(pool, MAKERELDEP(rid)); + if (!d || !pool->whatprovidesdata[d]) continue; cmd = pool_tmpjoin(pool, "namespace ", pool_id2str(pool, rd->name), "("); cmd = pool_tmpappend(pool, cmd, pool_id2str(pool, rd->evr), ")"); @@ -1832,8 +1848,26 @@ } else if (!strcmp(pieces[0], "system") && npieces >= 3) { + int i; prepared = 0; - pool_setarch(pool, pieces[1]); + /* must set the disttype before the arch */ + for (i = 0; disttype2str[i].str != 0; i++) + if (!strcmp(disttype2str[i].str, pieces[2])) + break; + if (!disttype2str[i].str) + pool_debug(pool, SOLV_ERROR, "testcase_read: system: unknown disttype '%s'\n", pieces[2]); + else if (pool->disttype != disttype2str[i].type) + { +#ifdef MULTI_SEMANTICS + pool_setdisttype(pool, disttype2str[i].type); +#else + pool_debug(pool, SOLV_ERROR, "testcase_read: system: cannot change disttype to '%s'\n", pieces[2]); +#endif + } + if (strcmp(pieces[1], "unset") != 0) + pool_setarch(pool, pieces[1]); + else + pool_setarch(pool, 0); if (npieces > 3) { Repo *repo = testcase_str2repo(pool, pieces[3]); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/package/libsolv.changes new/libsolv-0.1.0/package/libsolv.changes --- old/libsolv-0.1.0/package/libsolv.changes 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/package/libsolv.changes 2012-06-25 14:17:23.000000000 +0200 @@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Mon Jun 25 13:40:58 CEST 2012 - [email protected] + +- fix typo in repodata_merge_attrs [bnc#767510] + +------------------------------------------------------------------- Wed May 30 14:46:48 CEST 2012 - [email protected] - fix build for older suse versions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/src/libsolv.ver new/libsolv-0.1.0/src/libsolv.ver --- old/libsolv-0.1.0/src/libsolv.ver 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/src/libsolv.ver 2012-06-25 14:17:22.000000000 +0200 @@ -90,6 +90,7 @@ pool_setdebugcallback; pool_setdebuglevel; pool_setdebugmask; + pool_setdisttype; pool_setloadcallback; pool_setvendorclasses; pool_shrink_rels; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/src/repodata.c new/libsolv-0.1.0/src/repodata.c --- old/libsolv-0.1.0/src/repodata.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/src/repodata.c 2012-06-25 14:17:22.000000000 +0200 @@ -2425,7 +2425,7 @@ repodata_merge_attrs(Repodata *data, Id dest, Id src) { Id *keyp; - if (dest == src || data->attrs || !(keyp = data->attrs[src - data->start])) + if (dest == src || !data->attrs || !(keyp = data->attrs[src - data->start])) return; for (; *keyp; keyp += 2) repodata_insert_keyid(data, dest, keyp[0], keyp[1], 0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/src/solver.c new/libsolv-0.1.0/src/solver.c --- old/libsolv-0.1.0/src/solver.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/src/solver.c 2012-06-25 14:17:22.000000000 +0200 @@ -1681,7 +1681,8 @@ if (l || !dq.count) continue; /* prune to installed if not updating */ - if (dq.count > 1 && solv->installed && !solv->updatemap_all) + if (dq.count > 1 && solv->installed && !solv->updatemap_all && + !(solv->job.elements[solv->ruletojob.elements[i - solv->jobrules]] & SOLVER_ORUPDATE)) { int j, k; for (j = k = 0; j < dq.count; j++) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/src/solver.h new/libsolv-0.1.0/src/solver.h --- old/libsolv-0.1.0/src/solver.h 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/src/solver.h 2012-06-25 14:17:22.000000000 +0200 @@ -249,6 +249,15 @@ #define SOLVER_WEAK 0x010000 #define SOLVER_ESSENTIAL 0x020000 #define SOLVER_CLEANDEPS 0x040000 +/* ORUPDATE makes SOLVER_INSTALL not prune to installed + * packages, thus updating installed packages */ +#define SOLVER_ORUPDATE 0x080000 +/* FORCEBEST makes the solver insist on best packages, so + * you will get problem reported if the best package is + * not installable. This can be used with INSTALL, UPDATE + * and DISTUPGRADE */ +/* Also, it's not implemented yet ;) */ +#define SOLVER_FORCEBEST 0x100000 #define SOLVER_SETEV 0x01000000 #define SOLVER_SETEVR 0x02000000 @@ -316,7 +325,6 @@ int solver_calc_installsizechange(Solver *solv); void solver_trivial_installable(Solver *solv, Queue *pkgs, Queue *res); -void solver_find_involved(Solver *solv, Queue *installedq, Solvable *s, Queue *q); /* iterate over all literals of a rule */ /* WARNING: loop body must not relocate whatprovidesdata, e.g. by diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/tools/CMakeLists.txt new/libsolv-0.1.0/tools/CMakeLists.txt --- old/libsolv-0.1.0/tools/CMakeLists.txt 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/tools/CMakeLists.txt 2012-06-25 14:17:22.000000000 +0200 @@ -9,6 +9,9 @@ IF (ENABLE_LZMA_COMPRESSION) SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${LZMA_LIBRARY}) ENDIF (ENABLE_LZMA_COMPRESSION) +IF (ENABLE_BZIP2_COMPRESSION) +SET (SYSTEM_LIBRARIES ${SYSTEM_LIBRARIES} ${BZIP2_LIBRARIES}) +ENDIF (ENABLE_BZIP2_COMPRESSION) IF (ENABLE_RPMDB) SET (SYSTEM_LIBRARIES ${RPMDB_LIBRARY} ${SYSTEM_LIBRARIES}) ENDIF (ENABLE_RPMDB) @@ -82,6 +85,11 @@ SET (tools_list ${tools_list} archpkgs2solv archrepo2solv) ENDIF (ENABLE_ARCHREPO) +IF (ENABLE_CUDFREPO) +ADD_EXECUTABLE (cudftest cudftest.c) +TARGET_LINK_LIBRARIES (cudftest libsolvext libsolv ${SYSTEM_LIBRARIES}) +ENDIF (ENABLE_CUDFREPO) + ADD_EXECUTABLE (installcheck installcheck.c) TARGET_LINK_LIBRARIES (installcheck libsolvext libsolv ${SYSTEM_LIBRARIES}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/tools/cudftest.c new/libsolv-0.1.0/tools/cudftest.c --- old/libsolv-0.1.0/tools/cudftest.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libsolv-0.1.0/tools/cudftest.c 2012-06-25 14:17:22.000000000 +0200 @@ -0,0 +1,156 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "pool.h" +#include "evr.h" +#include "solver.h" +#include "solverdebug.h" +#include "repo_cudf.h" +#include "repo_write.h" +#include "solv_xfopen.h" + +static void +dump_repo(Repo *repo, char *name) +{ + FILE *fp; + if ((fp = fopen(name, "w")) == 0) + { + perror(name); + exit(1); + } + repo_write(repo, fp); + fclose(fp); +} + +static int +sortfunc(const void *ap, const void *bp, void *dp) +{ + Pool *pool = dp; + Solvable *sa, *sb; + sa = pool->solvables + *(Id *)ap; + sb = pool->solvables + *(Id *)bp; + if (sa->name != sb->name) + { + int r = strcmp(pool_id2str(pool, sa->name), pool_id2str(pool, sb->name)); + if (r) + return r; + } + if (sa->evr != sb->evr) + { + int r = pool_evrcmp(pool, sa->evr, sb->evr, EVRCMP_COMPARE); + if (r) + return r; + } + return *(Id *)ap - *(Id *)bp; +} + +int +main(int argc, char **argv) +{ + char *cudfin; + char *cudfout = 0; + Pool *pool; + Repo *installed, *repo; + FILE *fp, *ofp; + Solver *solv; + Transaction *trans; + Queue job; + Queue dq; + int i; + int debug = 0; + + while (argc > 1 && !strcmp(argv[1], "-d")) + { + debug++; + argc--; + argv++; + } + if (argc < 2) + { + fprintf(stderr, "Usage: cudftest <cudfin> [cudfout]\n"); + exit(1); + } + cudfin = argv[1]; + cudfout = argc > 2 ? argv[2] : 0; + + if ((fp = solv_xfopen(cudfin, 0)) == 0) + { + perror(cudfin); + exit(1); + } + pool = pool_create(); + if (debug > 1) + pool_setdebuglevel(pool, debug - 1); + installed = repo_create(pool, "installed"); + pool_set_installed(pool, installed); + repo = repo_create(pool, "repo"); + queue_init(&job); + repo_add_cudf(repo, installed, fp, &job, 0); + pool_createwhatprovides(pool); + + /* debug */ + if (debug) + { + dump_repo(installed, "cudf_installed.solv"); + dump_repo(repo, "cudf_repo.solv"); + } + + solv = solver_create(pool); + solver_set_flag(solv, SOLVER_FLAG_ALLOW_UNINSTALL, 1); + /* solver_set_flag(solv, SOLVER_FLAG_IGNORE_RECOMMENDED, 1); */ + + queue_push2(&job, SOLVER_VERIFY | SOLVER_SOLVABLE_ALL, 0); + if (solver_solve(solv, &job) != 0) + { + int problem; + int pcnt = solver_problem_count(solv); + printf("Found %d problems:\n", pcnt); + for (problem = 1; problem <= pcnt; problem++) + { + printf("Problem %d:\n", problem); + solver_printprobleminfo(solv, problem); + printf("\n"); + } + } + trans = solver_create_transaction(solv); + solver_free(solv); + + if (debug) + transaction_print(trans); + + queue_init(&dq); + transaction_installedresult(trans, &dq); + solv_sort(dq.elements, dq.count, sizeof(Id), sortfunc, pool); + + ofp = stdout; + if (cudfout && ((ofp = fopen(cudfout, "w")) == 0)) + { + perror(cudfout); + exit(1); + } + for (i = 0; i < dq.count; i++) + { + Solvable *s = pool_id2solvable(pool, dq.elements[i]); + fprintf(ofp, "package: %s\n", pool_id2str(pool, s->name)); + fprintf(ofp, "version: %s\n", pool_id2str(pool, s->evr)); + fprintf(ofp, "installed: true\n"); + if (s->repo == pool->installed) + fprintf(ofp, "was-installed: true\n"); + fprintf(ofp, "\n"); + } + queue_free(&dq); + transaction_free(trans); + queue_free(&job); + pool_free(pool); + if (ofp != stdout) + { + if (fclose(ofp)) + { + perror("fclose"); + exit(1); + } + } + exit(0); +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsolv-0.1.0/tools/installcheck.c new/libsolv-0.1.0/tools/installcheck.c --- old/libsolv-0.1.0/tools/installcheck.c 2012-05-31 12:11:34.000000000 +0200 +++ new/libsolv-0.1.0/tools/installcheck.c 2012-06-25 14:17:22.000000000 +0200 @@ -60,7 +60,10 @@ char *arch, *exclude_pat; int i, j; Id p; - Id rpmid, rpmarch, rpmrel, archlock; + Id rpmarch, rpmrel, archlock; +#ifndef DEBIAN + Id rpmid; +#endif int status = 0; int nocheck = 0; int withsrc = 0; @@ -157,10 +160,10 @@ } pool_addfileprovides(pool); pool_createwhatprovides(pool); +#ifndef DEBIAN rpmid = pool_str2id(pool, "rpm", 0); rpmarch = pool_str2id(pool, arch, 0); rpmrel = 0; -#ifndef DEBIAN if (rpmid && rpmarch) { for (p = 1; p < pool->nsolvables; p++) @@ -172,6 +175,8 @@ if (p < pool->nsolvables) rpmrel = pool_rel2id(pool, rpmid, rpmarch, REL_ARCH, 1); } +#else + rpmrel = rpmarch = 0; #endif queue_init(&job); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
