From patchwork Fri Jan 3 15:18:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiko Thiery X-Patchwork-Id: 1217364 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DHLNiGOv"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47q7qG134Qz9sRW for ; Sat, 4 Jan 2020 02:19:22 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id A440485DD1; Fri, 3 Jan 2020 15:19:20 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vrFOU9i8JmhT; Fri, 3 Jan 2020 15:19:19 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id C954985313; Fri, 3 Jan 2020 15:19:19 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 62CD91BF599 for ; Fri, 3 Jan 2020 15:19:18 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 301912201C for ; Fri, 3 Jan 2020 15:19:18 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hr0WqQ1Psm7b for ; Fri, 3 Jan 2020 15:19:09 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by silver.osuosl.org (Postfix) with ESMTPS id E9E592155C for ; Fri, 3 Jan 2020 15:19:07 +0000 (UTC) Received: by mail-wm1-f48.google.com with SMTP id d73so8687203wmd.1 for ; Fri, 03 Jan 2020 07:19:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WhlQEBR2dcPwBpEkRlGl4txbVHv8vszr3wlYLoPRZ90=; b=DHLNiGOvBHYvdvltZrpdYnu5v+aCVHtQkiXVEogkQLLmjPedCMeO1LJct6Er0iz0im ctvY56+VqkGQ4bwU8RCUR5JSFSg70tfGJJK9+ettw+YdgcZO6RgZGOUuXTR1SDNdlmH7 ninkomtoak6S22OrLHziCB5RDDOh8cGNPQEDciup1gVhvpk/KxAqLDhaKtQCe52y3qA7 JDydA4d8WZf2o+7PfP9/yEtIr/Wy/Q39VTHOVXHo6W2xjPq1YobQcTlbVRGqhQn+GCpq NfJI43DP3OBeU0IotAljSJa+gNWL+mFYrKkpOCScVqdinwOMZuucJi30PaJFJxSvsYB0 VzOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WhlQEBR2dcPwBpEkRlGl4txbVHv8vszr3wlYLoPRZ90=; b=Mx5Xl/4hH1UolcRYmxLLSbR1jksz4EHuiVrc8gzUcU8sZ4jfYTlaUlqMQsiaoQVaS3 bVTleLRf5ynuNqC9hCzSw8EM0njmfy34Y5Ko8cADt4WzSGGdwezeN5O25i3f3OL2HgSP jmg1ewumFPV05k2T9bhXdCflbVELAma5Bm/i1sp7qdWFftJw3jCgG3BN4ctVRJ/lsJv3 kZ7tbhtNo5JSTDsBnaxKgxPD2Cgcfz3PSfKO8b2I+AbLWOXlEhMuKwlFGXqNF6Qa4J1U kJ1J9L+arVn+T9lJ1YomFR90rbxqruUjZyeaXuNacruPNyH5AOiDC9KVJJFeWWO32/Qz asJg== X-Gm-Message-State: APjAAAXVpAKdAF8nfIr42ofRA0XAyjlk0+EclwVqowdVV/XvVDygtU9S wBYiv1ko/uk0NP39k49+jRLMntlw X-Google-Smtp-Source: APXvYqxPc6yVb8tENur0bpKm0lm/MKwiUuj6WF14cbHmxFHFgPmcvj0uCkCbyIShStzcAeJWSEn69w== X-Received: by 2002:a05:600c:290f:: with SMTP id i15mr20650786wmd.115.1578064746192; Fri, 03 Jan 2020 07:19:06 -0800 (PST) Received: from hthiery01.sab.local ([213.135.10.150]) by smtp.gmail.com with ESMTPSA id u16sm12460565wmj.41.2020.01.03.07.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jan 2020 07:19:05 -0800 (PST) From: Heiko Thiery To: buildroot@buildroot.org Date: Fri, 3 Jan 2020 16:18:45 +0100 Message-Id: <20200103151849.10956-9-heiko.thiery@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200103151849.10956-1-heiko.thiery@gmail.com> References: <20200103151849.10956-1-heiko.thiery@gmail.com> MIME-Version: 1.0 Subject: [Buildroot] [PATCH 08/11] support/scripts/pkg-stats: add generic package status field X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Heiko Thiery Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Each check stores the status as a tuple: (status, message). The status value should be one of: 'ok', 'warning', 'error' and the message holds more verbose information. Signed-off-by: Heiko Thiery --- support/scripts/pkg-stats | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats index 324700adbf..b0c2db2b93 100755 --- a/support/scripts/pkg-stats +++ b/support/scripts/pkg-stats @@ -112,6 +112,7 @@ class Package: self.url_status = None self.url_worker = None self.rm_version = {'status': RM_API_STATUS_ERROR, 'version': None, 'id': None} + self.status = {} def pkgvar(self): return self.name.upper().replace("-", "_") @@ -121,6 +122,7 @@ class Package: Fills in the .url field """ self.url_status = "No Config.in" + self.status['url'] = ("error", "no Config.in") for filename in os.listdir(self.pkg_path): if fnmatch.fnmatch(filename, 'Config.*'): fp = open(os.path.join(self.pkg_path, filename), "r") @@ -128,9 +130,11 @@ class Package: if URL_RE.match(config_line): self.url = config_line.strip() self.url_status = "Found" + self.status['url'] = ("ok", "found") fp.close() return self.url_status = "Missing" + self.status['url'] = ("error", "missing") fp.close() def set_infra(self): @@ -155,11 +159,16 @@ class Package: Fills in the .has_license and .has_license_files fields """ var = self.pkgvar() + self.status['license'] = ("error", "missing") + self.status['license-files'] = ("error", "missing") if var in self.all_licenses: self.has_license = True self.license = self.all_licenses[var] + self.status['license'] = ("ok", "found") + if var in self.all_license_files: self.has_license_files = True + self.status['license-files'] = ("ok", "found") def set_hash_info(self): """ @@ -167,6 +176,10 @@ class Package: """ hashpath = os.path.join(self.pkg_path, self.name + '.hash') self.has_hash = os.path.exists(hashpath) + if self.has_hash: + self.status['hash'] = ("ok", "found") + else: + self.status['hash'] = ("error", "missing") def set_patch_count(self): """ @@ -176,6 +189,13 @@ class Package: self.patches['files'] = fnmatch.filter(os.listdir(subdir), '*.patch') self.patches['count'] = len(self.patches['files']) + if self.patches['count'] == 0: + self.status['patches'] = ("ok", "no patches") + elif self.patches['count'] < 5: + self.status['patches'] = ("warning", "some patches") + else: + self.status['patches'] = ("error", "lots of patches") + def set_current_version(self): """ Fills in the .current_version field @@ -197,6 +217,7 @@ class Package: Fills in the .warnings field """ cmd = ["./utils/check-package"] + self.status['pkg-check'] = ("error", "missing") for root, dirs, files in os.walk(self.pkg_path): for f in files: if f.endswith(".mk") or f.endswith(".hash") or f == "Config.in" or f == "Config.in.host": @@ -207,6 +228,10 @@ class Package: m = re.match("^([0-9]*) warnings generated", line) if m: self.warnings = int(m.group(1)) + if self.warnings == 0: + self.status['pkg-check'] = ("ok", "no warnings") + else: + self.status['pkg-check'] = ("error", "{} warnings".format(self.warnings)) return def set_developers(self, developers): @@ -214,11 +239,15 @@ class Package: Fills in the .developers field """ self.developers = list() + self.status['developers'] = ("warning", "no developers") for dev in developers: for f in dev.files: if self.pkg_path[2:] == f[:-1]: self.developers.append((dev.name)) + if self.developers: + self.status['developers'] = ("ok", "{} developers".format(len(self.developers))) + def __eq__(self, other): return self.path == other.path @@ -425,6 +454,19 @@ def check_package_latest_version(packages): pkg.rm_version['status'] = r[0] pkg.rm_version['version'] = r[1] pkg.rm_version['id'] = r[2] + pkg.rm_version['version'] == pkg.current_version + + if pkg.rm_version['status'] == RM_API_STATUS_ERROR: + pkg.status['version'] = ('warning', 'rm api error') + elif pkg.rm_version['status'] == RM_API_STATUS_NOT_FOUND: + pkg.status['version'] = ('warning', 'rm package not found') + + if pkg.rm_version['version'] is None: + pkg.status['version'] = ('warning', 'no upstream version available') + elif pkg.rm_version['version'] != pkg.current_version: + pkg.status['version'] = ('error', 'package needs update') + else: + pkg.status['version'] = ('ok', 'up-to-date') del http_pool