* [PATCH 0/3][V2] oelint.bbclass: make oelint bbclass work
@ 2014-08-01 9:03 Chong Lu
2014-08-01 9:03 ` [PATCH 1/3][V2] " Chong Lu
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Chong Lu @ 2014-08-01 9:03 UTC (permalink / raw)
To: openembedded-core
Change since V1:
fix output and non-standard syntax.
The following changes since commit 2d1660112e54653f7bb763939d0416472c49fe01:
populate_sdk_base: Fix grep command usage on old hosts (2014-07-29 09:58:27 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib chonglu/oelint
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=chonglu/oelint
Chong Lu (3):
oelint.bbclass: make oelint bbclass work
oelint.bbclass: add patch checking
oelint.bbclass: Check for ${PN} or ${P} usage
meta/classes/oelint.bbclass | 251 ++++++++++++++------------------------------
1 file changed, 81 insertions(+), 170 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/3][V2] oelint.bbclass: make oelint bbclass work
2014-08-01 9:03 [PATCH 0/3][V2] oelint.bbclass: make oelint bbclass work Chong Lu
@ 2014-08-01 9:03 ` Chong Lu
2014-08-01 9:03 ` [PATCH 2/3][V2] oelint.bbclass: add patch checking Chong Lu
2014-08-01 9:03 ` [PATCH 3/3][V2] oelint.bbclass: Check for ${PN} or ${P} usage Chong Lu
2 siblings, 0 replies; 4+ messages in thread
From: Chong Lu @ 2014-08-01 9:03 UTC (permalink / raw)
To: openembedded-core
Remove LICENSE, MAINTAINER, PRIORITY and valid SECTION checking.
Convert tab indentation into four-space.
[YOCTO #5427]
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
---
meta/classes/oelint.bbclass | 198 +++++++-------------------------------------
1 file changed, 28 insertions(+), 170 deletions(-)
diff --git a/meta/classes/oelint.bbclass b/meta/classes/oelint.bbclass
index f2e7540..d14e378 100644
--- a/meta/classes/oelint.bbclass
+++ b/meta/classes/oelint.bbclass
@@ -1,174 +1,32 @@
addtask lint before do_fetch
do_lint[nostamp] = "1"
python do_lint() {
- def testVar(var, explain=None):
- try:
- s = d[var]
- return s["content"]
- except KeyError:
- bb.error("%s is not set" % var)
- if explain: bb.note(explain)
- return None
-
-
- ##############################
- # Test that DESCRIPTION exists
- #
- testVar("DESCRIPTION")
-
-
- ##############################
- # Test that HOMEPAGE exists
- #
- s = testVar("HOMEPAGE")
- if s=="unknown":
- bb.error("HOMEPAGE is not set")
- elif not s.startswith("http://"):
- bb.error("HOMEPAGE doesn't start with http://")
-
-
-
- ##############################
- # Test for valid LICENSE
- #
- valid_licenses = {
- "GPL-2" : "GPLv2",
- "GPL LGPL FDL" : True,
- "GPL PSF" : True,
- "GPL/QPL" : True,
- "GPL" : True,
- "GPLv2" : True,
- "IBM" : True,
- "LGPL GPL" : True,
- "LGPL" : True,
- "MIT" : True,
- "OSL" : True,
- "Perl" : True,
- "Public Domain" : True,
- "QPL" : "GPL/QPL",
- }
- s = testVar("LICENSE")
- if s=="unknown":
- bb.error("LICENSE is not set")
- elif s.startswith("Vendor"):
- pass
- else:
- try:
- newlic = valid_licenses[s]
- if newlic == False:
- bb.note("LICENSE '%s' is not recommended" % s)
- elif newlic != True:
- bb.note("LICENSE '%s' is not recommended, better use '%s'" % (s, newsect))
- except:
- bb.note("LICENSE '%s' is not recommended" % s)
-
-
- ##############################
- # Test for valid MAINTAINER
- #
- s = testVar("MAINTAINER")
- if s=="OpenEmbedded Team <openembedded-devel@openembedded.org>":
- bb.error("explicit MAINTAINER is missing, using default")
- elif s and s.find("@") == -1:
- bb.error("You forgot to put an e-mail address into MAINTAINER")
-
-
- ##############################
- # Test for valid SECTION
- #
- # if Correct section: True section name is valid
- # False section name is invalid, no suggestion
- # string section name is invalid, better name suggested
- #
- valid_sections = {
- # Current Section Correct section
- "apps" : True,
- "audio" : True,
- "base" : True,
- "console/games" : True,
- "console/net" : "console/network",
- "console/network" : True,
- "console/utils" : True,
- "devel" : True,
- "developing" : "devel",
- "devel/python" : True,
- "fonts" : True,
- "games" : True,
- "games/libs" : True,
- "gnome/base" : True,
- "gnome/libs" : True,
- "gpe" : True,
- "gpe/libs" : True,
- "gui" : False,
- "libc" : "libs",
- "libs" : True,
- "libs/net" : True,
- "multimedia" : True,
- "net" : "network",
- "NET" : "network",
- "network" : True,
- "opie/applets" : True,
- "opie/applications" : True,
- "opie/base" : True,
- "opie/codecs" : True,
- "opie/decorations" : True,
- "opie/fontfactories" : True,
- "opie/fonts" : True,
- "opie/games" : True,
- "opie/help" : True,
- "opie/inputmethods" : True,
- "opie/libs" : True,
- "opie/multimedia" : True,
- "opie/pim" : True,
- "opie/setting" : "opie/settings",
- "opie/settings" : True,
- "opie/Shell" : False,
- "opie/styles" : True,
- "opie/today" : True,
- "scientific" : True,
- "utils" : True,
- "x11" : True,
- "x11/libs" : True,
- "x11/wm" : True,
- }
- s = testVar("SECTION")
- if s:
- try:
- newsect = valid_sections[s]
- if newsect == False:
- bb.note("SECTION '%s' is not recommended" % s)
- elif newsect != True:
- bb.note("SECTION '%s' is not recommended, better use '%s'" % (s, newsect))
- except:
- bb.note("SECTION '%s' is not recommended" % s)
-
- if not s.islower():
- bb.error("SECTION should only use lower case")
-
-
-
-
- ##############################
- # Test for valid PRIORITY
- #
- valid_priorities = {
- "standard" : True,
- "required" : True,
- "optional" : True,
- "extra" : True,
- }
- s = testVar("PRIORITY")
- if s:
- try:
- newprio = valid_priorities[s]
- if newprio == False:
- bb.note("PRIORITY '%s' is not recommended" % s)
- elif newprio != True:
- bb.note("PRIORITY '%s' is not recommended, better use '%s'" % (s, newprio))
- except:
- bb.note("PRIORITY '%s' is not recommended" % s)
-
- if not s.islower():
- bb.error("PRIORITY should only use lower case")
-
+ pkgname = d.getVar("PN", True)
+
+ ##############################
+ # Test that DESCRIPTION exists
+ #
+ description = d.getVar("DESCRIPTION")
+ if description[1:10] == '{SUMMARY}':
+ bb.warn("%s: DESCRIPTION is not set" % pkgname)
+
+
+ ##############################
+ # Test that HOMEPAGE exists
+ #
+ homepage = d.getVar("HOMEPAGE")
+ if homepage == '':
+ bb.warn("%s: HOMEPAGE is not set" % pkgname)
+ elif not homepage.startswith("http://") and not homepage.startswith("https://"):
+ bb.warn("%s: HOMEPAGE doesn't start with http:// or https://" % pkgname)
+
+
+ ##############################
+ # Test for valid SECTION
+ #
+ section = d.getVar("SECTION")
+ if section == '':
+ bb.warn("%s: SECTION is not set" % pkgname)
+ elif not section.islower():
+ bb.warn("%s: SECTION should only use lower case" % pkgname)
}
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3][V2] oelint.bbclass: add patch checking
2014-08-01 9:03 [PATCH 0/3][V2] oelint.bbclass: make oelint bbclass work Chong Lu
2014-08-01 9:03 ` [PATCH 1/3][V2] " Chong Lu
@ 2014-08-01 9:03 ` Chong Lu
2014-08-01 9:03 ` [PATCH 3/3][V2] oelint.bbclass: Check for ${PN} or ${P} usage Chong Lu
2 siblings, 0 replies; 4+ messages in thread
From: Chong Lu @ 2014-08-01 9:03 UTC (permalink / raw)
To: openembedded-core
Check that all patches have Signed-off-by and Upstream-Status.
[YOCTO #5427]
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
---
meta/classes/oelint.bbclass | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/meta/classes/oelint.bbclass b/meta/classes/oelint.bbclass
index d14e378..07a7ed9 100644
--- a/meta/classes/oelint.bbclass
+++ b/meta/classes/oelint.bbclass
@@ -29,4 +29,39 @@ python do_lint() {
bb.warn("%s: SECTION is not set" % pkgname)
elif not section.islower():
bb.warn("%s: SECTION should only use lower case" % pkgname)
+
+
+ ##############################
+ # Check that all patches have Signed-off-by and Upstream-Status
+ #
+ srcuri = d.getVar("SRC_URI").split()
+ fpaths = (d.getVar('FILESPATH', True) or '').split(':')
+
+ def findPatch(patchname):
+ for dir in fpaths:
+ patchpath = dir + patchname
+ if os.path.exists(patchpath):
+ return patchpath
+
+ def findKey(path, key):
+ ret = True
+ f = file('%s' % path, mode = 'r')
+ line = f.readline()
+ while line:
+ if line.find(key) != -1:
+ ret = False
+ line = f.readline()
+ f.close()
+ return ret
+
+ length = len("file://")
+ for item in srcuri:
+ if item.startswith("file://"):
+ item = item[length:]
+ if item.endswith(".patch") or item.endswith(".diff"):
+ path = findPatch(item)
+ if findKey(path, "Signed-off-by"):
+ bb.warn("%s: %s doesn't have Signed-off-by" % (pkgname, item))
+ if findKey(path, "Upstream-Status"):
+ bb.warn("%s: %s doesn't have Upstream-Status" % (pkgname, item))
}
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3][V2] oelint.bbclass: Check for ${PN} or ${P} usage
2014-08-01 9:03 [PATCH 0/3][V2] oelint.bbclass: make oelint bbclass work Chong Lu
2014-08-01 9:03 ` [PATCH 1/3][V2] " Chong Lu
2014-08-01 9:03 ` [PATCH 2/3][V2] oelint.bbclass: add patch checking Chong Lu
@ 2014-08-01 9:03 ` Chong Lu
2 siblings, 0 replies; 4+ messages in thread
From: Chong Lu @ 2014-08-01 9:03 UTC (permalink / raw)
To: openembedded-core
Check for ${PN} or ${P} usage in SRC_URI or S.
We should use ${BPN} or ${BP} instead to avoid breaking multilib.
[YOCTO #5427]
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
---
meta/classes/oelint.bbclass | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/meta/classes/oelint.bbclass b/meta/classes/oelint.bbclass
index 07a7ed9..d00f468 100644
--- a/meta/classes/oelint.bbclass
+++ b/meta/classes/oelint.bbclass
@@ -64,4 +64,22 @@ python do_lint() {
bb.warn("%s: %s doesn't have Signed-off-by" % (pkgname, item))
if findKey(path, "Upstream-Status"):
bb.warn("%s: %s doesn't have Upstream-Status" % (pkgname, item))
+
+
+ ##############################
+ # Check for ${PN} or ${P} usage in SRC_URI or S
+ # Should use ${BPN} or ${BP} instead to avoid breaking multilib
+ #
+ for s in srcuri:
+ if not s.startswith("file://"):
+ if not s.find("{PN}") == -1:
+ bb.warn("%s: should use BPN instead of PN in SRC_URI" % pkgname)
+ if not s.find("{P}") == -1:
+ bb.warn("%s: should use BP instead of P in SRC_URI" % pkgname)
+
+ srcpath = d.getVar("S")
+ if not srcpath.find("{PN}") == -1:
+ bb.warn("%s: should use BPN instead of PN in S" % pkgname)
+ if not srcpath.find("{P}") == -1:
+ bb.warn("%s: should use BP instead of P in S" % pkgname)
}
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-08-01 9:06 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-01 9:03 [PATCH 0/3][V2] oelint.bbclass: make oelint bbclass work Chong Lu
2014-08-01 9:03 ` [PATCH 1/3][V2] " Chong Lu
2014-08-01 9:03 ` [PATCH 2/3][V2] oelint.bbclass: add patch checking Chong Lu
2014-08-01 9:03 ` [PATCH 3/3][V2] oelint.bbclass: Check for ${PN} or ${P} usage Chong Lu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox