public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/rpm] rawhide: Fix file trigger and macro regregressions (#2492628 and #2492483)
@ 2026-06-25 10:18 Panu Matilainen
  0 siblings, 0 replies; only message in thread
From: Panu Matilainen @ 2026-06-25 10:18 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/rpm
Branch : rawhide
Commit : 410018807beca5ce8c6576c83be9a7517da186d1
Author : Panu Matilainen <pmatilai@redhat.com>
Date   : 2026-06-25T13:17:25+03:00
Stats  : +550/-1 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/rpm/c/410018807beca5ce8c6576c83be9a7517da186d1?branch=rawhide

Log:
Fix file trigger and macro regregressions (#2492628 and #2492483)

---
diff --git a/0001-Fix-a-dumb-regression-from-introducing-define-option.patch b/0001-Fix-a-dumb-regression-from-introducing-define-option.patch
new file mode 100644
index 0000000..c50ebdf
--- /dev/null
+++ b/0001-Fix-a-dumb-regression-from-introducing-define-option.patch
@@ -0,0 +1,81 @@
+From 913450b9b7fc37166d4e51fb3359cb48995750ae Mon Sep 17 00:00:00 2001
+Message-ID: <913450b9b7fc37166d4e51fb3359cb48995750ae.1782382430.git.pmatilai@redhat.com>
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 25 Jun 2026 13:08:57 +0300
+Subject: [PATCH] Fix a dumb regression from introducing %define options
+
+Commit f2ac80b80db977f2bf0df38feaf8c176fd776085 broke some common uses
+of %define that we didn't test - we were only testing --define and
+macro files. Oops.
+
+Turns out this is just a silly thinko: just don't touch "se" at all.
+Add the missing tests as well.
+
+Fixes: #4249
+---
+ rpmio/macro.cc    |  1 -
+ tests/rpmmacro.at | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 36 insertions(+), 1 deletion(-)
+
+diff --git a/rpmio/macro.cc b/rpmio/macro.cc
+index fe2282cf0..97330cda6 100644
+--- a/rpmio/macro.cc
++++ b/rpmio/macro.cc
+@@ -637,7 +637,6 @@ doDefine(rpmMacroBuf mb, const std::string & str, int level,
+ 	} else {
+ 	    handleopts = 0;
+ 	}
+-	se = s;
+     }
+ 
+     /* Copy name */
+diff --git a/tests/rpmmacro.at b/tests/rpmmacro.at
+index fb88567cd..dc08ee327 100644
+--- a/tests/rpmmacro.at
++++ b/tests/rpmmacro.at
+@@ -1849,6 +1849,42 @@ rpm --eval "%define - xx yy"
+ [],
+ [error: %define: no option after -
+ ])
++
++RPMTEST_CHECK([
++rpm --eval "%define xx() yy" --eval "%xx"
++],
++[0],
++[yy
++],
++[])
++
++RPMTEST_CHECK([
++rpm \
++	--define "mypath /bar" \
++	--eval "%define -e xx(abc:) %mypath" \
++	--eval "%xx -a -b -c1" \
++	--eval "%define mypath /foo" \
++	--eval "%xx"
++],
++[0],
++[/bar
++/bar
++],
++[])
++RPMTEST_CHECK([
++rpm \
++	--define "mypath /bar" \
++	--eval "%define -g xx<o> %mypath" \
++	--eval "%xx" \
++	--eval "%define mypath /foo" \
++	--eval "%xx"
++],
++[0],
++[/bar
++/bar
++],
++[])
++
+ RPMTEST_CLEANUP
+ 
+ RPMTEST_SETUP([error macro return])
+-- 
+2.54.0
+

