| #!/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 |