From: Bruno Thomsen <bruno.thomsen@gmail.com>
To: ptxdist@pengutronix.de
Cc: bruno.thomsen@gmail.com, Ladislav Michl <ladis@triops.cz>
Subject: [ptxdist] [PATCH v2] ptxdist: add repology json output support
Date: Wed, 1 Oct 2025 21:17:26 +0200 [thread overview]
Message-ID: <20251001191726.5204-1-bruno.thomsen@gmail.com> (raw)
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 <bruno.thomsen@gmail.com>
Co-developed-by: Ladislav Michl <ladis@triops.cz>
---
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 <pkg> [<directory>] 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 <bruno.thomsen@gmail.com>
+# 2025 by Ladislav Michl <ladis@triops.cz>
+#
+# 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
next reply other threads:[~2025-10-01 19:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-01 19:17 Bruno Thomsen [this message]
2025-10-06 9:47 ` Roland Hieber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251001191726.5204-1-bruno.thomsen@gmail.com \
--to=bruno.thomsen@gmail.com \
--cc=ladis@triops.cz \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox