utils/check-package: check linux-tools
Each linux tool uses a fragment of a .mk file, named, for instance: package/linux-tools/linux-tool-cpupower.mk.in So currently check-package does not check these files. Add the support in check-package script. At the same time, factor out a function to derive package prefix from the filename being checked, so the fix (calling os.path.splitext twice) can be applied in a single place. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> [Arnout: add docstring and explain double splitext to get_package_prefix_from_filename] Signed-off-by: Arnout Vandecappelle <arnout@mind.be> (cherry picked from commit ccc12c0f244de23672300b5837b473292c8db931) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
bb45657334
commit
4b77aafde8
@ -124,6 +124,7 @@ DO_CHECK_INTREE = re.compile(r"|".join([
|
||||
DO_NOT_CHECK_INTREE = re.compile(r"|".join([
|
||||
r"boot/barebox/barebox\.mk$",
|
||||
r"fs/common\.mk$",
|
||||
r"package/alchemy/atom.mk.in$",
|
||||
r"package/doc-asciidoc\.mk$",
|
||||
r"package/pkg-\S*\.mk$",
|
||||
r"support/dependencies/[^/]+\.mk$",
|
||||
@ -154,7 +155,7 @@ def get_lib_from_filename(fname):
|
||||
return checkpackagelib.lib_config
|
||||
if fname.endswith(".hash"):
|
||||
return checkpackagelib.lib_hash
|
||||
if fname.endswith(".mk"):
|
||||
if fname.endswith(".mk") or fname.endswith(".mk.in"):
|
||||
return checkpackagelib.lib_mk
|
||||
if fname.endswith(".patch"):
|
||||
return checkpackagelib.lib_patch
|
||||
|
@ -49,6 +49,18 @@ class Ifdef(_CheckFunction):
|
||||
text]
|
||||
|
||||
|
||||
def get_package_prefix_from_filename(filename):
|
||||
"""Return a tuple (pkgname, PKGNAME) with the package name derived from the file name"""
|
||||
# Double splitext to support .mk.in
|
||||
package = os.path.splitext(os.path.splitext(os.path.basename(filename))[0])[0]
|
||||
# linux tools do not use LINUX_TOOL_ prefix for variables
|
||||
package = package.replace("linux-tool-", "")
|
||||
# linux extensions do not use LINUX_EXT_ prefix for variables
|
||||
package = package.replace("linux-ext-", "")
|
||||
package_upper = package.replace("-", "_").upper()
|
||||
return package, package_upper
|
||||
|
||||
|
||||
class Indent(_CheckFunction):
|
||||
COMMENT = re.compile(r"^\s*#")
|
||||
CONDITIONAL = re.compile(r"^\s*({})\s".format("|".join(start_conditional + end_conditional + continue_conditional)))
|
||||
@ -207,12 +219,10 @@ class RemoveDefaultPackageSourceVariable(_CheckFunction):
|
||||
packages_that_may_contain_default_source = ["binutils", "gcc", "gdb"]
|
||||
|
||||
def before(self):
|
||||
package, _ = os.path.splitext(os.path.basename(self.filename))
|
||||
package_upper = package.replace("-", "_").upper()
|
||||
self.package = package
|
||||
self.package, package_upper = get_package_prefix_from_filename(self.filename)
|
||||
self.FIND_SOURCE = re.compile(
|
||||
r"^{}_SOURCE\s*=\s*{}-\$\({}_VERSION\)\.tar\.gz"
|
||||
.format(package_upper, package, package_upper))
|
||||
.format(package_upper, self.package, package_upper))
|
||||
|
||||
def check_line(self, lineno, text):
|
||||
if self.FIND_SOURCE.search(text):
|
||||
@ -282,16 +292,10 @@ class TypoInPackageVariable(_CheckFunction):
|
||||
VARIABLE = re.compile(r"^(define\s+)?([A-Z0-9_]+_[A-Z0-9_]+)")
|
||||
|
||||
def before(self):
|
||||
package, _ = os.path.splitext(os.path.basename(self.filename))
|
||||
package = package.replace("-", "_").upper()
|
||||
# linux tools do not use LINUX_TOOL_ prefix for variables
|
||||
package = package.replace("LINUX_TOOL_", "")
|
||||
# linux extensions do not use LINUX_EXT_ prefix for variables
|
||||
package = package.replace("LINUX_EXT_", "")
|
||||
self.package = package
|
||||
self.REGEX = re.compile(r"(HOST_|ROOTFS_)?({}_[A-Z0-9_]+)".format(package))
|
||||
_, self.package = get_package_prefix_from_filename(self.filename)
|
||||
self.REGEX = re.compile(r"(HOST_|ROOTFS_)?({}_[A-Z0-9_]+)".format(self.package))
|
||||
self.FIND_VIRTUAL = re.compile(
|
||||
r"^{}_PROVIDES\s*(\+|)=\s*(.*)".format(package))
|
||||
r"^{}_PROVIDES\s*(\+|)=\s*(.*)".format(self.package))
|
||||
self.virtual = []
|
||||
|
||||
def check_line(self, lineno, text):
|
||||
|
@ -74,6 +74,40 @@ def test_Ifdef(testname, filename, string, expected):
|
||||
assert warnings == expected
|
||||
|
||||
|
||||
get_package_prefix_from_filename = [
|
||||
('linux extension',
|
||||
'linux/linux-ext-aufs.mk',
|
||||
['aufs', 'AUFS']),
|
||||
('linux tool',
|
||||
'package/linux-tools/linux-tool-gpio.mk.in',
|
||||
['gpio', 'GPIO']),
|
||||
('boot',
|
||||
'boot/binaries-marvell/binaries-marvell.mk',
|
||||
['binaries-marvell', 'BINARIES_MARVELL']),
|
||||
('toolchain',
|
||||
'toolchain/toolchain-external/toolchain-external-bootlin/toolchain-external-bootlin.mk',
|
||||
['toolchain-external-bootlin', 'TOOLCHAIN_EXTERNAL_BOOTLIN']),
|
||||
('package, underscore, subfolder',
|
||||
'package/x11r7/xapp_bitmap/xapp_bitmap.mk',
|
||||
['xapp_bitmap', 'XAPP_BITMAP']),
|
||||
('package, starting with number',
|
||||
'package/4th/4th.mk',
|
||||
['4th', '4TH']),
|
||||
('package, long name',
|
||||
'package/perl-mojolicious-plugin-authentication/perl-mojolicious-plugin-authentication.mk',
|
||||
['perl-mojolicious-plugin-authentication', 'PERL_MOJOLICIOUS_PLUGIN_AUTHENTICATION']),
|
||||
('package, case sensitive',
|
||||
'package/libeXosip2/libeXosip2.mk',
|
||||
['libeXosip2', 'LIBEXOSIP2']),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('testname,filename,expected', get_package_prefix_from_filename)
|
||||
def test_get_package_prefix_from_filename(testname, filename, expected):
|
||||
prefix_lower, prefix_upper = m.get_package_prefix_from_filename(filename)
|
||||
assert [prefix_lower, prefix_upper] == expected
|
||||
|
||||
|
||||
Indent = [
|
||||
('ignore comment at beginning of line',
|
||||
'any',
|
||||
@ -567,6 +601,12 @@ TypoInPackageVariable = [
|
||||
'OTHERS_VAR = \n',
|
||||
[['any.mk:2: possible typo: OTHERS_VAR -> *ANY*',
|
||||
'OTHERS_VAR = \n']]),
|
||||
('linux tool',
|
||||
'package/linux-tools/linux-tool-cpupower.mk.in',
|
||||
'CPUPOWER_DEPENDENCIES =\n'
|
||||
'POWER_DEPENDENCIES +=\n',
|
||||
[['package/linux-tools/linux-tool-cpupower.mk.in:2: possible typo: POWER_DEPENDENCIES -> *CPUPOWER*',
|
||||
'POWER_DEPENDENCIES +=\n']]),
|
||||
]
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user