Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | |
| 2 | Upstream-Status: Pending |
| 3 | |
| 4 | Signed-off-by: Saul Wold <sgw@linux.intel.com> |
| 5 | Signed-off-by: Ronan Le Martret <ronan.lemartret@open.eurogiciel.org> |
| 6 | |
| 7 | diff --git a/build/pack.c b/build/pack.c |
| 8 | index b6b2bea..5c3d8df 100644 |
| 9 | --- a/build/pack.c |
| 10 | +++ b/build/pack.c |
| 11 | @@ -273,8 +273,10 @@ static rpmTagVal depevrtags[] = { |
| 12 | RPMTAG_CONFLICTVERSION, |
| 13 | RPMTAG_ORDERVERSION, |
| 14 | RPMTAG_TRIGGERVERSION, |
| 15 | - RPMTAG_SUGGESTSVERSION, |
| 16 | - RPMTAG_ENHANCESVERSION, |
| 17 | + RPMTAG_SUGGESTVERSION, |
| 18 | + RPMTAG_ENHANCEVERSION, |
| 19 | + RPMTAG_RECOMMENDVERSION, |
| 20 | + RPMTAG_SUPPLEMENTVERSION, |
| 21 | 0 |
| 22 | }; |
| 23 | |
| 24 | diff --git a/build/parsePreamble.c b/build/parsePreamble.c |
| 25 | index 5772bef..cbbbee3 100644 |
| 26 | --- a/build/parsePreamble.c |
| 27 | +++ b/build/parsePreamble.c |
| 28 | @@ -821,6 +821,10 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, |
| 29 | } |
| 30 | /* fallthrough */ |
| 31 | case RPMTAG_PREREQ: |
| 32 | + case RPMTAG_RECOMMENDFLAGS: |
| 33 | + case RPMTAG_SUGGESTFLAGS: |
| 34 | + case RPMTAG_SUPPLEMENTFLAGS: |
| 35 | + case RPMTAG_ENHANCEFLAGS: |
| 36 | case RPMTAG_CONFLICTFLAGS: |
| 37 | case RPMTAG_OBSOLETEFLAGS: |
| 38 | case RPMTAG_PROVIDEFLAGS: |
| 39 | @@ -922,6 +926,10 @@ static struct PreambleRec_s const preambleList[] = { |
| 40 | {RPMTAG_ICON, 0, 0, LEN_AND_STR("icon")}, |
| 41 | {RPMTAG_PROVIDEFLAGS, 0, 0, LEN_AND_STR("provides")}, |
| 42 | {RPMTAG_REQUIREFLAGS, 2, 0, LEN_AND_STR("requires")}, |
| 43 | + {RPMTAG_RECOMMENDFLAGS, 0, 0, LEN_AND_STR("recommends")}, |
| 44 | + {RPMTAG_SUGGESTFLAGS, 0, 0, LEN_AND_STR("suggests")}, |
| 45 | + {RPMTAG_SUPPLEMENTFLAGS, 0, 0, LEN_AND_STR("supplements")}, |
| 46 | + {RPMTAG_ENHANCEFLAGS, 0, 0, LEN_AND_STR("enhances")}, |
| 47 | {RPMTAG_PREREQ, 2, 1, LEN_AND_STR("prereq")}, |
| 48 | {RPMTAG_CONFLICTFLAGS, 0, 0, LEN_AND_STR("conflicts")}, |
| 49 | {RPMTAG_OBSOLETEFLAGS, 0, 0, LEN_AND_STR("obsoletes")}, |
| 50 | diff --git a/build/parseReqs.c b/build/parseReqs.c |
| 51 | index ba080a1..1427111 100644 |
| 52 | --- a/build/parseReqs.c |
| 53 | +++ b/build/parseReqs.c |
| 54 | @@ -61,6 +61,18 @@ rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTagVal tagN, |
| 55 | nametag = RPMTAG_REQUIRENAME; |
| 56 | tagflags |= RPMSENSE_ANY; |
| 57 | break; |
| 58 | + case RPMTAG_RECOMMENDFLAGS: |
| 59 | + nametag = RPMTAG_RECOMMENDNAME; |
| 60 | + break; |
| 61 | + case RPMTAG_SUGGESTFLAGS: |
| 62 | + nametag = RPMTAG_SUGGESTNAME; |
| 63 | + break; |
| 64 | + case RPMTAG_SUPPLEMENTFLAGS: |
| 65 | + nametag = RPMTAG_SUPPLEMENTNAME; |
| 66 | + break; |
| 67 | + case RPMTAG_ENHANCEFLAGS: |
| 68 | + nametag = RPMTAG_ENHANCENAME; |
| 69 | + break; |
| 70 | case RPMTAG_PROVIDEFLAGS: |
| 71 | nametag = RPMTAG_PROVIDENAME; |
| 72 | break; |
| 73 | diff --git a/build/reqprov.c b/build/reqprov.c |
| 74 | index a368f42..c270af6 100644 |
| 75 | --- a/build/reqprov.c |
| 76 | +++ b/build/reqprov.c |
| 77 | @@ -81,6 +81,30 @@ int addReqProv(Package pkg, rpmTagVal tagN, |
| 78 | extra = Flags & RPMSENSE_TRIGGER; |
| 79 | dsp = &pkg->triggers; |
| 80 | break; |
| 81 | + case RPMTAG_RECOMMENDNAME: |
| 82 | + versiontag = RPMTAG_RECOMMENDVERSION; |
| 83 | + flagtag = RPMTAG_RECOMMENDFLAGS; |
| 84 | + extra = Flags & _ALL_REQUIRES_MASK; |
| 85 | + dsp = &pkg->recommends; |
| 86 | + break; |
| 87 | + case RPMTAG_SUGGESTNAME: |
| 88 | + versiontag = RPMTAG_SUGGESTVERSION; |
| 89 | + flagtag = RPMTAG_SUGGESTFLAGS; |
| 90 | + extra = Flags & _ALL_REQUIRES_MASK; |
| 91 | + dsp = &pkg->suggests; |
| 92 | + break; |
| 93 | + case RPMTAG_SUPPLEMENTNAME: |
| 94 | + versiontag = RPMTAG_SUPPLEMENTVERSION; |
| 95 | + flagtag = RPMTAG_SUPPLEMENTFLAGS; |
| 96 | + extra = Flags & _ALL_REQUIRES_MASK; |
| 97 | + dsp = &pkg->supplements; |
| 98 | + break; |
| 99 | + case RPMTAG_ENHANCENAME: |
| 100 | + versiontag = RPMTAG_ENHANCEVERSION; |
| 101 | + flagtag = RPMTAG_ENHANCEFLAGS; |
| 102 | + extra = Flags & _ALL_REQUIRES_MASK; |
| 103 | + dsp = &pkg->enhances; |
| 104 | + break; |
| 105 | case RPMTAG_REQUIRENAME: |
| 106 | default: |
| 107 | tagN = RPMTAG_REQUIRENAME; |
| 108 | diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h |
| 109 | index a9e4c7c..0a1977f 100644 |
| 110 | --- a/build/rpmbuild_internal.h |
| 111 | +++ b/build/rpmbuild_internal.h |
| 112 | @@ -93,6 +93,10 @@ struct Package_s { |
| 113 | rpmds ds; /*!< Requires: N = EVR */ |
| 114 | rpmds requires; |
| 115 | rpmds provides; |
| 116 | + rpmds recommends; |
| 117 | + rpmds suggests; |
| 118 | + rpmds supplements; |
| 119 | + rpmds enhances; |
| 120 | rpmds conflicts; |
| 121 | rpmds obsoletes; |
| 122 | rpmds triggers; |
| 123 | diff --git a/build/spec.c b/build/spec.c |
| 124 | index 703ec78..7ae2120 100644 |
| 125 | --- a/build/spec.c |
| 126 | +++ b/build/spec.c |
| 127 | @@ -139,6 +139,11 @@ static Package freePackage(Package pkg) |
| 128 | pkg->ds = rpmdsFree(pkg->ds); |
| 129 | pkg->requires = rpmdsFree(pkg->requires); |
| 130 | pkg->provides = rpmdsFree(pkg->provides); |
| 131 | + pkg->recommends = rpmdsFree(pkg->recommends); |
| 132 | + pkg->suggests = rpmdsFree(pkg->suggests); |
| 133 | + pkg->supplements = rpmdsFree(pkg->supplements); |
| 134 | + pkg->enhances = rpmdsFree(pkg->enhances); |
| 135 | + |
| 136 | pkg->conflicts = rpmdsFree(pkg->conflicts); |
| 137 | pkg->obsoletes = rpmdsFree(pkg->obsoletes); |
| 138 | pkg->triggers = rpmdsFree(pkg->triggers); |
| 139 | diff --git a/lib/rpmds.c b/lib/rpmds.c |
| 140 | index 7a51167..1e5dda0 100644 |
| 141 | --- a/lib/rpmds.c |
| 142 | +++ b/lib/rpmds.c |
| 143 | @@ -52,6 +52,22 @@ static int dsType(rpmTagVal tag, |
| 144 | t = "Requires"; |
| 145 | evr = RPMTAG_REQUIREVERSION; |
| 146 | f = RPMTAG_REQUIREFLAGS; |
| 147 | + } else if (tag == RPMTAG_SUPPLEMENTNAME) { |
| 148 | + t = "Supplements"; |
| 149 | + evr = RPMTAG_SUPPLEMENTVERSION; |
| 150 | + f = RPMTAG_SUPPLEMENTFLAGS; |
| 151 | + } else if (tag == RPMTAG_ENHANCENAME) { |
| 152 | + t = "Enhances"; |
| 153 | + evr = RPMTAG_ENHANCEVERSION; |
| 154 | + f = RPMTAG_ENHANCEFLAGS; |
| 155 | + } else if (tag == RPMTAG_RECOMMENDNAME) { |
| 156 | + t = "Recommends"; |
| 157 | + evr = RPMTAG_RECOMMENDVERSION; |
| 158 | + f = RPMTAG_RECOMMENDFLAGS; |
| 159 | + } else if (tag == RPMTAG_SUGGESTNAME) { |
| 160 | + t = "Suggests"; |
| 161 | + evr = RPMTAG_SUGGESTVERSION; |
| 162 | + f = RPMTAG_SUGGESTFLAGS; |
| 163 | } else if (tag == RPMTAG_CONFLICTNAME) { |
| 164 | t = "Conflicts"; |
| 165 | evr = RPMTAG_CONFLICTVERSION; |
| 166 | diff --git a/lib/rpmtag.h b/lib/rpmtag.h |
| 167 | index 64b03f1..b943229 100644 |
| 168 | --- a/lib/rpmtag.h |
| 169 | +++ b/lib/rpmtag.h |
| 170 | @@ -217,14 +217,14 @@ typedef enum rpmTag_e { |
| 171 | RPMTAG_PRETRANSPROG = 1153, /* s[] */ |
| 172 | RPMTAG_POSTTRANSPROG = 1154, /* s[] */ |
| 173 | RPMTAG_DISTTAG = 1155, /* s */ |
| 174 | - RPMTAG_SUGGESTSNAME = 1156, /* s[] extension (unimplemented) */ |
| 175 | -#define RPMTAG_SUGGESTS RPMTAG_SUGGESTSNAME /* s[] (unimplemented) */ |
| 176 | - RPMTAG_SUGGESTSVERSION = 1157, /* s[] extension (unimplemented) */ |
| 177 | - RPMTAG_SUGGESTSFLAGS = 1158, /* i[] extension (unimplemented) */ |
| 178 | - RPMTAG_ENHANCESNAME = 1159, /* s[] extension placeholder (unimplemented) */ |
| 179 | -#define RPMTAG_ENHANCES RPMTAG_ENHANCESNAME /* s[] (unimplemented) */ |
| 180 | - RPMTAG_ENHANCESVERSION = 1160, /* s[] extension placeholder (unimplemented) */ |
| 181 | - RPMTAG_ENHANCESFLAGS = 1161, /* i[] extension placeholder (unimplemented) */ |
| 182 | + RPMTAG_OLDSUGGESTSNAME = 1156, /* s[] (unimplemented) */ |
| 183 | +#define RPMTAG_OLDSUGGESTS RPMTAG_OLDSUGGESTSNAME /* s[] (unimplemented) */ |
| 184 | + RPMTAG_OLDSUGGESTSVERSION = 1157, /* s[] (unimplemented) */ |
| 185 | + RPMTAG_OLDSUGGESTSFLAGS = 1158, /* i[] (unimplemented) */ |
| 186 | + RPMTAG_OLDENHANCESNAME = 1159, /* s[] (unimplemented) */ |
| 187 | +#define RPMTAG_OLDENHANCES RPMTAG_OLDENHANCESNAME /* s[] (unimplemented) */ |
| 188 | + RPMTAG_OLDENHANCESVERSION = 1160, /* s[] (unimplemented) */ |
| 189 | + RPMTAG_OLDENHANCESFLAGS = 1161, /* i[] (unimplemented) */ |
| 190 | RPMTAG_PRIORITY = 1162, /* i[] extension placeholder (unimplemented) */ |
| 191 | RPMTAG_CVSID = 1163, /* s (unimplemented) */ |
| 192 | #define RPMTAG_SVNID RPMTAG_CVSID /* s (unimplemented) */ |
| 193 | @@ -261,6 +261,7 @@ typedef enum rpmTag_e { |
| 194 | RPMTAG_BUILDOBSOLETES = 1194, /* internal (unimplemented) */ |
| 195 | RPMTAG_DBINSTANCE = 1195, /* i extension */ |
| 196 | RPMTAG_NVRA = 1196, /* s extension */ |
| 197 | + |
| 198 | /* tags 1997-4999 reserved */ |
| 199 | RPMTAG_FILENAMES = 5000, /* s[] extension */ |
| 200 | RPMTAG_FILEPROVIDE = 5001, /* s[] extension */ |
| 201 | @@ -307,6 +308,26 @@ typedef enum rpmTag_e { |
| 202 | RPMTAG_OBSOLETENEVRS = 5043, /* s[] extension */ |
| 203 | RPMTAG_CONFLICTNEVRS = 5044, /* s[] extension */ |
| 204 | RPMTAG_FILENLINKS = 5045, /* i[] extension */ |
| 205 | + RPMTAG_RECOMMENDNAME = 5046, /* s[] */ |
| 206 | +#define RPMTAG_RECOMMENDS RPMTAG_RECOMMENDNAME /* s[] */ |
| 207 | + RPMTAG_RECOMMENDVERSION = 5047, /* s[] */ |
| 208 | + RPMTAG_RECOMMENDFLAGS = 5048, /* i[] */ |
| 209 | + RPMTAG_SUGGESTNAME = 5049, /* s[] */ |
| 210 | +#define RPMTAG_SUGGESTS RPMTAG_SUGGESTNAME /* s[] */ |
| 211 | + RPMTAG_SUGGESTVERSION = 5050, /* s[] extension */ |
| 212 | + RPMTAG_SUGGESTFLAGS = 5051, /* i[] extension */ |
| 213 | + RPMTAG_SUPPLEMENTNAME = 5052, /* s[] */ |
| 214 | +#define RPMTAG_SUPPLEMENTS RPMTAG_SUPPLEMENTNAME /* s[] */ |
| 215 | + RPMTAG_SUPPLEMENTVERSION = 5053, /* s[] */ |
| 216 | + RPMTAG_SUPPLEMENTFLAGS = 5054, /* i[] */ |
| 217 | + RPMTAG_ENHANCENAME = 5055, /* s[] */ |
| 218 | +#define RPMTAG_ENHANCES RPMTAG_ENHANCENAME /* s[] */ |
| 219 | + RPMTAG_ENHANCEVERSION = 5056, /* s[] */ |
| 220 | + RPMTAG_ENHANCEFLAGS = 5057, /* i[] */ |
| 221 | + RPMTAG_RECOMMENDNEVRS = 5058, /* s[] extension */ |
| 222 | + RPMTAG_SUGGESTNEVRS = 5059, /* s[] extension */ |
| 223 | + RPMTAG_SUPPLEMENTNEVRS = 5060, /* s[] extension */ |
| 224 | + RPMTAG_ENHANCENEVRS = 5061, /* s[] extension */ |
| 225 | |
| 226 | RPMTAG_FIRSTFREE_TAG /*!< internal */ |
| 227 | } rpmTag; |
| 228 | diff --git a/lib/tagexts.c b/lib/tagexts.c |
| 229 | index 29b2bae..e940310 100644 |
| 230 | --- a/lib/tagexts.c |
| 231 | +++ b/lib/tagexts.c |
| 232 | @@ -761,6 +761,26 @@ static int requirenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 233 | return depnevrsTag(h, td, hgflags, RPMTAG_REQUIRENAME); |
| 234 | } |
| 235 | |
| 236 | +static int recommendnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 237 | +{ |
| 238 | + return depnevrsTag(h, td, hgflags, RPMTAG_RECOMMENDNAME); |
| 239 | +} |
| 240 | + |
| 241 | +static int suggestnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 242 | +{ |
| 243 | + return depnevrsTag(h, td, hgflags, RPMTAG_SUGGESTNAME); |
| 244 | +} |
| 245 | + |
| 246 | +static int supplementnevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 247 | +{ |
| 248 | + return depnevrsTag(h, td, hgflags, RPMTAG_SUPPLEMENTNAME); |
| 249 | +} |
| 250 | + |
| 251 | +static int enhancenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 252 | +{ |
| 253 | + return depnevrsTag(h, td, hgflags, RPMTAG_ENHANCENAME); |
| 254 | +} |
| 255 | + |
| 256 | static int providenevrsTag(Header h, rpmtd td, headerGetFlags hgflags) |
| 257 | { |
| 258 | return depnevrsTag(h, td, hgflags, RPMTAG_PROVIDENAME); |
| 259 | @@ -823,6 +843,10 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = { |
| 260 | { RPMTAG_EPOCHNUM, epochnumTag }, |
| 261 | { RPMTAG_INSTFILENAMES, instfilenamesTag }, |
| 262 | { RPMTAG_REQUIRENEVRS, requirenevrsTag }, |
| 263 | + { RPMTAG_RECOMMENDNEVRS, recommendnevrsTag}, |
| 264 | + { RPMTAG_SUGGESTNEVRS, suggestnevrsTag}, |
| 265 | + { RPMTAG_SUPPLEMENTNEVRS, supplementnevrsTag}, |
| 266 | + { RPMTAG_ENHANCENEVRS, enhancenevrsTag}, |
| 267 | { RPMTAG_PROVIDENEVRS, providenevrsTag }, |
| 268 | { RPMTAG_OBSOLETENEVRS, obsoletenevrsTag }, |
| 269 | { RPMTAG_CONFLICTNEVRS, conflictnevrsTag }, |
| 270 | diff --git a/rpmpopt.in b/rpmpopt.in |
| 271 | index 805599e..036ab4e 100644 |
| 272 | --- a/rpmpopt.in |
| 273 | +++ b/rpmpopt.in |
| 274 | @@ -67,6 +67,19 @@ rpm alias --requires --qf \ |
| 275 | --POPTdesc=$"list capabilities required by package(s)" |
| 276 | rpm alias -R --requires |
| 277 | |
| 278 | +rpm alias --recommends --qf \ |
| 279 | + "[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \ |
| 280 | + --POPTdesc=$"list capabilities recommended by package(s)" |
| 281 | +rpm alias --suggests --qf \ |
| 282 | + "[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \ |
| 283 | + --POPTdesc=$"list capabilities suggested by package(s)" |
| 284 | +rpm alias --supplements --qf \ |
| 285 | + "[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \ |
| 286 | + --POPTdesc=$"list capabilities supplemented by package(s)" |
| 287 | +rpm alias --enhances --qf \ |
| 288 | + "[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \ |
| 289 | + --POPTdesc=$"list capabilities enhanced by package(s)" |
| 290 | + |
| 291 | rpm alias --info --qf '\ |
| 292 | Name : %{NAME}\n\ |
| 293 | %|EPOCH?{Epoch : %{EPOCH}\n}|\ |
| 294 | diff --git a/tests/data/SPECS/deptest.spec b/tests/data/SPECS/deptest.spec |
| 295 | index cb4cbbd..7c47f6d 100644 |
| 296 | --- a/tests/data/SPECS/deptest.spec |
| 297 | +++ b/tests/data/SPECS/deptest.spec |
| 298 | @@ -10,6 +10,10 @@ BuildArch: noarch |
| 299 | %{?provs:Provides: %{provs}} |
| 300 | %{?cfls:Conflicts: %{cfls}} |
| 301 | %{?obs:Obsoletes: %{obs}} |
| 302 | +%{?recs:Recommends: %{recs}} |
| 303 | +%{?sugs:Suggests: %{sugs}} |
| 304 | +%{?sups:Supplements: %{sups}} |
| 305 | +%{?ens:Enhances: %{ens}} |
| 306 | |
| 307 | %description |
| 308 | %{summary} |
| 309 | diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at |
| 310 | index 6230903..c4c954c 100644 |
| 311 | --- a/tests/rpmbuild.at |
| 312 | +++ b/tests/rpmbuild.at |
| 313 | @@ -185,3 +185,25 @@ lrwxrwxrwx /opt/globtest/linkgood |
| 314 | ], |
| 315 | []) |
| 316 | AT_CLEANUP |
| 317 | + |
| 318 | +# ------------------------------ |
| 319 | +# Check if weak and reverse requires can be built |
| 320 | +AT_SETUP([Weak and reverse requires]) |
| 321 | +AT_KEYWORDS([build]) |
| 322 | +AT_CHECK([ |
| 323 | + |
| 324 | +runroot rpmbuild -bb --quiet \ |
| 325 | + --define "pkg weakdeps" \ |
| 326 | + --define "recs foo > 1.2.3" \ |
| 327 | + --define "sugs bar >= 0.1.2" \ |
| 328 | + --define "sups baz" \ |
| 329 | + --define "ens zap = 3" \ |
| 330 | + /data/SPECS/deptest.spec |
| 331 | + |
| 332 | +runroot rpm -qp --qf "[%{supplementname}\n]" /build/RPMS/noarch/deptest-weakdeps-1.0-1.noarch.rpm |
| 333 | +], |
| 334 | +[0], |
| 335 | +[baz |
| 336 | +], |
| 337 | +[ignore]) |
| 338 | +AT_CLEANUP |
| 339 | diff --git a/tests/rpmgeneral.at b/tests/rpmgeneral.at |
| 340 | index 13131e2..80cca63 100644 |
| 341 | --- a/tests/rpmgeneral.at |
| 342 | +++ b/tests/rpmgeneral.at |
| 343 | @@ -79,6 +79,11 @@ DISTTAG |
| 344 | DISTURL |
| 345 | DSAHEADER |
| 346 | E |
| 347 | +ENHANCEFLAGS |
| 348 | +ENHANCENAME |
| 349 | +ENHANCENEVRS |
| 350 | +ENHANCES |
| 351 | +ENHANCEVERSION |
| 352 | EPOCH |
| 353 | EPOCHNUM |
| 354 | EVR |
| 355 | @@ -199,6 +204,11 @@ PROVIDES |
| 356 | PROVIDEVERSION |
| 357 | PUBKEYS |
| 358 | R |
| 359 | +RECOMMENDFLAGS |
| 360 | +RECOMMENDNAME |
| 361 | +RECOMMENDNEVRS |
| 362 | +RECOMMENDS |
| 363 | +RECOMMENDVERSION |
| 364 | RECONTEXTS |
| 365 | RELEASE |
| 366 | REMOVETID |
| 367 | @@ -219,7 +229,17 @@ SOURCE |
| 368 | SOURCEPACKAGE |
| 369 | SOURCEPKGID |
| 370 | SOURCERPM |
| 371 | +SUGGESTFLAGS |
| 372 | +SUGGESTNAME |
| 373 | +SUGGESTNEVRS |
| 374 | +SUGGESTS |
| 375 | +SUGGESTVERSION |
| 376 | SUMMARY |
| 377 | +SUPPLEMENTFLAGS |
| 378 | +SUPPLEMENTNAME |
| 379 | +SUPPLEMENTNEVRS |
| 380 | +SUPPLEMENTS |
| 381 | +SUPPLEMENTVERSION |
| 382 | TRIGGERCONDS |
| 383 | TRIGGERFLAGS |
| 384 | TRIGGERINDEX |