]> git.pld-linux.org Git - packages/poldek.git/blame - poldek-distver.patch
- bconded distver patch
[packages/poldek.git] / poldek-distver.patch
CommitLineData
2d9209ac
MM
1--- poldek-0.18.6.orig/./shell/shell.c 2004-09-07 11:47:47.000000000 +0000
2+++ poldek-0.18.6/./shell/shell.c 2004-09-07 11:15:33.000000000 +0000
3@@ -997,7 +1013,7 @@
4 return 0;
5
6 if (compare_ver == 0)
7- *cmprc = pkg_cmp_evr(lshpkg->pkg, shpkg->pkg);
8+ *cmprc = pkg_cmp_dist_evr(lshpkg->pkg, shpkg->pkg);
9 else
10 *cmprc = pkg_cmp_ver(lshpkg->pkg, shpkg->pkg);
11
12--- poldek-0.18.6.orig/./pkg.c 2004-05-05 16:56:43.000000000 +0000
13+++ poldek-0.18.6/./pkg.c 2004-09-07 00:08:12.000000000 +0000
14@@ -49,13 +49,13 @@
15 struct pkg *pkg_new(const char *name, int32_t epoch,
16 const char *version, const char *release,
17 const char *arch, const char *os,
18- const char *fn,
19+ const char *fn, const char *dist,
20 uint32_t size, uint32_t fsize,
21 uint32_t btime)
22 {
23 struct pkg *pkg;
24 int name_len = 0, version_len = 0, release_len = 0,
25- arch_len = 0, os_len = 0, fn_len = 0;
26+ arch_len = 0, os_len = 0, fn_len = 0, dist_len = 0;
27 char *buf;
28 int len;
29
30@@ -85,6 +85,11 @@
31 len += os_len + 1;
32 }
33
34+ if(dist) {
35+ dist_len = strlen(dist);
36+ len += dist_len + 1;
37+ }
38+
39 if (fn && arch) {
40 char pkg_fn[1024];
41
42@@ -141,7 +146,15 @@
43 buf += os_len;
44 *buf++ = '\0';
45 }
46
47+ pkg->dist=NULL;
48+ if(dist) {
49+ pkg->dist = buf;
50+ memcpy(buf, dist, dist_len);
51+ buf += dist_len;
52+ *buf++ = '\0';
53+ }
54+
55 pkg->fn = NULL;
56 if (fn) {
57 pkg->fn = buf;
58@@ -248,6 +261,7 @@
59 struct pkg *pkg;
60 uint32_t *epoch, *size, *btime;
61 char *name, *version, *release, *arch = NULL, *os = NULL;
62+ char *dist = NULL;
63 int type;
64
65 headerNVR(h, (void*)&name, (void*)&version, (void*)&release);
00af45ce 66@@ -267,6 +281,13 @@
2d9209ac
MM
67 if (type != RPM_STRING_TYPE)
68 arch = NULL;
69
70+ if (!headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&dist, NULL)) {
00af45ce 71+ dist = NULL;
2d9209ac
MM
72+ }
73+
74+ if (type != RPM_STRING_TYPE)
75+ dist = NULL;
76+
77 if (!headerGetEntry(h, RPMTAG_OS, &type, (void *)&os, NULL)) {
78 if (verbose > 1)
79 logn(LOGWARN, _("%s: missing OS tag"), fname);
80@@ -282,7 +304,7 @@
81 btime = NULL;
82
83 pkg = pkg_new(name, epoch ? *epoch : 0, version, release, arch, os,
84- fname ? n_basenam(fname) : NULL,
85+ fname ? n_basenam(fname) : NULL, dist,
86 size ? *size : 0, fsize, btime ? *btime : 0);
87
88 if (pkg == NULL)
89@@ -444,6 +475,19 @@
90 return pkg_cmp_ver(p1, p2);
91 }
92
93+int pkg_cmp_dist_evr(const struct pkg *p1, const struct pkg *p2)
94+{
95+ int rc;
96+
97+ if(p1->dist && p2->dist)
98+ {
99+ rc = rpmdistcmp(p1->dist, p2->dist);
100+ if(rc != 0)
101+ return rc;
102+ }
103+
104+ return pkg_cmp_evr(p1, p2);
105+}
106
107 int pkg_cmp_evr(const struct pkg *p1, const struct pkg *p2)
108 {
109@@ -487,6 +531,15 @@
110 //return rc;
111 }
112
113+int pkg_cmp_name_dist_evr_rev(const struct pkg *p1, const struct pkg *p2)
114+{
115+ register int rc;
116+
117+ if ((rc = pkg_cmp_name(p1, p2)))
118+ return rc;
119+
120+ return -pkg_cmp_dist_evr(p1, p2);
121+}
122
123 int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2)
124 {
125@@ -612,6 +665,15 @@
126 return pkg_cmp_name_evr_rev(p1, p2);
127 }
128
129+int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2)
130+{
131+ register int cmprc = 0;
132+
133+ if ((cmprc = p1->pri - p2->pri))
134+ return cmprc;
135+
136+ return pkg_cmp_name_dist_evr_rev(p1, p2);
137+}
138
139 int pkg_cmp_btime(struct pkg *p1, struct pkg *p2)
140 {
4d355c1b
MM
141@@ -1406,7 +1406,7 @@
142 tn_array *arr;
2d9209ac 143
4d355c1b
MM
144 arr = n_array_new(size, (tn_fn_free)pkg_free,
145- (tn_fn_cmp)pkg_cmp_name_evr_rev);
146+ (tn_fn_cmp)pkg_cmp_name_dist_evr_rev);
147 n_array_ctl(arr, TN_ARRAY_AUTOSORTED);
148 return arr;
149 }
2d9209ac
MM
150--- poldek-0.18.6.orig/./usrset.c 2004-09-07 11:47:47.000000000 +0000
151+++ poldek-0.18.6/./usrset.c 2004-09-02 23:30:43.000000000 +0000
152@@ -185,7 +185,7 @@
153 release = "";
154
155 pdef->pkg = pkg_new(name, epoch, version, release, NULL, NULL, NULL,
156- 0, 0, 0);
157+ NULL, 0, 0, 0);
158 }
159
160 if (virtname)
161--- poldek-0.18.6.orig/./test_match.c 2004-05-05 16:57:09.000000000 +0000
162+++ poldek-0.18.6/./test_match.c 2004-09-02 23:32:58.000000000 +0000
163@@ -49,7 +49,7 @@
164 struct capreq *cap;
165
166 pkg = pkg_new("poldek", epoch, versions[i], relases[j],
167- NULL, NULL, NULL, 0, 0, 0);
168+ NULL, NULL, NULL, NULL, 0, 0, 0);
169 cap = capreq_new("poldek", epoch, versions[i++], relases[j++],
170 REL_EQ, 0);
171 k = 0;
172@@ -83,7 +83,7 @@
173 struct capreq *req, *cap;
174 int rc;
175
176- pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, 0, 0, 0);
177+ pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, NULL, 0, 0, 0);
178 cap = capreq_new("poldek", epoch, ver, rel, REL_EQ, 0);
179
180 req = capreq_new_evr("poldek", n_strdup(evr), relation, 0);
181--- poldek-0.18.6.orig/./pkgdir.c 2004-05-06 07:57:31.000000000 +0000
182+++ poldek-0.18.6/./pkgdir.c 2004-09-07 10:45:51.000000000 +0000
183@@ -69,6 +69,7 @@
184 #define PKGT_HAS_BTIME (1 << 11)
185 #define PKGT_HAS_GROUPID (1 << 12)
186 #define PKGT_HAS_FN (1 << 13)
187+#define PKGT_HAS_DIST (1 << 14)
188
189 struct pkgtags_s {
190 unsigned flags;
191@@ -77,6 +78,7 @@
192 char arch[64];
193 char os[64];
194 char fn[1024];
195+ char dist[64];
196 uint32_t size;
197 uint32_t fsize;
198 uint32_t btime;
199@@ -1093,6 +1095,7 @@
200 case 'A':
201 case 'O':
202 case 'n':
203+ case 'D':
204 if (!add2pkgtags(&pkgt, *line, val, pkgdir->path, offs)) {
205 nerr++;
206 goto l_end;
207@@ -1320,6 +1323,16 @@
208 }
209 break;
210
211+ case 'D':
212+ if (pkgt->flags & PKGT_HAS_DIST) {
213+ logn(LOGERR, errmg_double_tag, pathname, offs, tag);
214+ err++;
215+ } else {
216+ memcpy(pkgt->dist, value, sizeof(pkgt->dist) - 1);
217+ pkgt->dist[ sizeof(pkgt->dist) - 1 ] = '\0';
218+ pkgt->flags |= PKGT_HAS_DIST;
219+ }
220+ break;
221
222 case 'S':
223 if (pkgt->flags & PKGT_HAS_SIZE) {
224@@ -1393,7 +1406,7 @@
225 struct pkg *pkg_new_from_tags(struct pkgtags_s *pkgt)
226 {
227 struct pkg *pkg;
228- char *version, *release, *arch = NULL, *os = NULL, *fn = NULL;
229+ char *version, *release, *arch = NULL, *os = NULL, *fn = NULL, *dist = NULL;
230 int32_t epoch;
231
232 if (!(pkgt->flags & (PKGT_HAS_NAME | PKGT_HAS_EVR)))
233@@ -1407,6 +1420,9 @@
234
235 if (pkgt->flags & PKGT_HAS_FN)
236 fn = pkgt->fn;
237+
238+ if (pkgt->flags & PKGT_HAS_DIST)
239+ dist = pkgt->dist;
240
241 if (*pkgt->name == '\0' || *pkgt->evr == '\0' || *pkgt->arch == '\0')
242 return NULL;
243@@ -1419,7 +1435,7 @@
244 return NULL;
245 }
246
247- pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn,
248+ pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn, dist,
249 pkgt->size, pkgt->fsize, pkgt->btime);
250 pkg->groupid = pkgt->groupid;
251
252@@ -1488,7 +1504,7 @@
253
254 if (*p && parse_nevr(p, &name, &epoch, &ver, &rel)) {
255 struct pkg *pkg = pkg_new(name, epoch, ver, rel, NULL, NULL, NULL,
256- 0, 0, 0);
257+ NULL, 0, 0, 0);
258 n_array_push(pkgs, pkg);
259 }
260 }
261--- poldek-0.18.6.orig/./pkgset-install.c 2004-09-07 11:47:47.000000000 +0000
262+++ poldek-0.18.6/./pkgset-install.c 2004-09-07 12:05:41.000000000 +0000
263@@ -1998,7 +1998,7 @@
264 if (is_installed == 0)
265 n_array_push(iinf->uninstalled_pkgs,
266 pkg_new(pkg->name, pkg->epoch, pkg->ver, pkg->rel,
267- pkg->arch, pkg->os, NULL,
268+ pkg->arch, pkg->os, NULL, NULL,
269 pkg->size, pkg->fsize,
270 pkg->btime));
271 }
2d9209ac
MM
272@@ -2189,10 +2189,14 @@
273 struct upgrade_s *upg = upgptr;
274 struct pkg *pkg, tmpkg;
275 uint32_t *epoch;
276- int i, cmprc;
277+ int i, cmprc, type, count;
278
279
280 recno = recno;
281+
282+ if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist,
283+ &count) && type == RPM_STRING_TYPE && count == 1))
284+ tmpkg.dist=NULL;
285
286 if (!rpmhdr_nevr(h, &tmpkg.name, &epoch, &tmpkg.ver, &tmpkg.rel)) {
287 logn(LOGERR, _("db package header corrupted (!?)"));
288@@ -2208,7 +2212,7 @@
289 }
290
291 pkg = n_array_nth(upg->avpkgs, i);
292- cmprc = pkg_cmp_evr(pkg, &tmpkg);
293+ cmprc = pkg_cmp_dist_evr(pkg, &tmpkg);
294 if (verbose) {
295 if (cmprc == 0)
296 msg(3, "%-32s up to date\n", pkg_snprintf_s(&tmpkg));
2d9209ac
MM
297--- poldek-0.18.6.orig/./rpm.c 2004-09-07 11:47:47.000000000 +0000
298+++ poldek-0.18.6/./rpm.c 2004-09-02 23:53:05.000000000 +0000
299@@ -497,6 +497,36 @@
300 return n;
301 }
302
303+static
304+int hdr_pkg_cmp_dist_evr(Header h, const struct pkg *pkg)
305+{
306+ int rc;
307+ struct pkg tmpkg;
308+ uint32_t *epoch;
309+ int count;
310+ int type;
311+
312+ if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist,
313+ &count) && type == RPM_STRING_TYPE && count == 1))
314+ tmpkg.dist=NULL;
315+
316+ headerNVR(h, (void*)&tmpkg.name, (void*)&tmpkg.ver,
317+ (void*)&tmpkg.rel);
318+
319+ if (tmpkg.name == NULL || tmpkg.ver == NULL || tmpkg.rel == NULL) {
320+ logn(LOGERR, "headerNVR() failed");
321+ return 0;
322+ }
323+
324+ if (headerGetEntry(h, RPMTAG_EPOCH, &rc, (void *)&epoch, NULL))
325+ tmpkg.epoch = *epoch;
326+ else
327+ tmpkg.epoch = 0;
328+
329+ rc = pkg_cmp_dist_evr(&tmpkg, pkg);
330+
331+ return rc;
332+}
333
334 static
335 int hdr_pkg_cmp_evr(Header h, const struct pkg *pkg)
336@@ -544,7 +574,7 @@
337
338 } else {
339 if (cmprc)
340- *cmprc = -hdr_pkg_cmp_evr(dbrec->h, pkg);
341+ *cmprc = -hdr_pkg_cmp_dist_evr(dbrec->h, pkg);
342
343 if (dbrecp) {
344 dbrecp->recno = dbrec->recno;
345--- poldek-0.18.6.orig/./pkg.h 2004-03-22 17:31:51.000000000 +0000
346+++ poldek-0.18.6/./pkg.h 2004-09-06 22:43:19.000000000 +0000
347@@ -107,6 +107,7 @@
348 char *arch;
349 char *os;
350 char *fn;
351+ char *dist;
352
353 tn_array *caps; /* capabilities */
354 tn_array *reqs; /* requirements */
355@@ -144,7 +145,7 @@
356 struct pkg *pkg_new(const char *name, int32_t epoch,
357 const char *version, const char *release,
358 const char *arch, const char *os,
359- const char *fn,
360+ const char *fn, const char *dist,
361 uint32_t size, uint32_t fsize,
362 uint32_t btime);
363
364@@ -181,6 +182,7 @@
365 int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2);
366
367 int pkg_cmp_pri(struct pkg *p1, struct pkg *p2);
368+int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2);
369
370 int pkg_cmp_btime(struct pkg *p1, struct pkg *p2);
371 int pkg_cmp_btime_rev(struct pkg *p1, struct pkg *p2);
372--- poldek-0.18.6.orig/./pkgset-order.c 2004-09-07 11:47:47.000000000 +0000
373+++ poldek-0.18.6/./pkgset-order.c 2004-09-06 22:46:32.000000000 +0000
374@@ -235,7 +235,7 @@
375 tn_array *ordered = NULL;
376 int nloops, verbose_;
377
378- n_array_isort_ex(pkgs, (tn_fn_cmp)pkg_cmp_pri);
4d355c1b 379+ n_array_isort_ex(pkgs, (tn_fn_cmp)pkg_cmp_pri);
2d9209ac
MM
380
381 verbose_ = verbose;
382 verbose = -10;
383--- poldek-0.18.6.orig/./pkgdir_save.c 2004-05-05 16:56:43.000000000 +0000
384+++ poldek-0.18.6/./pkgdir_save.c 2004-09-07 10:30:15.000000000 +0000
385@@ -170,6 +170,9 @@
386
387 if (pkg->fn)
388 fprintf(stream, "n: %s\n", pkg->fn);
389+
390+ if (pkg->dist)
391+ fprintf(stream, "D: %s\n", pkg->dist);
392
393 fprintf(stream, "F:\n");
394 store_pkg_fields(stream, pkg->size, pkg->fsize, pkg->btime, pkg->groupid);
4d355c1b 395
This page took 0.081954 seconds and 4 git commands to generate.