diff options
| -rw-r--r-- | meta/classes/base.bbclass | 4 | ||||
| -rw-r--r-- | meta/classes/license.bbclass | 35 |
2 files changed, 20 insertions, 19 deletions
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index be820ddb2c..227f1f5a75 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass | |||
| @@ -542,9 +542,9 @@ python () { | |||
| 542 | unmatched_license_flags = check_license_flags(d) | 542 | unmatched_license_flags = check_license_flags(d) |
| 543 | if unmatched_license_flags: | 543 | if unmatched_license_flags: |
| 544 | if len(unmatched_license_flags) == 1: | 544 | if len(unmatched_license_flags) == 1: |
| 545 | message = "because it has a restricted license '{0}'. Which is not whitelisted in LICENSE_FLAGS_ACCEPTED".format(unmatched_license_flags[0]) | 545 | message = "because it has a restricted license '{0}'. Which is not listed in LICENSE_FLAGS_ACCEPTED".format(unmatched_license_flags[0]) |
| 546 | else: | 546 | else: |
| 547 | message = "because it has restricted licenses {0}. Which are not whitelisted in LICENSE_FLAGS_ACCEPTED".format( | 547 | message = "because it has restricted licenses {0}. Which are not listed in LICENSE_FLAGS_ACCEPTED".format( |
| 548 | ", ".join("'{0}'".format(f) for f in unmatched_license_flags)) | 548 | ", ".join("'{0}'".format(f) for f in unmatched_license_flags)) |
| 549 | bb.debug(1, "Skipping %s %s" % (pn, message)) | 549 | bb.debug(1, "Skipping %s %s" % (pn, message)) |
| 550 | raise bb.parse.SkipRecipe(message) | 550 | raise bb.parse.SkipRecipe(message) |
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass index dd1e07ee37..dec9867209 100644 --- a/meta/classes/license.bbclass +++ b/meta/classes/license.bbclass | |||
| @@ -341,30 +341,31 @@ def incompatible_license(d, dont_want_licenses, package=None): | |||
| 341 | def check_license_flags(d): | 341 | def check_license_flags(d): |
| 342 | """ | 342 | """ |
| 343 | This function checks if a recipe has any LICENSE_FLAGS that | 343 | This function checks if a recipe has any LICENSE_FLAGS that |
| 344 | aren't whitelisted. | 344 | aren't acceptable. |
| 345 | 345 | ||
| 346 | If it does, it returns the all LICENSE_FLAGS missing from the whitelist, or | 346 | If it does, it returns the all LICENSE_FLAGS missing from the list |
| 347 | all of the LICENSE_FLAGS if there is no whitelist. | 347 | of acceptable license flags, or all of the LICENSE_FLAGS if there |
| 348 | is no list of acceptable flags. | ||
| 348 | 349 | ||
| 349 | If everything is is properly whitelisted, it returns None. | 350 | If everything is is acceptable, it returns None. |
| 350 | """ | 351 | """ |
| 351 | 352 | ||
| 352 | def license_flag_matches(flag, whitelist, pn): | 353 | def license_flag_matches(flag, acceptlist, pn): |
| 353 | """ | 354 | """ |
| 354 | Return True if flag matches something in whitelist, None if not. | 355 | Return True if flag matches something in acceptlist, None if not. |
| 355 | 356 | ||
| 356 | Before we test a flag against the whitelist, we append _${PN} | 357 | Before we test a flag against the acceptlist, we append _${PN} |
| 357 | to it. We then try to match that string against the | 358 | to it. We then try to match that string against the |
| 358 | whitelist. This covers the normal case, where we expect | 359 | acceptlist. This covers the normal case, where we expect |
| 359 | LICENSE_FLAGS to be a simple string like 'commercial', which | 360 | LICENSE_FLAGS to be a simple string like 'commercial', which |
| 360 | the user typically matches exactly in the whitelist by | 361 | the user typically matches exactly in the acceptlist by |
| 361 | explicitly appending the package name e.g 'commercial_foo'. | 362 | explicitly appending the package name e.g 'commercial_foo'. |
| 362 | If we fail the match however, we then split the flag across | 363 | If we fail the match however, we then split the flag across |
| 363 | '_' and append each fragment and test until we either match or | 364 | '_' and append each fragment and test until we either match or |
| 364 | run out of fragments. | 365 | run out of fragments. |
| 365 | """ | 366 | """ |
| 366 | flag_pn = ("%s_%s" % (flag, pn)) | 367 | flag_pn = ("%s_%s" % (flag, pn)) |
| 367 | for candidate in whitelist: | 368 | for candidate in acceptlist: |
| 368 | if flag_pn == candidate: | 369 | if flag_pn == candidate: |
| 369 | return True | 370 | return True |
| 370 | 371 | ||
| @@ -375,27 +376,27 @@ def check_license_flags(d): | |||
| 375 | if flag_cur: | 376 | if flag_cur: |
| 376 | flag_cur += "_" | 377 | flag_cur += "_" |
| 377 | flag_cur += flagment | 378 | flag_cur += flagment |
| 378 | for candidate in whitelist: | 379 | for candidate in acceptlist: |
| 379 | if flag_cur == candidate: | 380 | if flag_cur == candidate: |
| 380 | return True | 381 | return True |
| 381 | return False | 382 | return False |
| 382 | 383 | ||
| 383 | def all_license_flags_match(license_flags, whitelist): | 384 | def all_license_flags_match(license_flags, acceptlist): |
| 384 | """ Return all unmatched flags, None if all flags match """ | 385 | """ Return all unmatched flags, None if all flags match """ |
| 385 | pn = d.getVar('PN') | 386 | pn = d.getVar('PN') |
| 386 | split_whitelist = whitelist.split() | 387 | split_acceptlist = acceptlist.split() |
| 387 | flags = [] | 388 | flags = [] |
| 388 | for flag in license_flags.split(): | 389 | for flag in license_flags.split(): |
| 389 | if not license_flag_matches(flag, split_whitelist, pn): | 390 | if not license_flag_matches(flag, split_acceptlist, pn): |
| 390 | flags.append(flag) | 391 | flags.append(flag) |
| 391 | return flags if flags else None | 392 | return flags if flags else None |
| 392 | 393 | ||
| 393 | license_flags = d.getVar('LICENSE_FLAGS') | 394 | license_flags = d.getVar('LICENSE_FLAGS') |
| 394 | if license_flags: | 395 | if license_flags: |
| 395 | whitelist = d.getVar('LICENSE_FLAGS_ACCEPTED') | 396 | acceptlist = d.getVar('LICENSE_FLAGS_ACCEPTED') |
| 396 | if not whitelist: | 397 | if not acceptlist: |
| 397 | return license_flags.split() | 398 | return license_flags.split() |
| 398 | unmatched_flags = all_license_flags_match(license_flags, whitelist) | 399 | unmatched_flags = all_license_flags_match(license_flags, acceptlist) |
| 399 | if unmatched_flags: | 400 | if unmatched_flags: |
| 400 | return unmatched_flags | 401 | return unmatched_flags |
| 401 | return None | 402 | return None |
