]> git.pld-linux.org Git - packages/systemtap.git/blame - systemtap-rpm5-support.patch
- rebuild with python 3.8
[packages/systemtap.git] / systemtap-rpm5-support.patch
CommitLineData
3d0924cd
JK
1diff -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 @@
6fbeb569
JR
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])
3d0924cd
JK
23 stap_LIBS="$stap_LIBS -lc -lrpm"
24diff -dur systemtap-3.2.orig/rpm_finder.cxx systemtap-3.2/rpm_finder.cxx
25--- systemtap-3.2.orig/rpm_finder.cxx 2017-10-18 19:59:37.000000000 +0200
26+++ systemtap-3.2/rpm_finder.cxx 2017-11-13 10:16:28.000000000 +0100
27@@ -20,20 +20,22 @@
6fbeb569
JR
28
29 #ifdef HAVE_LIBRPM
30
31-extern "C" {
32-
6fbeb569
JR
33-#include <string.h>
34-#include <rpm/rpmlib.h>
35-#include <rpm/rpmts.h>
36-#include <rpm/rpmdb.h>
37-#include <rpm/header.h>
38+#include <cstring>
39+#include <tr1/cstdint>
40+#include <rpmtypes.h>
41+#include <rpmiotypes.h>
42+#include <rpmtag.h>
43+#include <rpmts.h>
44+#include <rpmrc.h>
45+#include <rpmdb.h>
46+#include <rpmmacro.h>
47+#include <rpmio.h>
48+#include <rpmcli.h>
49
50 #ifndef xfree
51 #define xfree free
52 #endif
53
54-}
55-
56 #if ! HAVE_LIBRPMIO && HAVE_NSS
57 extern "C" {
58 #include <nss.h>
3d0924cd 59@@ -50,7 +52,7 @@
6fbeb569
JR
60 {
61 static int rpm_init_done = 0;
62 rpmts ts;
63- rpmdbMatchIterator mi;
64+ rpmmi mi;
65 int count = 0;
66
67 if (filename == NULL)
3d0924cd 68@@ -93,13 +95,15 @@
6fbeb569
JR
69 errmsg_t err;
70 size_t rpminfolen = strlen(rpm_type);
71 size_t srcrpmlen = sizeof (".src.rpm") - 1;
72- rpmdbMatchIterator mi_rpminfo;
73- h = rpmdbNextIterator(mi);
74+ rpmmi mi_rpminfo;
75+ h = rpmmiNext(mi);
76 if (h == NULL)
77 break;
78 /* Verify the kernel file is not already installed. */
3d0924cd
JK
79
80- rpminfo = headerFormat(h, header, &err);
81+ char *nvra = rpmExpand("%{___NVRA}", NULL);
82+ rpminfo = headerSprintf(h, header, rpmTagTable, rpmHeaderFormats, &err);
83+ free(nvra);
84
85 if (!rpminfo)
86 {
87@@ -140,20 +144,21 @@
6fbeb569
JR
88 /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
89
90 /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
91- /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
92- mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMDBI_LABEL,
93+ /* RPMTAG_NVRA is an interface for NVR-based dbiFindByLabel(). */
94+ mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMTAG_NVRA,
95 rpminfo, 0);
96 if (mi_rpminfo)
97 {
98- rpmdbFreeIterator(mi_rpminfo);
99+ rpmmiFree(mi_rpminfo);
100 count = 0;
101 break;
102 }
103 /* The allocated memory gets utilized below for MISSING_RPM_HASH. */
104 if(strcmp(rpm_type,"-debuginfo")==0){
105+ char *nvra = rpmExpand("%{___NVRA}", NULL);
106 xfree(rpminfo);
3d0924cd
JK
107- rpminfo = headerFormat(h, "%{name}-%{version}-%{release}.%{arch}",
108- &err);
109+ rpminfo = headerSprintf(h, nvra, rpmTagTable, rpmHeaderFormats, &err);
6fbeb569
JR
110+ free(nvra);
111 }
112 if (!rpminfo)
113 {
3d0924cd 114@@ -177,7 +182,7 @@
6fbeb569
JR
115 sess.rpms_to_install.insert(rpminfo);
116 }
117 count++;
118- rpmdbFreeIterator(mi);
119+ rpmmiFree(mi);
120 }
121
122 rpmtsFree(ts);
This page took 0.062971 seconds and 4 git commands to generate.