diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-09-06 10:06:01 +1200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-08 00:36:49 +0100 |
commit | fa90c2f54d7954dd3149404b38a0899d2e4962cf (patch) | |
tree | 6a67f65b3034eefdde722d2155ec381718fd66bf /scripts | |
parent | b1c3e44dfb0e820fa54ae99758a0fc9ede98ccb9 (diff) | |
download | poky-fa90c2f54d7954dd3149404b38a0899d2e4962cf.tar.gz |
recipetool: create: allow license variable handling to be rerun
If you make adjustments to the source tree (as create_npm.py will be)
then you will need to re-run the license variable handling code at the
end so that we get all of the files that should go into
LIC_FILES_CHKSUM if nothing else. Split out the license variable
handling to a separate function in order to allow this.
(From OE-Core rev: f0d6f4b7e87ea781ac0dffcc8d0310570975811b)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/recipetool/create.py | 103 |
1 files changed, 53 insertions, 50 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py index bc5b22b361..6ed4ad0ff7 100644 --- a/scripts/lib/recipetool/create.py +++ b/scripts/lib/recipetool/create.py | |||
@@ -481,51 +481,8 @@ def create_recipe(args): | |||
481 | # We need a blank line here so that patch_recipe_lines can rewind before the LICENSE comments | 481 | # We need a blank line here so that patch_recipe_lines can rewind before the LICENSE comments |
482 | lines_before.append('') | 482 | lines_before.append('') |
483 | 483 | ||
484 | licvalues = guess_license(srctree_use) | 484 | handled = [] |
485 | lic_files_chksum = [] | 485 | licvalues = handle_license_vars(srctree_use, lines_before, handled, extravalues, tinfoil.config_data) |
486 | lic_unknown = [] | ||
487 | if licvalues: | ||
488 | licenses = [] | ||
489 | for licvalue in licvalues: | ||
490 | if not licvalue[0] in licenses: | ||
491 | licenses.append(licvalue[0]) | ||
492 | lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2])) | ||
493 | if licvalue[0] == 'Unknown': | ||
494 | lic_unknown.append(licvalue[1]) | ||
495 | lines_before.append('# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is') | ||
496 | lines_before.append('# your responsibility to verify that the values are complete and correct.') | ||
497 | if len(licvalues) > 1: | ||
498 | lines_before.append('#') | ||
499 | lines_before.append('# NOTE: multiple licenses have been detected; if that is correct you should separate') | ||
500 | lines_before.append('# these in the LICENSE value using & if the multiple licenses all apply, or | if there') | ||
501 | lines_before.append('# is a choice between the multiple licenses. If in doubt, check the accompanying') | ||
502 | lines_before.append('# documentation to determine which situation is applicable.') | ||
503 | if lic_unknown: | ||
504 | lines_before.append('#') | ||
505 | lines_before.append('# The following license files were not able to be identified and are') | ||
506 | lines_before.append('# represented as "Unknown" below, you will need to check them yourself:') | ||
507 | for licfile in lic_unknown: | ||
508 | lines_before.append('# %s' % licfile) | ||
509 | lines_before.append('#') | ||
510 | else: | ||
511 | lines_before.append('# Unable to find any files that looked like license statements. Check the accompanying') | ||
512 | lines_before.append('# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.') | ||
513 | lines_before.append('#') | ||
514 | lines_before.append('# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if') | ||
515 | lines_before.append('# this is not accurate with respect to the licensing of the software being built (it') | ||
516 | lines_before.append('# will not be in most cases) you must specify the correct value before using this') | ||
517 | lines_before.append('# recipe for anything other than initial testing/development!') | ||
518 | licenses = ['CLOSED'] | ||
519 | pkg_license = extravalues.pop('LICENSE', None) | ||
520 | if pkg_license: | ||
521 | if licenses == ['Unknown']: | ||
522 | lines_before.append('# NOTE: The following LICENSE value was determined from the original package metadata') | ||
523 | licenses = [pkg_license] | ||
524 | else: | ||
525 | lines_before.append('# NOTE: Original package metadata indicates license is: %s' % pkg_license) | ||
526 | lines_before.append('LICENSE = "%s"' % ' '.join(licenses)) | ||
527 | lines_before.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n '.join(lic_files_chksum)) | ||
528 | lines_before.append('') | ||
529 | 486 | ||
530 | classes = [] | 487 | classes = [] |
531 | 488 | ||
@@ -622,9 +579,6 @@ def create_recipe(args): | |||
622 | handlers = [item[0] for item in handlers] | 579 | handlers = [item[0] for item in handlers] |
623 | 580 | ||
624 | # Apply the handlers | 581 | # Apply the handlers |
625 | handled = [] | ||
626 | handled.append(('license', licvalues)) | ||
627 | |||
628 | if args.binary: | 582 | if args.binary: |
629 | classes.append('bin_package') | 583 | classes.append('bin_package') |
630 | handled.append('buildsystem') | 584 | handled.append('buildsystem') |
@@ -771,6 +725,55 @@ def create_recipe(args): | |||
771 | 725 | ||
772 | return 0 | 726 | return 0 |
773 | 727 | ||
728 | def handle_license_vars(srctree, lines_before, handled, extravalues, d): | ||
729 | licvalues = guess_license(srctree, d) | ||
730 | lic_files_chksum = [] | ||
731 | lic_unknown = [] | ||
732 | if licvalues: | ||
733 | licenses = [] | ||
734 | for licvalue in licvalues: | ||
735 | if not licvalue[0] in licenses: | ||
736 | licenses.append(licvalue[0]) | ||
737 | lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2])) | ||
738 | if licvalue[0] == 'Unknown': | ||
739 | lic_unknown.append(licvalue[1]) | ||
740 | lines_before.append('# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is') | ||
741 | lines_before.append('# your responsibility to verify that the values are complete and correct.') | ||
742 | if len(licvalues) > 1: | ||
743 | lines_before.append('#') | ||
744 | lines_before.append('# NOTE: multiple licenses have been detected; if that is correct you should separate') | ||
745 | lines_before.append('# these in the LICENSE value using & if the multiple licenses all apply, or | if there') | ||
746 | lines_before.append('# is a choice between the multiple licenses. If in doubt, check the accompanying') | ||
747 | lines_before.append('# documentation to determine which situation is applicable.') | ||
748 | if lic_unknown: | ||
749 | lines_before.append('#') | ||
750 | lines_before.append('# The following license files were not able to be identified and are') | ||
751 | lines_before.append('# represented as "Unknown" below, you will need to check them yourself:') | ||
752 | for licfile in lic_unknown: | ||
753 | lines_before.append('# %s' % licfile) | ||
754 | lines_before.append('#') | ||
755 | else: | ||
756 | lines_before.append('# Unable to find any files that looked like license statements. Check the accompanying') | ||
757 | lines_before.append('# documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly.') | ||
758 | lines_before.append('#') | ||
759 | lines_before.append('# NOTE: LICENSE is being set to "CLOSED" to allow you to at least start building - if') | ||
760 | lines_before.append('# this is not accurate with respect to the licensing of the software being built (it') | ||
761 | lines_before.append('# will not be in most cases) you must specify the correct value before using this') | ||
762 | lines_before.append('# recipe for anything other than initial testing/development!') | ||
763 | licenses = ['CLOSED'] | ||
764 | pkg_license = extravalues.pop('LICENSE', None) | ||
765 | if pkg_license: | ||
766 | if licenses == ['Unknown']: | ||
767 | lines_before.append('# NOTE: The following LICENSE value was determined from the original package metadata') | ||
768 | licenses = [pkg_license] | ||
769 | else: | ||
770 | lines_before.append('# NOTE: Original package metadata indicates license is: %s' % pkg_license) | ||
771 | lines_before.append('LICENSE = "%s"' % ' '.join(licenses)) | ||
772 | lines_before.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n '.join(lic_files_chksum)) | ||
773 | lines_before.append('') | ||
774 | handled.append(('license', licvalues)) | ||
775 | return licvalues | ||
776 | |||
774 | def get_license_md5sums(d, static_only=False): | 777 | def get_license_md5sums(d, static_only=False): |
775 | import bb.utils | 778 | import bb.utils |
776 | md5sums = {} | 779 | md5sums = {} |
@@ -891,9 +894,9 @@ def crunch_license(licfile): | |||
891 | license = crunched_md5sums.get(md5val, None) | 894 | license = crunched_md5sums.get(md5val, None) |
892 | return license, md5val, lictext | 895 | return license, md5val, lictext |
893 | 896 | ||
894 | def guess_license(srctree): | 897 | def guess_license(srctree, d): |
895 | import bb | 898 | import bb |
896 | md5sums = get_license_md5sums(tinfoil.config_data) | 899 | md5sums = get_license_md5sums(d) |
897 | 900 | ||
898 | licenses = [] | 901 | licenses = [] |
899 | licspecs = ['*LICEN[CS]E*', 'COPYING*', '*[Ll]icense*', 'LEGAL*', '[Ll]egal*', '*GPL*', 'README.lic*', 'COPYRIGHT*', '[Cc]opyright*'] | 902 | licspecs = ['*LICEN[CS]E*', 'COPYING*', '*[Ll]icense*', 'LEGAL*', '[Ll]egal*', '*GPL*', 'README.lic*', 'COPYRIGHT*', '[Cc]opyright*'] |