utils/check-package: add a check for the new spacing convention
The seperation of the fields in the hash file should be 2 spaces for
consistency.
Since a large number of hash files still violate this rule, exclude it
from "make check-package" (and thus from CI).
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[Arnout:
- Move it to a separate class, so it can be excluded.
- Exclude it from "make check-package"
]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
diff --git a/Makefile b/Makefile
index 3099d35..5fc7137 100644
--- a/Makefile
+++ b/Makefile
@@ -1258,7 +1258,7 @@
check-package:
find $(TOPDIR) -type f \( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' -o -name '*.patch' \) \
- -exec ./utils/check-package --exclude=Sob {} +
+ -exec ./utils/check-package --exclude=Sob --exclude=HashSpaces {} +
include docs/manual/manual.mk
-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk)))
diff --git a/utils/checkpackagelib/lib_hash.py b/utils/checkpackagelib/lib_hash.py
index 3e38111..698d24f 100644
--- a/utils/checkpackagelib/lib_hash.py
+++ b/utils/checkpackagelib/lib_hash.py
@@ -53,3 +53,19 @@
.format(self.filename, lineno, self.url_to_manual),
text,
"expected {} hex digits".format(self.len_of_hash[htype])]
+
+
+class HashSpaces(_CheckFunction):
+ def check_line(self, lineno, text):
+ if _empty_line_or_comment(text):
+ return
+
+ fields = text.split()
+ if len(fields) != 3:
+ # Handled by HashNumberOfFields
+ return
+
+ if not re.match(re.escape("{} {} {}".format(*fields)), text):
+ return ["{}:{}: separation does not match expectation "
+ "({}#adding-packages-hash)"
+ .format(self.filename, lineno, self.url_to_manual), text]