]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm-chroot-hack.patch
- rel 49; rebuild with new libproxy
[packages/rpm.git] / rpm-chroot-hack.patch
index 0919e8a96a3a254b56b122c7e67544b116e02b07..472eb6df2277949697169b3a88370e9fc6987fba 100644 (file)
@@ -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). */
This page took 0.116635 seconds and 4 git commands to generate.