X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm-chroot-hack.patch;h=472eb6df2277949697169b3a88370e9fc6987fba;hb=53b2c59109f8628e5b67b7d6f144a7624aa9a1a9;hp=0919e8a96a3a254b56b122c7e67544b116e02b07;hpb=b705e4bd36a4e680c12ae7bbb67919b21090dd28;p=packages%2Frpm.git diff --git a/rpm-chroot-hack.patch b/rpm-chroot-hack.patch index 0919e8a..472eb6d 100644 --- a/rpm-chroot-hack.patch +++ b/rpm-chroot-hack.patch @@ -1,26 +1,28 @@ ---- rpm-4.5/rpmdb/db3.c~ 2009-06-06 17:54:26.000000000 +0300 -+++ rpm-4.5/rpmdb/db3.c 2009-06-06 17:55:36.050580710 +0300 -@@ -1329,6 +1329,8 @@ - } else { - assert(rpmdb && rpmdb->db_dbenv); - dbenv = rpmdb->db_dbenv; -+ if (rpmdb->db_chrootDone) -+ dbenv->set_data_dir(dbenv, dbhome); - rpmdb->db_opens++; - } - /*@=mods@*/ -@@ -1511,13 +1511,7 @@ - if (dbfile) - t = stpcpy( stpcpy( t, "/"), dbfile); - /*@=boundswrite@*/ --#ifdef HACK /* XXX necessary to support dbsubfile */ -- dbpath = (!dbi->dbi_use_dbenv && !dbi->dbi_temporary) -- ? dbfullpath : dbfile; --#else -- dbpath = (!dbi->dbi_temporary) -- ? dbfullpath : dbfile; --#endif -+ dbpath = (!dbi->dbi_temporary) ? dbfullpath : dbfile; +--- rpm-4.5/rpmio/rpmrpc.c~ 2009-10-16 01:18:18.566743349 +0300 ++++ rpm-4.5/rpmio/rpmrpc.c 2009-10-16 01:18:21.863999841 +0300 +@@ -179,5 +179,6 @@ + { + const char * lpath; + int ut = urlPath(path, &lpath); ++ int fdno; - #if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) - rc = (db->open)(db, txnid, dbpath, dbsubfile, + if (_rpmio_debug) +@@ -212,7 +213,17 @@ + if (mode == 0) + mode = 0644; + #endif +- return open(path, flags, mode); ++ fdno = open(path, flags, mode); ++ /* XXX if the open(2) fails, try to strip a possible chroot(2) prefix. */ ++ if (fdno < 0 && errno == ENOENT) { ++ const char *dbpath = rpmExpand("%{_dbpath}", "/", NULL); ++ const char *fn = strstr(path + 1, dbpath); ++ if (fn) ++ fdno = open(fn, flags, mode); ++ if (dbpath) ++ dbpath = _free(dbpath); ++ } ++ return fdno; + } + + /* XXX rpmdb.c: analogue to rename(2). */