utils/checkpackagelib: warn about $(HOST_DIR)/usr

It's been ages (5 years at the next release) that we've not installed
host packages in $(HOST_DIR)/usr, but we still have a few packages that
reference it or install things in there. See [1]

Add a new check_function that warns when a file is added installing to
or referencing $(HOST_DIR)/usr .

[1] "d9ff62c4cd pacakge: drop remnants of $(HOST_DIR)/usr"

Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
[Arnout: exclude skeleton.mk with disable comment instead of explicit
         code]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
This commit is contained in:
Ricardo Martincoski 2022-07-31 16:35:20 -03:00 committed by Arnout Vandecappelle
parent 47910ccc36
commit 29a0dd4a30
3 changed files with 34 additions and 0 deletions

View File

@ -14,6 +14,7 @@ SKELETON_ADD_SKELETON_DEPENDENCY = NO
# We create a compatibility symlink in case a post-build script still
# uses $(HOST_DIR)/usr
define HOST_SKELETON_INSTALL_CMDS
# check-package DoNotInstallToHostdirUsr
$(Q)ln -snf . $(HOST_DIR)/usr
$(Q)mkdir -p $(HOST_DIR)/lib
$(Q)mkdir -p $(HOST_DIR)/include

View File

@ -21,6 +21,16 @@ continue_conditional = ["elif", "else"]
end_conditional = ["endif"]
class DoNotInstallToHostdirUsr(_CheckFunction):
INSTALL_TO_HOSTDIR_USR = re.compile(r"^[^#].*\$\(HOST_DIR\)/usr")
def check_line(self, lineno, text):
if self.INSTALL_TO_HOSTDIR_USR.match(text.rstrip()):
return ["{}:{}: install files to $(HOST_DIR)/ instead of $(HOST_DIR)/usr/"
.format(self.filename, lineno),
text]
class Ifdef(_CheckFunction):
IFDEF = re.compile(r"^\s*(else\s+|)(ifdef|ifndef)\s")

View File

@ -3,6 +3,29 @@ import checkpackagelib.test_util as util
import checkpackagelib.lib_mk as m
DoNotInstallToHostdirUsr = [
('real case',
'libapparmor.mk',
'LIBAPPARMOR_CONF_OPTS += \\\n'
'\t--with-python \\\n'
'\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n'
'\tPYTHON_CONFIG=$(STAGING_DIR)/usr/bin/python3-config \\\n'
'\tSWIG=$(SWIG)\n',
[['libapparmor.mk:3: install files to $(HOST_DIR)/ instead of $(HOST_DIR)/usr/',
'\tPYTHON=$(HOST_DIR)/usr/bin/python3 \\\n']]),
('ignore comment',
'any',
'# following code do not install to $(HOST_DIR)/usr/\n',
[]),
]
@pytest.mark.parametrize('testname,filename,string,expected', DoNotInstallToHostdirUsr)
def test_DoNotInstallToHostdirUsr(testname, filename, string, expected):
warnings = util.check_file(m.DoNotInstallToHostdirUsr, filename, string)
assert warnings == expected
Ifdef = [
('ignore commented line',
'any',