Don't free up file info sets on transaction test-runs, take II
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 20 Mar 2012 14:32:54 +0000 (16:32 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 20 Mar 2012 14:32:54 +0000 (16:32 +0200)
- Despite commit cef18c94807af0935b7796c462aab8ed39f0f376, we'd still
  end up freeing the file info sets via rpmteClose() while going
  through the test-transaction packages. This together with commit
  06a2f1269b035a3a76464149834f2a5a8c4e89f2 caused install failures
  on packages which have %pretrans scriptlets, if a test-transaction
  was first performed on the same transaction set that gets used
  for the "real" transaction as well. How wonderfully obscure...

lib/rpmte.c

index d1e4f87..65e1e76 100644 (file)
@@ -917,7 +917,8 @@ int rpmteProcess(rpmte te, pkgGoal goal)
 {
     /* Only install/erase resets pkg file info */
     int scriptstage = (goal != PKG_INSTALL && goal != PKG_ERASE);
-    int reset_fi = (scriptstage == 0);
+    int test = (rpmtsFlags(te->ts) & RPMTRANS_FLAG_TEST);
+    int reset_fi = (scriptstage == 0 && test == 0);
     int failed = 1;
 
     /* Dont bother opening for elements without pre/posttrans scripts */