From 8760cde94aca80a920cb50230d61c187d3cfeee4 Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Wed, 7 Jul 2010 14:59:02 +0100 Subject: rpm: switch to using RPM 5 Switch to RPM5 as our rpm provider of choice and update the recipe to the latest stable release. Signed-off-by: Joshua Lock Modify the package_rpm.bbclass to understand the macro and command line changes present in rpm5. Signed-off-by: Mark Hatle --- meta/packages/rpm/files/weakdeps.patch | 312 --------------------------------- 1 file changed, 312 deletions(-) delete mode 100644 meta/packages/rpm/files/weakdeps.patch (limited to 'meta/packages/rpm/files/weakdeps.patch') diff --git a/meta/packages/rpm/files/weakdeps.patch b/meta/packages/rpm/files/weakdeps.patch deleted file mode 100644 index a013b7554..000000000 --- a/meta/packages/rpm/files/weakdeps.patch +++ /dev/null @@ -1,312 +0,0 @@ -Taken from OpenSUSE 11 rpm source file - RP 26/8/08 - -Add support for weak dependencies: - -A) use RPMTAG_SUGGESTS and RPMTAG_ENHANCES to store them. - - This is different to upstream, which uses RPMSENSE_MISSINGOK - and RPMTAG_REQUIRES/RPMTAG_PROVIDES instead. I chose different - tags because I wanted to be compatible. The point is that - applications that don't know about the new MISSINGOK semantics - will mis-interpret the provides/requires otherwise, which - I deemed to risky. - -B) use RPMSENSE_STRONG to support a "strong" version, "Recommends" - instead of "Suggests" and "Supplements" instead of "Enhances". - -Needs extcond.diff for query operations. - -Index: build/parsePreamble.c -=================================================================== ---- build/parsePreamble.c.orig 2008-04-01 08:28:21.000000000 +0100 -+++ build/parsePreamble.c 2008-08-26 16:58:09.000000000 +0100 -@@ -129,6 +129,8 @@ - { "post", RPMSENSE_SCRIPT_POST }, - { "rpmlib", RPMSENSE_RPMLIB }, - { "verify", RPMSENSE_SCRIPT_VERIFY }, -+ { "hint", RPMSENSE_MISSINGOK }, -+ { "strong", RPMSENSE_STRONG }, - { NULL, 0 } - }; - -@@ -140,6 +142,8 @@ - { "build", RPMSENSE_SCRIPT_BUILD }, - { "install", RPMSENSE_SCRIPT_INSTALL }, - { "clean", RPMSENSE_SCRIPT_CLEAN }, -+ { "hint", RPMSENSE_MISSINGOK }, -+ { "strong", RPMSENSE_STRONG }, - { NULL, 0 } - }; - -@@ -692,6 +696,18 @@ - if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags))) - return rc; - break; -+ case RPMTAG_SUGGESTSFLAGS: -+ case RPMTAG_ENHANCESFLAGS: -+ case RPMTAG_BUILDSUGGESTS: -+ case RPMTAG_BUILDENHANCES: -+ tagflags = RPMSENSE_MISSINGOK; -+ if (macro && (!strcmp(macro, "recommends") || !strcmp(macro, "buildrecommends"))) -+ tagflags |= RPMSENSE_STRONG; -+ if (macro && (!strcmp(macro, "supplements") || !strcmp(macro, "buildsupplements"))) -+ tagflags |= RPMSENSE_STRONG; -+ if ((rc = parseRCPOT(spec, pkg, field, tag, 0, tagflags))) -+ return rc; -+ break; - case RPMTAG_EXCLUDEARCH: - case RPMTAG_EXCLUSIVEARCH: - case RPMTAG_EXCLUDEOS: -@@ -783,6 +799,14 @@ - {RPMTAG_DISTTAG, 0, 0, 0, "disttag"}, - {RPMTAG_CVSID, 0, 0, 0, "cvsid"}, - {RPMTAG_SVNID, 0, 0, 0, "svnid"}, -+ {RPMTAG_SUGGESTSFLAGS, 0, 0, 0, "recommends"}, -+ {RPMTAG_SUGGESTSFLAGS, 0, 0, 0, "suggests"}, -+ {RPMTAG_ENHANCESFLAGS, 0, 0, 0, "supplements"}, -+ {RPMTAG_ENHANCESFLAGS, 0, 0, 0, "enhances"}, -+ {RPMTAG_BUILDSUGGESTS, 0, 0, 0, "buildrecommends"}, -+ {RPMTAG_BUILDSUGGESTS, 0, 0, 0, "buildsuggests"}, -+ {RPMTAG_BUILDENHANCES, 0, 0, 0, "buildsupplements"}, -+ {RPMTAG_BUILDENHANCES, 0, 0, 0, "buildenhances"}, - /*@-nullassign@*/ /* LCL: can't add null annotation */ - {0, 0, 0, 0, 0} - /*@=nullassign@*/ -Index: build/parseReqs.c -=================================================================== ---- build/parseReqs.c.orig 2008-04-01 08:28:21.000000000 +0100 -+++ build/parseReqs.c 2008-08-26 16:58:09.000000000 +0100 -@@ -85,6 +85,14 @@ - tagflags |= RPMSENSE_ANY; - h = spec->buildRestrictions; - break; -+ case RPMTAG_SUGGESTSFLAGS: -+ case RPMTAG_ENHANCESFLAGS: -+ h = pkg->header; -+ break; -+ case RPMTAG_BUILDSUGGESTS: -+ case RPMTAG_BUILDENHANCES: -+ h = spec->buildRestrictions; -+ break; - default: - case RPMTAG_REQUIREFLAGS: - tagflags |= RPMSENSE_ANY; -Index: build/reqprov.c -=================================================================== ---- build/reqprov.c.orig 2008-04-01 08:28:21.000000000 +0100 -+++ build/reqprov.c 2008-08-26 16:58:09.000000000 +0100 -@@ -48,6 +48,16 @@ - flagtag = RPMTAG_TRIGGERFLAGS; - indextag = RPMTAG_TRIGGERINDEX; - extra = Flags & RPMSENSE_TRIGGER; -+ } else if (tagN == RPMTAG_SUGGESTSFLAGS || tagN == RPMTAG_BUILDSUGGESTS) { -+ nametag = RPMTAG_SUGGESTSNAME; -+ versiontag = RPMTAG_SUGGESTSVERSION; -+ flagtag = RPMTAG_SUGGESTSFLAGS; -+ extra = Flags & _ALL_REQUIRES_MASK; -+ } else if (tagN == RPMTAG_ENHANCESFLAGS || tagN == RPMTAG_BUILDENHANCES) { -+ nametag = RPMTAG_ENHANCESNAME; -+ versiontag = RPMTAG_ENHANCESVERSION; -+ flagtag = RPMTAG_ENHANCESFLAGS; -+ extra = Flags & _ALL_REQUIRES_MASK; - } else { - nametag = RPMTAG_REQUIRENAME; - versiontag = RPMTAG_REQUIREVERSION; -Index: build/rpmfc.c -=================================================================== ---- build/rpmfc.c.orig 2008-04-01 08:28:21.000000000 +0100 -+++ build/rpmfc.c 2008-08-26 16:58:09.000000000 +0100 -@@ -1385,6 +1385,12 @@ - { "Obsoletes", { "%{?__find_obsoletes}", NULL, NULL, NULL }, - RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_OBSOLETEFLAGS, - 0, -1 }, -+ { "Enhances", { "%{?__find_enhances}", NULL, NULL, NULL }, -+ RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS, -+ RPMSENSE_STRONG, RPMSENSE_STRONG }, -+ { "Supplements", { "%{?__find_supplements}", NULL, NULL, NULL }, -+ RPMTAG_ENHANCESNAME, RPMTAG_ENHANCESVERSION, RPMTAG_ENHANCESFLAGS, -+ RPMSENSE_STRONG, 0 }, - { NULL, { NULL, NULL, NULL, NULL }, 0, 0, 0, 0, 0 } - }; - -@@ -1480,6 +1486,14 @@ - failnonzero = 0; - tagflags = RPMSENSE_FIND_REQUIRES; - /*@switchbreak@*/ break; -+ case RPMTAG_ENHANCESFLAGS: -+ if (!pkg->autoProv) -+ continue; -+ failnonzero = 0; -+ tagflags = RPMSENSE_FIND_REQUIRES | RPMSENSE_MISSINGOK; -+ if (strcmp(dm->msg, "Supplements") == 0) -+ tagflags |= RPMSENSE_STRONG; -+ /*@switchbreak@*/ break; - default: - continue; - /*@notreached@*/ /*@switchbreak@*/ break; -Index: lib/rpmlib.h -=================================================================== ---- lib/rpmlib.h.orig 2008-04-01 08:28:22.000000000 +0100 -+++ lib/rpmlib.h 2008-08-26 17:00:37.000000000 +0100 -@@ -530,7 +530,7 @@ - RPMSENSE_TRIGGERPREIN = (1 << 25), /*!< @todo Implement %triggerprein. */ - /*@=enummemuse@*/ - RPMSENSE_KEYRING = (1 << 26), -- RPMSENSE_PATCHES = (1 << 27), -+ RPMSENSE_STRONG = (1 << 27), - RPMSENSE_CONFIG = (1 << 28) - } rpmsenseFlags; - -Index: python/rpmmodule.c -=================================================================== ---- python/rpmmodule.c.orig 2008-04-01 08:28:22.000000000 +0100 -+++ python/rpmmodule.c 2008-08-26 16:58:09.000000000 +0100 -@@ -433,7 +433,7 @@ - REGISTER_ENUM(RPMSENSE_RPMLIB); - REGISTER_ENUM(RPMSENSE_TRIGGERPREIN); - REGISTER_ENUM(RPMSENSE_KEYRING); -- REGISTER_ENUM(RPMSENSE_PATCHES); -+ REGISTER_ENUM(RPMSENSE_STRONG); - REGISTER_ENUM(RPMSENSE_CONFIG); - - REGISTER_ENUM(RPMTRANS_FLAG_TEST); -Index: lib/rpmds.c -=================================================================== ---- lib/rpmds.c.orig 2008-04-01 08:28:22.000000000 +0100 -+++ lib/rpmds.c 2008-08-26 16:58:09.000000000 +0100 -@@ -320,6 +320,11 @@ - tagEVR = RPMTAG_TRIGGERVERSION; - tagF = RPMTAG_TRIGGERFLAGS; - } else -+ if (tagN == RPMTAG_ENHANCESNAME) { -+ Type = "Enhances"; -+ tagEVR = RPMTAG_ENHANCESVERSION; -+ tagF = RPMTAG_ENHANCESFLAGS; -+ } else - goto exit; - - /*@-branchstate@*/ -Index: rpmpopt.in -=================================================================== ---- rpmpopt.in.orig 2008-04-01 08:28:22.000000000 +0100 -+++ rpmpopt.in 2008-08-26 16:58:09.000000000 +0100 -@@ -68,6 +68,22 @@ - --POPTdesc=$"list capabilities required by package(s)" - rpm alias -R --requires - -+rpm alias --suggests --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package suggests" -+ -+rpm alias --recommends --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package recommends" -+ -+rpm alias --enhances --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package enhances" -+ -+rpm alias --supplements --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package supplements" -+ - rpm alias --info --qf 'Name : %-27{NAME} Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\ - Version : %-27{VERSION} Vendor: %{VENDOR}\n\ - Release : %-27{RELEASE} Build Date: %{BUILDTIME:date}\n\ -@@ -351,6 +367,22 @@ - --POPTdesc=$"list capabilities required by package(s)" - rpmq alias -R --requires - -+rpmq alias --suggests --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package suggests" -+ -+rpmq alias --recommends --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package recommends" -+ -+rpmq alias --enhances --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package enhances" -+ -+rpmq alias --supplements --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package supplements" -+ - rpmq alias --info --qf 'Name : %-27{NAME} Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\ - Version : %-27{VERSION} Vendor: %{VENDOR}\n\ - Release : %-27{RELEASE} Build Date: %{BUILDTIME:date}\n\ -@@ -452,6 +484,22 @@ - --POPTdesc=$"list capabilities required by package(s)" - rpmquery alias -R --requires - -+rpmquery alias --suggests --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{}:{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package suggests" -+ -+rpmquery alias --recommends --qf \ -+ "[%|SUGGESTSFLAGS:depflag_strong?{%{SUGGESTSNAME} %{SUGGESTSFLAGS:depflags} %{SUGGESTSVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package recommends" -+ -+rpmquery alias --enhances --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{}:{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package enhances" -+ -+rpmquery alias --supplements --qf \ -+ "[%|ENHANCESFLAGS:depflag_strong?{%{ENHANCESNAME} %{ENHANCESFLAGS:depflags} %{ENHANCESVERSION}\n}|]" \ -+ --POPTdesc=$"list capabilities this package supplements" -+ - rpmquery alias --info --qf 'Name : %-27{NAME} Relocations: %|PREFIXES?{[%{PREFIXES} ]}:{(not relocatable)}|\n\ - Version : %-27{VERSION} Vendor: %{VENDOR}\n\ - Release : %-27{RELEASE} Build Date: %{BUILDTIME:date}\n\ -Index: lib/formats.c -=================================================================== ---- lib/formats.c.orig 2008-04-01 08:28:22.000000000 +0100 -+++ lib/formats.c 2008-08-26 16:58:09.000000000 +0100 -@@ -543,6 +543,38 @@ - return val; - } - -+static /*@only@*/ char * depflag_strongFormat(int_32 type, const void * data, -+ char * formatPrefix, int padding, /*@unused@*/ int element) -+ /*@modifies formatPrefix @*/ -+ /*@requires maxRead(data) >= 0 @*/ -+{ -+ char * val; -+ char buf[10]; -+ int anint; -+ -+ if (type != RPM_INT32_TYPE) { -+ val = xstrdup(_("(not a number)")); -+ } else { -+ anint = *((int_32 *) data); -+ buf[0] = '\0'; -+ -+/*@-boundswrite@*/ -+ if (anint & RPMSENSE_STRONG) -+ strcat(buf, "strong"); -+/*@=boundswrite@*/ -+ -+ val = xmalloc(7 + padding); -+/*@-boundswrite@*/ -+ strcat(formatPrefix, "s"); -+/*@=boundswrite@*/ -+ /*@-formatconst@*/ -+ sprintf(val, formatPrefix, buf); -+ /*@=formatconst@*/ -+ } -+ -+ return val; -+} -+ - /** - * Retrieve mounted file system paths. - * @param h header -@@ -1171,6 +1203,7 @@ - { HEADER_EXT_FORMAT, "base64", { base64Format } }, - { HEADER_EXT_FORMAT, "pgpsig", { pgpsigFormat } }, - { HEADER_EXT_FORMAT, "depflags", { depflagsFormat } }, -+ { HEADER_EXT_FORMAT, "depflag_strong", { depflag_strongFormat } }, - { HEADER_EXT_FORMAT, "fflags", { fflagsFormat } }, - { HEADER_EXT_FORMAT, "perms", { permsFormat } }, - { HEADER_EXT_FORMAT, "permissions", { permsFormat } }, -- cgit v1.2.3