Skip to content

Commit 00a6ac9

Browse files
committed
Make License data properly normalized
Previously License data of type "License1, License2" was replaced with "License1 License2", which cannot be parsed properly. It should be "License1 and License2" instead. The comma sign causes `license_expression` licensing methods to fail Signed-off-by: Ivana Atanasova <[email protected]>
1 parent 8b73fa4 commit 00a6ac9

File tree

5 files changed

+15
-23
lines changed

5 files changed

+15
-23
lines changed

tern/formats/spdx/spdx_common.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,17 @@ def is_spdx_license_expression(license_data):
4949
return False'''
5050
licensing = get_spdx_licensing()
5151
if ',' in license_data:
52-
license_data = license_data.replace(',', ' ')
52+
license_data = license_data.replace(',', ' and ')
5353
return licensing.validate(license_data).errors == []
5454

55+
# Searches for declared license data using the license_expression library
56+
def get_package_license_declared(package_license_declared):
57+
if package_license_declared:
58+
if is_spdx_license_expression(package_license_declared):
59+
return package_license_declared
60+
return get_license_ref(package_license_declared)
61+
return 'NONE'
62+
5563

5664
########################
5765
# Common Image Helpers #

tern/formats/spdx/spdxjson/file_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def get_file_dict(filedata, template, layer_id):
5050
file_license_refs = []
5151
for lic in spdx_common.get_file_licenses(filedata):
5252
# Add the LicenseRef to the list instead of license expression
53-
file_license_refs.append(spdx_common.get_license_ref(lic))
53+
file_license_refs.append(spdx_common.get_package_license_declared(lic))
5454
file_dict['licenseInfoInFiles'] = file_license_refs
5555

5656
# We only add this if there is a notice

tern/formats/spdx/spdxjson/package_helpers.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,6 @@ def get_package_comment(package):
2323
return comment
2424

2525

26-
def get_package_license_declared(package_license_declared):
27-
if package_license_declared:
28-
if spdx_common.is_spdx_license_expression(package_license_declared):
29-
return package_license_declared
30-
return spdx_common.get_license_ref(package_license_declared)
31-
return 'NONE'
32-
33-
3426
def get_source_package_dict(package, template):
3527
'''''Given a package object and its SPDX template mapping, return a SPDX
3628
JSON dictionary representation of the associated source package.
@@ -47,7 +39,7 @@ def get_source_package_dict(package, template):
4739
mapping['PackageDownloadLocation'] else 'NOASSERTION',
4840
'filesAnalyzed': False, # always false for packages
4941
'licenseConcluded': 'NOASSERTION', # always NOASSERTION
50-
'licenseDeclared': get_package_license_declared(
42+
'licenseDeclared': spdx_common.get_package_license_declared(
5143
mapping['PackageLicenseDeclared']),
5244
'copyrightText': mapping['PackageCopyrightText'] if
5345
mapping['PackageCopyrightText'] else'NONE',
@@ -72,7 +64,7 @@ def get_package_dict(package, template):
7264
mapping['PackageDownloadLocation'] else 'NOASSERTION',
7365
'filesAnalyzed': False, # always false for packages
7466
'licenseConcluded': 'NOASSERTION', # always NOASSERTION
75-
'licenseDeclared': get_package_license_declared(
67+
'licenseDeclared': spdx_common.get_package_license_declared(
7668
mapping['PackageLicenseDeclared']),
7769
'copyrightText': mapping['PackageCopyrightText'] if
7870
mapping['PackageCopyrightText'] else'NONE',

tern/formats/spdx/spdxtagvalue/file_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def get_license_info_block(filedata):
3535
else:
3636
for lic in spdx_common.get_file_licenses(filedata):
3737
block = block + 'LicenseInfoInFile: {}'.format(
38-
spdx_common.get_license_ref(lic)) + '\n'
38+
spdx_common.get_package_license_declared(lic)) + '\n'
3939
return block
4040

4141

tern/formats/spdx/spdxtagvalue/package_helpers.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ def get_package_comment(package_obj):
2424
return comment
2525

2626

27-
def get_package_license_declared(package_license_declared):
28-
if package_license_declared:
29-
if spdx_common.is_spdx_license_expression(package_license_declared):
30-
return package_license_declared
31-
return spdx_common.get_license_ref(package_license_declared)
32-
return 'NONE'
33-
34-
3527
def get_source_package_block(package_obj, template):
3628
'''Given a package object and its SPDX template mapping, return a SPDX
3729
document block for the corresponding source package.
@@ -63,7 +55,7 @@ def get_source_package_block(package_obj, template):
6355
# Package License Concluded (always NOASSERTION)
6456
block += 'PackageLicenseConcluded: NOASSERTION\n'
6557
# Package License Declared (use the license ref for this)
66-
block += 'PackageLicenseDeclared: ' + get_package_license_declared(
58+
block += 'PackageLicenseDeclared: ' + spdx_common.get_package_license_declared(
6759
mapping['PackageLicenseDeclared']) + '\n'
6860
# Package Copyright Text
6961
if mapping['PackageCopyrightText']:
@@ -105,7 +97,7 @@ def get_package_block(package_obj, template):
10597
# Package License Concluded (always NOASSERTION)
10698
block += 'PackageLicenseConcluded: NOASSERTION\n'
10799
# Package License Declared (use the license ref for this)
108-
block += 'PackageLicenseDeclared: ' + get_package_license_declared(
100+
block += 'PackageLicenseDeclared: ' + spdx_common.get_package_license_declared(
109101
mapping['PackageLicenseDeclared']) + '\n'
110102
# Package Copyright Text
111103
if mapping['PackageCopyrightText']:

0 commit comments

Comments
 (0)