summaryrefslogtreecommitdiffstats
path: root/yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
diff options
context:
space:
mode:
Diffstat (limited to 'yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch')
-rw-r--r--yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch384
1 files changed, 384 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch b/yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
new file mode 100644
index 000000000..3da608573
--- /dev/null
+++ b/yocto-poky/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
@@ -0,0 +1,384 @@
+
+Upstream-Status: Pending
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org>
+
+diff --git a/build/pack.c b/build/pack.c
+index b6b2bea..5c3d8df 100644
+--- a/build/pack.c
++++ b/build/pack.c
+@@ -273,8 +273,10 @@ static rpmTagVal depevrtags[] = {
+ RPMTAG_CONFLICTVERSION,
+ RPMTAG_ORDERVERSION,
+ RPMTAG_TRIGGERVERSION,
+- RPMTAG_SUGGESTSVERSION,
+- RPMTAG_ENHANCESVERSION,
++ RPMTAG_SUGGESTVERSION,
++ RPMTAG_ENHANCEVERSION,
++ RPMTAG_RECOMMENDVERSION,
++ RPMTAG_SUPPLEMENTVERSION,
+ 0
+ };
+
+diff --git a/build/parsePreamble.c b/build/parsePreamble.c
+index 5772bef..cbbbee3 100644
+--- a/build/parsePreamble.c
++++ b/build/parsePreamble.c
+@@ -821,6 +821,10 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
+ }
+ /* fallthrough */
+ case RPMTAG_PREREQ:
++ case RPMTAG_RECOMMENDFLAGS:
++ case RPMTAG_SUGGESTFLAGS:
++ case RPMTAG_SUPPLEMENTFLAGS:
++ case RPMTAG_ENHANCEFLAGS:
+ case RPMTAG_CONFLICTFLAGS:
+ case RPMTAG_OBSOLETEFLAGS:
+ case RPMTAG_PROVIDEFLAGS:
+@@ -922,6 +926,10 @@ static struct PreambleRec_s const preambleList[] = {
+ {RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")},
+ {RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")},
+ {RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")},
++ {RPMTAG_RECOMMENDFLAGS, 0, 0, LEN_AND_STR("recommends")},
++ {RPMTAG_SUGGESTFLAGS, 0, 0, LEN_AND_STR("suggests")},
++ {RPMTAG_SUPPLEMENTFLAGS, 0, 0, LEN_AND_STR("supplements")},
++ {RPMTAG_ENHANCEFLAGS, 0, 0, LEN_AND_STR("enhances")},
+ {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")},
+ {RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")},
+ {RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")},
+diff --git a/build/parseReqs.c b/build/parseReqs.c
+index ba080a1..1427111 100644
+--- a/build/parseReqs.c
++++ b/build/parseReqs.c
+@@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTagVal tagN,
+ nametag = RPMTAG_REQUIRENAME;
+ tagflags |= RPMSENSE_ANY;
+ break;
++ case RPMTAG_RECOMMENDFLAGS:
++ nametag = RPMTAG_RECOMMENDNAME;
++ break;
++ case RPMTAG_SUGGESTFLAGS:
++ nametag = RPMTAG_SUGGESTNAME;
++ break;
++ case RPMTAG_SUPPLEMENTFLAGS:
++ nametag = RPMTAG_SUPPLEMENTNAME;
++ break;
++ case RPMTAG_ENHANCEFLAGS:
++ nametag = RPMTAG_ENHANCENAME;
++ break;
+ case RPMTAG_PROVIDEFLAGS:
+ nametag = RPMTAG_PROVIDENAME;
+ break;
+diff --git a/build/reqprov.c b/build/reqprov.c
+index a368f42..c270af6 100644
+--- a/build/reqprov.c
++++ b/build/reqprov.c
+@@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal tagN,
+ extra = Flags & RPMSENSE_TRIGGER;
+ dsp = &pkg->triggers;
+ break;
++ case RPMTAG_RECOMMENDNAME:
++ versiontag = RPMTAG_RECOMMENDVERSION;
++ flagtag = RPMTAG_RECOMMENDFLAGS;
++ extra = Flags & _ALL_REQUIRES_MASK;
++ dsp = &pkg->recommends;
++ break;
++ case RPMTAG_SUGGESTNAME:
++ versiontag = RPMTAG_SUGGESTVERSION;
++ flagtag = RPMTAG_SUGGESTFLAGS;
++ extra = Flags & _ALL_REQUIRES_MASK;
++ dsp = &pkg->suggests;
++ break;
++ case RPMTAG_SUPPLEMENTNAME:
++ versiontag = RPMTAG_SUPPLEMENTVERSION;
++ flagtag = RPMTAG_SUPPLEMENTFLAGS;
++ extra = Flags & _ALL_REQUIRES_MASK;
++ dsp = &pkg->supplements;
++ break;
++ case RPMTAG_ENHANCENAME:
++ versiontag = RPMTAG_ENHANCEVERSION;
++ flagtag = RPMTAG_ENHANCEFLAGS;
++ extra = Flags & _ALL_REQUIRES_MASK;
++ dsp = &pkg->enhances;
++ break;
+ case RPMTAG_REQUIRENAME:
+ default:
+ tagN = RPMTAG_REQUIRENAME;
+diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
+index a9e4c7c..0a1977f 100644
+--- a/build/rpmbuild_internal.h
++++ b/build/rpmbuild_internal.h
+@@ -93,6 +93,10 @@ struct Package_s {
+ rpmds ds; /*!< Requires: N = EVR */
+ rpmds requires;
+ rpmds provides;
++ rpmds recommends;
++ rpmds suggests;
++ rpmds supplements;
++ rpmds enhances;
+ rpmds conflicts;
+ rpmds obsoletes;
+ rpmds triggers;
+diff --git a/build/spec.c b/build/spec.c
+index 703ec78..7ae2120 100644
+--- a/build/spec.c
++++ b/build/spec.c
+@@ -139,6 +139,11 @@ static Package freePackage(Package pkg)
+ pkg->ds = rpmdsFree(pkg->ds);
+ pkg->requires = rpmdsFree(pkg->requires);
+ pkg->provides = rpmdsFree(pkg->provides);
++ pkg->recommends = rpmdsFree(pkg->recommends);
++ pkg->suggests = rpmdsFree(pkg->suggests);
++ pkg->supplements = rpmdsFree(pkg->supplements);
++ pkg->enhances = rpmdsFree(pkg->enhances);
++
+ pkg->conflicts = rpmdsFree(pkg->conflicts);
+ pkg->obsoletes = rpmdsFree(pkg->obsoletes);
+ pkg->triggers = rpmdsFree(pkg->triggers);
+diff --git a/lib/rpmds.c b/lib/rpmds.c
+index 7a51167..1e5dda0 100644
+--- a/lib/rpmds.c
++++ b/lib/rpmds.c
+@@ -52,6 +52,22 @@ static int dsType(rpmTagVal tag,
+ t = "Requires";
+ evr = RPMTAG_REQUIREVERSION;
+ f = RPMTAG_REQUIREFLAGS;
++ } else if (tag == RPMTAG_SUPPLEMENTNAME) {
++ t = "Supplements";
++ evr = RPMTAG_SUPPLEMENTVERSION;
++ f = RPMTAG_SUPPLEMENTFLAGS;
++ } else if (tag == RPMTAG_ENHANCENAME) {
++ t = "Enhances";
++ evr = RPMTAG_ENHANCEVERSION;
++ f = RPMTAG_ENHANCEFLAGS;
++ } else if (tag == RPMTAG_RECOMMENDNAME) {
++ t = "Recommends";
++ evr = RPMTAG_RECOMMENDVERSION;
++ f = RPMTAG_RECOMMENDFLAGS;
++ } else if (tag == RPMTAG_SUGGESTNAME) {
++ t = "Suggests";
++ evr = RPMTAG_SUGGESTVERSION;
++ f = RPMTAG_SUGGESTFLAGS;
+ } else if (tag == RPMTAG_CONFLICTNAME) {
+ t = "Conflicts";
+ evr = RPMTAG_CONFLICTVERSION;
+diff --git a/lib/rpmtag.h b/lib/rpmtag.h
+index 64b03f1..b943229 100644
+--- a/lib/rpmtag.h
++++ b/lib/rpmtag.h
+@@ -217,14 +217,14 @@ typedef enum rpmTag_e {
+ RPMTAG_PRETRANSPROG = 1153, /* s[] */
+ RPMTAG_POSTTRANSPROG = 1154, /* s[] */
+ RPMTAG_DISTTAG = 1155, /* s */
+- RPMTAG_SUGGESTSNAME = 1156, /* s[] extension (unimplemented) */
+-#define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] (unimplemented) */
+- RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension (unimplemented) */
+- RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension (unimplemented) */
+- RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder (unimplemented) */
+-#define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] (unimplemented) */
+- RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder (unimplemented) */
+- RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder (unimplemented) */
++ RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */
++#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */
++ RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */
++ RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */
++ RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */
++#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */
++ RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */
++ RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */
+ RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */
+ RPMTAG_CVSID = 1163, /* s (unimplemented) */
+ #define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */
+@@ -261,6 +261,7 @@ typedef enum rpmTag_e {
+ RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */
+ RPMTAG_DBINSTANCE = 1195, /* i extension */
+ RPMTAG_NVRA = 1196, /* s extension */
++
+ /* tags 1997-4999 reserved */
+ RPMTAG_FILENAMES = 5000, /* s[] extension */
+ RPMTAG_FILEPROVIDE = 5001, /* s[] extension */
+@@ -307,6 +308,26 @@ typedef enum rpmTag_e {
+ RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */
+ RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */
+ RPMTAG_FILENLINKS = 5045, /* i[] extension */
++ RPMTAG_RECOMMENDNAME = 5046, /* s[] */
++#define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */
++ RPMTAG_RECOMMENDVERSION = 5047, /* s[] */
++ RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */
++ RPMTAG_SUGGESTNAME = 5049, /* s[] */
++#define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */
++ RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */
++ RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */
++ RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */
++#define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */
++ RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */
++ RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */
++ RPMTAG_ENHANCENAME = 5055, /* s[] */
++#define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */
++ RPMTAG_ENHANCEVERSION = 5056, /* s[] */
++ RPMTAG_ENHANCEFLAGS = 5057, /* i[] */
++ RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */
++ RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */
++ RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */
++ RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */
+
+ RPMTAG_FIRSTFREE_TAG /*!< internal */
+ } rpmTag;
+diff --git a/lib/tagexts.c b/lib/tagexts.c
+index 29b2bae..e940310 100644
+--- a/lib/tagexts.c
++++ b/lib/tagexts.c
+@@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+ return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME);
+ }
+
++static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
++{
++ return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME);
++}
++
++static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
++{
++ return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME);
++}
++
++static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
++{
++ return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME);
++}
++
++static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
++{
++ return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME);
++}
++
+ static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags)
+ {
+ return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME);
+@@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
+ { RPMTAG_EPOCHNUM, epochnumTag },
+ { RPMTAG_INSTFILENAMES, instfilenamesTag },
+ { RPMTAG_REQUIRENEVRS, requirenevrsTag },
++ { RPMTAG_RECOMMENDNEVRS, recommendnevrsTag},
++ { RPMTAG_SUGGESTNEVRS, suggestnevrsTag},
++ { RPMTAG_SUPPLEMENTNEVRS, supplementnevrsTag},
++ { RPMTAG_ENHANCENEVRS, enhancenevrsTag},
+ { RPMTAG_PROVIDENEVRS, providenevrsTag },
+ { RPMTAG_OBSOLETENEVRS, obsoletenevrsTag },
+ { RPMTAG_CONFLICTNEVRS, conflictnevrsTag },
+diff --git a/rpmpopt.in b/rpmpopt.in
+index 805599e..036ab4e 100644
+--- a/rpmpopt.in
++++ b/rpmpopt.in
+@@ -67,6 +67,19 @@ rpm alias --requires --qf \
+ --POPTdesc=$"list capabilities required by package(s)"
+ rpm alias -R --requires
+
++rpm alias --recommends --qf \
++ "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
++ --POPTdesc=$"list capabilities recommended by package(s)"
++rpm alias --suggests --qf \
++ "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
++ --POPTdesc=$"list capabilities suggested by package(s)"
++rpm alias --supplements --qf \
++ "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
++ --POPTdesc=$"list capabilities supplemented by package(s)"
++rpm alias --enhances --qf \
++ "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
++ --POPTdesc=$"list capabilities enhanced by package(s)"
++
+ rpm alias --info --qf '\
+ Name : %{NAME}\n\
+ %|EPOCH?{Epoch : %{EPOCH}\n}|\
+diff --git a/tests/data/SPECS/deptest.spec b/tests/data/SPECS/deptest.spec
+index cb4cbbd..7c47f6d 100644
+--- a/tests/data/SPECS/deptest.spec
++++ b/tests/data/SPECS/deptest.spec
+@@ -10,6 +10,10 @@ BuildArch: noarch
+ %{?provs:Provides: %{provs}}
+ %{?cfls:Conflicts: %{cfls}}
+ %{?obs:Obsoletes: %{obs}}
++%{?recs:Recommends: %{recs}}
++%{?sugs:Suggests: %{sugs}}
++%{?sups:Supplements: %{sups}}
++%{?ens:Enhances: %{ens}}
+
+ %description
+ %{summary}
+diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
+index 6230903..c4c954c 100644
+--- a/tests/rpmbuild.at
++++ b/tests/rpmbuild.at
+@@ -185,3 +185,25 @@ lrwxrwxrwx /opt/globtest/linkgood
+ ],
+ [])
+ AT_CLEANUP
++
++# ------------------------------
++# Check if weak and reverse requires can be built
++AT_SETUP([Weak and reverse requires])
++AT_KEYWORDS([build])
++AT_CHECK([
++
++runroot rpmbuild -bb --quiet \
++ --define "pkg weakdeps" \
++ --define "recs foo > 1.2.3" \
++ --define "sugs bar >= 0.1.2" \
++ --define "sups baz" \
++ --define "ens zap = 3" \
++ /data/SPECS/deptest.spec
++
++runroot rpm -qp --qf "[%{supplementname}\n]" /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm
++],
++[0],
++[baz
++],
++[ignore])
++AT_CLEANUP
+diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at
+index 13131e2..80cca63 100644
+--- a/tests/rpmgeneral.at
++++ b/tests/rpmgeneral.at
+@@ -79,6 +79,11 @@ DISTTAG
+ DISTURL
+ DSAHEADER
+ E
++ENHANCEFLAGS
++ENHANCENAME
++ENHANCENEVRS
++ENHANCES
++ENHANCEVERSION
+ EPOCH
+ EPOCHNUM
+ EVR
+@@ -199,6 +204,11 @@ PROVIDES
+ PROVIDEVERSION
+ PUBKEYS
+ R
++RECOMMENDFLAGS
++RECOMMENDNAME
++RECOMMENDNEVRS
++RECOMMENDS
++RECOMMENDVERSION
+ RECONTEXTS
+ RELEASE
+ REMOVETID
+@@ -219,7 +229,17 @@ SOURCE
+ SOURCEPACKAGE
+ SOURCEPKGID
+ SOURCERPM
++SUGGESTFLAGS
++SUGGESTNAME
++SUGGESTNEVRS
++SUGGESTS
++SUGGESTVERSION
+ SUMMARY
++SUPPLEMENTFLAGS
++SUPPLEMENTNAME
++SUPPLEMENTNEVRS
++SUPPLEMENTS
++SUPPLEMENTVERSION
+ TRIGGERCONDS
+ TRIGGERFLAGS
+ TRIGGERINDEX
OpenPOWER on IntegriCloud