diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/base.bbclass | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 7bfb1d1912..45f9435fd8 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
@@ -393,7 +393,7 @@ python () { | |||
393 | # These take the form: | 393 | # These take the form: |
394 | # | 394 | # |
395 | # PACKAGECONFIG ??= "<default options>" | 395 | # PACKAGECONFIG ??= "<default options>" |
396 | # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends" | 396 | # PACKAGECONFIG[foo] = "--enable-foo,--disable-foo,foo_depends,foo_runtime_depends,foo_runtime_recommends,foo_conflict_packageconfig" |
397 | pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {} | 397 | pkgconfigflags = d.getVarFlags("PACKAGECONFIG") or {} |
398 | if pkgconfigflags: | 398 | if pkgconfigflags: |
399 | pkgconfig = (d.getVar('PACKAGECONFIG') or "").split() | 399 | pkgconfig = (d.getVar('PACKAGECONFIG') or "").split() |
@@ -440,8 +440,8 @@ python () { | |||
440 | for flag, flagval in sorted(pkgconfigflags.items()): | 440 | for flag, flagval in sorted(pkgconfigflags.items()): |
441 | items = flagval.split(",") | 441 | items = flagval.split(",") |
442 | num = len(items) | 442 | num = len(items) |
443 | if num > 5: | 443 | if num > 6: |
444 | bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend can be specified!" | 444 | bb.error("%s: PACKAGECONFIG[%s] Only enable,disable,depend,rdepend,rrecommend,conflict_packageconfig can be specified!" |
445 | % (d.getVar('PN'), flag)) | 445 | % (d.getVar('PN'), flag)) |
446 | 446 | ||
447 | if flag in pkgconfig: | 447 | if flag in pkgconfig: |
@@ -455,6 +455,20 @@ python () { | |||
455 | extraconf.append(items[0]) | 455 | extraconf.append(items[0]) |
456 | elif num >= 2 and items[1]: | 456 | elif num >= 2 and items[1]: |
457 | extraconf.append(items[1]) | 457 | extraconf.append(items[1]) |
458 | |||
459 | if num >= 6 and items[5]: | ||
460 | conflicts = set(items[5].split()) | ||
461 | invalid = conflicts.difference(set(pkgconfigflags.keys())) | ||
462 | if invalid: | ||
463 | bb.error("%s: PACKAGECONFIG[%s] Invalid conflict package config%s '%s' specified." | ||
464 | % (d.getVar('PN'), flag, 's' if len(invalid) > 1 else '', ' '.join(invalid))) | ||
465 | |||
466 | if flag in pkgconfig: | ||
467 | intersec = conflicts.intersection(set(pkgconfig)) | ||
468 | if intersec: | ||
469 | bb.fatal("%s: PACKAGECONFIG[%s] Conflict package config%s '%s' set in PACKAGECONFIG." | ||
470 | % (d.getVar('PN'), flag, 's' if len(intersec) > 1 else '', ' '.join(intersec))) | ||
471 | |||
458 | appendVar('DEPENDS', extradeps) | 472 | appendVar('DEPENDS', extradeps) |
459 | appendVar('RDEPENDS_${PN}', extrardeps) | 473 | appendVar('RDEPENDS_${PN}', extrardeps) |
460 | appendVar('RRECOMMENDS_${PN}', extrarrecs) | 474 | appendVar('RRECOMMENDS_${PN}', extrarrecs) |