diff --git a/0001-Revert-Eliminate-the-now-redundant-rpmtriggers-wrapp.patch b/0001-Revert-Eliminate-the-now-redundant-rpmtriggers-wrapp.patch
new file mode 100644
index 0000000..639616d
--- /dev/null
+++ b/0001-Revert-Eliminate-the-now-redundant-rpmtriggers-wrapp.patch
@@ -0,0 +1,202 @@
+From 3a81f58be05c702bc67ddaef6d3e4999f6165c7a Mon Sep 17 00:00:00 2001
+Message-ID: <3a81f58be05c702bc67ddaef6d3e4999f6165c7a.1782379983.git.pmatilai@redhat.com>
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 25 Jun 2026 12:32:07 +0300
+Subject: [PATCH 1/2] Revert "Eliminate the now redundant rpmtriggers wrapper
+ struct"
+
+This reverts commit 428332d19ed8e6f8eb6d4c9265dbc35172466237.
+---
+ lib/rpmtriggers.cc | 37 ++++++++++++++++++++++++++++++-------
+ lib/rpmtriggers.hh | 16 ++++++++++++----
+ lib/rpmts.cc       |  5 ++++-
+ 3 files changed, 46 insertions(+), 12 deletions(-)
+
+diff --git a/lib/rpmtriggers.cc b/lib/rpmtriggers.cc
+index f192de1f0..d035a0be9 100644
+--- a/lib/rpmtriggers.cc
++++ b/lib/rpmtriggers.cc
+@@ -17,6 +17,24 @@
+ 
+ #define TRIGGER_PRIORITY_BOUND 10000
+ 
++rpmtriggers rpmtriggersCreate(unsigned int hint)
++{
++    rpmtriggers triggers = new rpmtriggers_s {};
++    return triggers;
++}
++
++rpmtriggers rpmtriggersFree(rpmtriggers triggers)
++{
++    delete triggers;
++    return NULL;
++}
++
++static void rpmtriggersAdd(rpmtriggers trigs, unsigned int hdrNum,
++			    unsigned int tix, unsigned int priority)
++{
++    trigs->triggerInfo.emplace(hdrNum, tix, priority);
++}
++
+ static unsigned int getTrigPriority(Header h, rpmTagVal prioTag, int tix)
+ {
+     unsigned int priority = RPMTRIGGER_DEFAULT_PRIORITY;
+@@ -41,7 +59,8 @@ static void addTriggers(rpmts ts, Header trigH, rpmsenseFlags filter,
+ 	while (rpmdsNext(ds) >= 0) {
+ 	    if ((rpmdsFlags(ds) & filter) && strcmp(prefix, rpmdsN(ds)) == 0) {
+ 		unsigned int priority = getTrigPriority(trigH, prioTag, tix);
+-		ts->trigs2run.emplace(headerGetInstance(trigH), tix, priority);
++		rpmtriggersAdd(ts->trigs2run, headerGetInstance(trigH),
++				    tix, priority);
+ 	    }
+ 	}
+ 	rpmdsFree(ds);
+@@ -92,10 +111,11 @@ int runPostUnTransFileTrigs(rpmts ts)
+     int arg1 = 0;
+     struct rpmtd_s installPrefixes;
+     rpmScript script;
++    rpmtriggers trigs = ts->trigs2run;
+     int nerrors = 0;
+ 
+     /* Iterate over stored triggers */
+-    for (const auto & trig : ts->trigs2run) {
++    for (const auto & trig : trigs->triggerInfo) {
+ 	/* Get header containing trigger script */
+ 	trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts), trig.hdrNum);
+ 
+@@ -478,7 +498,7 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, int arg2, rpmsenseFlags sense,
+     int arg1 = 0;
+     int (*matchFunc)(rpmts, rpmte, const char*, rpmsenseFlags sense);
+     rpmTagVal priorityTag;
+-    rpmtriggers triggers;
++    rpmtriggers triggers = rpmtriggersCreate(10);
+ 
+     /* Decide if we match triggers against files in te or in whole ts */
+     if (tm == RPMSCRIPT_FILETRIGGER) {
+@@ -513,7 +533,7 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, int arg2, rpmsenseFlags sense,
+ 		headerFree(trigH);
+ 
+ 		/* Store file trigger in array */
+-		triggers.emplace(offset, tix, priority);
++		rpmtriggersAdd(triggers, offset, tix, priority);
+ 	    }
+ 	}
+ 	free(pfx);
+@@ -521,7 +541,7 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, int arg2, rpmsenseFlags sense,
+     rpmdbIndexIteratorFree(ii);
+ 
+     /* Handle stored triggers */
+-    for (const auto & trig : triggers) {
++    for (const auto & trig : triggers->triggerInfo) {
+ 	if (priorityClass == 1) {
+ 	    if (trig.priority < TRIGGER_PRIORITY_BOUND)
+ 		continue;
+@@ -544,6 +564,7 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, int arg2, rpmsenseFlags sense,
+ 						arg1, arg2);
+ 	headerFree(trigH);
+     }
++    rpmtriggersFree(triggers);
+ 
+     return (nerrors == 0) ? RPMRC_OK : RPMRC_FAIL;
+ }
+@@ -566,16 +587,17 @@ rpmRC runImmedFileTriggers(rpmts ts, rpmte te, int arg1, rpmsenseFlags sense,
+     headerGet(trigH, priorityTag, &priorities, HEADERGET_MINMEM);
+ 
+     triggersCount = rpmtdCount(&priorities);
++    triggers = rpmtriggersCreate(triggersCount);
+ 
+     for (int i = 0; i < triggersCount; i++) {
+ 	unsigned int priority = RPMTRIGGER_DEFAULT_PRIORITY;
+ 	if (rpmtdSetIndex(&priorities, i) >= 0)
+ 	    priority = rpmtdGetNumber(&priorities);
+ 	/* Offset is not important, all triggers are from the same package */
+-	triggers.emplace(0, i, priority);
++	rpmtriggersAdd(triggers, 0, i, priority);
+     }
+ 
+-    for (const auto & trig : triggers) {
++    for (const auto & trig : triggers->triggerInfo) {
+ 	if (priorityClass == 1) {
+ 	    if (trig.priority < TRIGGER_PRIORITY_BOUND)
+ 		continue;
+@@ -588,6 +610,7 @@ rpmRC runImmedFileTriggers(rpmts ts, rpmte te, int arg1, rpmsenseFlags sense,
+ 					    trig.tix,
+ 					    arg1, -1);
+     }
++    rpmtriggersFree(triggers);
+     headerFree(trigH);
+ 
+     return (nerrors == 0) ? RPMRC_OK : RPMRC_FAIL;
+diff --git a/lib/rpmtriggers.hh b/lib/rpmtriggers.hh
+index d3aef5cf4..f1c4af733 100644
+--- a/lib/rpmtriggers.hh
++++ b/lib/rpmtriggers.hh
+@@ -9,23 +9,31 @@
+ 
+ #define RPMTRIGGER_DEFAULT_PRIORITY 1000000
+ 
+-struct triggerInfo {
++struct triggerInfo_s {
+     unsigned int hdrNum;
+     unsigned int tix;
+     unsigned int priority;
+ 
+-    bool operator < (const triggerInfo & o) const
++    bool operator < (const triggerInfo_s & o) const
+     {
+ 	return std::tie(priority, hdrNum, tix) <
+ 	       std::tie(o.priority, o.hdrNum, o.tix);
+     }
+-    triggerInfo(unsigned int _hnum, unsigned int _tix, unsigned int _prio) :
++    triggerInfo_s(unsigned int _hnum, unsigned int _tix, unsigned int _prio) :
+ 		hdrNum(_hnum), tix(_tix), priority(_prio)
+     {
+     }
+ };
+ 
+-using rpmtriggers = std::set<triggerInfo>;
++typedef struct rpmtriggers_s {
++    std::set<triggerInfo_s> triggerInfo;
++} *rpmtriggers;
++
++RPM_GNUC_INTERNAL
++rpmtriggers rpmtriggersCreate(unsigned int hint);
++
++RPM_GNUC_INTERNAL
++rpmtriggers rpmtriggersFree(rpmtriggers triggers);
+ 
+ /*
+  * Prepare post trans uninstall file triggers. After transcation uninstalled
+diff --git a/lib/rpmts.cc b/lib/rpmts.cc
+index 4dad54d35..eef92a3aa 100644
+--- a/lib/rpmts.cc
++++ b/lib/rpmts.cc
+@@ -566,7 +566,6 @@ void rpmtsEmpty(rpmts ts)
+ 	return;
+ 
+     rpmtsClean(ts);
+-    ts->trigs2run.clear();
+ 
+     for (auto & te : tsmem->order) {
+ 	rpmtsNotifyChange(ts, RPMTS_EVENT_DEL, te, NULL);
+@@ -644,6 +643,7 @@ rpmts rpmtsFree(rpmts ts)
+ 
+     ts->plugins = rpmpluginsFree(ts->plugins);
+ 
++    rpmtriggersFree(ts->trigs2run);
+     rpmlogReset((uint64_t) ts);
+ 
+     if (_rpmts_stats)
+@@ -1042,6 +1042,9 @@ rpmts rpmtsCreate(void)
+     ts->nrefs = 0;
+ 
+     ts->plugins = NULL;
++
++    ts->trigs2run = rpmtriggersCreate(10);
++
+     ts->min_writes = (rpmExpandNumeric("%{?_minimize_writes}") > 0);
+ 
+     return rpmtsLink(ts);
+-- 
+2.54.0
+

diff --git a/0002-Revert-Convert-file-trigger-structures-minimally-to-.patch b/0002-Revert-Convert-file-trigger-structures-minimally-to-.patch
new file mode 100644
index 0000000..9d423ba
--- /dev/null
+++ b/0002-Revert-Convert-file-trigger-structures-minimally-to-.patch
@@ -0,0 +1,257 @@
+From 585f1f5e3ea74118b723c3cbf80a7788d9d9e7f1 Mon Sep 17 00:00:00 2001
+Message-ID: <585f1f5e3ea74118b723c3cbf80a7788d9d9e7f1.1782379983.git.pmatilai@redhat.com>
+In-Reply-To: <3a81f58be05c702bc67ddaef6d3e4999f6165c7a.1782379983.git.pmatilai@redhat.com>
+References: <3a81f58be05c702bc67ddaef6d3e4999f6165c7a.1782379983.git.pmatilai@redhat.com>
+From: Panu Matilainen <pmatilai@redhat.com>
+Date: Thu, 25 Jun 2026 12:32:13 +0300
+Subject: [PATCH 2/2] Revert "Convert file trigger structures minimally to an
+ STL set"
+
+This reverts commit 15dfb472ab1a00f140f4eec5984922974205bf27.
+---
+ lib/rpmtriggers.cc | 105 ++++++++++++++++++++++++++++++++++++++-------
+ lib/rpmtriggers.hh |  17 ++------
+ 2 files changed, 92 insertions(+), 30 deletions(-)
+
+diff --git a/lib/rpmtriggers.cc b/lib/rpmtriggers.cc
+index d035a0be9..11215e3cb 100644
+--- a/lib/rpmtriggers.cc
++++ b/lib/rpmtriggers.cc
+@@ -20,19 +20,83 @@
+ rpmtriggers rpmtriggersCreate(unsigned int hint)
+ {
+     rpmtriggers triggers = new rpmtriggers_s {};
++    triggers->count = 0;
++    triggers->alloced = hint;
++    triggers->triggerInfo = (struct triggerInfo_s *)xmalloc(sizeof(struct triggerInfo_s) *
++				    triggers->alloced);
+     return triggers;
+ }
+ 
+ rpmtriggers rpmtriggersFree(rpmtriggers triggers)
+ {
++    _free(triggers->triggerInfo);
+     delete triggers;
++
+     return NULL;
+ }
+ 
+ static void rpmtriggersAdd(rpmtriggers trigs, unsigned int hdrNum,
+ 			    unsigned int tix, unsigned int priority)
+ {
+-    trigs->triggerInfo.emplace(hdrNum, tix, priority);
++    if (trigs->count == trigs->alloced) {
++	trigs->alloced <<= 1;
++	trigs->triggerInfo = xrealloc(trigs->triggerInfo,
++				sizeof(struct triggerInfo_s) * trigs->alloced);
++    }
++
++    trigs->triggerInfo[trigs->count].hdrNum = hdrNum;
++    trigs->triggerInfo[trigs->count].tix = tix;
++    trigs->triggerInfo[trigs->count].priority = priority;
++    trigs->count++;
++}
++
++static int trigCmp(const void *a, const void *b)
++{
++    const struct triggerInfo_s *trigA = (const struct triggerInfo_s *)a;
++    const struct triggerInfo_s *trigB = (const struct triggerInfo_s *)b;
++
++    if (trigA->priority < trigB->priority)
++	return 1;
++
++    if (trigA->priority > trigB->priority)
++	return -1;
++
++    if (trigA->hdrNum < trigB->hdrNum)
++	return -1;
++
++    if (trigA->hdrNum > trigB->hdrNum)
++	return 1;
++
++    if (trigA->tix < trigB->tix)
++	return -1;
++
++    if (trigA->tix > trigB->tix)
++	return 1;
++
++    return 0;
++}
++
++static void rpmtriggersSortAndUniq(rpmtriggers trigs)
++{
++    unsigned int from;
++    unsigned int to = 0;
++    unsigned int count = trigs->count;
++
++    if (count > 1)
++	qsort(trigs->triggerInfo, count, sizeof(struct triggerInfo_s), trigCmp);
++
++    for (from = 0; from < count; from++) {
++	if (from > 0 &&
++	    !trigCmp((const void *) &trigs->triggerInfo[from - 1],
++		    (const void *) &trigs->triggerInfo[from])) {
++
++	    trigs->count--;
++	    continue;
++	}
++	if (from != to)
++	    trigs->triggerInfo[to] = trigs->triggerInfo[from];
++	to++;
++    }
+ }
+ 
+ static unsigned int getTrigPriority(Header h, rpmTagVal prioTag, int tix)
+@@ -106,6 +170,7 @@ void rpmtriggersPrepPostUnTransFileTrigs(rpmts ts, rpmte te)
+ 
+ int runPostUnTransFileTrigs(rpmts ts)
+ {
++    int i;
+     Header trigH;
+     const char * trigName = NULL;
+     int arg1 = 0;
+@@ -114,10 +179,12 @@ int runPostUnTransFileTrigs(rpmts ts)
+     rpmtriggers trigs = ts->trigs2run;
+     int nerrors = 0;
+ 
++    rpmtriggersSortAndUniq(trigs);
+     /* Iterate over stored triggers */
+-    for (const auto & trig : trigs->triggerInfo) {
++    for (i = 0; i < trigs->count; i++) {
+ 	/* Get header containing trigger script */
+-	trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts), trig.hdrNum);
++	trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts),
++				trigs->triggerInfo[i].hdrNum);
+ 
+ 	/* Maybe package with this trigger is already uninstalled */
+ 	if (trigH == NULL)
+@@ -126,7 +193,7 @@ int runPostUnTransFileTrigs(rpmts ts)
+ 	/* Prepare and run script */
+ 	script = rpmScriptFromTriggerTag(trigH,
+ 		triggertag(RPMSENSE_TRIGGERPOSTUN),
+-		RPMSCRIPT_TRANSFILETRIGGER, trig.tix);
++		RPMSCRIPT_TRANSFILETRIGGER, trigs->triggerInfo[i].tix);
+ 
+ 	headerGet(trigH, RPMTAG_INSTPREFIXES, &installPrefixes,
+ 		HEADERGET_ALLOC|HEADERGET_ARGV);
+@@ -540,27 +607,30 @@ rpmRC runFileTriggers(rpmts ts, rpmte te, int arg2, rpmsenseFlags sense,
+     }
+     rpmdbIndexIteratorFree(ii);
+ 
++    /* Sort triggers by priority, offset, trigger index */
++    rpmtriggersSortAndUniq(triggers);
++
+     /* Handle stored triggers */
+-    for (const auto & trig : triggers->triggerInfo) {
++    for (i = 0; i < triggers->count; i++) {
+ 	if (priorityClass == 1) {
+-	    if (trig.priority < TRIGGER_PRIORITY_BOUND)
++	    if (triggers->triggerInfo[i].priority < TRIGGER_PRIORITY_BOUND)
+ 		continue;
+ 	} else if (priorityClass == 2) {
+-	    if (trig.priority >= TRIGGER_PRIORITY_BOUND)
++	    if (triggers->triggerInfo[i].priority >= TRIGGER_PRIORITY_BOUND)
+ 		continue;
+ 	}
+ 
+-	trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts), trig.hdrNum);
++	trigH = rpmdbGetHeaderAt(rpmtsGetRdb(ts), triggers->triggerInfo[i].hdrNum);
+ 	trigName = headerGetString(trigH, RPMTAG_NAME);
+ 	arg1 = rpmdbCountPackages(rpmtsGetRdb(ts), trigName);
+ 
+ 	if (tm == RPMSCRIPT_FILETRIGGER)
+ 	    nerrors += runHandleTriggersInPkg(ts, te, trigH, sense, tm, 0,
+-						trig.tix,
++						triggers->triggerInfo[i].tix,
+ 						arg1, arg2);
+ 	else
+ 	    nerrors += runHandleTriggersInPkg(ts, te, trigH, sense, tm, 1,
+-						trig.tix,
++						triggers->triggerInfo[i].tix,
+ 						arg1, arg2);
+ 	headerFree(trigH);
+     }
+@@ -573,7 +643,7 @@ rpmRC runImmedFileTriggers(rpmts ts, rpmte te, int arg1, rpmsenseFlags sense,
+ 			    rpmscriptTriggerModes tm, int priorityClass)
+ {
+     int nerrors = 0;
+-    int triggersCount;
++    int triggersCount, i;
+     Header trigH = rpmteHeader(te);
+     struct rpmtd_s priorities;
+     rpmTagVal priorityTag;
+@@ -589,7 +659,7 @@ rpmRC runImmedFileTriggers(rpmts ts, rpmte te, int arg1, rpmsenseFlags sense,
+     triggersCount = rpmtdCount(&priorities);
+     triggers = rpmtriggersCreate(triggersCount);
+ 
+-    for (int i = 0; i < triggersCount; i++) {
++    for (i = 0; i < triggersCount; i++) {
+ 	unsigned int priority = RPMTRIGGER_DEFAULT_PRIORITY;
+ 	if (rpmtdSetIndex(&priorities, i) >= 0)
+ 	    priority = rpmtdGetNumber(&priorities);
+@@ -597,17 +667,20 @@ rpmRC runImmedFileTriggers(rpmts ts, rpmte te, int arg1, rpmsenseFlags sense,
+ 	rpmtriggersAdd(triggers, 0, i, priority);
+     }
+ 
+-    for (const auto & trig : triggers->triggerInfo) {
++    /* Sort triggers by priority, offset, trigger index */
++    rpmtriggersSortAndUniq(triggers);
++
++    for (i = 0; i < triggersCount; i++) {
+ 	if (priorityClass == 1) {
+-	    if (trig.priority < TRIGGER_PRIORITY_BOUND)
++	    if (triggers->triggerInfo[i].priority < TRIGGER_PRIORITY_BOUND)
+ 		continue;
+ 	} else if (priorityClass == 2) {
+-	    if (trig.priority >= TRIGGER_PRIORITY_BOUND)
++	    if (triggers->triggerInfo[i].priority >= TRIGGER_PRIORITY_BOUND)
+ 		continue;
+ 	}
+ 
+ 	nerrors += runHandleTriggersInPkg(ts, te, trigH, sense, tm, 2,
+-					    trig.tix,
++					    triggers->triggerInfo[i].tix,
+ 					    arg1, -1);
+     }
+     rpmtriggersFree(triggers);
+diff --git a/lib/rpmtriggers.hh b/lib/rpmtriggers.hh
+index f1c4af733..1e436bb4a 100644
+--- a/lib/rpmtriggers.hh
++++ b/lib/rpmtriggers.hh
+@@ -1,9 +1,6 @@
+ #ifndef _RPMTRIGGERS_H
+ #define _RPMTRIGGERS_H
+ 
+-#include <set>
+-#include <tuple>
+-
+ #include <rpm/rpmutil.h>
+ #include "rpmscript.hh"
+ 
+@@ -13,20 +10,12 @@ struct triggerInfo_s {
+     unsigned int hdrNum;
+     unsigned int tix;
+     unsigned int priority;
+-
+-    bool operator < (const triggerInfo_s & o) const
+-    {
+-	return std::tie(priority, hdrNum, tix) <
+-	       std::tie(o.priority, o.hdrNum, o.tix);
+-    }
+-    triggerInfo_s(unsigned int _hnum, unsigned int _tix, unsigned int _prio) :
+-		hdrNum(_hnum), tix(_tix), priority(_prio)
+-    {
+-    }
+ };
+ 
+ typedef struct rpmtriggers_s {
+-    std::set<triggerInfo_s> triggerInfo;
++    struct triggerInfo_s *triggerInfo;
++    int count;
++    int alloced;
+ } *rpmtriggers;
+ 
+ RPM_GNUC_INTERNAL
+-- 
+2.54.0
+

diff --git a/rpm.spec b/rpm.spec
index e373d1f..1c872cd 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -28,7 +28,7 @@
 
 %global rpmver 6.0.91
 #global snapver rc1
-%global baserelease 2
+%global baserelease 3
 %global sover 10
 
 %global srcver %{rpmver}%{?snapver:-%{snapver}}
@@ -125,10 +125,15 @@ rpm-6.0-rpmformat.patch
 # https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/298
 0001-Revert-Add-a-deprecation-warning-for-clamp_mtime_to_.patch
 
+# Temporarily revert file trigger refactor for further investigation
+0001-Revert-Eliminate-the-now-redundant-rpmtriggers-wrapp.patch
+0002-Revert-Convert-file-trigger-structures-minimally-to-.patch
+
 # Patches already upstream:
 # Slightly modified from usptream commit due to not having the test,
 # because the test adds a binary that "patch" doesn't handle, argh
 0001-Fix-rubygem-extract-regression-from-b8b54f92c65bca7b.patch
+0001-Fix-a-dumb-regression-from-introducing-define-option.patch
 
 # These are not yet upstream
 rpm-4.7.1-geode-i686.patch
@@ -641,6 +646,10 @@ fi
 %doc %{_defaultdocdir}/rpm/API/
 
 %changelog
+* Thu Jun 25 2026 Panu Matilainen <pmatilai@redhat.com - 6.0.91-3
+- Revert file trigger refactor for further investigation (#2492628)
+- Fix a silly thinko causing a %%define regression (#2492483)
+
 * Wed Jun 24 2026 Panu Matilainen <pmatilai@redhat.com - 6.0.91-2
 - Fix rubygem rpmuncompress -x regression (#2492128)
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-25 10:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-25 10:18 [rpms/rpm] rawhide: Fix file trigger and macro regregressions (#2492628 and #2492483) Panu Matilainen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox