]> git.pld-linux.org Git - packages/poldek.git/blame - poldek-rev-promote.patch
- release 1, works
[packages/poldek.git] / poldek-rev-promote.patch
CommitLineData
9e6042ce
JB
1Index: pkg.c
2===================================================================
3RCS file: /cvsroot/installer/poldek/pkg.c,v
4retrieving revision 1.51.4.7
5diff -u -r1.51.4.7 pkg.c
6--- pkg.c 14 Aug 2004 21:28:12 -0000 1.51.4.7
7+++ pkg.c 25 Aug 2004 14:31:55 -0000
8@@ -21,7 +21,7 @@
9 #include <rpm/rpmlib.h>
10 #include <trurl/nstr.h>
11 #include <trurl/nassert.h>
12-
13+#define ENABLE_TRACE 0
14 #include "i18n.h"
15 #include "rpmadds.h"
16 #include "log.h"
17@@ -716,13 +716,23 @@
18
19 #define rel_not_match(cmprc, req) (rel_match(cmprc, req) == 0)
20
21+static void promote_epoch_warn(int verbose_level,
22+ const char *title0, const char *p0,
23+ const char *p1)
24+{
25+ if (verbose > verbose_level)
26+ logn(LOGWARN, "%s '%s' needs an epoch (assuming same "
27+ "epoch as %s)\n", title0, p0, p1);
28+}
29+
30+
31 __inline__
32 int cap_match_req(const struct capreq *cap, const struct capreq *req,
33 int strict)
34 {
35 register int cmprc = 0, evr = 0;
36
37- DBGMSG_F("cap %s req %s\n", capreq_snprintf_s(cap), capreq_snprintf_s0(req));
38+ DBGF("cap %s req %s\n", capreq_snprintf_s(cap), capreq_snprintf_s0(req));
39
40 if (strcmp(capreq_name(cap), capreq_name(req)) != 0)
41 return 0;
42@@ -730,11 +740,24 @@
43 if (!capreq_versioned(req))
44 return 1;
45
46- if (capreq_has_epoch(cap)) {
47- if (!capreq_has_epoch(req) && poldek_conf_promote_epoch) {
48- if (verbose > 2)
49- logn(LOGWARN, "req '%s' needs an epoch (assuming same epoch as %s)\n",
50- capreq_snprintf_s(req), capreq_snprintf_s0(cap));
51+ if (capreq_has_epoch(cap) || capreq_has_epoch(req)) {
52+ int promote = 0;
53+
54+ if (poldek_conf_promote_epoch) {
55+ if (!capreq_has_epoch(req)) {
56+ promote_epoch_warn(1, "req", capreq_snprintf_s(req),
57+ capreq_snprintf_s0(cap));
58+ promote = 1;
59+ }
60+
61+ if (!capreq_has_epoch(cap)) {
62+ promote_epoch_warn(1, "cap", capreq_snprintf_s(cap),
63+ capreq_snprintf_s0(req));
64+ promote = 1;
65+ }
66+ }
67+
68+ if (promote) {
69 cmprc = 0;
70
71 } else {
72@@ -744,10 +767,13 @@
73 }
74 evr = 1;
75
76- } else if (capreq_epoch(req) > 0) { /* always promote cap's epoch */
77+ }
78+#if 0 /* disabled autopromotion */
79+ else if (capreq_epoch(req) > 0) { /* always promote cap's epoch */
80 cmprc = 0;
81 evr = 1;
82 }
83+#endif
84
85 #if 0
86 if (capreq_has_epoch(req)) {
87@@ -799,11 +825,21 @@
88 if (promote_epoch == -1)
89 promote_epoch = poldek_conf_promote_epoch;
90
91- if (pkg->epoch) {
92+ if (pkg->epoch || capreq_has_epoch(req)) {
93+ int promote = 0;
94 if (!capreq_has_epoch(req) && promote_epoch) {
95- if (verbose > 1)
96- logn(LOGWARN, "req '%s' needs an epoch (assuming same epoch as %s)\n",
97- capreq_snprintf_s(req), pkg_snprintf_epoch_s(pkg));
98+ promote_epoch_warn(1, "req", capreq_snprintf_s(req),
99+ pkg_snprintf_epoch_s(pkg));
100+ promote = 1;
101+ }
102+
103+ if (!pkg->epoch && capreq_epoch(req) > 0 && promote_epoch) {
104+ promote_epoch_warn(1, "package", pkg_snprintf_epoch_s(pkg),
105+ capreq_snprintf_s(req));
106+ promote = 1;
107+ }
108+
109+ if (promote) {
110 cmprc = 0;
111
112 } else {
113@@ -813,11 +849,13 @@
114 }
115 evr = 1;
116
117- } else if (capreq_epoch(req) > 0) { /* always promote package's epoch */
118+ }
119+#if 0 /* disabled autopromotion */
120+ else if (capreq_epoch(req) > 0) { /* always promote package's epoch */
121 cmprc = 0;
122 evr = 1;
123 }
124-
125+#endif
126
127 if (capreq_has_ver(req)) {
128 cmprc = rpmvercmp(pkg->ver, capreq_ver(req));
129@@ -885,8 +923,8 @@
130
131 cap = n_array_nth(pkg->caps, n);
132 if (cap_match_req(cap, req, strict)) {
133- DBGMSG("chk%d (%s-%s-%s) -> match (%d)\n", n, capreq_name(cap),
134- capreq_ver(cap), capreq_rel(cap), strict);
135+ DBGMSG("chk%d %s -> match (strict %d)\n", n,
136+ capreq_snprintf_s(cap), strict);
137 return 1;
138 }
139 n++;
140@@ -896,21 +934,19 @@
141
142 cap = n_array_nth(pkg->caps, n);
143 if (strcmp(capreq_name(cap), capreq_name(req)) != 0) {
144- DBGMSG("chk%d %s-%s-%s -> NOT match IRET\n", i,
145- capreq_name(cap), capreq_ver(cap),
146- capreq_rel(cap));
147+ DBGMSG("chk%d %s -> NOT match IRET\n", i,
148+ capreq_snprintf_s(cap));
149 return 0;
150 }
151
152
153 if (cap_match_req(cap, req, strict)) {
154- DBGMSG("chk %s-%s-%s -> match\n", capreq_name(cap),
155- capreq_ver(cap), capreq_rel(cap));
156+ DBGMSG("chk%d %s -> match (strict %d)\n", i,
157+ capreq_snprintf_s(cap), strict);
158 return 1;
159 } else {
160- DBGMSG("chk%d %s-%s-%s -> NOT match\n", i,
161- capreq_name(cap), capreq_ver(cap),
162- capreq_rel(cap));
163+ DBGMSG("chk%d %s -> match (strict %d)\n", i,
164+ capreq_snprintf_s(cap), strict);
165 }
166 }
167 DBGMSG("NONE\n");
168@@ -1020,7 +1056,7 @@
169 cnfl = n_array_nth(pkg->cnfls, n);
170
171 if (cnfl_is_obsl(cnfl) && pkg_match_req(opkg, cnfl, 1)) {
172- DBGMSG("chk%d (%s-%s-%s) -> match\n", n,
173+ DBGMSG("chk%d %s -> match\n", n,
174 capreq_snprintf_s(cnfl));
175 return 1;
176 }
177@@ -1034,17 +1070,17 @@
178 continue;
179
180 if (strcmp(capreq_name(cnfl), pkg->name) != 0) {
181- DBGMSG("chk%d %s-%s-%s -> NOT match IRET\n", i,
182+ DBGMSG("chk%d %s -> NOT match IRET\n", i,
183 capreq_snprintf_s(cnfl));
184 return 0;
185 }
186
187
188 if (pkg_match_req(opkg, cnfl, 1)) {
189- DBGMSG("chk %s-%s-%s -> match\n", capreq_snprintf_s(cnfl));
190+ DBGMSG("chk %s -> match\n", capreq_snprintf_s(cnfl));
191 return 1;
192 } else {
193- DBGMSG("chk%d %s-%s-%s -> NOT match\n", i,
194+ DBGMSG("chk%d %s -> NOT match\n", i,
195 capreq_snprintf_s(cnfl));
196 }
197 }
This page took 0.384125 seconds and 4 git commands to generate.