mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-27 21:26:36 +00:00
scanpypi: add support for licence files checksums
Store the list of detected licence files in the main object and automatically add their sha256 checksums when creating *.hash file. Bonus: fix wrong indentation. Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
parent
cfd1c939b7
commit
13d94669b9
@ -24,6 +24,8 @@ import tempfile
|
|||||||
import imp
|
import imp
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
|
BUF_SIZE = 65536
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import spdx_lookup as liclookup
|
import spdx_lookup as liclookup
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@ -132,6 +134,7 @@ class BuildrootPackage():
|
|||||||
self.filename = None
|
self.filename = None
|
||||||
self.url = None
|
self.url = None
|
||||||
self.version = None
|
self.version = None
|
||||||
|
self.license_files = []
|
||||||
|
|
||||||
def fetch_package_info(self):
|
def fetch_package_info(self):
|
||||||
"""
|
"""
|
||||||
@ -439,12 +442,12 @@ class BuildrootPackage():
|
|||||||
|
|
||||||
filenames = ['LICENCE', 'LICENSE', 'LICENSE.RST', 'LICENSE.TXT',
|
filenames = ['LICENCE', 'LICENSE', 'LICENSE.RST', 'LICENSE.TXT',
|
||||||
'COPYING', 'COPYING.TXT']
|
'COPYING', 'COPYING.TXT']
|
||||||
license_files = list(find_file_upper_case(filenames, self.tmp_extract))
|
self.license_files = list(find_file_upper_case(filenames, self.tmp_extract))
|
||||||
|
|
||||||
lines.append(self.__get_license_names(license_files))
|
lines.append(self.__get_license_names(self.license_files))
|
||||||
|
|
||||||
license_files = [license.replace(self.tmp_extract, '')[1:]
|
license_files = [license.replace(self.tmp_extract, '')[1:]
|
||||||
for license in license_files]
|
for license in self.license_files]
|
||||||
if len(license_files) > 0:
|
if len(license_files) > 0:
|
||||||
if len(license_files) > 1:
|
if len(license_files) > 1:
|
||||||
print('More than one file found for license:',
|
print('More than one file found for license:',
|
||||||
@ -522,6 +525,20 @@ class BuildrootPackage():
|
|||||||
filename=self.filename)
|
filename=self.filename)
|
||||||
lines.append(hash_line)
|
lines.append(hash_line)
|
||||||
|
|
||||||
|
for license_file in self.license_files:
|
||||||
|
sha256 = hashlib.sha256()
|
||||||
|
with open(license_file, 'rb') as lic_f:
|
||||||
|
while True:
|
||||||
|
data = lic_f.read(BUF_SIZE)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
sha256.update(data)
|
||||||
|
hash_line = '{method}\t{digest} {filename}\n'.format(
|
||||||
|
method='sha256',
|
||||||
|
digest=sha256.hexdigest(),
|
||||||
|
filename=os.path.basename(license_file))
|
||||||
|
lines.append(hash_line)
|
||||||
|
|
||||||
with open(path_to_hash, 'w') as hash_file:
|
with open(path_to_hash, 'w') as hash_file:
|
||||||
hash_file.writelines(lines)
|
hash_file.writelines(lines)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user