From 68d72a88d5dc983aff2ff5dce65581de0ee42b6d Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Wed, 5 Jun 2019 15:58:55 +0200 Subject: [PATCH] Make libsolv work with rpm 5.2 Version 5.2 still used native endian encoding for the database ids. --- ext/repo_rpmdb_bdb.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ext/repo_rpmdb_bdb.h b/ext/repo_rpmdb_bdb.h index ed82a69c..d0053f71 100644 --- a/ext/repo_rpmdb_bdb.h +++ b/ext/repo_rpmdb_bdb.h @@ -27,6 +27,13 @@ # define RPM_INDEX_SIZE 8 /* rpmdbid + array index */ #endif +#ifdef RPM5 +# include +# if RPMLIB_VERSION_GE(5,3,_,0,0,_) +# define RPM5_BIG_ENDIAN_ID +# endif +#endif + /******************************************************************/ /* Rpm Database stuff @@ -66,11 +73,10 @@ stat_database(struct rpmdbstate *state, char *dbname, struct stat *statbuf, int return 0; } - static inline Id db2rpmdbid(unsigned char *db, int byteswapped) { -#ifdef RPM5 +#ifdef RPM5_BIG_ENDIAN_ID return db[0] << 24 | db[1] << 16 | db[2] << 8 | db[3]; #else # if defined(WORDS_BIGENDIAN) @@ -87,7 +93,7 @@ db2rpmdbid(unsigned char *db, int byteswapped) static inline void rpmdbid2db(unsigned char *db, Id id, int byteswapped) { -#ifdef RPM5 +#ifdef RPM5_BIG_ENDIAN_ID db[0] = id >> 24, db[1] = id >> 16, db[2] = id >> 8, db[3] = id; #else # if defined(WORDS_BIGENDIAN)