From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 01 Oct 2025 21:17:51 +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 1v42Kl-003EgO-2I for lore@lore.pengutronix.de; Wed, 01 Oct 2025 21:17:51 +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 1v42Kl-00083Y-EJ; Wed, 01 Oct 2025 21:17:51 +0200 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1v42Ke-000829-Sr for ptxdist@pengutronix.de; Wed, 01 Oct 2025 21:17:45 +0200 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b3e9d633b78so35317966b.1 for ; Wed, 01 Oct 2025 12:17:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1759346264; x=1759951064; 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=gLkrr6xOa+OE+RicQlUqvrN4U+zDiDboePfkvmDCNCI=; b=SRRVih9V17KpLJNpGn4E1WUSp70e2N23pIvODA7j5mBU1Ki+GLoBod9YqQip9EmAQ+ 7+WBUxmBL/5aFPlCFv7wAIg35ZwlMeaBh5RA/CxYTEncJXquywteLqMywLm8iEvqqSQy QrsTwfLSjsmOh+MK8hfyoVrwfPrp4zGQ2haZdpwZh2P9Wlx2s3FiuPr/NrytZ2cIoTYO +XY+K5/Cdb+A8N3E6Q3xDd6/2lybKG4S4LseorcAoPYMDCxz7LswvzjB3tXM57g/EvEb cZGTHAPEcIgZBP0BHtMnsW7jEimahYsa+iQLB+tATjG64J3geE7laWdGCtsrUOUp3Qdp +RuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759346264; x=1759951064; 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=gLkrr6xOa+OE+RicQlUqvrN4U+zDiDboePfkvmDCNCI=; b=gS0Cws7vl3YWPvYRENXmXo1et+ot1iMhsOGG2bGnkavOPgQI5iM6mWsld+5Bq8TAvU lklmp5mk11x4i/ypUHgB3rAYCDkKo2nBOxyJfFcx2a/QN+wQZMbMViJGQjc4XQSu8+5+ gCOKboCl7/K/oeNmiVLADxTk7RDtfzk64rbc4bDvzApx86w50mi+tEaHnfXA65LXmLdb /7tbSeXzUc2ftqhuptY7VX3+EqKGn2kNeCwsL168CWEwRnj5ZI7SoA+pI6sEPlolYqVV 9IVEoLftF2QcgUlBCvrtYQ+9QklaKHPs6VVNQavLVpk/g4sue3n6aAXmPTPU0j8zXXbV aMvw== X-Gm-Message-State: AOJu0YzSkoCu9DQNjhJ0kUKjPsLdMH/9QUqXHCnt1I4bsUjrMvwnWSVk J0FsfcR/2dg/bajsTvXMP/CwPTcf1ejofEX+cEv1i8T4FSF7SXSWFnEWRD+qDQ== X-Gm-Gg: ASbGncsTWYGmrTTeIsLK2hV1eG49vmEFLRGuBvZ4m44uvDDugha6wSdX9NVGruBy/1x wyNYLmOIkPKwurmx1ImZnxMEQvXLQXNWreJlFglE28wyOw1SXiMtc8AjMHQu23JQ1BpMu74ae5S RqFHMQJo88NtHb93/Emlyk5XZO/1Md8fxtHYtt2z5TnvDtZr8j5Nqvx/jJKkdQv6F8uyamYsYW0 jCPJOxtQLaKGa0O3Op3r0p17318vmg+AYBZ3yWY2ZKQtfo1xQEPVc86ulJV0gi30zHBKXSvVy2Z cilOfV11Pc/MtCZeHHH/lBpBsDrxzvUjujGVDltrvlarGrPoHmbf0OcAfM/0g1/or+sLSUq00fU FhLWDgBeO09WZhnekweZ4woOg56aFeU0QVCwH4cHeomYG6vF9qrHbZOGPuH5vJ7JNEH0V3xssw9 E81kHasu3TXhE3iaU1Z0dJMHZWFm40 X-Google-Smtp-Source: AGHT+IHC1F3ZaUL7Ct3KhsOPOtsFPTzjSZcHqnM0SVyYZnjsTMGidVowBZF2eR7q7xuuSwHG+yLclA== X-Received: by 2002:a17:906:6a03:b0:b38:49a6:5839 with SMTP id a640c23a62f3a-b4859f7430fmr100407566b.11.1759346263094; Wed, 01 Oct 2025 12:17:43 -0700 (PDT) Received: from fedora.tux.internal (85.191.71.118.dynamic.dhcp.aura-net.dk. [85.191.71.118]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b48652a9f5dsm29134066b.11.2025.10.01.12.17.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Oct 2025 12:17:42 -0700 (PDT) From: Bruno Thomsen To: ptxdist@pengutronix.de Date: Wed, 1 Oct 2025 21:17:26 +0200 Message-ID: <20251001191726.5204-1-bruno.thomsen@gmail.com> X-Mailer: git-send-email 2.51.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 v2] 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: 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 This have been running for the past few months here: https://github.com/baxeno/ptxdist-repology/blob/main/repology.json Using the following command with DistroKit: $ ptxdist repology | grep -v "make: Nothing to be done for" > repology.json Signed-off-by: Bruno Thomsen Co-developed-by: Ladislav Michl --- v1-v2: - Keep Makefile implementation as Python implementation did not work - Filter out packages with empty URL - Filter out packages with empty or undefined version - Reduced number of hard-coded ignored packages from 33 to 2 - View parsed output: https://repology.org/repository/ptxdist PATCH v1: https://lore.ptxdist.org/ptxdist/20250422193456.26040-1-bruno.thomsen@gmail.com/ PATCH RFC: https://lore.ptxdist.org/ptxdist/20250418113357.23654-1-bruno.thomsen@gmail.com/ bin/ptxdist | 6 ++++ rules/post/ptxd_make_repology.make | 49 ++++++++++++++++++++++++++++++ scripts/bash_completion | 2 +- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 rules/post/ptxd_make_repology.make diff --git a/bin/ptxdist b/bin/ptxdist index 0e7af6142..868eb17b3 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. @@ -1925,6 +1926,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..50c913738 --- /dev/null +++ b/rules/post/ptxd_make_repology.make @@ -0,0 +1,49 @@ +# -*-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 := \ + cross-llvm \ + nodejs_packages + +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), \ + $(if $(subst undefined,,$($(PTX_MAP_TO_PACKAGE_$(pkg))_VERSION)), \ + $(if $($(PTX_MAP_TO_PACKAGE_$(pkg))_URL), \ + $(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: de3afe806e398349482e92e812f6f69467070ec4 -- 2.49.0