]> git.pld-linux.org Git - packages/poldek.git/blame - poldek-distver.patch
- upstream fixes
[packages/poldek.git] / poldek-distver.patch
CommitLineData
601fef24
MM
1--- poldek-0.18.6.orig/conf.c 2004-09-15 16:03:02.000000000 +0000
2+++ poldek-0.18.6/conf.c 2004-09-15 18:56:34.000000000 +0000
3@@ -83,6 +83,7 @@
4 { "ftp_sysuser_as_anon_passwd", TYPE_BOOL , { 0 } },
5 { "vfile_external_compress", TYPE_BOOL, { 0 } },
6 { "promoteepoch", TYPE_BOOL, { 0 } },
7+ { "nodistver", TYPE_BOOL, { 0 } },
8 { NULL, 0, { 0 } },
9 };
10
11--- poldek-0.18.6.orig/main.c 2004-09-15 16:03:02.000000000 +0000
12+++ poldek-0.18.6/main.c 2004-09-15 19:32:03.000000000 +0000
13@@ -247,6 +247,7 @@
14 #define OPT_ASK 2006
15 #define OPT_NOASK 2007
16 #define OPT_RPMOPT 2008
17+#define OPT_NODISTVER 2009
18 #define OPT_MERGE 2101
19 #define OPT_SW_V016 (1 << 0)
20 #define OPT_SW_NOASK (1 << 1)
21@@ -459,6 +460,8 @@
22
23 {"conf", OPT_CONF, "FILE", 0, N_("Read configuration from FILE"), 500 },
24 {"noconf", OPT_NOCONF, 0, 0, N_("Do not read configuration"), 500 },
25+{"nodistver", OPT_NODISTVER, 0, 0, N_("Do not check distribution versions"),
26+ 500 },
27
28 {"version", OPT_BANNER, 0, 0, N_("Display program version information and exit"), 500 },
29 {"log", OPT_LOG, "FILE", 0, N_("Log program messages to FILE"), 500 },
30@@ -850,6 +853,12 @@
31 n_array_push(argsp->inst.rpmacros, arg);
32 break;
33
34+ case OPT_NODISTVER:
35+ n_assert(argsp->inst.rpmacros);
36+ n_array_push(argsp->inst.rpmacros,
37+ n_strdup("_dont_compare_distversion 1"));
38+ no_distver=1;
39+ break;
40
41 case OPT_INST_FETCH:
42 if (arg)
43@@ -1385,6 +1394,15 @@
44 if (conf_get_bool(htcnf, "particle_install", 1))
45 args.inst.flags |= INSTS_PARTICLE;
46
47+ if (no_distver == 0) { /* no --nodistver specified */
48+ if (conf_get_bool(htcnf, "nodistver", 0))
49+ {
50+ n_assert(args.inst.rpmacros);
51+ n_array_push(args.inst.rpmacros,
52+ n_strdup("_dont_compare_distversion 1"));
53+ no_distver = 1;
54+ }
55+ }
2d9209ac 56
601fef24
MM
57 if ((args.inst.flags & INSTS_GREEDY) == 0) { /* no --greedy specified */
58 if (conf_get_bool(htcnf, "greedy", 1))
59--- poldek-0.18.6.orig/misc.h 2004-06-28 20:19:28.000000000 +0000
60+++ poldek-0.18.6/misc.h 2004-09-15 17:09:29.000000000 +0000
61@@ -11,6 +11,8 @@
62 #include <vfile/p_open.h>
63 #include <trurl/narray.h>
64
65+extern int no_distver;
66+
67 const char *ngettext_n_packages_fmt(int n);
68 void translate_argp_options(struct argp_option *arr);
69
70--- poldek-0.18.6.orig/pkg.c 2004-09-15 16:03:02.000000000 +0000
71+++ poldek-0.18.6/pkg.c 2004-09-15 17:19:00.000000000 +0000
2d9209ac
MM
72@@ -49,13 +49,13 @@
73 struct pkg *pkg_new(const char *name, int32_t epoch,
74 const char *version, const char *release,
75 const char *arch, const char *os,
76- const char *fn,
77+ const char *fn, const char *dist,
78 uint32_t size, uint32_t fsize,
79 uint32_t btime)
80 {
81 struct pkg *pkg;
82 int name_len = 0, version_len = 0, release_len = 0,
83- arch_len = 0, os_len = 0, fn_len = 0;
84+ arch_len = 0, os_len = 0, fn_len = 0, dist_len = 0;
85 char *buf;
86 int len;
87
88@@ -85,6 +85,11 @@
89 len += os_len + 1;
90 }
91
92+ if(dist) {
93+ dist_len = strlen(dist);
94+ len += dist_len + 1;
95+ }
96+
97 if (fn && arch) {
98 char pkg_fn[1024];
99
601fef24 100@@ -142,6 +147,14 @@
2d9209ac
MM
101 *buf++ = '\0';
102 }
103
104+ pkg->dist=NULL;
105+ if(dist) {
106+ pkg->dist = buf;
107+ memcpy(buf, dist, dist_len);
108+ buf += dist_len;
109+ *buf++ = '\0';
110+ }
111+
112 pkg->fn = NULL;
113 if (fn) {
114 pkg->fn = buf;
115@@ -248,6 +261,7 @@
116 struct pkg *pkg;
117 uint32_t *epoch, *size, *btime;
118 char *name, *version, *release, *arch = NULL, *os = NULL;
119+ char *dist = NULL;
120 int type;
121
122 headerNVR(h, (void*)&name, (void*)&version, (void*)&release);
00af45ce 123@@ -267,6 +281,13 @@
2d9209ac
MM
124 if (type != RPM_STRING_TYPE)
125 arch = NULL;
126
127+ if (!headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&dist, NULL)) {
00af45ce 128+ dist = NULL;
2d9209ac
MM
129+ }
130+
131+ if (type != RPM_STRING_TYPE)
132+ dist = NULL;
133+
134 if (!headerGetEntry(h, RPMTAG_OS, &type, (void *)&os, NULL)) {
135 if (verbose > 1)
136 logn(LOGWARN, _("%s: missing OS tag"), fname);
601fef24 137@@ -282,7 +303,7 @@
2d9209ac
MM
138 btime = NULL;
139
140 pkg = pkg_new(name, epoch ? *epoch : 0, version, release, arch, os,
141- fname ? n_basenam(fname) : NULL,
142+ fname ? n_basenam(fname) : NULL, dist,
143 size ? *size : 0, fsize, btime ? *btime : 0);
144
145 if (pkg == NULL)
601fef24 146@@ -444,6 +465,19 @@
2d9209ac
MM
147 return pkg_cmp_ver(p1, p2);
148 }
149
150+int pkg_cmp_dist_evr(const struct pkg *p1, const struct pkg *p2)
151+{
152+ int rc;
153+
154+ if(p1->dist && p2->dist)
155+ {
156+ rc = rpmdistcmp(p1->dist, p2->dist);
157+ if(rc != 0)
158+ return rc;
159+ }
160+
161+ return pkg_cmp_evr(p1, p2);
162+}
163
164 int pkg_cmp_evr(const struct pkg *p1, const struct pkg *p2)
165 {
601fef24 166@@ -487,6 +521,15 @@
2d9209ac
MM
167 //return rc;
168 }
169
170+int pkg_cmp_name_dist_evr_rev(const struct pkg *p1, const struct pkg *p2)
171+{
172+ register int rc;
173+
174+ if ((rc = pkg_cmp_name(p1, p2)))
175+ return rc;
176+
177+ return -pkg_cmp_dist_evr(p1, p2);
178+}
179
180 int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2)
181 {
601fef24 182@@ -612,6 +655,15 @@
2d9209ac
MM
183 return pkg_cmp_name_evr_rev(p1, p2);
184 }
185
186+int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2)
187+{
188+ register int cmprc = 0;
189+
190+ if ((cmprc = p1->pri - p2->pri))
191+ return cmprc;
192+
193+ return pkg_cmp_name_dist_evr_rev(p1, p2);
194+}
195
196 int pkg_cmp_btime(struct pkg *p1, struct pkg *p2)
197 {
601fef24
MM
198@@ -1352,8 +1404,12 @@
199 {
4d355c1b 200 tn_array *arr;
2d9209ac 201
601fef24
MM
202- arr = n_array_new(size, (tn_fn_free)pkg_free,
203+ if(no_distver)
204+ arr = n_array_new(size, (tn_fn_free)pkg_free,
205 (tn_fn_cmp)pkg_cmp_name_evr_rev);
206+ else
207+ arr = n_array_new(size, (tn_fn_free)pkg_free,
4d355c1b
MM
208+ (tn_fn_cmp)pkg_cmp_name_dist_evr_rev);
209 n_array_ctl(arr, TN_ARRAY_AUTOSORTED);
210 return arr;
211 }
601fef24
MM
212--- poldek-0.18.6.orig/pkg.h 2004-03-22 17:31:51.000000000 +0000
213+++ poldek-0.18.6/pkg.h 2004-09-15 16:11:48.000000000 +0000
214@@ -107,6 +107,7 @@
215 char *arch;
216 char *os;
217 char *fn;
218+ char *dist;
2d9209ac 219
601fef24
MM
220 tn_array *caps; /* capabilities */
221 tn_array *reqs; /* requirements */
222@@ -144,7 +145,7 @@
223 struct pkg *pkg_new(const char *name, int32_t epoch,
224 const char *version, const char *release,
225 const char *arch, const char *os,
226- const char *fn,
227+ const char *fn, const char *dist,
228 uint32_t size, uint32_t fsize,
229 uint32_t btime);
2d9209ac 230
601fef24
MM
231@@ -181,6 +182,7 @@
232 int pkg_cmp_name_evr_rev_srcpri(const struct pkg *p1, const struct pkg *p2);
233
234 int pkg_cmp_pri(struct pkg *p1, struct pkg *p2);
235+int pkg_cmp_dist_pri(struct pkg *p1, struct pkg *p2);
236
237 int pkg_cmp_btime(struct pkg *p1, struct pkg *p2);
238 int pkg_cmp_btime_rev(struct pkg *p1, struct pkg *p2);
239--- poldek-0.18.6.orig/pkgdir.c 2004-05-06 07:57:31.000000000 +0000
240+++ poldek-0.18.6/pkgdir.c 2004-09-15 17:52:26.000000000 +0000
241@@ -55,6 +55,7 @@
242
243 int pkgdir_v016compat = 0; /* public */
244 int pkgdir_redhat9_zlib_in_rpm_workaround = 0;
245+int no_distver = 0;
246
247 #define PKGT_HAS_NAME (1 << 0)
248 #define PKGT_HAS_EVR (1 << 1)
249@@ -69,6 +70,7 @@
2d9209ac
MM
250 #define PKGT_HAS_BTIME (1 << 11)
251 #define PKGT_HAS_GROUPID (1 << 12)
252 #define PKGT_HAS_FN (1 << 13)
253+#define PKGT_HAS_DIST (1 << 14)
254
255 struct pkgtags_s {
256 unsigned flags;
601fef24 257@@ -77,6 +79,7 @@
2d9209ac
MM
258 char arch[64];
259 char os[64];
260 char fn[1024];
261+ char dist[64];
262 uint32_t size;
263 uint32_t fsize;
264 uint32_t btime;
601fef24 265@@ -1093,6 +1096,7 @@
2d9209ac
MM
266 case 'A':
267 case 'O':
268 case 'n':
269+ case 'D':
270 if (!add2pkgtags(&pkgt, *line, val, pkgdir->path, offs)) {
271 nerr++;
272 goto l_end;
601fef24 273@@ -1320,6 +1324,16 @@
2d9209ac
MM
274 }
275 break;
276
277+ case 'D':
278+ if (pkgt->flags & PKGT_HAS_DIST) {
279+ logn(LOGERR, errmg_double_tag, pathname, offs, tag);
280+ err++;
281+ } else {
282+ memcpy(pkgt->dist, value, sizeof(pkgt->dist) - 1);
283+ pkgt->dist[ sizeof(pkgt->dist) - 1 ] = '\0';
284+ pkgt->flags |= PKGT_HAS_DIST;
285+ }
286+ break;
287
288 case 'S':
289 if (pkgt->flags & PKGT_HAS_SIZE) {
601fef24 290@@ -1393,7 +1407,7 @@
2d9209ac
MM
291 struct pkg *pkg_new_from_tags(struct pkgtags_s *pkgt)
292 {
293 struct pkg *pkg;
294- char *version, *release, *arch = NULL, *os = NULL, *fn = NULL;
295+ char *version, *release, *arch = NULL, *os = NULL, *fn = NULL, *dist = NULL;
296 int32_t epoch;
297
298 if (!(pkgt->flags & (PKGT_HAS_NAME | PKGT_HAS_EVR)))
601fef24 299@@ -1407,6 +1421,9 @@
2d9209ac
MM
300
301 if (pkgt->flags & PKGT_HAS_FN)
302 fn = pkgt->fn;
303+
304+ if (pkgt->flags & PKGT_HAS_DIST)
305+ dist = pkgt->dist;
306
307 if (*pkgt->name == '\0' || *pkgt->evr == '\0' || *pkgt->arch == '\0')
308 return NULL;
601fef24 309@@ -1419,7 +1436,7 @@
2d9209ac
MM
310 return NULL;
311 }
312
313- pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn,
314+ pkg = pkg_new(pkgt->name, epoch, version, release, arch, os, fn, dist,
315 pkgt->size, pkgt->fsize, pkgt->btime);
316 pkg->groupid = pkgt->groupid;
317
601fef24 318@@ -1488,7 +1505,7 @@
2d9209ac
MM
319
320 if (*p && parse_nevr(p, &name, &epoch, &ver, &rel)) {
321 struct pkg *pkg = pkg_new(name, epoch, ver, rel, NULL, NULL, NULL,
322- 0, 0, 0);
323+ NULL, 0, 0, 0);
324 n_array_push(pkgs, pkg);
325 }
326 }
601fef24
MM
327--- poldek-0.18.6.orig/pkgdir_save.c 2004-05-05 16:56:43.000000000 +0000
328+++ poldek-0.18.6/pkgdir_save.c 2004-09-15 19:28:21.000000000 +0000
329@@ -170,6 +170,9 @@
330
331 if (pkg->fn)
332 fprintf(stream, "n: %s\n", pkg->fn);
333+
334+ if (pkg->dist && !no_distver)
335+ fprintf(stream, "D: %s\n", pkg->dist);
336
337 fprintf(stream, "F:\n");
338 store_pkg_fields(stream, pkg->size, pkg->fsize, pkg->btime, pkg->groupid);
339--- poldek-0.18.6.orig/pkgset-install.c 2004-09-15 16:03:02.000000000 +0000
340+++ poldek-0.18.6/pkgset-install.c 2004-09-15 17:20:34.000000000 +0000
341@@ -1995,7 +1995,7 @@
2d9209ac
MM
342 if (is_installed == 0)
343 n_array_push(iinf->uninstalled_pkgs,
344 pkg_new(pkg->name, pkg->epoch, pkg->ver, pkg->rel,
345- pkg->arch, pkg->os, NULL,
346+ pkg->arch, pkg->os, NULL, NULL,
347 pkg->size, pkg->fsize,
348 pkg->btime));
349 }
601fef24 350@@ -2186,10 +2186,14 @@
2d9209ac
MM
351 struct upgrade_s *upg = upgptr;
352 struct pkg *pkg, tmpkg;
353 uint32_t *epoch;
354- int i, cmprc;
355+ int i, cmprc, type, count;
356
357
358 recno = recno;
359+
360+ if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist,
361+ &count) && type == RPM_STRING_TYPE && count == 1))
362+ tmpkg.dist=NULL;
363
364 if (!rpmhdr_nevr(h, &tmpkg.name, &epoch, &tmpkg.ver, &tmpkg.rel)) {
365 logn(LOGERR, _("db package header corrupted (!?)"));
601fef24 366@@ -2205,7 +2209,10 @@
2d9209ac
MM
367 }
368
369 pkg = n_array_nth(upg->avpkgs, i);
370- cmprc = pkg_cmp_evr(pkg, &tmpkg);
601fef24
MM
371+ if(no_distver)
372+ cmprc = pkg_cmp_evr(pkg, &tmpkg);
373+ else
374+ cmprc = pkg_cmp_dist_evr(pkg, &tmpkg);
2d9209ac
MM
375 if (verbose) {
376 if (cmprc == 0)
377 msg(3, "%-32s up to date\n", pkg_snprintf_s(&tmpkg));
601fef24
MM
378--- poldek-0.18.6.orig/rpm.c 2004-09-15 16:03:02.000000000 +0000
379+++ poldek-0.18.6/rpm.c 2004-09-15 17:24:02.000000000 +0000
380@@ -519,6 +519,36 @@
2d9209ac
MM
381 return n;
382 }
383
384+static
385+int hdr_pkg_cmp_dist_evr(Header h, const struct pkg *pkg)
386+{
387+ int rc;
388+ struct pkg tmpkg;
389+ uint32_t *epoch;
390+ int count;
391+ int type;
392+
393+ if (!(headerGetEntry(h, RPMTAG_DISTRIBUTION, &type, (void *)&tmpkg.dist,
394+ &count) && type == RPM_STRING_TYPE && count == 1))
395+ tmpkg.dist=NULL;
396+
397+ headerNVR(h, (void*)&tmpkg.name, (void*)&tmpkg.ver,
398+ (void*)&tmpkg.rel);
399+
400+ if (tmpkg.name == NULL || tmpkg.ver == NULL || tmpkg.rel == NULL) {
401+ logn(LOGERR, "headerNVR() failed");
402+ return 0;
403+ }
404+
405+ if (headerGetEntry(h, RPMTAG_EPOCH, &rc, (void *)&epoch, NULL))
406+ tmpkg.epoch = *epoch;
407+ else
408+ tmpkg.epoch = 0;
409+
410+ rc = pkg_cmp_dist_evr(&tmpkg, pkg);
411+
412+ return rc;
413+}
414
415 static
416 int hdr_pkg_cmp_evr(Header h, const struct pkg *pkg)
601fef24 417@@ -566,7 +596,10 @@
2d9209ac
MM
418
419 } else {
420 if (cmprc)
421- *cmprc = -hdr_pkg_cmp_evr(dbrec->h, pkg);
601fef24
MM
422+ if(no_distver)
423+ *cmprc = -hdr_pkg_cmp_evr(dbrec->h, pkg);
424+ else
425+ *cmprc = -hdr_pkg_cmp_dist_evr(dbrec->h, pkg);
2d9209ac
MM
426
427 if (dbrecp) {
428 dbrecp->recno = dbrec->recno;
601fef24
MM
429--- poldek-0.18.6.orig/shell/shell.c 2004-09-15 16:03:02.000000000 +0000
430+++ poldek-0.18.6/shell/shell.c 2004-09-15 17:18:04.000000000 +0000
431@@ -997,7 +997,10 @@
432 return 0;
2d9209ac 433
601fef24
MM
434 if (compare_ver == 0)
435- *cmprc = pkg_cmp_evr(lshpkg->pkg, shpkg->pkg);
436+ if(no_distver)
437+ *cmprc = pkg_cmp_evr(lshpkg->pkg, shpkg->pkg);
438+ else
439+ *cmprc = pkg_cmp_dist_evr(lshpkg->pkg, shpkg->pkg);
440 else
441 *cmprc = pkg_cmp_ver(lshpkg->pkg, shpkg->pkg);
2d9209ac 442
601fef24
MM
443--- poldek-0.18.6.orig/test_match.c 2004-05-05 16:57:09.000000000 +0000
444+++ poldek-0.18.6/test_match.c 2004-09-15 16:11:48.000000000 +0000
445@@ -49,7 +49,7 @@
446 struct capreq *cap;
447
448 pkg = pkg_new("poldek", epoch, versions[i], relases[j],
449- NULL, NULL, NULL, 0, 0, 0);
450+ NULL, NULL, NULL, NULL, 0, 0, 0);
451 cap = capreq_new("poldek", epoch, versions[i++], relases[j++],
452 REL_EQ, 0);
453 k = 0;
454@@ -83,7 +83,7 @@
455 struct capreq *req, *cap;
456 int rc;
2d9209ac 457
601fef24
MM
458- pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, 0, 0, 0);
459+ pkg = pkg_new("poldek", epoch, ver, rel, NULL, NULL, NULL, NULL, 0, 0, 0);
460 cap = capreq_new("poldek", epoch, ver, rel, REL_EQ, 0);
2d9209ac 461
601fef24
MM
462 req = capreq_new_evr("poldek", n_strdup(evr), relation, 0);
463--- poldek-0.18.6.orig/usrset.c 2004-09-15 16:03:02.000000000 +0000
464+++ poldek-0.18.6/usrset.c 2004-09-15 16:11:48.000000000 +0000
465@@ -185,7 +185,7 @@
466 release = "";
467
468 pdef->pkg = pkg_new(name, epoch, version, release, NULL, NULL, NULL,
469- 0, 0, 0);
470+ NULL, 0, 0, 0);
471 }
472
473 if (virtname)
This page took 0.087412 seconds and 4 git commands to generate.