From 2dfb2ef06763cb6044dc1630875024e7310b3df4 Mon Sep 17 00:00:00 2001 From: Chong Lu Date: Wed, 25 Jun 2014 17:39:44 +0800 Subject: scripts/contrib/verify-homepage.py: add a script to verify HOMEPAGE Add a script to verify all the recipes' HOMEPAGE. [YOCTO #5689] Signed-off-by: Chong Lu Signed-off-by: Richard Purdie --- scripts/contrib/verify-homepage.py | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 scripts/contrib/verify-homepage.py (limited to 'scripts/contrib/verify-homepage.py') diff --git a/scripts/contrib/verify-homepage.py b/scripts/contrib/verify-homepage.py new file mode 100755 index 0000000000..86cc82bca3 --- /dev/null +++ b/scripts/contrib/verify-homepage.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +# This script is used for verify HOMEPAGE. +# The result is influenced by network environment, since the timeout of connect url is 5 seconds as default. + +import sys +import os +import subprocess +import urllib2 + +def search_bitbakepath(): + bitbakepath = "" + + # Search path to bitbake lib dir in order to load bb modules + if os.path.exists(os.path.join(os.path.dirname(sys.argv[0]), '../../bitbake/lib/bb')): + bitbakepath = os.path.join(os.path.dirname(sys.argv[0]), '../../bitbake/lib') + bitbakepath = os.path.abspath(bitbakepath) + else: + # Look for bitbake/bin dir in PATH + for pth in os.environ['PATH'].split(':'): + if os.path.exists(os.path.join(pth, '../lib/bb')): + bitbakepath = os.path.abspath(os.path.join(pth, '../lib')) + break + if not bitbakepath: + sys.stderr.write("Unable to find bitbake by searching parent directory of this script or PATH\n") + sys.exit(1) + return bitbakepath + +# For importing the following modules +sys.path.insert(0, search_bitbakepath()) +import bb.tinfoil + +def wgetHomepage(pn, homepage): + result = subprocess.call('wget ' + '-q -T 5 -t 1 --spider ' + homepage, shell = True) + if result: + bb.warn("Failed to verify HOMEPAGE (%s) of %s" % (homepage, pn)) + return 1 + else: + return 0 + +def verifyHomepage(bbhandler): + pkg_pn = bbhandler.cooker.recipecache.pkg_pn + pnlist = sorted(pkg_pn) + count = 0 + for pn in pnlist: + fn = pkg_pn[pn].pop() + data = bb.cache.Cache.loadDataFull(fn, bbhandler.cooker.collection.get_file_appends(fn), bbhandler.config_data) + homepage = data.getVar("HOMEPAGE") + if homepage: + try: + urllib2.urlopen(homepage, timeout=5) + except Exception: + count = count + wgetHomepage(pn, homepage) + return count + +if __name__=='__main__': + failcount = 0 + bbhandler = bb.tinfoil.Tinfoil() + bbhandler.prepare() + print "Start to verify HOMEPAGE:" + failcount = verifyHomepage(bbhandler) + print "finish to verify HOMEPAGE." + print "Summary: %s failed" % failcount -- cgit v1.2.3