alexk / rpms / rpm

Forked from rpms/rpm 2 years ago
Clone
648606
Move RPMCALLBACK_ELEM_PROGRESS to rpmteProcess to have header available
648606
648606
The header of the rpmte is only available after rpmteOpen().
648606
Added num param to rpmteProcess to be able to signal the progress to the
648606
callback.
648606
648606
(cherry picked from commit 124ed29259b05fdf574d5e3e145bc1201b24ae4d)
648606
---
648606
diff -uNr rpm-4.11.3.orig/lib/rpmte.c rpm-4.11.3/lib/rpmte.c
648606
--- rpm-4.11.3.orig/lib/rpmte.c	2017-08-23 15:39:18.195927789 +0200
648606
+++ rpm-4.11.3/lib/rpmte.c	2017-08-23 15:40:12.857349575 +0200
648606
@@ -939,7 +939,7 @@
648606
     return rc;
648606
 }
648606
 
648606
-int rpmteProcess(rpmte te, pkgGoal goal)
648606
+int rpmteProcess(rpmte te, pkgGoal goal, int num)
648606
 {
648606
     /* Only install/erase resets pkg file info */
648606
     int scriptstage = (goal != PKG_INSTALL && goal != PKG_ERASE);
648606
@@ -959,6 +959,11 @@
648606
     }
648606
 
648606
     if (rpmteOpen(te, reset_fi)) {
648606
+	if (!scriptstage) {
648606
+	    rpmtsNotify(te->ts, te, RPMCALLBACK_ELEM_PROGRESS, num,
648606
+			rpmtsMembers(te->ts)->orderCount);
648606
+	}
648606
+
648606
 	failed = rpmpsmRun(te->ts, te, goal);
648606
 	rpmteClose(te, reset_fi);
648606
     }
648606
diff -uNr rpm-4.11.3.orig/lib/rpmte_internal.h rpm-4.11.3/lib/rpmte_internal.h
648606
--- rpm-4.11.3.orig/lib/rpmte_internal.h	2013-11-22 11:31:31.000000000 +0100
648606
+++ rpm-4.11.3/lib/rpmte_internal.h	2017-08-23 15:40:24.654440605 +0200
648606
@@ -56,7 +56,7 @@
648606
 FD_t rpmtePayload(rpmte te);
648606
 
648606
 RPM_GNUC_INTERNAL
648606
-int rpmteProcess(rpmte te, pkgGoal goal);
648606
+int rpmteProcess(rpmte te, pkgGoal goal, int num);
648606
 
648606
 RPM_GNUC_INTERNAL
648606
 void rpmteAddProblem(rpmte te, rpmProblemType type,
648606
diff -uNr rpm-4.11.3.orig/lib/transaction.c rpm-4.11.3/lib/transaction.c
648606
--- rpm-4.11.3.orig/lib/transaction.c	2017-08-23 15:39:18.257928268 +0200
648606
+++ rpm-4.11.3/lib/transaction.c	2017-08-23 15:42:24.986369126 +0200
648606
@@ -1170,10 +1170,11 @@
648606
 static int runTransScripts(rpmts ts, pkgGoal goal) 
648606
 {
648606
     int rc = 0;
648606
+    int i = 0;
648606
     rpmte p;
648606
     rpmtsi pi = rpmtsiInit(ts);
648606
     while ((p = rpmtsiNext(pi, TR_ADDED)) != NULL) {
648606
-	rc += rpmteProcess(p, goal);
648606
+	rc += rpmteProcess(p, goal, i++);
648606
     }
648606
     rpmtsiFree(pi);
648606
     return rc;
648606
@@ -1415,7 +1416,6 @@
648606
 static int rpmtsProcess(rpmts ts)
648606
 {
648606
     rpmtsi pi;	rpmte p;
648606
-    tsMembers tsmem = rpmtsMembers(ts);
648606
     int rc = 0;
648606
     int i = 0;
648606
 
648606
@@ -1423,8 +1423,6 @@
648606
     while ((p = rpmtsiNext(pi, 0)) != NULL) {
648606
 	int failed;
648606
 
648606
-	rpmtsNotify(ts, NULL, RPMCALLBACK_ELEM_PROGRESS, i++,
648606
-		tsmem->orderCount);
648606
 	rpmlog(RPMLOG_DEBUG, "========== +++ %s %s-%s 0x%x\n",
648606
 		rpmteNEVR(p), rpmteA(p), rpmteO(p), rpmteColor(p));
648606
 
648606
@@ -1432,7 +1430,7 @@
648606
 	    rpmtsSELabelInit(ts, 0);
648606
 	}
648606
 
648606
-	failed = rpmteProcess(p, rpmteType(p));
648606
+	failed = rpmteProcess(p, rpmteType(p), i++);
648606
 	if (failed) {
648606
 	    rpmlog(RPMLOG_ERR, "%s: %s %s\n", rpmteNEVRA(p),
648606
 		   rpmteTypeString(p), failed > 1 ? _("skipped") : _("failed"));