mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-10-01 06:21:56 -09:00
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 ccc12c0f24)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
committed by
Peter Korsgaard
parent
bb45657334
commit
4b77aafde8
@@ -124,6 +124,7 @@ DO_CHECK_INTREE = re.compile(r"|".join([
|
|||||||
DO_NOT_CHECK_INTREE = re.compile(r"|".join([
|
DO_NOT_CHECK_INTREE = re.compile(r"|".join([
|
||||||
r"boot/barebox/barebox\.mk$",
|
r"boot/barebox/barebox\.mk$",
|
||||||
r"fs/common\.mk$",
|
r"fs/common\.mk$",
|
||||||
|
r"package/alchemy/atom.mk.in$",
|
||||||
r"package/doc-asciidoc\.mk$",
|
r"package/doc-asciidoc\.mk$",
|
||||||
r"package/pkg-\S*\.mk$",
|
r"package/pkg-\S*\.mk$",
|
||||||
r"support/dependencies/[^/]+\.mk$",
|
r"support/dependencies/[^/]+\.mk$",
|
||||||
@@ -154,7 +155,7 @@ def get_lib_from_filename(fname):
|
|||||||
return checkpackagelib.lib_config
|
return checkpackagelib.lib_config
|
||||||
if fname.endswith(".hash"):
|
if fname.endswith(".hash"):
|
||||||
return checkpackagelib.lib_hash
|
return checkpackagelib.lib_hash
|
||||||
if fname.endswith(".mk"):
|
if fname.endswith(".mk") or fname.endswith(".mk.in"):
|
||||||
return checkpackagelib.lib_mk
|
return checkpackagelib.lib_mk
|
||||||
if fname.endswith(".patch"):
|
if fname.endswith(".patch"):
|
||||||
return checkpackagelib.lib_patch
|
return checkpackagelib.lib_patch
|
||||||
|
|||||||
@@ -49,6 +49,18 @@ class Ifdef(_CheckFunction):
|
|||||||
text]
|
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):
|
class Indent(_CheckFunction):
|
||||||
COMMENT = re.compile(r"^\s*#")
|
COMMENT = re.compile(r"^\s*#")
|
||||||
CONDITIONAL = re.compile(r"^\s*({})\s".format("|".join(start_conditional + end_conditional + continue_conditional)))
|
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"]
|
packages_that_may_contain_default_source = ["binutils", "gcc", "gdb"]
|
||||||
|
|
||||||
def before(self):
|
def before(self):
|
||||||
package, _ = os.path.splitext(os.path.basename(self.filename))
|
self.package, package_upper = get_package_prefix_from_filename(self.filename)
|
||||||
package_upper = package.replace("-", "_").upper()
|
|
||||||
self.package = package
|
|
||||||
self.FIND_SOURCE = re.compile(
|
self.FIND_SOURCE = re.compile(
|
||||||
r"^{}_SOURCE\s*=\s*{}-\$\({}_VERSION\)\.tar\.gz"
|
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):
|
def check_line(self, lineno, text):
|
||||||
if self.FIND_SOURCE.search(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_]+)")
|
VARIABLE = re.compile(r"^(define\s+)?([A-Z0-9_]+_[A-Z0-9_]+)")
|
||||||
|
|
||||||
def before(self):
|
def before(self):
|
||||||
package, _ = os.path.splitext(os.path.basename(self.filename))
|
_, self.package = get_package_prefix_from_filename(self.filename)
|
||||||
package = package.replace("-", "_").upper()
|
self.REGEX = re.compile(r"(HOST_|ROOTFS_)?({}_[A-Z0-9_]+)".format(self.package))
|
||||||
# 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.FIND_VIRTUAL = re.compile(
|
self.FIND_VIRTUAL = re.compile(
|
||||||
r"^{}_PROVIDES\s*(\+|)=\s*(.*)".format(package))
|
r"^{}_PROVIDES\s*(\+|)=\s*(.*)".format(self.package))
|
||||||
self.virtual = []
|
self.virtual = []
|
||||||
|
|
||||||
def check_line(self, lineno, text):
|
def check_line(self, lineno, text):
|
||||||
|
|||||||
@@ -74,6 +74,40 @@ def test_Ifdef(testname, filename, string, expected):
|
|||||||
assert warnings == 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 = [
|
Indent = [
|
||||||
('ignore comment at beginning of line',
|
('ignore comment at beginning of line',
|
||||||
'any',
|
'any',
|
||||||
@@ -567,6 +601,12 @@ TypoInPackageVariable = [
|
|||||||
'OTHERS_VAR = \n',
|
'OTHERS_VAR = \n',
|
||||||
[['any.mk:2: possible typo: OTHERS_VAR -> *ANY*',
|
[['any.mk:2: possible typo: OTHERS_VAR -> *ANY*',
|
||||||
'OTHERS_VAR = \n']]),
|
'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']]),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user