[rpm] - add support for Requires(posttrans) dependencies
Panu Matilainen
pmatilai at fedoraproject.org
Tue Jan 25 13:33:29 UTC 2011
commit 637e6c8e3610decb744684ac1294e73e4179b07d
Author: Panu Matilainen <pmatilai at redhat.com>
Date: Tue Jan 25 15:33:09 2011 +0200
- add support for Requires(posttrans) dependencies
rpm-4.9.0-beta1-posttrans-deps.patch | 87 ++++++++++++++++++++++++++++++++++
rpm.spec | 7 ++-
2 files changed, 93 insertions(+), 1 deletions(-)
---
diff --git a/rpm-4.9.0-beta1-posttrans-deps.patch b/rpm-4.9.0-beta1-posttrans-deps.patch
new file mode 100644
index 0000000..f20cd75
--- /dev/null
+++ b/rpm-4.9.0-beta1-posttrans-deps.patch
@@ -0,0 +1,87 @@
+commit d7e2a04d68dea4d1c7dbaf457b5b4210dfa452f2
+Author: Panu Matilainen <pmatilai at redhat.com>
+Date: Tue Jan 25 15:27:28 2011 +0200
+
+ Teach rpm about post-transaction dependencies
+ - %posttrans dependencies have their own peculiar semantics, they're
+ install-only dependencies which have no implications on ordering.
+
+diff --git a/build/parsePreamble.c b/build/parsePreamble.c
+index 3d8b859..e4f4e0a 100644
+--- a/build/parsePreamble.c
++++ b/build/parsePreamble.c
+@@ -309,6 +309,7 @@ static struct tokenBits_s const installScriptBits[] = {
+ { "rpmlib", RPMSENSE_RPMLIB },
+ { "verify", RPMSENSE_SCRIPT_VERIFY },
+ { "pretrans", RPMSENSE_PRETRANS },
++ { "posttrans", RPMSENSE_POSTTRANS },
+ { NULL, 0 }
+ };
+
+diff --git a/build/parseScript.c b/build/parseScript.c
+index d4b2293..87b3d58 100644
+--- a/build/parseScript.c
++++ b/build/parseScript.c
+@@ -139,7 +139,7 @@ int parseScript(rpmSpec spec, int parsePart)
+ break;
+ case PART_POSTTRANS:
+ tag = RPMTAG_POSTTRANS;
+- tagflags = 0;
++ tagflags = RPMSENSE_POSTTRANS;
+ progtag = RPMTAG_POSTTRANSPROG;
+ flagtag = RPMTAG_POSTTRANSFLAGS;
+ partname = "%posttrans";
+diff --git a/lib/formats.c b/lib/formats.c
+index 386bdd3..7ce4608 100644
+--- a/lib/formats.c
++++ b/lib/formats.c
+@@ -251,6 +251,8 @@ static char * deptypeFormat(rpmtd td, char * formatPrefix)
+ argvAdd(&sdeps, "prereq");
+ if (item & RPMSENSE_PRETRANS)
+ argvAdd(&sdeps, "pretrans");
++ if (item & RPMSENSE_POSTTRANS)
++ argvAdd(&sdeps, "posttrans");
+
+ if (sdeps) {
+ val = argvJoin(sdeps, ",");
+diff --git a/lib/order.c b/lib/order.c
+index 9cda649..3b0849d 100644
+--- a/lib/order.c
++++ b/lib/order.c
+@@ -149,7 +149,7 @@ static inline int addRelation(rpmts ts,
+ dsflags = rpmdsFlags(requires);
+
+ /* Avoid dependendencies which are not relevant for ordering */
+- if (dsflags & (RPMSENSE_RPMLIB|RPMSENSE_CONFIG|RPMSENSE_PRETRANS))
++ if (dsflags & (RPMSENSE_RPMLIB|RPMSENSE_CONFIG|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS))
+ return 0;
+
+ q = rpmalSatisfiesDepend(al, requires);
+diff --git a/lib/rpmds.h b/lib/rpmds.h
+index 75c1541..bf3ee2c 100644
+--- a/lib/rpmds.h
++++ b/lib/rpmds.h
+@@ -27,7 +27,8 @@ enum rpmsenseFlags_e {
+ RPMSENSE_LESS = (1 << 1),
+ RPMSENSE_GREATER = (1 << 2),
+ RPMSENSE_EQUAL = (1 << 3),
+- /* bits 4-5 unused */
++ /* bit 4 unused */
++ RPMSENSE_POSTTRANS = (1 << 5), /*!< %posttrans dependency */
+ RPMSENSE_PREREQ = (1 << 6), /* legacy prereq dependency */
+ RPMSENSE_PRETRANS = (1 << 7), /*!< Pre-transaction dependency. */
+ RPMSENSE_INTERP = (1 << 8), /*!< Interpreter used by scriptlet. */
+@@ -70,11 +71,12 @@ typedef rpmFlags rpmsenseFlags;
+ RPMSENSE_RPMLIB | \
+ RPMSENSE_KEYRING | \
+ RPMSENSE_PRETRANS | \
++ RPMSENSE_POSTTRANS | \
+ RPMSENSE_PREREQ)
+
+ #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
+ #define _INSTALL_ONLY_MASK \
+- _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS)
++ _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS)
+ #define _ERASE_ONLY_MASK \
+ _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
+
diff --git a/rpm.spec b/rpm.spec
index 10744bd..1e41822 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -22,7 +22,7 @@
Summary: The RPM package management system
Name: rpm
Version: %{rpmver}
-Release: %{?snapver:0.%{snapver}.}3%{?dist}
+Release: %{?snapver:0.%{snapver}.}4%{?dist}
Group: System Environment/Base
Url: http://www.rpm.org/
Source0: http://rpm.org/releases/rpm-4.8.x/%{name}-%{srcver}.tar.bz2
@@ -45,6 +45,7 @@ Patch100: rpm-4.9.0-beta1-rofs-rpmdb.patch
Patch101: rpm-4.9.0-beta1-index-rebuild.patch
Patch102: rpm-4.9.0-beta1-index-iteration.patch
Patch103: rpm-4.9.0-beta1-rpmdb-dsi.patch
+Patch104: rpm-4.9.0-beta1-posttrans-deps.patch
# These are not yet upstream
Patch301: rpm-4.6.0-niagara.patch
@@ -213,6 +214,7 @@ packages on a system.
%patch101 -p1 -b .index-rebuild
%patch102 -p1 -b .index-iteration
%patch103 -p1 -b .rpmdb-dsi
+%patch104 -p1 -b .posttrans-deps
%patch301 -p1 -b .niagara
%patch302 -p1 -b .geode
@@ -423,6 +425,9 @@ exit 0
%doc COPYING doc/librpm/html/*
%changelog
+* Tue Jan 25 2011 Panu Matilainen <pmatilai at redhat.com> - 4.9.0-0.beta1.4
+- add support for Requires(posttrans) dependencies
+
* Fri Jan 21 2011 Panu Matilainen <pmatilai at redhat.com> - 4.9.0-0.beta1.3
- avoid division by zero in rpmdb size calculation (#671056)
- fix secondary index iteration returing duplicate at end (#671149)
More information about the scm-commits
mailing list