Squashed 'yocto-poky/' content from commit ea562de

git-subtree-dir: yocto-poky
git-subtree-split: ea562de57590c966cd5a75fda8defecd397e6436
diff --git a/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch b/meta/recipes-devtools/rpm/rpm-4.11.2/support-suggests-tag.patch
new file mode 100644
index 0000000..3da6085
--- /dev/null
+++ b/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