File disable-bdb.diff of Package rpm.21495
--- ./Makefile.am.orig 2019-12-09 15:06:29.928482250 +0000
+++ ./Makefile.am 2019-12-09 15:06:37.016465444 +0000
@@ -2,7 +2,7 @@
ACLOCAL_AMFLAGS = -I m4
-DISTCHECK_CONFIGURE_FLAGS = --with-external-db --enable-python
+DISTCHECK_CONFIGURE_FLAGS = --enable-python
include $(top_srcdir)/rpm.am
AM_CFLAGS = @RPMCFLAGS@
--- ./configure.ac.orig 2019-12-09 15:06:29.940482221 +0000
+++ ./configure.ac 2019-12-09 15:06:37.016465444 +0000
@@ -509,6 +509,16 @@ AM_CONDITIONAL(LIBDW,[test "$WITH_LIBDW"
AM_CONDITIONAL(HAVE_LIBDW_STRTAB,[test "$HAVE_LIBDW_STRTAB" = yes])
#=================
+# Check for BDB support
+AC_ARG_ENABLE([bdb],
+ [AS_HELP_STRING([--enable-bdb=@<:@yes/no/auto@:>@],
+ [build with Berkeley DB rpm database format support (default=yes)])],
+ [enable_bdb="$enableval"],
+ [enable_bdb=yes])
+have_bdb=no
+AS_IF([test "x$enable_bdb" != "xno"], [
+
+
# Process --with/without-external-db
AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
[case "$with_external_db" in
@@ -533,12 +543,14 @@ yes )
],[
AC_MSG_ERROR([missing required header db.h])
])
+ have_bdb=yes
;;
no|maybe )
# Try internal database first, then fall back to external
# unless --without-external-db (no) was explicitly given.
if [ test -x db/dist/configure ]; then
AC_DEFINE(HAVE_DB_H, 1, [Define if you have the <db3/db.h> header file])
+ have_bdb=internal
else
case "$with_external_db" in
maybe)
@@ -561,11 +573,20 @@ no|maybe )
AC_MSG_ERROR([internal Berkeley DB directory not present, see INSTALL])
;;
esac
+ have_bdb=yes
fi
;;
esac
-
+AC_DEFINE([WITH_BDB], [1], [Define if BDB is available])
AC_SUBST([WITH_DB_LIB])
+])
+
+AM_CONDITIONAL([BDB], [test "x$have_bdb" != "xno"])
+AM_CONDITIONAL([WITH_INTERNAL_DB],[test "x$have_bdb" = "xinternal"])
+if test "x$have_bdb" = "xinternal"; then
+ AC_CONFIG_SUBDIRS(db3)
+fi
+
#=================
# Process --enable-ndb
@@ -1052,11 +1073,6 @@ AC_SUBST(RPMCONFIGDIR)
AC_SUBST(OBJDUMP)
-if test "$with_external_db" = no; then
- AC_CONFIG_SUBDIRS(db3)
-fi
-
-AM_CONDITIONAL([WITH_INTERNAL_DB],[test "$with_external_db" = no])
AM_CONDITIONAL([DOXYGEN],[test "$DOXYGEN" != no])
AM_CONDITIONAL([HACKINGDOCS],[test "$with_hackingdocs" = yes])
--- ./lib/Makefile.am.orig 2017-10-05 10:04:56.944602155 +0000
+++ ./lib/Makefile.am 2019-12-09 15:06:37.016465444 +0000
@@ -24,7 +24,7 @@ EXTRA_PROGRAMS =
usrlib_LTLIBRARIES = librpm.la
librpm_la_SOURCES = \
- backend/db3.c backend/dbi.c backend/dbi.h \
+ backend/dbi.c backend/dbi.h \
backend/dbiset.c backend/dbiset.h \
headerutil.c header.c headerfmt.c header_internal.h \
rpmdb.c rpmdb_internal.h \
@@ -59,11 +59,14 @@ librpm_la_LIBADD += @LUA_LIBS@
librpm_la_SOURCES += rpmliblua.c rpmliblua.h
endif
+if BDB
if WITH_INTERNAL_DB
+librpm_la_SOURCES += backend/db3.c
librpm_la_LIBADD += $(libdb_la)
else
librpm_la_LIBADD += @WITH_DB_LIB@
endif
+endif
if NDB
librpm_la_SOURCES += \
--- ./lib/backend/dbi.c.orig 2017-10-05 10:04:56.946602155 +0000
+++ ./lib/backend/dbi.c 2019-12-09 15:12:53.475571937 +0000
@@ -49,12 +49,32 @@ dbDetectBackend(rpmdb rdb)
rdb->db_ops = &ndb_dbops;
} else
#endif
- {
+#if defined(WITH_BDB)
+ if (!strcmp(db_backend, "bdb")) {
rdb->db_ops = &db3_dbops;
- if (*db_backend == '\0') {
+ } else
+#endif
+ {
+ if (db_backend)
free(db_backend);
+#if defined(WITH_BDB)
+ if (!rdb->db_ops) {
+ rdb->db_ops = &db3_dbops;
db_backend = xstrdup("bdb");
}
+#endif
+#ifdef ENABLE_NDB
+ if (!rdb->db_ops) {
+ rdb->db_ops = &ndb_dbops;
+ db_backend = xstrdup("ndb");
+ }
+#endif
+#if defined(WITH_LMDB)
+ if (!rdb->db_ops) {
+ rdb->db_ops = &lmdb_dbops;
+ db_backend = xstrdup("lmdb");
+ }
+#endif
}
#if defined(WITH_LMDB)
@@ -75,12 +95,14 @@ dbDetectBackend(rpmdb rdb)
free(path);
#endif
+#if defined(WITH_BDB)
path = rstrscat(NULL, dbhome, "/Packages", NULL);
if (access(path, F_OK) == 0 && rdb->db_ops != &db3_dbops) {
rdb->db_ops = &db3_dbops;
rpmlog(RPMLOG_WARNING, _("Found BDB Packages database while attempting %s backend: using bdb backend.\n"), db_backend);
}
free(path);
+#endif
if (db_backend)
free(db_backend);
--- ./lib/backend/dbi.h.orig 2019-12-09 15:06:29.920482268 +0000
+++ ./lib/backend/dbi.h 2019-12-09 15:06:37.016465444 +0000
@@ -265,8 +265,10 @@ struct rpmdbOps_s {
const void * (*idxdbKey)(dbiIndex dbi, dbiCursor dbc, unsigned int *keylen);
};
+#if defined(WITH_BDB)
RPM_GNUC_INTERNAL
extern struct rpmdbOps_s db3_dbops;
+#endif
#ifdef ENABLE_NDB
RPM_GNUC_INTERNAL