From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 18 Apr 2025 13:34:29 +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 1u5jzJ-002I4v-0e for lore@lore.pengutronix.de; Fri, 18 Apr 2025 13:34:29 +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 1u5jzI-0004ib-Od; Fri, 18 Apr 2025 13:34:28 +0200 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1u5jz0-0004iD-LL for ptxdist@pengutronix.de; Fri, 18 Apr 2025 13:34:11 +0200 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ac3b12e8518so334618466b.0 for ; Fri, 18 Apr 2025 04:34:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744976050; x=1745580850; 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=eVISNtKNYhZhim154NcbdYMmR2wzKeMK8IenAAmLc8U=; b=jfCJXMHW28X7l5+zV0Zd1ZLfa5CK2+qXZ3G3UXrwlpiFWtytchWb4sBR7fNI4yNjI5 B16ohdgezpdW/WofFw31o3mrkox4efmbA8LLFZvXljOxsjw5Dqn8OLJJsEJ4zGskqGPc fwPQ45KVsjidn2/J13pgzr2QSIL+IF2gn18eEojQCvvUsYLlMUPSv3oWrlzcXrme3p6r z6Us+7mgsYt+1ZarQVEx59sYOURSdulyrAOO+6/XNOMcN6YUzr2ZA8Skxy7DeP/VSN+2 aWvCG3n5f6kZ4Ix+qVsQlJBIpg2DvPrHs4aWlFXXV6+tNxHUGWTlGwyKF+PLWS3ZgLcq n3lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744976050; x=1745580850; 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=eVISNtKNYhZhim154NcbdYMmR2wzKeMK8IenAAmLc8U=; b=mmMMsE6dxK45sWjAFgL7kh0eABd9ozI55sxjI5zaiel+UmyZLhLX1rc4Ne7kzKh2b5 u0efp1swJWKAJKpPR3zpECpZf408olaRu9ABi2L96lJh+PHYSiIOrkGZO+/nch6ETt6H B0JhjIxZ9KbTZl2ii52yb3OX4yJekx1jn8eHuzMxZLs5FqdI4i3AotTa4O4N3hXCabuS 3ECvCgF3OFLmqUt2x/SJy13ocfmFdFblJgQBJxQEc9w+4NQOl6oMcoG9vJ95UBaPc/+S DuhDLHch/avMVKjrYcmvsMPDufi1HYiL/PM5aQMYdNuyalvsMiYHGUsiVluJmYS1nfnq 7pAQ== X-Gm-Message-State: AOJu0Yz9W6iCA924pfV3jn4qGwnqD3LXGihsVfob1P3U6X0y19c2iV4j ROIfDrA7GKFnOgibHuo8ARODNrp+CuDvSd/anVzOKoSeTUu8CVWRIV4SbQ== X-Gm-Gg: ASbGncsKpImyh8CfNx1ZzEVL7x3/1DVgkNJVbcbWSVQbGE9+NEOXgo6xLIFCN1juA8n P3OJgnAN5FEjCeU5wpkeUKpY5Xzolj2eeT7sKEWq+Tio+Hf7/JBXZSIcWp5nw6DsFLZMWDKi6lg 6olbkVkPsg4FvBphV/STlgc/6ZrjrvQoEJ7DiYwl6yiFMz1biUeKQizL5Aq3Zq9ptKRFwJb9O+4 r6jlwEOnpBpd0b8LsJQ0ydcMxkjjUQPnRfSPWJWZYZ58v6Pwln+UWE398/rJ5jPKtjS40vU3Ohy SsHxNmH/lWZfn5lZJssOUCwnjwZaBM5ZHb6duu2rz8PfuThw0wpFljsI6WJK+yjWgF+HsnDCFtP kZWhq4/WFPAUmcoRb2n2bLA== X-Google-Smtp-Source: AGHT+IEuuvkGyW20QXVqRbv/iiSIx8Brs/PTxFe1yU2t+AMTwhZGmUV91395vkXcBecSZVJUcJlIPA== X-Received: by 2002:a17:907:7fa9:b0:ac3:b613:a651 with SMTP id a640c23a62f3a-acb74b31e94mr215784666b.17.1744976049465; Fri, 18 Apr 2025 04:34:09 -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 a640c23a62f3a-acb6ef9669csm107969866b.161.2025.04.18.04.34.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Apr 2025 04:34:08 -0700 (PDT) From: Bruno Thomsen To: ptxdist@pengutronix.de Date: Fri, 18 Apr 2025 13:33:57 +0200 Message-ID: <20250418113357.23654-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] [RFC PATCH] ptxdist: add repology sub command 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 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. Generate JSON output about all packages in ptxdist for repology. ptxdist repology | tail -n +7 | jq This is just a POC for integrating ptxdist with repology. Add PTXdist support #1487: https://github.com/repology/repology-updater/issues/1487 I have run this patch against ptxdist-2024.12.0 and got this output: https://github.com/baxeno/ptxdist-repology/blob/main/repology.json Signed-off-by: Bruno Thomsen --- Any feedback is welcome as this is a very rough implementation. bin/ptxdist | 6 +++ rules/post/ptxd_make_repology.make | 20 +++++++++ scripts/bash_completion | 2 +- scripts/lib/ptxd_make_world_repology.sh | 54 +++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 rules/post/ptxd_make_repology.make create mode 100644 scripts/lib/ptxd_make_world_repology.sh 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..b243ed03e --- /dev/null +++ b/rules/post/ptxd_make_repology.make @@ -0,0 +1,20 @@ +# -*-makefile-*- +# +# Copyright (C) 2025 by Bruno Thomsen +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +PHONY += ptxdist-repology + +ptx/repology = \ + $(call ptx/env) \ + ptx_dgen_rulesfiles_make="$(PTX_DGEN_RULESFILES_MAKE)" \ + ptxd_make_world_repology + +ptxdist-repology: + @$(call targetinfo) + @$(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) diff --git a/scripts/lib/ptxd_make_world_repology.sh b/scripts/lib/ptxd_make_world_repology.sh new file mode 100644 index 000000000..2b3a0a098 --- /dev/null +++ b/scripts/lib/ptxd_make_world_repology.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# +# Copyright (C) 2025 by Bruno Thomsen +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +ptxd_make_world_repology() { + local filefd file + local first + ptxd_make_world_init + + echo "Locating all target packages ..." + + first=1 + exec {filefd}< <(ptxd_make_world_lint_makefiles) + while read file <&${filefd}; do + filename="${file##*/}" + + case "${filename}" in + host-system-*|host-*|cross-*|image-*) + continue + ;; + *) + ;; + esac + case "${file}" in + */rules/post/*|*/rules/pre/*) + continue + ;; + *) + ;; + esac + grep -q '^[^ ]*_VERSION[ :]*=' "${file}" || continue + + pkg_name=$(grep '^PACKAGES-$(PTXCONF_' "${file}" | cut -d '=' -f 2 | xargs) + pkg_version=$(grep '^[^ ]*_VERSION[ :]*=' "${file}" | cut -d '=' -f 2 | xargs) + pkg_license=$(grep '^[^ ]*_LICENSE[ :]*=' "${file}" | cut -d '=' -f 2 | xargs) + + [[ "$pkg_license" == *"call remove_quotes"* ]] && continue + [[ "$pkg_version" == *"call ptx/"* ]] && continue + + if [ $first -eq 1 ]; then + first=0 + echo "[" + else + echo "," + fi + echo "{\"name\": \"${pkg_name}\", \"version\": \"${pkg_version}\", \"license\": \"${pkg_license}\"}" + done + echo "]" +} +export -f ptxd_make_world_repology base-commit: f61905c23240642dec3e5390ee15e83cf1e016e9 -- 2.49.0