diff options
| -rw-r--r-- | meta/classes/base.bbclass | 15 | ||||
| -rw-r--r-- | meta/classes/license.bbclass | 19 |
2 files changed, 19 insertions, 15 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index bc9b236b84..e715ffa1b2 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
| @@ -467,12 +467,15 @@ python () { | |||
| 467 | 467 | ||
| 468 | if bb.data.inherits_class('license', d): | 468 | if bb.data.inherits_class('license', d): |
| 469 | check_license_format(d) | 469 | check_license_format(d) |
| 470 | unmatched_license_flag = check_license_flags(d) | 470 | unmatched_license_flags = check_license_flags(d) |
| 471 | if unmatched_license_flag: | 471 | if unmatched_license_flags: |
| 472 | bb.debug(1, "Skipping %s because it has a restricted license not" | 472 | if len(unmatched_license_flags) == 1: |
| 473 | " whitelisted in LICENSE_FLAGS_WHITELIST" % pn) | 473 | message = "because it has a restricted license '{0}'. Which is not whitelisted in LICENSE_FLAGS_WHITELIST".format(unmatched_license_flags[0]) |
| 474 | raise bb.parse.SkipRecipe("because it has a restricted license not" | 474 | else: |
| 475 | " whitelisted in LICENSE_FLAGS_WHITELIST") | 475 | message = "because it has restricted licenses {0}. Which are not whitelisted in LICENSE_FLAGS_WHITELIST".format( |
| 476 | ", ".join("'{0}'".format(f) for f in unmatched_license_flags)) | ||
| 477 | bb.debug(1, "Skipping %s %s" % (pn, message)) | ||
| 478 | raise bb.parse.SkipRecipe(message) | ||
| 476 | 479 | ||
| 477 | # If we're building a target package we need to use fakeroot (pseudo) | 480 | # If we're building a target package we need to use fakeroot (pseudo) |
| 478 | # in order to capture permissions, owners, groups and special files | 481 | # in order to capture permissions, owners, groups and special files |
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass index 4cf7f074fc..0e5675c500 100644 --- a/meta/classes/license.bbclass +++ b/meta/classes/license.bbclass | |||
| @@ -316,8 +316,8 @@ def check_license_flags(d): | |||
| 316 | This function checks if a recipe has any LICENSE_FLAGS that | 316 | This function checks if a recipe has any LICENSE_FLAGS that |
| 317 | aren't whitelisted. | 317 | aren't whitelisted. |
| 318 | 318 | ||
| 319 | If it does, it returns the first LICENSE_FLAGS item missing from the | 319 | If it does, it returns the all LICENSE_FLAGS missing from the whitelist, or |
| 320 | whitelist, or all of the LICENSE_FLAGS if there is no whitelist. | 320 | all of the LICENSE_FLAGS if there is no whitelist. |
| 321 | 321 | ||
| 322 | If everything is is properly whitelisted, it returns None. | 322 | If everything is is properly whitelisted, it returns None. |
| 323 | """ | 323 | """ |
| @@ -354,22 +354,23 @@ def check_license_flags(d): | |||
| 354 | return False | 354 | return False |
| 355 | 355 | ||
| 356 | def all_license_flags_match(license_flags, whitelist): | 356 | def all_license_flags_match(license_flags, whitelist): |
| 357 | """ Return first unmatched flag, None if all flags match """ | 357 | """ Return all unmatched flags, None if all flags match """ |
| 358 | pn = d.getVar('PN') | 358 | pn = d.getVar('PN') |
| 359 | split_whitelist = whitelist.split() | 359 | split_whitelist = whitelist.split() |
| 360 | flags = [] | ||
| 360 | for flag in license_flags.split(): | 361 | for flag in license_flags.split(): |
| 361 | if not license_flag_matches(flag, split_whitelist, pn): | 362 | if not license_flag_matches(flag, split_whitelist, pn): |
| 362 | return flag | 363 | flags.append(flag) |
| 363 | return None | 364 | return flags if flags else None |
| 364 | 365 | ||
| 365 | license_flags = d.getVar('LICENSE_FLAGS') | 366 | license_flags = d.getVar('LICENSE_FLAGS') |
| 366 | if license_flags: | 367 | if license_flags: |
| 367 | whitelist = d.getVar('LICENSE_FLAGS_WHITELIST') | 368 | whitelist = d.getVar('LICENSE_FLAGS_WHITELIST') |
| 368 | if not whitelist: | 369 | if not whitelist: |
| 369 | return license_flags | 370 | return license_flags.split() |
| 370 | unmatched_flag = all_license_flags_match(license_flags, whitelist) | 371 | unmatched_flags = all_license_flags_match(license_flags, whitelist) |
| 371 | if unmatched_flag: | 372 | if unmatched_flags: |
| 372 | return unmatched_flag | 373 | return unmatched_flags |
| 373 | return None | 374 | return None |
| 374 | 375 | ||
| 375 | def check_license_format(d): | 376 | def check_license_format(d): |
