From: Duncan Mac-Vicar P Date: Mon, 30 Jun 2008 22:00:15 +0000 (+0000) Subject: forward ports from 11.0 branch X-Git-Tag: BASE-SuSE-Code-12_1-Branch~616 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=37aad110abcdb7fa2f81ad0e546e44fb63fb47c6;p=platform%2Fupstream%2Flibsolv.git forward ports from 11.0 branch --- diff --git a/package/libsatsolver.changes b/package/libsatsolver.changes index 0fd474a..6f6cfc0 100644 --- a/package/libsatsolver.changes +++ b/package/libsatsolver.changes @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Mon Jun 30 23:55:20 CEST 2008 - dmacvicar@suse.de + +- forward port +- add message tag to updateinfo.xml for displaying + messages in the user interface +- Fix missing self provides for patches (bnc #397132). + +------------------------------------------------------------------- Mon Jun 2 11:47:32 CEST 2008 - coolo@suse.de - calculate recommendation list also if ignorealreadyrecommended is set, diff --git a/src/knownid.h b/src/knownid.h index 45fe459..c105117 100644 --- a/src/knownid.h +++ b/src/knownid.h @@ -126,6 +126,7 @@ KNOWNID(SOLVABLE_ORDER, "solvable:order"), KNOWNID(UPDATE_REBOOT, "update:reboot"), /* reboot suggested (kernel update) */ KNOWNID(UPDATE_RESTART, "update:restart"), /* restart suggested (update stack update) */ +KNOWNID(UPDATE_MESSAGE, "update:message"), /* restart suggested (update stack update) */ /* 'content' of patch, usually list of packages */ KNOWNID(UPDATE_COLLECTION, "update:collection"), /* "name evr arch" */ KNOWNID(UPDATE_COLLECTION_NAME, "update:collection:name"), /* name */ diff --git a/tools/repo_updateinfoxml.c b/tools/repo_updateinfoxml.c index 90bb3d3..0f5344e 100644 --- a/tools/repo_updateinfoxml.c +++ b/tools/repo_updateinfoxml.c @@ -53,16 +53,17 @@ enum state { STATE_TITLE, /* 4 */ STATE_RELEASE, /* 5 */ STATE_ISSUED, /* 6 */ - STATE_REFERENCES, /* 7 */ - STATE_REFERENCE, /* 8 */ - STATE_DESCRIPTION, /* 9 */ - STATE_PKGLIST, /* 10 */ - STATE_COLLECTION, /* 11 */ - STATE_NAME, /* 12 */ - STATE_PACKAGE, /* 13 */ - STATE_FILENAME, /* 14 */ - STATE_REBOOT, /* 15 */ - STATE_RESTART, /* 16 */ + STATE_MESSAGE, /* 7 */ + STATE_REFERENCES, /* 8 */ + STATE_REFERENCE, /* 9 */ + STATE_DESCRIPTION, /* 10 */ + STATE_PKGLIST, /* 11 */ + STATE_COLLECTION, /* 12 */ + STATE_NAME, /* 13 */ + STATE_PACKAGE, /* 14 */ + STATE_FILENAME, /* 15 */ + STATE_REBOOT, /* 16 */ + STATE_RESTART, /* 17 */ NUMSTATES }; @@ -84,6 +85,7 @@ static struct stateswitch stateswitches[] = { { STATE_UPDATE, "release", STATE_RELEASE, 1 }, { STATE_UPDATE, "issued", STATE_ISSUED, 1 }, { STATE_UPDATE, "description", STATE_DESCRIPTION, 1 }, + { STATE_UPDATE, "message", STATE_MESSAGE , 1 }, { STATE_UPDATE, "references", STATE_REFERENCES, 0 }, { STATE_UPDATE, "pkglist", STATE_PKGLIST, 0 }, { STATE_REFERENCES, "reference", STATE_REFERENCE, 0 }, @@ -111,6 +113,7 @@ struct parsedata { Solvable *solvable; unsigned int timestamp; + struct stateswitch *swtab[NUMSTATES]; enum state sbtab[NUMSTATES]; char *tempstr; @@ -122,6 +125,7 @@ struct parsedata { * if we have seen a ... * inside of ... * + * * If not, we must insert an empty filename to UPDATE_COLLECTION_FILENAME * at in order to keep all UPDATE_COLLECTION_* arrays in sync */ @@ -242,6 +246,7 @@ startElement(void *userData, const char *name, const char **atts) if (!strcmp(sw->ename, name)) break; + if (sw->from != pd->state) { #if 1 @@ -283,11 +288,14 @@ startElement(void *userData, const char *name, const char **atts) version = atts[1]; } + solvable = pd->solvable = pool_id2solvable(pool, repo_add_solvable(pd->repo)); pd->datanum = (pd->solvable - pool->solvables) - pd->repo->start; repodata_extend(pd->data, pd->solvable - pool->solvables); + repodata_extend(pd->data, pd->solvable - pool->solvables); pd->datanum = repodata_get_handle(pd->data, pd->datanum); + solvable->vendor = str2id(pool, from, 1); solvable->evr = str2id(pool, version, 1); solvable->arch = ARCH_NOARCH; @@ -348,6 +356,9 @@ startElement(void *userData, const char *name, const char **atts) /* This update ... */ case STATE_DESCRIPTION: break; + /* This update ... */ + case STATE_MESSAGE: + break; case STATE_PKGLIST: break; /* */ @@ -360,6 +371,7 @@ startElement(void *userData, const char *name, const char **atts) * src="http://download.fedoraproject.org/pub/fedora/linux/updates/8/ppc64/imlib-debuginfo-1.9.15-6.fc8.ppc64.rpm" * version="1.9.15"> * + * * -> patch.conflicts: {name} < {version}.{release} */ case STATE_PACKAGE: @@ -369,10 +381,12 @@ startElement(void *userData, const char *name, const char **atts) Id n, a, na; Id rel_id; + /* reset package_* markers, to be evaluated at */ package_filename_seen = 0; package_flags = 0; + for (; *atts; atts += 2) { if (!strcmp(*atts, "arch")) @@ -391,6 +405,7 @@ startElement(void *userData, const char *name, const char **atts) /* now combine both to a single Id */ na = rel2id(pool, n, a, REL_ARCH, 1); + rel_id = rel2id(pool, na, evr, REL_LT, 1); solvable->conflicts = repo_addid_dep(pd->repo, solvable->conflicts, rel_id, 0); @@ -415,6 +430,7 @@ startElement(void *userData, const char *name, const char **atts) } break; /* libntlm-0.4.2-1.fc8.x86_64.rpm */ + /* libntlm-0.4.2-1.fc8.x86_64.rpm */ case STATE_FILENAME: break; /* True */ @@ -439,6 +455,7 @@ endElement(void *userData, const char *name) struct parsedata *pd = userData; Pool *pool = pd->pool; Solvable *s = pd->solvable; + Repo *repo = pd->repo; #if 0 fprintf(stderr, "end: %s\n", name); @@ -461,6 +478,7 @@ endElement(void *userData, const char *name) case STATE_UPDATES: break; case STATE_UPDATE: + s->provides = repo_addid_dep(repo, s->provides, rel2id(pool, s->name, s->evr, REL_EQ, 1), 0); break; case STATE_ID: { @@ -500,6 +518,15 @@ endElement(void *userData, const char *name) repodata_set_str(pd->data, pd->datanum, SOLVABLE_DESCRIPTION, pd->content); } break; + break; + /* + * Warning! ... + */ + case STATE_MESSAGE: + { + repodata_set_str(pd->data, pd->datanum, UPDATE_MESSAGE, pd->content); + } + break; case STATE_PKGLIST: break; case STATE_COLLECTION: @@ -521,6 +548,7 @@ endElement(void *userData, const char *name) } break; /* libntlm-0.4.2-1.fc8.x86_64.rpm */ + /* libntlm-0.4.2-1.fc8.x86_64.rpm */ case STATE_FILENAME: { #if DO_ARRAY @@ -562,6 +590,7 @@ endElement(void *userData, const char *name) pd->state = pd->sbtab[pd->state]; pd->docontent = 0; + return; }