]> git.pld-linux.org Git - packages/apt.git/blob - apt-rpm4.14.patch
- versioned Obsoletes
[packages/apt.git] / apt-rpm4.14.patch
1 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/aptcallback.cc.orig 2022-03-26 15:35:58.278412514 +0100
2 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/aptcallback.cc      2022-03-26 15:36:05.188375079 +0100
3 @@ -23,7 +23,11 @@ static void getPackageData(const Header
4     Data.clear();
5     for (Tag = &copyTags[0]; *Tag != NULL; *Tag++) {
6        sprintf(rTag, "%%{%s}", *Tag);
7 +#if RPM_VERSION < 0x040600
8        char *s = headerSprintf(h, rTag, rpmTagTable, rpmHeaderFormats, NULL);
9 +#else
10 +      char *s = headerFormat(h, rTag, NULL);
11 +#endif
12        Data[*Tag] = s;
13        free(s);
14     }
15 @@ -59,12 +63,20 @@ void * rpmCallback(const void * arg,
16          return NULL;
17        fd = Fopen(filename, "r.ufdio");
18        if (fd)
19 +#if RPM_VERSION >= 0x040600
20 +        fd = fdLink(fd);
21 +#else
22          fd = fdLink(fd, "persist (showProgress)");
23 +#endif
24        return fd;
25        break;
26  
27     case RPMCALLBACK_INST_CLOSE_FILE:
28 +#if RPM_VERSION >= 0x040600
29 +      fd = fdFree(fd);
30 +#else
31        fd = fdFree(fd, "persist (showProgress)");
32 +#endif
33        if (fd) {
34          (void) Fclose(fd);
35          fd = NULL;
36 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.h.orig   2008-01-12 10:45:07.000000000 +0100
37 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.h        2022-03-26 11:39:15.685354565 +0100
38 @@ -62,9 +62,9 @@ class RPMHandler
39     off_t iSize;
40     string ID;
41  
42 -   unsigned int DepOp(int_32 rpmflags);
43 -   bool InternalDep(const char *name, const char *ver, int_32 flag);
44 -   bool PutDep(const char *name, const char *ver, int_32 flags,
45 +   unsigned int DepOp(int32_t rpmflags);
46 +   bool InternalDep(const char *name, const char *ver, int32_t flag);
47 +   bool PutDep(const char *name, const char *ver, int32_t flags,
48                 unsigned int type, vector<Dependency*> &Deps);
49  
50     public:
51 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.cc.orig  2022-03-26 16:00:06.463900352 +0100
52 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmhandler.cc       2022-03-27 08:01:59.956038790 +0200
53 @@ -55,10 +55,10 @@
54  
55  // XXX we'd need to include rpmsq.h but it's not valid C++ in many
56  // existing rpm versions so just declare rpmsqCaught extern.. sigh.
57 -#if 1
58 -extern sigset_t rpmsqCaught;
59 -#else
60 +#if RPM_VERSION >= 0x040600
61  #include <rpm/rpmsq.h>
62 +#else
63 +extern sigset_t rpmsqCaught;
64  #endif
65  
66  #define rpmxxInitIterator(a,b,c,d) rpmtsInitIterator(a,(rpmTag)b,c,d)
67 @@ -68,8 +68,8 @@ extern sigset_t rpmsqCaught;
68  
69  #ifndef RPM_HAVE_DATA_T
70  typedef void * rpm_data_t;
71 -typedef int_32 rpm_count_t;
72 -typedef int_32 rpm_tagtype_t;
73 +typedef int32_t rpm_count_t;
74 +typedef int32_t rpm_tagtype_t;
75  #endif
76  
77  // An attempt to deal with false zero epochs from repomd. With older rpm's we
78 @@ -97,10 +97,10 @@ string RPMHandler::EVR()
79     return evr;
80  } 
81  
82 -unsigned int RPMHandler::DepOp(int_32 rpmflags)
83 +unsigned int RPMHandler::DepOp(int32_t rpmflags)
84  {
85     unsigned int Op = 0;
86 -   int_32 flags = (rpmflags & RPMSENSE_SENSEMASK);
87 +   int32_t flags = (rpmflags & RPMSENSE_SENSEMASK);
88     if (flags == RPMSENSE_ANY) {
89        Op = pkgCache::Dep::NoOp;
90     } else if (flags & RPMSENSE_LESS) {
91 @@ -138,7 +138,7 @@ bool RPMHandler::HasFile(const char *Fil
92     return false;
93  }
94  
95 -bool RPMHandler::InternalDep(const char *name, const char *ver, int_32 flag) 
96 +bool RPMHandler::InternalDep(const char *name, const char *ver, int32_t flag) 
97  {
98     if (strncmp(name, "rpmlib(", strlen("rpmlib(")) == 0) {
99  #if RPM_VERSION >= 0x040100
100 @@ -247,7 +247,7 @@ bool RPMHandler::InternalDep(const char
101     return false; 
102  }
103  
104 -bool RPMHandler::PutDep(const char *name, const char *ver, int_32 flags, 
105 +bool RPMHandler::PutDep(const char *name, const char *ver, int32_t flags, 
106                         unsigned int Type, vector<Dependency*> &Deps)
107  {
108     if (InternalDep(name, ver, flags) == true) {
109 @@ -282,43 +282,57 @@ bool RPMHandler::PutDep(const char *name
110  string RPMHdrHandler::Epoch()
111  {
112     char str[512] = "";
113 +   assert(HeaderP != NULL);
114 +#if RPM_VERSION >= 0x040600
115 +   int32_t epoch = headerGetNumber(HeaderP, RPMTAG_EPOCH);
116 +   snprintf(str, sizeof(str), "%i", epoch);
117 +#else
118     rpm_count_t count;
119     rpm_tagtype_t type;
120     rpm_data_t val;
121 -   int_32 *epoch;
122 -   assert(HeaderP != NULL);
123 +   int32_t *epoch;
124     int rc = headerGetEntry(HeaderP, RPMTAG_EPOCH, &type, &val, &count);
125 -   epoch = (int_32*)val;
126 +   epoch = (int32_t*)val;
127     if (rc == 1 && count > 0) {
128        snprintf(str, sizeof(str), "%i", epoch[0]);
129     }
130 +#endif
131     return string(str);
132  }
133  
134  off_t RPMHdrHandler::GetITag(rpmTag Tag)
135  {
136 +   assert(HeaderP != NULL);
137 +#if RPM_VERSION >= 0x040600
138 +   int32_t num = headerGetNumber(HeaderP, Tag);
139 +   return num;
140 +#else
141     rpm_count_t count;
142     rpm_tagtype_t type;
143     rpm_data_t val;
144 -   int_32 *num;
145 -   assert(HeaderP != NULL);
146 +   int32_t *num;
147     int rc = headerGetEntry(HeaderP, Tag,
148                            &type, &val, &count);
149 -   num = (int_32*)val;
150 +   num = (int32_t*)val;
151     return rc?num[0]:0;
152 +#endif
153  }
154  
155  string RPMHdrHandler::GetSTag(rpmTag Tag)
156  {
157 -   const char *str;
158 +   assert(HeaderP != NULL);
159 +#if RPM_VERSION >= 0x040600
160 +   return string(headerGetString(HeaderP, Tag));
161 +#else
162     rpm_data_t val;
163     rpm_count_t count;
164     rpm_tagtype_t type;
165 -   assert(HeaderP != NULL);
166 +   const char *str;
167     int rc = headerGetEntry(HeaderP, Tag,
168                            &type, &val, &count);
169     str = (const char *)val;
170     return string(rc?str:"");
171 +#endif
172  }
173  
174  
175 @@ -341,7 +355,11 @@ bool RPMHdrHandler::PRCO(unsigned int Ty
176          break;
177  #if RPM_VERSION >= 0x040403
178        case pkgCache::Dep::Suggests:
179 +#if RPM_VERSION >= 0x040600
180 +        deptype = RPMTAG_SUGGESTNAME;
181 +#else
182          deptype = RPMTAG_SUGGESTSNAME;
183 +#endif
184          break;
185  #if 0 // Enhances dep type is not even known to apt, sigh..
186        case pkgCache::Dep::Enhances:
187 @@ -371,7 +371,7 @@ bool RPMHdrHandler::PRCO(unsigned int Ty
188     char **verl = NULL;
189     int *flagl = NULL;
190     int res, type, count;
191 -   int_32 deptag, depver, depflags;
192 +   int32_t deptag, depver, depflags;
193     void *nameval = NULL;
194     void *verval = NULL;
195     void *flagval = NULL;
196 @@ -442,7 +442,7 @@ bool RPMHdrHandler::FileList(vector<stri
197  {
198     const char **names = NULL;
199     void *val = NULL;
200 -   int_32 count = 0;
201 +   int32_t count = 0;
202     bool ret = true;
203     rpmHeaderGetEntry(HeaderP, RPMTAG_OLDFILENAMES,
204                       NULL, (void **) &val, &count);
205 @@ -458,6 +476,36 @@ bool RPMHdrHandler::FileList(vector<stri
206  
207  bool RPMHdrHandler::ChangeLog(vector<ChangeLogEntry *> &ChangeLogs)
208  {
209 +#if RPM_VERSION >= 0x040600
210 +   headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
211 +   rpmtd changelogtimes = rpmtdNew();
212 +   rpmtd changelognames = rpmtdNew();
213 +   rpmtd changelogtexts = rpmtdNew();
214 +
215 +   if (headerGet(HeaderP, RPMTAG_CHANGELOGTIME, changelogtimes, flags) &&
216 +       headerGet(HeaderP, RPMTAG_CHANGELOGNAME, changelognames, flags) &&
217 +       headerGet(HeaderP, RPMTAG_CHANGELOGTEXT, changelogtexts, flags)) {
218 +      rpmtdInit(changelogtimes);
219 +      rpmtdInit(changelognames);
220 +      rpmtdInit(changelogtexts);
221 +      while ((rpmtdNext(changelogtimes) != -1) &&
222 +            (rpmtdNext(changelognames) != -1) &&
223 +            (rpmtdNext(changelogtexts) != -1)) {
224 +         ChangeLogEntry *Entry = new ChangeLogEntry;
225 +         Entry->Time = rpmtdGetNumber(changelogtimes);
226 +        Entry->Author = rpmtdGetString(changelognames);
227 +        Entry->Text = rpmtdGetString(changelogtexts);
228 +         ChangeLogs.push_back(Entry);
229 +      }
230 +   }
231 +   rpmtdFreeData(changelogtimes);
232 +   rpmtdFreeData(changelognames);
233 +   rpmtdFreeData(changelogtexts);
234 +
235 +   rpmtdFree(changelogtimes);
236 +   rpmtdFree(changelognames);
237 +   rpmtdFree(changelogtexts);
238 +#else
239     int *timel = NULL;
240     char **authorl = NULL;
241     char **entryl = NULL;
242 @@ -483,7 +531,8 @@ bool RPMHdrHandler::ChangeLog(vector<Cha
243     }
244     free(entryl);
245     free(authorl);
246 -      
247 +#endif
248 +
249     return true;
250  }
251  
252 @@ -870,11 +919,20 @@ RPMDBHandler::~RPMDBHandler()
253      * There's a WTF involved as rpmCheckSignals() actually calls exit()
254      * so we shouldn't even get here really?!
255      */
256 +#if RPM_VERSION >= 0x040600
257 +   if (rpmsqIsCaught(SIGINT) ||
258 +       rpmsqIsCaught(SIGQUIT) ||
259 +       rpmsqIsCaught(SIGHUP) ||
260 +       rpmsqIsCaught(SIGTERM) ||
261 +       rpmsqIsCaught(SIGPIPE))
262 +#else
263     if (sigismember(&rpmsqCaught, SIGINT) || 
264         sigismember(&rpmsqCaught, SIGQUIT) ||
265         sigismember(&rpmsqCaught, SIGHUP) ||
266         sigismember(&rpmsqCaught, SIGTERM) ||
267 -       sigismember(&rpmsqCaught, SIGPIPE)) {
268 +       sigismember(&rpmsqCaught, SIGPIPE))
269 +#endif
270 +   {
271        /* do nothing */
272     } else if (Handler != NULL) {
273        rpmtsFree(Handler);
274 @@ -942,7 +942,7 @@ bool RPMDBHandler::Jump(off_t Offset)
275     iOffset = Offset;
276  #if RPM_VERSION >= 0x040000
277     // rpmdb indexes are hardcoded uint32_t, the size must match here
278 -   uint_32 rpmOffset = iOffset;
279 +   uint32_t rpmOffset = iOffset;
280     if (RpmIter == NULL)
281        return false;
282     rpmdbFreeIterator(RpmIter);
283 @@ -1265,7 +1265,7 @@ bool RPMRepomdHandler::PRCO(unsigned int
284        return true;
285     }
286     for (xmlNode *n = prco->children; n; n = n->next) {
287 -      int_32 RpmOp = 0;
288 +      int32_t RpmOp = 0;
289        string deptype, depver;
290        xmlChar *depname, *flags;
291        if ((depname = xmlGetProp(n, (xmlChar*)"name")) == NULL) continue;
292 @@ -1703,7 +1703,7 @@ bool RPMSqliteHandler::PRCO(unsigned int
293     }
294  
295     while (prco->Step()) {
296 -      int_32 RpmOp = 0;
297 +      int32_t RpmOp = 0;
298        string deptype, depver = "";
299        string e, v, r;
300  
301 --- apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmlistparser.h.orig        2008-01-12 10:45:07.000000000 +0100
302 +++ apt-0.5.15lorg3.94a/apt-pkg/rpm/rpmlistparser.h     2022-03-26 21:29:55.630026571 +0100
303 @@ -52,7 +52,7 @@ class rpmListParser : public pkgCacheGen
304     
305     bool ParseStatus(pkgCache::PkgIterator Pkg,pkgCache::VerIterator Ver);
306     bool ParseDepends(pkgCache::VerIterator Ver,
307 -                    char **namel, char **verl, int_32 *flagl,
308 +                    char **namel, char **verl, int32_t *flagl,
309                      int count, unsigned int Type);
310     bool ParseDepends(pkgCache::VerIterator Ver, unsigned int Type);
311     bool ParseProvides(pkgCache::VerIterator Ver);
312 --- apt-0.5.15lorg3.94a/tools/genpkglist.cc.orig        2008-01-12 10:45:07.000000000 +0100
313 +++ apt-0.5.15lorg3.94a/tools/genpkglist.cc     2022-03-28 18:03:32.655772212 +0200
314 @@ -31,13 +31,13 @@
315  
316  #ifndef RPM_HAVE_DATA_T
317  typedef void * rpm_data_t;
318 -typedef int_32 rpm_count_t;
319 -typedef int_32 rpm_tagtype_t;
320 +typedef int32_t rpm_count_t;
321 +typedef int32_t rpm_tagtype_t;
322  #endif
323  
324  #define CRPMTAG_TIMESTAMP   1012345
325  
326 -int tags[] =  {
327 +rpmTagVal tags[] =  {
328         RPMTAG_NAME, 
329         RPMTAG_EPOCH,
330         RPMTAG_VERSION,
331 @@ -70,9 +70,10 @@ int tags[] =  {
332         RPMTAG_OBSOLETEFLAGS,
333         RPMTAG_OBSOLETEVERSION,
334  
335 -       RPMTAG_FILEFLAGS
336 +       RPMTAG_FILEFLAGS,
337 +       0
338  };
339 -int numTags = sizeof(tags) / sizeof(int);
340 +int numTags = sizeof(tags) / sizeof(int) - 1;
341  
342  
343  
344 @@ -84,7 +85,7 @@ typedef struct {
345  } UpdateInfo;
346  
347  
348 -static inline int usefullFile(char *a)
349 +static inline int usefullFile(const char *a)
350  {
351     int l = strlen(a);
352     
353 @@ -103,15 +104,74 @@ static inline int usefullFile(char *a)
354  
355  static void copyStrippedFileList(Header header, Header newHeader)
356  {
357 +#if RPM_VERSION >= 0x040600
358 +   headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
359 +   rpmtd dirnames = rpmtdNew();
360 +   rpmtd basenames = rpmtdNew();
361 +   rpmtd dirindexes = rpmtdNew();
362 +
363 +   if (headerGet(header, RPMTAG_DIRNAMES, dirnames, flags) &&
364 +       headerGet(header, RPMTAG_BASENAMES, basenames, flags) &&
365 +       headerGet(header, RPMTAG_DIRINDEXES, dirindexes, flags)) {
366 +      rpmtdInit(dirnames);
367 +      rpmtdInit(basenames);
368 +      rpmtdInit(dirindexes);
369 +      std::map<std::string, uint32_t> dirToIndex;
370 +      std::vector<std::string> newBasenames, newDirnames;
371 +      std::vector<uint32_t> newDirindexes;
372 +      while ((rpmtdNext(basenames) != -1) && (rpmtdNext(dirindexes) != -1)) {
373 +         const char *basename = rpmtdGetString(basenames);
374 +        uint32_t idx = rpmtdGetNumber(dirindexes);
375 +        if (rpmtdSetIndex(dirnames, idx) == -1)
376 +            continue;
377 +        const char *dirname = rpmtdGetString(dirnames);
378 +         bool ok = usefullFile(basename);
379 +        if (!ok)
380 +            ok = usefullFile(dirname);
381 +        if (ok) {
382 +             newBasenames.push_back(basename);
383 +            uint32_t newIdx;
384 +            if (dirToIndex.find(dirname) != dirToIndex.end())
385 +                newIdx = dirToIndex.at(dirname);
386 +            else {
387 +               newIdx = newDirnames.size();
388 +               dirToIndex[dirname] = newIdx;
389 +                newDirnames.push_back(dirname);
390 +            }
391 +            newDirindexes.push_back(newIdx);
392 +        }
393 +      }
394 +      if (newBasenames.size() > 0) {
395 +        const char **data = new const char*[newDirnames.size()];
396 +        for (size_t i = 0; i < newDirnames.size(); i++)
397 +            data[i] = newDirnames[i].c_str();
398 +        headerPutStringArray(newHeader, RPMTAG_DIRNAMES, data, newDirnames.size());
399 +        delete data;
400 +        data = new const char*[newBasenames.size()];
401 +        for (size_t i = 0; i < newBasenames.size(); i++)
402 +            data[i] = newBasenames[i].c_str();
403 +        headerPutStringArray(newHeader, RPMTAG_BASENAMES, data, newBasenames.size());
404 +        delete data;
405 +        headerPutUint32(newHeader, RPMTAG_DIRINDEXES, newDirindexes.data(), newDirindexes.size());
406 +      }
407 +   }
408 +   rpmtdFreeData(dirnames);
409 +   rpmtdFreeData(basenames);
410 +   rpmtdFreeData(dirindexes);
411 +
412 +   rpmtdFree(dirnames);
413 +   rpmtdFree(basenames);
414 +   rpmtdFree(dirindexes);
415 +#else
416     rpm_count_t i, i1, i2;
417     
418     rpm_tagtype_t type1, type2, type3;
419     rpm_count_t count1, count2, count3;
420     char **dirnames = NULL, **basenames = NULL;
421 -   int_32 *dirindexes = NULL;
422 +   int32_t *dirindexes = NULL;
423     rpm_data_t dirnameval = NULL, basenameval = NULL, dirindexval = NULL;
424     char **dnames, **bnames;
425 -   int_32 *dindexes;
426 +   int32_t *dindexes;
427     int res1, res2, res3;
428     
429  #define FREE(a) if (a) free(a);
430 @@ -124,7 +184,7 @@ static void copyStrippedFileList(Header
431                          &dirindexval, &count3);
432     dirnames = (char **)dirnameval;
433     basenames = (char **)basenameval;
434 -   dirindexes = (int_32 *)dirindexval;
435 +   dirindexes = (int32_t *)dirindexval;
436     
437     if (res1 != 1 || res2 != 1 || res3 != 1) {
438        FREE(dirnames);
439 @@ -134,7 +194,7 @@ static void copyStrippedFileList(Header
440  
441     dnames = dirnames;
442     bnames = basenames;
443 -   dindexes = (int_32*)malloc(sizeof(int_32)*count3);
444 +   dindexes = (int32_t*)malloc(sizeof(int32_t)*count3);
445     
446     i1 = 0;
447     i2 = 0;
448 @@ -195,6 +255,7 @@ static void copyStrippedFileList(Header
449     FREE(dirnames);
450     FREE(basenames);
451     FREE(dindexes);
452 +#endif
453  }
454  
455  
456 @@ -227,11 +288,11 @@ bool loadUpdateInfo(char *path, map<stri
457     return true;
458  }
459  
460 -#if RPM_VERSION >= 0x040000
461 +#if RPM_VERSION >= 0x040000 && RPM_VERSION < 0x040600
462  // No prototype from rpm after 4.0.
463  extern "C" {
464 -int headerGetRawEntry(Header h, int_32 tag, int_32 * type,
465 -                     void *p, int_32 *c);
466 +int headerGetRawEntry(Header h, int32_t tag, int32_t * type,
467 +                     void *p, int32_t *c);
468  }
469  #endif
470  
471 @@ -241,13 +302,16 @@ bool copyFields(Header h, Header newHead
472                 bool fullFileList)
473  {
474     int i;
475 -   int_32 size[1];
476 +   int32_t size[1];
477  
478     size[0] = filesize;
479     
480 +#if RPM_VERSION >= 0x040600
481 +   headerCopyTags(h, newHeader, tags);
482 +#else
483     // the std tags
484     for (i = 0; i < numTags; i++) {
485 -      int_32 type, count;
486 +      int32_t type, count;
487        void *data;
488        int res;
489        
490 @@ -258,8 +322,28 @@ bool copyFields(Header h, Header newHead
491          continue;
492        headerAddEntry(newHeader, tags[i], type, data, count);
493     }
494 +#endif
495   
496     if (fullFileList) {
497 +#if RPM_VERSION >= 0x040600
498 +      headerGetFlags flags = HEADERGET_MINMEM | HEADERGET_EXT;
499 +      rpmtd dnames = rpmtdNew();
500 +      rpmtd bnames = rpmtdNew();
501 +      rpmtd dindexes = rpmtdNew();
502 +      if (headerGet(h, RPMTAG_DIRNAMES, dnames, flags) &&
503 +          headerGet(h, RPMTAG_BASENAMES, bnames, flags) &&
504 +         headerGet(h, RPMTAG_DIRINDEXES, dindexes, flags)) {
505 +         headerPut(newHeader, dnames, HEADERPUT_DEFAULT);
506 +         headerPut(newHeader, bnames, HEADERPUT_DEFAULT);
507 +         headerPut(newHeader, dindexes, HEADERPUT_DEFAULT);
508 +      }
509 +      rpmtdFreeData(dnames);
510 +      rpmtdFreeData(bnames);
511 +      rpmtdFreeData(dindexes);
512 +      rpmtdFree(dnames);
513 +      rpmtdFree(bnames);
514 +      rpmtdFree(dindexes);
515 +#else
516        rpm_tagtype_t type1, type2, type3;
517        rpm_count_t count1, count2, count3;
518        char **dnames, **bnames, **dindexes;
519 @@ -282,17 +366,23 @@ bool copyFields(Header h, Header newHead
520          headerAddEntry(newHeader, RPMTAG_BASENAMES, type2, bnames, count2);
521          headerAddEntry(newHeader, RPMTAG_DIRINDEXES, type3, dindexes, count3);
522        }
523 +#endif
524     } else {
525         copyStrippedFileList(h, newHeader);
526     }
527     
528     // update index of srpms
529     if (idxfile) {
530 +      const char *srpm, *name;
531 +      int res;
532 +#if RPM_VERSION >= 0x040600
533 +      name = headerGetString(h, RPMTAG_NAME);
534 +      srpm = headerGetString(h, RPMTAG_SOURCERPM);
535 +      res = (name && srpm) ? 1 : 0;
536 +#else
537        rpm_tagtype_t type;
538        rpm_count_t count;
539        rpm_data_t srpmval, nameval;
540 -      char *srpm, *name;
541 -      int res;
542        
543        res = headerGetEntry(h, RPMTAG_NAME, &type, 
544                            &nameval, &count);
545 @@ -300,23 +390,36 @@ bool copyFields(Header h, Header newHead
546                            &srpmval, &count);
547        name = (char *)nameval;
548        srpm = (char *)srpmval;
549 -
550 +#endif
551        if (res == 1) {
552          fprintf(idxfile, "%s %s\n", srpm, name);
553        }
554     }
555     // our additional tags
556 +#if RPM_VERSION >= 0x040600
557 +   uint32_t usize = size[0];
558 +   headerPutString(newHeader, CRPMTAG_DIRECTORY, directory);
559 +   headerPutString(newHeader, CRPMTAG_FILENAME, filename);
560 +   headerPutUint32(newHeader, CRPMTAG_FILESIZE, &usize, 1);
561 +#else
562     headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE,
563                   directory, 1);
564     headerAddEntry(newHeader, CRPMTAG_FILENAME, RPM_STRING_TYPE, 
565                   filename, 1);
566     headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE,
567                   size, 1);
568 +#endif
569        
570     // update description tags
571     if (updateInfo.find(string(filename)) != updateInfo.end()) {
572 -      const char *tmp;
573        string name = string(filename);
574 +#if RPM_VERSION >= 0x040600
575 +      headerPutString(newHeader, CRPMTAG_UPDATE_SUMMARY, updateInfo[name].summary.c_str());
576 +      headerPutString(newHeader, CRPMTAG_UPDATE_URL, updateInfo[name].url.c_str());
577 +      headerPutString(newHeader, CRPMTAG_UPDATE_DATE, updateInfo[name].date.c_str());
578 +      headerPutString(newHeader, CRPMTAG_UPDATE_IMPORTANCE, updateInfo[name].importance.c_str());
579 +#else
580 +      const char *tmp;
581        
582        tmp = updateInfo[name].summary.c_str();
583        headerAddEntry(newHeader, CRPMTAG_UPDATE_SUMMARY,
584 @@ -334,6 +437,7 @@ bool copyFields(Header h, Header newHead
585        headerAddEntry(newHeader, CRPMTAG_UPDATE_IMPORTANCE,
586                      RPM_STRING_TYPE,
587                      tmp, 1);
588 +#endif
589     }
590     
591     return true;
592 @@ -590,7 +694,11 @@ int main(int argc, char ** argv)
593  
594             md5cache->MD5ForFile(string(dirEntries[entry_cur]->d_name), 
595                                  sb.st_mtime, md5);
596 +#if RPM_VERSION >= 0x040600
597 +           headerPutString(newHeader, CRPMTAG_MD5, md5);
598 +#else
599             headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE, md5, 1);
600 +#endif
601  
602             headerWrite(outfd, newHeader, HEADER_MAGIC_YES);
603             
604 --- apt-0.5.15lorg3.94a/tools/gensrclist.cc.orig        2008-01-12 10:45:07.000000000 +0100
605 +++ apt-0.5.15lorg3.94a/tools/gensrclist.cc     2022-03-28 18:20:13.380350822 +0200
606 @@ -51,9 +51,10 @@ int tags[] =  {
607         
608         RPMTAG_REQUIREFLAGS, 
609         RPMTAG_REQUIRENAME,
610 -       RPMTAG_REQUIREVERSION
611 +       RPMTAG_REQUIREVERSION,
612 +       0
613  };
614 -int numTags = sizeof(tags) / sizeof(int);
615 +int numTags = sizeof(tags) / sizeof(int) - 1;
616  
617  #if defined(__APPLE__) || defined(__FREEBSD__)
618  int selectDirent(struct dirent *ent)
619 @@ -136,11 +137,11 @@ void usage()
620     cerr << " --cachedir=DIR  use a custom directory for package md5sum cache"<<endl;
621  }
622  
623 -#if RPM_VERSION >= 0x040000
624 +#if RPM_VERSION >= 0x040000 && RPM_VERSION < 0x040600
625  extern "C" {
626  // No prototype from rpm after 4.0.
627 -int headerGetRawEntry(Header h, int_32 tag, int_32 * type,
628 -                     void *p, int_32 *c);
629 +int headerGetRawEntry(Header h, int32_t tag, int32_t * type,
630 +                     void *p, int32_t *c);
631  }
632  #endif
633  
634 @@ -153,7 +154,7 @@ int main(int argc, char ** argv)
635     struct dirent **dirEntries;
636     int rc, i;
637     Header h;
638 -   int_32 size[1];
639 +   int32_t size[1];
640     int entry_no, entry_cur;
641     CachedMD5 *md5cache;
642     map<string, list<char*>* > rpmTable; // table that maps srpm -> generated rpm
643 @@ -333,6 +334,9 @@ int main(int argc, char ** argv)
644             newHeader = headerNew();
645             
646             // the std tags
647 +#if RPM_VERSION >= 0x040600
648 +           headerCopyTags(h, newHeader, tags);
649 +#else
650             for (i = 0; i < numTags; i++) {
651                int type, count;
652                void *data;
653 @@ -345,9 +349,16 @@ int main(int argc, char ** argv)
654                   continue;
655                headerAddEntry(newHeader, tags[i], type, data, count);
656             }
657 +#endif
658             
659             
660             // our additional tags
661 +#if RPM_VERSION >= 0x040600
662 +           uint32_t usize = size[0];
663 +           headerPutString(newHeader, CRPMTAG_DIRECTORY, srpmdir.c_str());
664 +           headerPutString(newHeader, CRPMTAG_FILENAME, dirEntries[entry_cur]->d_name);
665 +           headerPutUint32(newHeader, CRPMTAG_FILESIZE, &usize, 1);
666 +#else
667             headerAddEntry(newHeader, CRPMTAG_DIRECTORY, RPM_STRING_TYPE,
668                            srpmdir.c_str(), 1);
669             
670 @@ -355,14 +366,19 @@ int main(int argc, char ** argv)
671                            dirEntries[entry_cur]->d_name, 1);
672             headerAddEntry(newHeader, CRPMTAG_FILESIZE, RPM_INT32_TYPE,
673                            size, 1);
674 +#endif
675             
676             {
677                char md5[34];
678                
679                md5cache->MD5ForFile(dirEntries[entry_cur]->d_name, sb.st_mtime, md5);
680                
681 +#if RPM_VERSION >= 0x040600
682 +              headerPutString(newHeader, CRPMTAG_MD5, md5);
683 +#else
684                headerAddEntry(newHeader, CRPMTAG_MD5, RPM_STRING_TYPE,
685                               md5, 1);
686 +#endif
687             }
688             
689             foundInIndex = false;
690 @@ -384,8 +400,12 @@ int main(int argc, char ** argv)
691                }
692                
693                if (count) {
694 +#if RPM_VERSION >= 0x040600
695 +                 headerPutStringArray(newHeader, CRPMTAG_BINARY, l, count);
696 +#else
697                   headerAddEntry(newHeader, CRPMTAG_BINARY,
698                                  RPM_STRING_ARRAY_TYPE, l, count);
699 +#endif
700                }
701             }
702             if (foundInIndex || !mapi)
This page took 0.075255 seconds and 3 git commands to generate.