From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Tue, 22 Apr 2025 21:35:38 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1u7JP8-004B8x-0l for lore@lore.pengutronix.de; Tue, 22 Apr 2025 21:35:38 +0200 Received: from localhost ([127.0.0.1] helo=metis.whiteo.stw.pengutronix.de) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1u7JP7-0000sa-U2; Tue, 22 Apr 2025 21:35:37 +0200 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1u7JOo-0000sQ-9O for ptxdist@pengutronix.de; Tue, 22 Apr 2025 21:35:19 +0200 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-54af20849bbso6106153e87.0 for ; Tue, 22 Apr 2025 12:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745350517; x=1745955317; darn=pengutronix.de; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=H9PchC2lLKUw5tAknA57PeUQxoI45ohPaJmf6TdRpZc=; b=gl5B6FEPHoIaTw9ZqUWSftlaULaHZXL5sZwiOuKrPLnDZRIzMwoX8aRAEzVMSdSqxW UI3cFgPvoNSVemlhYIQATx0Ne0IzrvMw2BAHu2y1EwEfaIMxObMFY+QIMLNtegd27OwR z+BtRy7IaXh/StAbLw7dk0dbSnikc4L29XGOkcBEMrVtKgfmvL+jCiAAZAnLiNFZnWf1 SwHkZE+r1CL3LcgB4SEbrAvC8XRAICzuh/1kwvzCtKLaZzM9kxQ8tp2xbRlUaLGBqFuY oUw9n9nXCIsvFCtU31IUP8HZ8LoB4t5jJ3lD+0yuzyNWcW1joYn9qxqYGDkRhxlpYUfX qWqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745350517; x=1745955317; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=H9PchC2lLKUw5tAknA57PeUQxoI45ohPaJmf6TdRpZc=; b=jzi64AL5oRe66r4pq2pQ3pioHdSZl6/Ohs5CFaHF7cYB5AB9LdQBAjuyD6CFC0uDui wmpYdNqBdU8fZLLRo5DpxSm4PayyUBx8USLsWF6AgTiDsvZo8rf9uinmOphp2CtE+ET1 nx/p7FY8rJ+clDrEmJIpi1rmF2I5NpBeBSTfFIEaBCTqS4iPi82RL5fuEMxVIQxlS4KY c8i0bO+hMdEtE6ac6ABJ6oEl9xeTGLIDZXMf8alM/qRc9bfAElJm4adK+lKcLYW5TDbV VBHBRvy53+vrf4rg3BqnMMTLBqa5qF6MeDvujC05hhBAUsHT3AicmElYf2ck5XCTErkP U+8g== X-Gm-Message-State: AOJu0YzRlxREuOqsl3ZU5Wxzp+Ehggkja6n+gsTfUtb6MFDr8ZDwwWpW 6PT5tvK/alDn+6y8y3Vw1dQTTOg+7DoLUiEmLBbCCqpl3TmVnrDLPWByog== X-Gm-Gg: ASbGncudtJFRCB36EK7DCckqHfzfiEDBmayEuEJ6nKKvvIbOZbfVR3kvTDgap32wMbz GU7ZXCAis7bom2GtiRzViRGaUd2hJLfi1ZEJUcwJjEJKyZ7PXIoc9/jTGuCfkpFTv2c6neFshpB MrDTFvNhKrTyX9SjprCdHu0L3lkhvnID/ecL99SmYS9W2DWq4tVvltyuj6VaAyDdl3pD9Opp49g 9J/wMg2MA3jYwg7NWuHWjcBhkpWV7dAMLHGfaN5Ru1QLYUI9nOMHIzMJ5ONDh+oe5bYEk8uAuTN Q1l076gaWWcQrX67eTZs/pnafVpHBhPo+nEtbgv5DBqjNwcFMYKjyuAn4TGysowJlXRMwQaGPi2 MiBjTCFWKQD4h8HKULMBE7g== X-Google-Smtp-Source: AGHT+IHNFj2PsDkcIzQojD+D2JaMlBdgfU92lQ4qRTEt1P9KIHTTm+EaiwfoFSWrJU3vfPCMEfCE1w== X-Received: by 2002:a05:6512:b28:b0:545:2b68:936e with SMTP id 2adb3069b0e04-54d6e6358d3mr4092263e87.25.1745350516654; Tue, 22 Apr 2025 12:35:16 -0700 (PDT) Received: from fedora.tux.internal (85.191.78.244.dynamic.dhcp.aura-net.dk. [85.191.78.244]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54d6e52465bsm1300636e87.36.2025.04.22.12.35.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 12:35:16 -0700 (PDT) From: Bruno Thomsen To: ptxdist@pengutronix.de Date: Tue, 22 Apr 2025 21:34:56 +0200 Message-ID: <20250422193456.26040-1-bruno.thomsen@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=4.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Subject: [ptxdist] [PATCH] ptxdist: add repology json output support X-BeenThere: ptxdist@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Cc: oss-lists@triops.cz, bruno.thomsen@gmail.com, Ladislav Michl Sender: "ptxdist" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: ptxdist-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false Improve ptxdist project visibility by adding it to repology. https://repology.org/ This also allows components like rauc to showcase supported distributions and current packaged version. It also gives ptxdist users and maintainers an overview of packages with known CVEs that should be priotized for version bumpes. Generate JSON output about almost all packages in ptxdist for repology. Below is an output example for alsa-lib: { "name": "alsa-lib", "version": "1.2.13", "upstream_urls": "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.13.tar.bz2", "license": "LGPL-2.1-or-later" }, Add PTXdist support #1487: https://github.com/repology/repology-updater/issues/1487 I have run this patch against ptxdist-2025.04.0 and got this output: https://github.com/baxeno/ptxdist-repology/blob/main/repology.json Using the following command: $ ptxdist repology | grep -v "make: Nothing to be done for" > repology.json Signed-off-by: Bruno Thomsen Co-developed-by: Ladislav Michl --- Since RFC PATCH: - Replace bash script with pure makefile thanks to Ladislav - Add upstream_urls for packages as it was an repology requirement Ladislav: I can see you use different last names and emails, let me know if I used the wrong. bin/ptxdist | 6 +++ rules/post/ptxd_make_repology.make | 78 ++++++++++++++++++++++++++++++ scripts/bash_completion | 2 +- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 rules/post/ptxd_make_repology.make diff --git a/bin/ptxdist b/bin/ptxdist index 1f561fdf6..24a8e2ed9 100755 --- a/bin/ptxdist +++ b/bin/ptxdist @@ -799,6 +799,7 @@ Misc: variable and print the contents of this variable licensecheck check md5sums of license files for all packages lint run some basic checks for the bsp and PTXdist + repology generate repology JSON for PTXdist list-packages print a list of all selected packages local-src [] overwrite a package source with a locally provided directory containing the sourcecode. @@ -1916,6 +1917,11 @@ EOF ptxd_bailout "lint checks failed" fi ;; + repology) + check_premake_compiler && + ptxd_make_log ptxdist-repology + exit + ;; list-packages) check_config && check_deps && diff --git a/rules/post/ptxd_make_repology.make b/rules/post/ptxd_make_repology.make new file mode 100644 index 000000000..3360101cf --- /dev/null +++ b/rules/post/ptxd_make_repology.make @@ -0,0 +1,78 @@ +# -*-makefile-*- +# +# Copyright (C) 2025 by Bruno Thomsen +# 2025 by Ladislav Michl +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +PTX_PACKAGES_IGNORE := \ + at91bootstrap2 \ + barebox \ + barebox_mlo \ + base \ + binutils \ + blspec-entry \ + cross-dummy-strip \ + cross-llvm \ + cross-nasm \ + cross-pkg-config-wrapper \ + cryptodev-api \ + gcclibs \ + gdb \ + gdbserver \ + glibc \ + initmethod-bbinit \ + initmethod-systemd \ + kernel \ + kernel-fit \ + kernel-header \ + locales \ + machine-id \ + nodejs_packages \ + os-release \ + ptxdist-configs \ + rc-once \ + rootfs \ + systemd-hwdb \ + u-boot \ + uclibc \ + usr-rootfs \ + x-load \ + xorg-fonts + +PHONY += ptxdist-repology + +ptx_packages_reported:=$(sort $(filter-out host-system-%,$(filter-out host-%,$(filter-out image-%,$(PTX_PACKAGES_ALL))))) +ptx_packages_reported:=$(filter-out $(PTX_PACKAGES_IGNORE),$(ptx_packages_reported)) +ptx_package_last:=$(lastword $(ptx_packages_reported)) +ptx_packages_reported:=$(filter-out $(ptx_package_last),$(ptx_packages_reported)) + +ptx/repology-print = \ + $(info $(space) "name": "$(1)"$(comma)) \ + $(info $(space) "version": "$($(PTX_MAP_TO_PACKAGE_$(1))_VERSION)"$(comma)) \ + $(info $(space) "upstream_urls": "$($(PTX_MAP_TO_PACKAGE_$(1))_URL)"$(comma)) \ + $(info $(space) "license": "$($(PTX_MAP_TO_PACKAGE_$(1))_LICENSE)") + +ptx/repology-item = \ + $(info $(space) {) \ + $(call ptx/repology-print,$(1)) \ + $(info $(space) }$(comma)) + +ptx/repology-lastitem = \ + $(info $(space) {) \ + $(call ptx/repology-print,$(1)) \ + $(info $(space) }) + +ptx/repology = \ + $(info [) \ + $(foreach pkg,$(ptx_packages_reported), \ + $(call ptx/repology-item,$(pkg))$(ptx/nl)) \ + $(call ptx/repology-lastitem,$(ptx_package_last)) \ + $(info ]) + +ptxdist-repology: + @$(call ptx/repology) + +# vim: syntax=make diff --git a/scripts/bash_completion b/scripts/bash_completion index 4bff2d4b6..2bb21a848 100644 --- a/scripts/bash_completion +++ b/scripts/bash_completion @@ -123,7 +123,7 @@ _ptxdist_completion() clean) COMPREPLY=( $( compgen -W root -- $cur ) ) ;& - get|extract|prepare|compile|install|targetinstall|tags|urlcheck|licensecheck|package-info|cargosync) + get|extract|prepare|compile|install|targetinstall|tags|urlcheck|licensecheck|repology|package-info|cargosync) COMPREPLY+=( $( compgen -W "$(__ptxdist_completion_packages)" -- $cur ) ) ;; drop) base-commit: f61905c23240642dec3e5390ee15e83cf1e016e9 -- 2.49.0