mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Roland Hieber <rhi@pengutronix.de>
To: Bruno Thomsen <bruno.thomsen@gmail.com>
Cc: ptxdist@pengutronix.de, Ladislav Michl <ladis@triops.cz>
Subject: Re: [ptxdist] [PATCH v2] ptxdist: add repology json output support
Date: Mon, 6 Oct 2025 11:47:44 +0200	[thread overview]
Message-ID: <1759743993-018f2348c8b6069223089c68@pty> (raw)
In-Reply-To: <20251001191726.5204-1-bruno.thomsen@gmail.com>

On Wed, Oct 01, 2025 at 09:17:26PM +0200, Bruno Thomsen wrote:
> 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)

If you add a "@touch $(PTXDIST_TEMPDIR)/repology.done" here, you don't need the
'grep -v "make: Nothing to be done for"' in the shell command line.

 - Roland

> +
> +# 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
> 
> 
> 

-- 
Roland Hieber, Pengutronix e.K.          | rhi@pengutronix.de          |
Steuerwalder Str. 21                     | https://www.pengutronix.de/ |
31137 Hildesheim, Germany                | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686         | Fax:   +49-5121-206917-5555 |



      reply	other threads:[~2025-10-06  9:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-01 19:17 Bruno Thomsen
2025-10-06  9:47 ` Roland Hieber [this message]

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=1759743993-018f2348c8b6069223089c68@pty \
    --to=rhi@pengutronix.de \
    --cc=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