]> git.pld-linux.org Git - packages/systemtap.git/blob - systemtap-rpm5-support.patch
rebuild with python 3.10
[packages/systemtap.git] / systemtap-rpm5-support.patch
1 diff -dur systemtap-3.2.orig/configure.ac systemtap-3.2/configure.ac
2 --- systemtap-3.2.orig/configure.ac     2017-11-13 10:02:17.000000000 +0100
3 +++ systemtap-3.2/configure.ac  2017-11-13 10:16:52.000000000 +0100
4 @@ -465,6 +465,19 @@
5    [AS_HELP_STRING([--with-rpm],
6                    [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
7  if test "$with_rpm" != "no"; then
8 +  PKG_CHECK_MODULES([RPM], [rpm], [
9 +      AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
10 +      CPPFLAGS="$RPM_CFLAGS $CPPFLAGS"
11 +      stap_LIBS="$stap_LIBS $RPM_LIBS"
12 +   ], [
13 +      AC_PATH_PROG(RPM_PATH,rpm,none)
14 +      if test "$RPM_PATH" = "none"; then
15 +         AC_MSG_ERROR([RPM executable was not found in your system])
16 +      else
17 +         AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
18 +      fi
19 +   ]
20 +)
21    AC_CHECK_LIB(rpm, rpmtsInitIterator, [
22                      AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
23                      stap_LIBS="$stap_LIBS -lc -lrpm"
24 @@ -548,6 +548,9 @@
25    AC_CHECK_HEADERS([elfutils/version.h])
26  fi
27  
28 +CPPFLAGS="${CPPFLAGS} -I/usr/include/rpm"
29 +LIBS="${LIBS} -lrpmdb"
30 +
31  dnl This is here mainly to make sure that configure --prefix=... changes
32  dnl the config.h files so files depending on it are recompiled
33  dnl prefix is passed through indirectly in the Makefile.am AM_CPPFLAGS.
34 diff -dur systemtap-3.2.orig/rpm_finder.cxx systemtap-3.2/rpm_finder.cxx
35 --- systemtap-3.2.orig/rpm_finder.cxx   2017-10-18 19:59:37.000000000 +0200
36 +++ systemtap-3.2/rpm_finder.cxx        2017-11-13 10:16:28.000000000 +0100
37 @@ -20,20 +20,22 @@
38  
39  #ifdef HAVE_LIBRPM
40  
41 -extern "C" {
42 -
43 -#include <string.h>
44 -#include <rpm/rpmlib.h>
45 -#include <rpm/rpmts.h>
46 -#include <rpm/rpmdb.h>
47 -#include <rpm/header.h>
48 +#include <cstring>
49 +#include <tr1/cstdint>
50 +#include <rpmtypes.h>
51 +#include <rpmiotypes.h>
52 +#include <rpmtag.h>
53 +#include <rpmts.h>
54 +#include <rpmrc.h>
55 +#include <rpmdb.h>
56 +#include <rpmmacro.h>
57 +#include <rpmio.h>
58 +#include <rpmcli.h>
59  
60  #ifndef xfree
61  #define xfree free
62  #endif
63  
64 -}
65 -
66  #if ! HAVE_LIBRPMIO && HAVE_NSS
67  extern "C" {
68  #include <nss.h>
69 @@ -50,7 +52,7 @@
70  {
71    static int rpm_init_done = 0;
72    rpmts ts;
73 -  rpmdbMatchIterator mi;
74 +  rpmmi mi;
75    int count = 0;
76  
77    if (filename == NULL)
78 @@ -93,13 +95,15 @@
79           errmsg_t err;
80           size_t rpminfolen = strlen(rpm_type);
81           size_t srcrpmlen = sizeof (".src.rpm") - 1;
82 -         rpmdbMatchIterator mi_rpminfo;
83 -         h = rpmdbNextIterator(mi);
84 +         rpmmi mi_rpminfo;
85 +         h = rpmmiNext(mi);
86           if (h == NULL)
87             break;
88           /* Verify the kernel file is not already installed.  */
89  
90 -         rpminfo = headerFormat(h, header, &err);
91 +          char *nvra = rpmExpand("%{___NVRA}", NULL);
92 +         rpminfo = headerSprintf(h, header, rpmTagTable, rpmHeaderFormats, &err);
93 +         free(nvra);
94  
95           if (!rpminfo)
96             {
97 @@ -140,20 +144,21 @@
98           /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
99  
100           /* RPMDBI_PACKAGES requires keylen == sizeof (int).  */
101 -         /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel().  */
102 -         mi_rpminfo = rpmtsInitIterator(ts, (rpmTag)  RPMDBI_LABEL,
103 +         /* RPMTAG_NVRA is an interface for NVR-based dbiFindByLabel().  */
104 +         mi_rpminfo = rpmtsInitIterator(ts, (rpmTag)  RPMTAG_NVRA,
105                                               rpminfo, 0);
106           if (mi_rpminfo)
107             {
108 -             rpmdbFreeIterator(mi_rpminfo);
109 +             rpmmiFree(mi_rpminfo);
110               count = 0;
111               break;
112             }
113           /* The allocated memory gets utilized below for MISSING_RPM_HASH.  */
114            if(strcmp(rpm_type,"-debuginfo")==0){
115 +           char *nvra = rpmExpand("%{___NVRA}", NULL);
116             xfree(rpminfo);
117 -           rpminfo = headerFormat(h, "%{name}-%{version}-%{release}.%{arch}",
118 -                                  &err);
119 +           rpminfo = headerSprintf(h, nvra, rpmTagTable, rpmHeaderFormats, &err);
120 +           free(nvra);
121           }
122           if (!rpminfo)
123             {
124 @@ -177,7 +182,7 @@
125           sess.rpms_to_install.insert(rpminfo);
126         }
127        count++;
128 -      rpmdbFreeIterator(mi);
129 +      rpmmiFree(mi);
130      }
131  
132    rpmtsFree(ts);
This page took 0.041319 seconds and 3 git commands to generate.