diff options
author | Richard Purdie <richard@openedhand.com> | 2008-09-07 10:55:38 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2008-09-07 10:55:38 +0000 |
commit | 2c832c53e7af7f085324e71c4ab6bc238c45c03b (patch) | |
tree | 999014b0a2c0fb94119f4e7199788616cc15e97d | |
parent | e1af8defd6fce62a339e75c6cea11491ffc43b6c (diff) | |
download | poky-2c832c53e7af7f085324e71c4ab6bc238c45c03b.tar.gz |
rpm: Add missing patches
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5154 311d38ba-8fff-0310-9ca6-ca027cbcb966
-rw-r--r-- | meta/packages/rpm/files/extcond.patch | 78 | ||||
-rw-r--r-- | meta/packages/rpm/files/missingok.patch | 44 |
2 files changed, 122 insertions, 0 deletions
diff --git a/meta/packages/rpm/files/extcond.patch b/meta/packages/rpm/files/extcond.patch new file mode 100644 index 0000000000..6963b8606c --- /dev/null +++ b/meta/packages/rpm/files/extcond.patch | |||
@@ -0,0 +1,78 @@ | |||
1 | This patch supports an extension in the condition evaluation. | ||
2 | If the condition is a format and returns an nonempty string, it is | ||
3 | assumed to be true. | ||
4 | This mechanism is used by the weakdeps patch to filter the | ||
5 | "RPMSENSE_STRONG" flag. | ||
6 | |||
7 | --- ./rpmdb/header.c.orig 2005-06-06 23:33:54.000000000 +0000 | ||
8 | +++ ./rpmdb/header.c 2006-03-17 18:08:02.000000000 +0000 | ||
9 | @@ -2980,8 +2980,12 @@ static int parseExpression(headerSprintf | ||
10 | |||
11 | *endPtr = chptr; | ||
12 | |||
13 | + token->u.cond.tag.type = NULL; | ||
14 | + token->u.cond.tag.format = ""; | ||
15 | token->type = PTOK_COND; | ||
16 | |||
17 | + if ((token->u.cond.tag.type = strchr(str, ':')) != 0) | ||
18 | + *token->u.cond.tag.type++ = 0; | ||
19 | (void) findTag(hsa, token, str); | ||
20 | |||
21 | return 0; | ||
22 | @@ -3239,6 +3243,7 @@ static char * singleSprintf(headerSprint | ||
23 | int_32 type; | ||
24 | int_32 count; | ||
25 | sprintfToken spft; | ||
26 | + sprintfTag stag; | ||
27 | int condNumFormats; | ||
28 | size_t need; | ||
29 | |||
30 | @@ -3270,6 +3275,18 @@ static char * singleSprintf(headerSprint | ||
31 | if (token->u.cond.tag.ext || headerIsEntry(hsa->h, token->u.cond.tag.tag)) { | ||
32 | spft = token->u.cond.ifFormat; | ||
33 | condNumFormats = token->u.cond.numIfTokens; | ||
34 | + if (token->u.cond.tag.fmt) { | ||
35 | + /* check if format creates output */ | ||
36 | + size_t vallen = hsa->vallen; | ||
37 | + formatValue(hsa, &token->u.cond.tag, element); | ||
38 | + if (hsa->vallen == vallen) { | ||
39 | + spft = token->u.cond.elseFormat; | ||
40 | + condNumFormats = token->u.cond.numElseTokens; | ||
41 | + } else { | ||
42 | + hsa->vallen = vallen; | ||
43 | + hsa->val[hsa->vallen] = 0; | ||
44 | + } | ||
45 | + } | ||
46 | } else { | ||
47 | spft = token->u.cond.elseFormat; | ||
48 | condNumFormats = token->u.cond.numElseTokens; | ||
49 | @@ -3291,19 +3308,22 @@ static char * singleSprintf(headerSprint | ||
50 | spft = token->u.array.format; | ||
51 | for (i = 0; i < token->u.array.numTokens; i++, spft++) | ||
52 | { | ||
53 | - if (spft->type != PTOK_TAG || | ||
54 | - spft->u.tag.arrayCount || | ||
55 | - spft->u.tag.justOne) continue; | ||
56 | + if (spft->type != PTOK_TAG && spft->type != PTOK_COND) | ||
57 | + continue; | ||
58 | + | ||
59 | + stag = (spft->type == PTOK_COND ? &spft->u.cond.tag : &spft->u.tag); | ||
60 | + if (stag->arrayCount || stag->justOne) | ||
61 | + continue; | ||
62 | |||
63 | - if (spft->u.tag.ext) { | ||
64 | + if (stag->ext) { | ||
65 | /*@-boundswrite@*/ | ||
66 | - if (getExtension(hsa, spft->u.tag.ext, &type, NULL, &count, | ||
67 | - hsa->ec + spft->u.tag.extNum)) | ||
68 | + if (getExtension(hsa, stag->ext, &type, NULL, &count, | ||
69 | + hsa->ec + stag->extNum)) | ||
70 | continue; | ||
71 | /*@=boundswrite@*/ | ||
72 | } else { | ||
73 | /*@-boundswrite@*/ | ||
74 | - if (!headerGetEntry(hsa->h, spft->u.tag.tag, &type, NULL, &count)) | ||
75 | + if (!headerGetEntry(hsa->h, stag->tag, &type, NULL, &count)) | ||
76 | continue; | ||
77 | /*@=boundswrite@*/ | ||
78 | } | ||
diff --git a/meta/packages/rpm/files/missingok.patch b/meta/packages/rpm/files/missingok.patch new file mode 100644 index 0000000000..b008c9a02b --- /dev/null +++ b/meta/packages/rpm/files/missingok.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | Obey MISSINGOK flag for dependencies. Backport from rpm-4.4.7. | ||
2 | |||
3 | Index: lib/depends.c | ||
4 | =================================================================== | ||
5 | --- lib/depends.c.orig 2008-04-01 08:28:22.000000000 +0100 | ||
6 | +++ lib/depends.c 2008-09-04 14:09:58.000000000 +0100 | ||
7 | @@ -593,8 +593,13 @@ | ||
8 | /*@=boundsread@*/ | ||
9 | |||
10 | unsatisfied: | ||
11 | - rc = 1; /* dependency is unsatisfied */ | ||
12 | - rpmdsNotify(dep, NULL, rc); | ||
13 | + if (rpmdsFlags(dep) & RPMSENSE_MISSINGOK) { | ||
14 | + rc = 0; /* dependency is unsatisfied, but just a hint. */ | ||
15 | + rpmdsNotify(dep, _("(hint skipped)"), rc); | ||
16 | + } else { | ||
17 | + rc = 1; /* dependency is unsatisfied */ | ||
18 | + rpmdsNotify(dep, NULL, rc); | ||
19 | + } | ||
20 | |||
21 | exit: | ||
22 | /* | ||
23 | @@ -963,6 +968,8 @@ | ||
24 | return "Requires(postun):"; | ||
25 | if (f & RPMSENSE_SCRIPT_VERIFY) | ||
26 | return "Requires(verify):"; | ||
27 | + if (f & RPMSENSE_MISSINGOK) | ||
28 | + return "Requires(hint):"; | ||
29 | if (f & RPMSENSE_FIND_REQUIRES) | ||
30 | return "Requires(auto):"; | ||
31 | return "Requires:"; | ||
32 | Index: lib/rpmlib.h | ||
33 | =================================================================== | ||
34 | --- lib/rpmlib.h.orig 2008-09-03 22:22:43.000000000 +0100 | ||
35 | +++ lib/rpmlib.h 2008-09-04 15:17:17.000000000 +0100 | ||
36 | @@ -562,6 +562,8 @@ | ||
37 | RPMSENSE_SCRIPT_POSTUN | \ | ||
38 | RPMSENSE_SCRIPT_VERIFY | \ | ||
39 | RPMSENSE_FIND_REQUIRES | \ | ||
40 | + RPMSENSE_MISSINGOK | \ | ||
41 | + RPMSENSE_STRONG | \ | ||
42 | RPMSENSE_SCRIPT_PREP | \ | ||
43 | RPMSENSE_SCRIPT_BUILD | \ | ||
44 | RPMSENSE_SCRIPT_INSTALL | \ | ||