]> git.pld-linux.org Git - packages/systemtap.git/blame - systemtap-rpm5-support.patch
up to 2.7
[packages/systemtap.git] / systemtap-rpm5-support.patch
CommitLineData
6fbeb569
JR
1--- systemtap-1.5/configure.ac.rpm5~ 2011-05-23 21:21:36.000000000 +0200
2+++ systemtap-1.5/configure.ac 2011-09-26 08:22:28.072465175 +0200
3@@ -449,6 +449,19 @@ AC_ARG_WITH([rpm],
4 [AS_HELP_STRING([--with-rpm],
5 [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
6 if test "$with_rpm" != "no"; then
7+ PKG_CHECK_MODULES([RPM], [rpm], [
8+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
9+ CPPFLAGS="$RPM_CFLAGS $CPPFLAGS"
10+ stap_LIBS="$stap_LIBS $RPM_LIBS"
11+ ], [
12+ AC_PATH_PROG(RPM_PATH,rpm,none)
13+ if test "$RPM_PATH" = "none"; then
14+ AC_MSG_ERROR([RPM executable was not found in your system])
15+ else
16+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
17+ fi
18+ ]
19+)
20 AC_CHECK_LIB(rpm, rpmtsInitIterator, [
21 AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
22 stap_LIBS="$stap_LIBS -lrpm"
23--- systemtap-1.5/rpm_finder.cxx.rpm5~ 2011-05-23 21:21:36.000000000 +0200
24+++ systemtap-1.5/rpm_finder.cxx 2011-09-26 08:14:28.829226303 +0200
25@@ -20,21 +20,22 @@ using namespace std;
26
27 #ifdef HAVE_LIBRPM
28
29-extern "C" {
30-
31-#define _RPM_4_4_COMPAT
32-#include <string.h>
33-#include <rpm/rpmlib.h>
34-#include <rpm/rpmts.h>
35-#include <rpm/rpmdb.h>
36-#include <rpm/header.h>
37+#include <cstring>
38+#include <tr1/cstdint>
39+#include <rpmtypes.h>
40+#include <rpmiotypes.h>
41+#include <rpmtag.h>
42+#include <rpmts.h>
43+#include <rpmrc.h>
44+#include <rpmdb.h>
45+#include <rpmmacro.h>
46+#include <rpmio.h>
47+#include <rpmcli.h>
48
49 #ifndef xfree
50 #define xfree free
51 #endif
52
53-}
54-
55 #if ! HAVE_LIBRPMIO && HAVE_NSS
56 extern "C" {
57 #include <nss.h>
58@@ -51,7 +52,7 @@ missing_rpm_enlist (systemtap_session& s
59 {
60 static int rpm_init_done = 0;
61 rpmts ts;
62- rpmdbMatchIterator mi;
63+ rpmmi mi;
64 int count = 0;
65
66 if (filename == NULL)
67@@ -90,8 +91,8 @@ missing_rpm_enlist (systemtap_session& s
68 errmsg_t err;
69 size_t rpminfolen = strlen(rpm_type);
70 size_t srcrpmlen = sizeof (".src.rpm") - 1;
71- rpmdbMatchIterator mi_rpminfo;
72- h = rpmdbNextIterator(mi);
73+ rpmmi mi_rpminfo;
74+ h = rpmmiNext(mi);
75 if (h == NULL)
76 break;
77 /* Verify the kernel file is not already installed. */
78@@ -138,21 +139,23 @@ missing_rpm_enlist (systemtap_session& s
79 /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
80
81 /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
82- /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
83- mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMDBI_LABEL,
84+ /* RPMTAG_NVRA is an interface for NVR-based dbiFindByLabel(). */
85+ mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMTAG_NVRA,
86 rpminfo, 0);
87 if (mi_rpminfo)
88 {
89- rpmdbFreeIterator(mi_rpminfo);
90+ rpmmiFree(mi_rpminfo);
91 count = 0;
92 break;
93 }
94 /* The allocated memory gets utilized below for MISSING_RPM_HASH. */
95 if(strcmp(rpm_type,"-debuginfo")==0){
96+ char *nvra = rpmExpand("%{___NVRA}", NULL);
97 xfree(rpminfo);
98 rpminfo = headerSprintf(h,
99- "%{name}-%{version}-%{release}.%{arch}",
100+ nvra,
101 rpmTagTable, rpmHeaderFormats, &err);
102+ free(nvra);
103 }
104 if (!rpminfo)
105 {
106@@ -176,7 +179,7 @@ missing_rpm_enlist (systemtap_session& s
107 sess.rpms_to_install.insert(rpminfo);
108 }
109 count++;
110- rpmdbFreeIterator(mi);
111+ rpmmiFree(mi);
112 }
113
114 rpmtsFree(ts);
This page took 0.170242 seconds and 4 git commands to generate.