|
Matej Habrnal |
345ed6 |
From f4aec46ee3c6889d6a020721078cfab44f156708 Mon Sep 17 00:00:00 2001
|
|
Matej Habrnal |
345ed6 |
From: Wes Lindauer <wesley.lindauer@gmail.com>
|
|
Matej Habrnal |
345ed6 |
Date: Wed, 14 Dec 2016 15:02:56 -0500
|
|
Matej Habrnal |
345ed6 |
Subject: [PATCH] daemon: Allow rpm to be optional at build time
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
---
|
|
Matej Habrnal |
345ed6 |
configure.ac | 11 ++++++++++-
|
|
Matej Habrnal |
345ed6 |
src/daemon/Makefile.am | 1 +
|
|
Matej Habrnal |
345ed6 |
src/daemon/rpm.c | 31 +++++++++++++++++++++++++++++++
|
|
Matej Habrnal |
345ed6 |
src/daemon/rpm.h | 5 -----
|
|
Matej Habrnal |
345ed6 |
4 files changed, 42 insertions(+), 6 deletions(-)
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
diff --git a/configure.ac b/configure.ac
|
|
Matej Habrnal |
345ed6 |
index f6597eb..4b05040 100644
|
|
Matej Habrnal |
345ed6 |
--- a/configure.ac
|
|
Matej Habrnal |
345ed6 |
+++ b/configure.ac
|
|
Matej Habrnal |
345ed6 |
@@ -185,7 +185,6 @@ PKG_CHECK_MODULES([GTK], [gtk+-3.0])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.43])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([DBUS], [dbus-1])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
|
|
Matej Habrnal |
345ed6 |
-PKG_CHECK_MODULES([RPM], [rpm])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([LIBNOTIFY], [libnotify >= 0.7.0])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([NSS], [nss])
|
|
Matej Habrnal |
345ed6 |
PKG_CHECK_MODULES([LIBREPORT], [libreport])
|
|
Matej Habrnal |
345ed6 |
@@ -425,6 +424,16 @@ ABRT_PARSE_WITH([selinux]))
|
|
Matej Habrnal |
345ed6 |
AM_CONDITIONAL(HAVE_SELINUX, false)
|
|
Matej Habrnal |
345ed6 |
[fi]
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
+AC_ARG_WITH(rpm,
|
|
Matej Habrnal |
345ed6 |
+AS_HELP_STRING([--with-rpm],[build rpm support (default is YES)]),
|
|
Matej Habrnal |
345ed6 |
+ABRT_PARSE_WITH([rpm]))
|
|
Matej Habrnal |
345ed6 |
+
|
|
Matej Habrnal |
345ed6 |
+[if test -z "$NO_RPM"]
|
|
Matej Habrnal |
345ed6 |
+[then]
|
|
Matej Habrnal |
345ed6 |
+ PKG_CHECK_MODULES([RPM], [rpm])
|
|
Matej Habrnal |
345ed6 |
+ AC_DEFINE(HAVE_LIBRPM, [], [Have rpm support.])
|
|
Matej Habrnal |
345ed6 |
+[fi]
|
|
Matej Habrnal |
345ed6 |
+
|
|
Matej Habrnal |
345ed6 |
# Initialize the test suite.
|
|
Matej Habrnal |
345ed6 |
AC_CONFIG_TESTDIR(tests)
|
|
Matej Habrnal |
345ed6 |
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
|
|
Matej Habrnal |
345ed6 |
diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am
|
|
Matej Habrnal |
345ed6 |
index 563923a..9a41d5f 100644
|
|
Matej Habrnal |
345ed6 |
--- a/src/daemon/Makefile.am
|
|
Matej Habrnal |
345ed6 |
+++ b/src/daemon/Makefile.am
|
|
Matej Habrnal |
345ed6 |
@@ -95,6 +95,7 @@ abrt_action_save_package_data_CPPFLAGS = \
|
|
Matej Habrnal |
345ed6 |
-I$(srcdir)/../lib \
|
|
Matej Habrnal |
345ed6 |
-DCONF_DIR=\"$(CONF_DIR)\" \
|
|
Matej Habrnal |
345ed6 |
$(GLIB_CFLAGS) \
|
|
Matej Habrnal |
345ed6 |
+ $(RPM_CFLAGS) \
|
|
Matej Habrnal |
345ed6 |
$(LIBREPORT_CFLAGS) \
|
|
Matej Habrnal |
345ed6 |
-D_GNU_SOURCE
|
|
Matej Habrnal |
345ed6 |
abrt_action_save_package_data_LDADD = \
|
|
Matej Habrnal |
345ed6 |
diff --git a/src/daemon/rpm.c b/src/daemon/rpm.c
|
|
Matej Habrnal |
345ed6 |
index e99b960..36b36a9 100644
|
|
Matej Habrnal |
345ed6 |
--- a/src/daemon/rpm.c
|
|
Matej Habrnal |
345ed6 |
+++ b/src/daemon/rpm.c
|
|
Matej Habrnal |
345ed6 |
@@ -19,6 +19,13 @@
|
|
Matej Habrnal |
345ed6 |
#include "libabrt.h"
|
|
Matej Habrnal |
345ed6 |
#include "rpm.h"
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
+#include <rpm/rpmts.h>
|
|
Matej Habrnal |
345ed6 |
+#include <rpm/rpmcli.h>
|
|
Matej Habrnal |
345ed6 |
+#include <rpm/rpmdb.h>
|
|
Matej Habrnal |
345ed6 |
+#include <rpm/rpmpgp.h>
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
+
|
|
Matej Habrnal |
345ed6 |
/**
|
|
Matej Habrnal |
345ed6 |
* A set, which contains finger prints.
|
|
Matej Habrnal |
345ed6 |
*/
|
|
Matej Habrnal |
345ed6 |
@@ -51,8 +58,10 @@ char* get_package_name_from_NVR_or_NULL(const char* packageNVR)
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
void rpm_init()
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
if (rpmReadConfigFiles(NULL, NULL) != 0)
|
|
Matej Habrnal |
345ed6 |
error_msg("Can't read RPM rc files");
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
list_free_with_free(list_fingerprints); /* paranoia */
|
|
Matej Habrnal |
345ed6 |
/* Huh? Why do we start the list with an element with NULL string? */
|
|
Matej Habrnal |
345ed6 |
@@ -61,6 +70,7 @@ void rpm_init()
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
void rpm_destroy()
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
/* Mirroring the order of deinit calls in rpm-4.11.1/lib/poptALL.c::rpmcliFini() */
|
|
Matej Habrnal |
345ed6 |
rpmFreeCrypto();
|
|
Matej Habrnal |
345ed6 |
rpmFreeMacros(NULL);
|
|
Matej Habrnal |
345ed6 |
@@ -71,6 +81,7 @@ void rpm_destroy()
|
|
Matej Habrnal |
345ed6 |
* "BDB2053 Freeing read locks for locker 0x1e0: 28718/139661746636736"
|
|
Matej Habrnal |
345ed6 |
*/
|
|
Matej Habrnal |
345ed6 |
rpmdbCheckTerminate(1);
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
list_free_with_free(list_fingerprints);
|
|
Matej Habrnal |
345ed6 |
list_fingerprints = NULL;
|
|
Matej Habrnal |
345ed6 |
@@ -78,6 +89,7 @@ void rpm_destroy()
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
void rpm_load_gpgkey(const char* filename)
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
uint8_t *pkt = NULL;
|
|
Matej Habrnal |
345ed6 |
size_t pklen;
|
|
Matej Habrnal |
345ed6 |
if (pgpReadPkts(filename, &pkt, &pklen) != PGPARMOR_PUBKEY)
|
|
Matej Habrnal |
345ed6 |
@@ -95,6 +107,9 @@ void rpm_load_gpgkey(const char* filename)
|
|
Matej Habrnal |
345ed6 |
list_fingerprints = g_list_append(list_fingerprints, fingerprint);
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
free(pkt);
|
|
Matej Habrnal |
345ed6 |
+#else
|
|
Matej Habrnal |
345ed6 |
+ return;
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
int rpm_chk_fingerprint(const char* pkg)
|
|
Matej Habrnal |
345ed6 |
@@ -114,6 +129,7 @@ int rpm_fingerprint_is_imported(const char* fingerprint)
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
char *rpm_get_fingerprint(const char *pkg)
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
char *fingerprint = NULL;
|
|
Matej Habrnal |
345ed6 |
char *pgpsig = NULL;
|
|
Matej Habrnal |
345ed6 |
const char *errmsg = NULL;
|
|
Matej Habrnal |
345ed6 |
@@ -141,6 +157,9 @@ error:
|
|
Matej Habrnal |
345ed6 |
rpmdbFreeIterator(iter);
|
|
Matej Habrnal |
345ed6 |
rpmtsFree(ts);
|
|
Matej Habrnal |
345ed6 |
return fingerprint;
|
|
Matej Habrnal |
345ed6 |
+#else
|
|
Matej Habrnal |
345ed6 |
+ return NULL;
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
/*
|
|
Matej Habrnal |
345ed6 |
@@ -183,6 +202,7 @@ error:
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
*/
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
static int rpm_query_file(rpmts *ts, rpmdbMatchIterator *iter, Header *header,
|
|
Matej Habrnal |
345ed6 |
const char *filename, const char *rootdir_or_NULL)
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
@@ -216,9 +236,11 @@ static int rpm_query_file(rpmts *ts, rpmdbMatchIterator *iter, Header *header,
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
return 0;
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
char* rpm_get_component(const char *filename, const char *rootdir_or_NULL)
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
char *ret = NULL;
|
|
Matej Habrnal |
345ed6 |
char *srpm = NULL;
|
|
Matej Habrnal |
345ed6 |
rpmts ts;
|
|
Matej Habrnal |
345ed6 |
@@ -246,8 +268,12 @@ char* rpm_get_component(const char *filename, const char *rootdir_or_NULL)
|
|
Matej Habrnal |
345ed6 |
rpmdbFreeIterator(iter);
|
|
Matej Habrnal |
345ed6 |
rpmtsFree(ts);
|
|
Matej Habrnal |
345ed6 |
return ret;
|
|
Matej Habrnal |
345ed6 |
+#else
|
|
Matej Habrnal |
345ed6 |
+ return NULL;
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
#define pkg_add_id(name) \
|
|
Matej Habrnal |
345ed6 |
static inline int pkg_add_##name(Header header, struct pkg_envra *p) \
|
|
Matej Habrnal |
345ed6 |
{ \
|
|
Matej Habrnal |
345ed6 |
@@ -267,10 +293,12 @@ pkg_add_id(version);
|
|
Matej Habrnal |
345ed6 |
pkg_add_id(release);
|
|
Matej Habrnal |
345ed6 |
pkg_add_id(arch);
|
|
Matej Habrnal |
345ed6 |
pkg_add_id(vendor);
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
// caller is responsible to free returned value
|
|
Matej Habrnal |
345ed6 |
struct pkg_envra *rpm_get_package_nvr(const char *filename, const char *rootdir_or_NULL)
|
|
Matej Habrnal |
345ed6 |
{
|
|
Matej Habrnal |
345ed6 |
+#ifdef HAVE_LIBRPM
|
|
Matej Habrnal |
345ed6 |
rpmts ts;
|
|
Matej Habrnal |
345ed6 |
rpmdbMatchIterator iter;
|
|
Matej Habrnal |
345ed6 |
Header header;
|
|
Matej Habrnal |
345ed6 |
@@ -330,6 +358,9 @@ struct pkg_envra *rpm_get_package_nvr(const char *filename, const char *rootdir_
|
|
Matej Habrnal |
345ed6 |
rpmdbFreeIterator(iter);
|
|
Matej Habrnal |
345ed6 |
rpmtsFree(ts);
|
|
Matej Habrnal |
345ed6 |
return NULL;
|
|
Matej Habrnal |
345ed6 |
+#else
|
|
Matej Habrnal |
345ed6 |
+ return NULL;
|
|
Matej Habrnal |
345ed6 |
+#endif
|
|
Matej Habrnal |
345ed6 |
}
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
void free_pkg_envra(struct pkg_envra *p)
|
|
Matej Habrnal |
345ed6 |
diff --git a/src/daemon/rpm.h b/src/daemon/rpm.h
|
|
Matej Habrnal |
345ed6 |
index 89aa088..1fd56e8 100644
|
|
Matej Habrnal |
345ed6 |
--- a/src/daemon/rpm.h
|
|
Matej Habrnal |
345ed6 |
+++ b/src/daemon/rpm.h
|
|
Matej Habrnal |
345ed6 |
@@ -22,11 +22,6 @@
|
|
Matej Habrnal |
345ed6 |
#ifndef RPM_H_
|
|
Matej Habrnal |
345ed6 |
#define RPM_H_
|
|
Matej Habrnal |
345ed6 |
|
|
Matej Habrnal |
345ed6 |
-#include <rpm/rpmts.h>
|
|
Matej Habrnal |
345ed6 |
-#include <rpm/rpmcli.h>
|
|
Matej Habrnal |
345ed6 |
-#include <rpm/rpmdb.h>
|
|
Matej Habrnal |
345ed6 |
-#include <rpm/rpmpgp.h>
|
|
Matej Habrnal |
345ed6 |
-
|
|
Matej Habrnal |
345ed6 |
#ifdef __cplusplus
|
|
Matej Habrnal |
345ed6 |
extern "C" {
|
|
Matej Habrnal |
345ed6 |
#endif
|
|
Matej Habrnal |
345ed6 |
--
|
|
Matej Habrnal |
345ed6 |
2.9.3
|
|
Matej Habrnal |
345ed6 |
|