Buildroot 2018-11 (#258)
* Update to buildroot 2018.11 * containerd update * runc update * runc docker engine * runc docker proxy * update rpi firmware * update network manager * update dhcpd * update wait on network * update rpi wifi * revert glibc
This commit is contained in:
@@ -24,8 +24,11 @@ from collections import defaultdict
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import requests # URL checking
|
||||
from multiprocessing import Pool
|
||||
|
||||
INFRA_RE = re.compile("\$\(eval \$\(([a-z-]*)-package\)\)")
|
||||
URL_RE = re.compile("\s*https?://\S*\s*$")
|
||||
|
||||
|
||||
class Package:
|
||||
@@ -43,10 +46,30 @@ class Package:
|
||||
self.patch_count = 0
|
||||
self.warnings = 0
|
||||
self.current_version = None
|
||||
self.url = None
|
||||
self.url_status = None
|
||||
self.url_worker = None
|
||||
|
||||
def pkgvar(self):
|
||||
return self.name.upper().replace("-", "_")
|
||||
|
||||
def set_url(self):
|
||||
"""
|
||||
Fills in the .url field
|
||||
"""
|
||||
self.url_status = "No Config.in"
|
||||
for filename in os.listdir(os.path.dirname(self.path)):
|
||||
if fnmatch.fnmatch(filename, 'Config.*'):
|
||||
fp = open(os.path.join(os.path.dirname(self.path), filename), "r")
|
||||
for config_line in fp:
|
||||
if URL_RE.match(config_line):
|
||||
self.url = config_line.strip()
|
||||
self.url_status = "Found"
|
||||
fp.close()
|
||||
return
|
||||
self.url_status = "Missing"
|
||||
fp.close()
|
||||
|
||||
def set_infra(self):
|
||||
"""
|
||||
Fills in the .infras field
|
||||
@@ -255,6 +278,26 @@ def package_init_make_info():
|
||||
Package.all_versions[pkgvar] = value
|
||||
|
||||
|
||||
def check_url_status_worker(url, url_status):
|
||||
if url_status != "Missing" and url_status != "No Config.in":
|
||||
try:
|
||||
url_status_code = requests.head(url, timeout=30).status_code
|
||||
if url_status_code >= 400:
|
||||
return "Invalid(%s)" % str(url_status_code)
|
||||
except requests.exceptions.RequestException:
|
||||
return "Invalid(Err)"
|
||||
return "Ok"
|
||||
return url_status
|
||||
|
||||
|
||||
def check_package_urls(packages):
|
||||
Package.pool = Pool(processes=64)
|
||||
for pkg in packages:
|
||||
pkg.url_worker = pkg.pool.apply_async(check_url_status_worker, (pkg.url, pkg.url_status))
|
||||
for pkg in packages:
|
||||
pkg.url_status = pkg.url_worker.get(timeout=3600)
|
||||
|
||||
|
||||
def calculate_stats(packages):
|
||||
stats = defaultdict(int)
|
||||
for pkg in packages:
|
||||
@@ -311,6 +354,15 @@ td.somepatches {
|
||||
td.lotsofpatches {
|
||||
background: #ff9a69;
|
||||
}
|
||||
td.good_url {
|
||||
background: #d2ffc4;
|
||||
}
|
||||
td.missing_url {
|
||||
background: #ffd870;
|
||||
}
|
||||
td.invalid_url {
|
||||
background: #ff9a69;
|
||||
}
|
||||
</style>
|
||||
<title>Statistics of Buildroot packages</title>
|
||||
</head>
|
||||
@@ -422,6 +474,20 @@ def dump_html_pkg(f, pkg):
|
||||
f.write(" <td class=\"%s\">%d</td>\n" %
|
||||
(" ".join(td_class), pkg.warnings))
|
||||
|
||||
# URL status
|
||||
td_class = ["centered"]
|
||||
url_str = pkg.url_status
|
||||
if pkg.url_status == "Missing" or pkg.url_status == "No Config.in":
|
||||
td_class.append("missing_url")
|
||||
elif pkg.url_status.startswith("Invalid"):
|
||||
td_class.append("invalid_url")
|
||||
url_str = "<a href=%s>%s</a>" % (pkg.url, pkg.url_status)
|
||||
else:
|
||||
td_class.append("good_url")
|
||||
url_str = "<a href=%s>Link</a>" % pkg.url
|
||||
f.write(" <td class=\"%s\">%s</td>\n" %
|
||||
(" ".join(td_class), url_str))
|
||||
|
||||
f.write(" </tr>\n")
|
||||
|
||||
|
||||
@@ -437,6 +503,7 @@ def dump_html_all_pkgs(f, packages):
|
||||
<td class=\"centered\">Hash file</td>
|
||||
<td class=\"centered\">Current version</td>
|
||||
<td class=\"centered\">Warnings</td>
|
||||
<td class=\"centered\">Upstream URL</td>
|
||||
</tr>
|
||||
""")
|
||||
for pkg in sorted(packages):
|
||||
@@ -517,6 +584,9 @@ def __main__():
|
||||
pkg.set_patch_count()
|
||||
pkg.set_check_package_warnings()
|
||||
pkg.set_current_version()
|
||||
pkg.set_url()
|
||||
print("Checking URL status")
|
||||
check_package_urls(packages)
|
||||
print("Calculate stats")
|
||||
stats = calculate_stats(packages)
|
||||
print("Write HTML")
|
||||
|
||||
Reference in New Issue
Block a user