diff --git a/.files b/.files
index 4a6190f..6336d62 100644
Binary files a/.files and b/.files differ
diff --git a/.rev b/.rev
index 0ac8f63..f47860b 100644
--- a/.rev
+++ b/.rev
@@ -2154,4 +2154,16 @@ Note that this will require adding `Preinstall: libzstd1` to the `openSUSE:Facto
Use libgcrypt as crypto library, switch to ndb database
769573
+
+ ea8dce331335f96146f22a2043985d35
+ 4.15.1
+
+ dimstar_suse
+ Follow one level of symlink indirection when converting the rpm database [bnc#1167537]
+
+Note that this is IMPORTANT and should go into Factory fast: without
+it, updates to Tumbleweed may end up with a broken rpm database.
+See bugzilla 1167537 for the gory details.
+ 787932
+
diff --git a/db_conversion.diff b/db_conversion.diff
index f7b01b0..258bd33 100644
--- a/db_conversion.diff
+++ b/db_conversion.diff
@@ -1,5 +1,5 @@
---- ./lib/backend/bdb_ro.c.orig 2020-01-17 15:48:50.622349363 +0000
-+++ ./lib/backend/bdb_ro.c 2020-01-17 15:49:20.514287856 +0000
+--- ./lib/backend/bdb_ro.c.orig 2020-03-24 20:45:19.121907476 +0000
++++ ./lib/backend/bdb_ro.c 2020-03-24 20:46:17.141727988 +0000
@@ -795,6 +795,7 @@ static unsigned int bdbro_pkgdbKey(dbiIn
struct rpmdbOps_s bdbro_dbops = {
.name = "bdb_ro",
@@ -8,8 +8,8 @@
.open = bdbro_Open,
.close = bdbro_Close,
---- ./lib/backend/dbi.c.orig 2020-01-17 15:48:50.622349363 +0000
-+++ ./lib/backend/dbi.c 2020-01-17 15:49:20.514287856 +0000
+--- ./lib/backend/dbi.c.orig 2020-03-24 20:45:19.121907476 +0000
++++ ./lib/backend/dbi.c 2020-03-24 20:46:17.141727988 +0000
@@ -105,11 +105,20 @@ dbDetectBackend(rpmdb rdb)
}
@@ -31,8 +31,8 @@
const char * dbiName(dbiIndex dbi)
{
return dbi->dbi_file;
---- ./lib/backend/dbi.h.orig 2020-01-17 15:48:50.622349363 +0000
-+++ ./lib/backend/dbi.h 2020-01-17 15:49:49.886227415 +0000
+--- ./lib/backend/dbi.h.orig 2020-03-24 20:45:19.121907476 +0000
++++ ./lib/backend/dbi.h 2020-03-24 20:46:17.141727988 +0000
@@ -10,6 +10,7 @@ enum rpmdbFlags {
RPMDB_FLAG_JUSTCHECK = (1 << 0),
RPMDB_FLAG_REBUILD = (1 << 1),
@@ -72,8 +72,8 @@
int (*open)(rpmdb rdb, rpmDbiTagVal rpmtag, dbiIndex * dbip, int flags);
int (*close)(dbiIndex dbi, unsigned int flags);
---- ./lib/rpmdb.c.orig 2020-01-17 15:48:50.622349363 +0000
-+++ ./lib/rpmdb.c 2020-01-17 15:53:52.241669094 +0000
+--- ./lib/rpmdb.c.orig 2020-03-24 20:45:19.117907488 +0000
++++ ./lib/rpmdb.c 2020-03-24 21:01:54.870821518 +0000
@@ -513,8 +513,16 @@ static int openDatabase(const char * pre
rpmsqActivate(1);
}
@@ -128,7 +128,31 @@
{
rpmdb olddb;
char * dbpath = NULL;
-@@ -2536,7 +2555,7 @@ int rpmdbRebuild(const char * prefix, rp
+@@ -2512,7 +2531,22 @@ int rpmdbRebuild(const char * prefix, rp
+ }
+ rootdbpath = rpmGetPath(prefix, dbpath, NULL);
+
+- newdbpath = rpmGetPath("%{?_dbpath_rebuild}", NULL);
++ if ((newdbflags & RPMDB_FLAG_CONVERT) != 0) {
++ char lbuf[PATH_MAX];
++ ssize_t s = readlink(rootdbpath, lbuf, PATH_MAX);
++ if (s > 0 && s < PATH_MAX) {
++ lbuf[s] = 0;
++ free(dbpath);
++ if (lbuf[0] == '/')
++ dbpath = strdup(lbuf);
++ else
++ dbpath = rpmGetPath("%{?_dbpath}", "/../", lbuf, NULL);
++ free(rootdbpath);
++ rootdbpath = rpmGetPath(prefix, dbpath, NULL);
++ }
++ newdbpath = strdup("");
++ } else
++ newdbpath = rpmGetPath("%{?_dbpath_rebuild}", NULL);
+ if (rstreq(newdbpath, "") || rstreq(newdbpath, dbpath)) {
+ newdbpath = _free(newdbpath);
+ rasprintf(&newdbpath, "%srebuilddb.%d", dbpath, (int) getpid());
+@@ -2536,7 +2570,7 @@ int rpmdbRebuild(const char * prefix, rp
goto exit;
}
if (openDatabase(prefix, newdbpath, &newdb,
@@ -137,8 +161,8 @@
rc = 1;
goto exit;
}
---- ./lib/rpmdb_internal.h.orig 2020-01-17 15:51:16.134030103 +0000
-+++ ./lib/rpmdb_internal.h 2020-01-17 15:50:27.050144956 +0000
+--- ./lib/rpmdb_internal.h.orig 2019-06-26 14:17:31.412985694 +0000
++++ ./lib/rpmdb_internal.h 2020-03-24 20:46:17.141727988 +0000
@@ -63,11 +63,13 @@ int rpmdbClose (rpmdb db);
* @param prefix path to top of install tree
* @param ts transaction set (or NULL)
@@ -154,8 +178,8 @@
/** \ingroup rpmdb
* Verify database components.
---- ./lib/rpmts.c.orig 2020-01-17 15:51:37.813979967 +0000
-+++ ./lib/rpmts.c 2020-01-17 15:51:48.925954269 +0000
+--- ./lib/rpmts.c.orig 2020-03-24 20:45:19.105907526 +0000
++++ ./lib/rpmts.c 2020-03-24 20:46:17.145727976 +0000
@@ -143,9 +143,9 @@ int rpmtsRebuildDB(rpmts ts)
txn = rpmtxnBegin(ts, RPMTXN_WRITE);
if (txn) {
diff --git a/macrosin.diff b/macrosin.diff
index e8efb9c..fbcb795 100644
--- a/macrosin.diff
+++ b/macrosin.diff
@@ -121,7 +121,7 @@
%_host_cpu @host_cpu@
%_host_vendor @host_vendor@
%_host_os @host_os@
-@@ -1119,7 +1139,9 @@ package or when debugging this package.\
+@@ -1119,7 +1139,10 @@ package or when debugging this package.\
#------------------------------------------------------------------------------
# arch macro for all supported ARM processors
@@ -129,6 +129,7 @@
+%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
+%arml armv3l armv4l armv5l armv5tel armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
+%armb armv4b armv5b armv5teb
++%arm64 aarch64
#------------------------------------------------------------------------------
# arch macro for 32-bit MIPS processors
diff --git a/rpm.changes b/rpm.changes
index 8643932..024fc95 100644
--- a/rpm.changes
+++ b/rpm.changes
@@ -1,4 +1,16 @@
-------------------------------------------------------------------
+Tue Mar 24 22:16:22 CET 2020 - mls@suse.de
+
+- Follow one level of symlink indirection when converting the rpm
+ database [bnc#1167537]
+ * modified patch: db_conversion.diff
+
+-------------------------------------------------------------------
+Mon Mar 23 16:11:34 UTC 2020 - Sergio Lindo Mansilla
+
+- Add macro for supported ARM 64bit processors
+
+-------------------------------------------------------------------
Fri Jan 17 11:27:17 CET 2020 - mls@suse.de
- Use libgcrypt as crypto library instead of beecrypt