From 9195e1dff73027fecc9e75ca2a1f16e2766548f6 Mon Sep 17 00:00:00 2001 From: Paulo Neves Date: Sun, 6 Feb 2022 14:45:07 +0100 Subject: [PATCH] selftest/lic_checksum: Add test for filename containing space A fix is being added to bitbake to correctly handle spaces inside checksum filenames. Add a test to oe-selftest to ensure this is tested and doesn't regress in future. Signed-off-by: Paulo Neves Signed-off-by: Richard Purdie --- meta/classes/base.bbclass | 4 +++- meta/lib/oeqa/selftest/cases/lic_checksum.py | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index 55f654d37d..3ca9fe76cb 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -94,6 +94,8 @@ def extra_path_elements(d): PATH:prepend = "${@extra_path_elements(d)}" def get_lic_checksum_file_list(d): + import urllib + filelist = [] lic_files = d.getVar("LIC_FILES_CHKSUM") or '' tmpdir = d.getVar("TMPDIR") @@ -113,7 +115,7 @@ def get_lic_checksum_file_list(d): if path[0] == '/': if path.startswith((tmpdir, s, b, workdir)): continue - filelist.append(path + ":" + str(os.path.exists(path))) + filelist.append(urllib.parse.quote(path) + ":" + str(os.path.exists(path))) except bb.fetch.MalformedUrl: bb.fatal(d.getVar('PN') + ": LIC_FILES_CHKSUM contains an invalid URL: " + url) return " ".join(filelist) diff --git a/meta/lib/oeqa/selftest/cases/lic_checksum.py b/meta/lib/oeqa/selftest/cases/lic_checksum.py index 91021ac335..6bdbac3ba2 100644 --- a/meta/lib/oeqa/selftest/cases/lic_checksum.py +++ b/meta/lib/oeqa/selftest/cases/lic_checksum.py @@ -4,6 +4,7 @@ import os import tempfile +import urllib from oeqa.selftest.case import OESelftestTestCase from oeqa.utils.commands import bitbake @@ -11,6 +12,23 @@ from oeqa.utils import CommandError class LicenseTests(OESelftestTestCase): + def test_checksum_with_space(self): + bitbake_cmd = '-c populate_lic emptytest' + + lic_file, lic_path = tempfile.mkstemp(" -afterspace") + os.close(lic_file) + #self.track_for_cleanup(lic_path) + + self.write_config("INHERIT:remove = \"report-error\"") + + self.write_recipeinc('emptytest', """ +INHIBIT_DEFAULT_DEPS = "1" +LIC_FILES_CHKSUM = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e" +SRC_URI = "file://%s;md5=d41d8cd98f00b204e9800998ecf8427e" +""" % (urllib.parse.quote(lic_path), urllib.parse.quote(lic_path))) + result = bitbake(bitbake_cmd) + + # Verify that changing a license file that has an absolute path causes # the license qa to fail due to a mismatched md5sum. def test_nonmatching_checksum(self): -- 2.40.1