From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 2G8BG+cyTWBnAQAA0tVLHw (envelope-from ) for ; Sat, 13 Mar 2021 21:47:19 +0000 Received: from aspmx2.migadu.com ([2001:41d0:2:c151::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id 8Ci8FucyTWBYEQAAB5/wlQ (envelope-from ) for ; Sat, 13 Mar 2021 21:47:19 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx2.migadu.com (Postfix) with ESMTPS id 0EC749432 for ; Sat, 13 Mar 2021 22:47:19 +0100 (CET) Received: from localhost ([::1]:46696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lLC6Q-0005Ma-5J for larch@yhetil.org; Sat, 13 Mar 2021 16:47:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44198) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lLC6B-00055u-T7 for guix-patches@gnu.org; Sat, 13 Mar 2021 16:47:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:49303) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lLC6B-00034s-M6 for guix-patches@gnu.org; Sat, 13 Mar 2021 16:47:03 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lLC6B-0000mO-Km for guix-patches@gnu.org; Sat, 13 Mar 2021 16:47:03 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#47126] [PATCH 4/7] gnu-maintenance: 'latest-html-release' can determine signature file name. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 13 Mar 2021 21:47:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47126 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 47126@debbugs.gnu.org Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= Received: via spool by 47126-submit@debbugs.gnu.org id=B47126.16156720012919 (code B ref 47126); Sat, 13 Mar 2021 21:47:03 +0000 Received: (at 47126) by debbugs.gnu.org; 13 Mar 2021 21:46:41 +0000 Received: from localhost ([127.0.0.1]:60840 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lLC5p-0000ks-8t for submit@debbugs.gnu.org; Sat, 13 Mar 2021 16:46:41 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54488) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lLC5j-0000jo-1f for 47126@debbugs.gnu.org; Sat, 13 Mar 2021 16:46:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:42782) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lLC5d-0002ra-Ck; Sat, 13 Mar 2021 16:46:29 -0500 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=39284 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lLC5c-0004wi-DF; Sat, 13 Mar 2021 16:46:29 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Sat, 13 Mar 2021 22:46:17 +0100 Message-Id: <20210313214620.28186-4-ludo@gnu.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210313214620.28186-1-ludo@gnu.org> References: <20210313214620.28186-1-ludo@gnu.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1615672039; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=5Tj1WMqZVN6KZHiQ9xgGMyVtK5VVPTldW2H5a/5mEdc=; b=ITC5ZYj8qvc7B0LK1G1gqxjfb/3xccYjOwX9TzVEz1IN78oUOBQna2CF5y5kK2fhpjf1Xw OfJPhdKIrL9WR7FQm9GT7jao4lSsyRF6myzRr/Jpj0IgSIjX5clz478EjTV7nypuysDSDX C/538kHWnho+IBfpCJsbIeIQK6/n2dAU6fagD95nP/wA8jEaV8DFi9KdXWx/bO8NbNn1EB UWRmY8KYMOEEpasuIUpUiuLv6wcDMn8JuedLZdidCBUSnH8K/yAcaH2Yyo3JuWTxnqbqDh A+4t0l+oZ7xXmq4/ariXYJGY1y2Tso9z/KoHCqt/FOr4dCw5/wVcrm5uGF2m3g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1615672039; a=rsa-sha256; cv=none; b=YeISSXoidOx7vqatwcTpzXIDuAo2GH4lE15Wl8GaNRSFfuRV9NTdp6FuhZz2irRe+ZzEVW LfnLLLssSk9SAHZdXo2UwTYV95xbghAgdSe+DQaSrAwy1DdqxTKPCaMchU3GSe4aAFDG8z ZgVCv8+kgM1d6rjM6UURWJmzfy2/aHxpv2RB0sbYj0MMqiZMdoU7WP3d3KqltSPO67fie+ 5qX7KUal3dCxZv56RWaFQr0dk06imyn8m22Nfi2UeEbR39OBYkrdQuqqobKFutWl8n6kdU nEleV+9qdDWBV67AFivRqipKz3/fuq7I5jOyou/pq7RsLp6wXb5HLpbZ8aj+7g== ARC-Authentication-Results: i=1; aspmx2.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx2.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: 2.10 Authentication-Results: aspmx2.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx2.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 0EC749432 X-Spam-Score: 2.10 X-Migadu-Scanner: scn0.migadu.com X-TUID: a4Aob8lL/UlK * guix/gnu-maintenance.scm (latest-html-release): #:file->signature defaults to #f. [file->signature/guess]: New procedure. [url->release]: Use it when FILE->SIGNATURE is #f. Introduce 'links' variable. (url-prefix-rewrite): Check whether URL is true before calling 'string-prefix?'. (latest-savannah-release): Adjust comment about detached signatures. --- guix/gnu-maintenance.scm | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index a8b24fa336..3bffa4d11e 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -470,16 +470,29 @@ hosted on ftp.gnu.org, or not under that name (this is the case for #:key (base-url "https://kernel.org/pub") (directory (string-append "/" package)) - (file->signature (cut string-append <> ".sig"))) + file->signature) "Return an for the latest release of PACKAGE (a string) on SERVER under DIRECTORY, or #f. BASE-URL should be the URL of an HTML page, typically a directory listing as found on 'https://kernel.org/pub'. -FILE->SIGNATURE must be a procedure; it is passed a source file URL and must -return the corresponding signature URL, or #f it signatures are unavailable." - (let* ((uri (string->uri (string-append base-url directory "/"))) - (port (http-fetch/cached uri #:ttl 3600)) - (sxml (html->sxml port))) +When FILE->SIGNATURE is omitted or #f, guess the detached signature file name, +if any. Otherwise, FILE->SIGNATURE must be a procedure; it is passed a source +file URL and must return the corresponding signature URL, or #f it signatures +are unavailable." + (let* ((uri (string->uri (string-append base-url directory "/"))) + (port (http-fetch/cached uri #:ttl 3600)) + (sxml (html->sxml port)) + (links (delete-duplicates (html-links sxml)))) + (define (file->signature/guess url) + (let ((base (basename url))) + (any (lambda (link) + (any (lambda (extension) + (and (string=? (string-append base extension) + (basename link)) + (string-append url extension))) + '(".asc" ".sig" ".sign"))) + links))) + (define (url->release url) (let* ((base (basename url)) (url (if (string=? base url) @@ -495,10 +508,10 @@ return the corresponding signature URL, or #f it signatures are unavailable." (version version) (urls (list url)) (signature-urls - (list (file->signature url)))))))) + (list ((or file->signature file->signature/guess) url)))))))) (define candidates - (filter-map url->release (html-links sxml))) + (filter-map url->release links)) (close-port port) (match candidates @@ -614,7 +627,7 @@ releases are on gnu.org." (define (url-prefix-rewrite old new) "Return a one-argument procedure that rewrites URL prefix OLD to NEW." (lambda (url) - (if (string-prefix? old url) + (if (and url (string-prefix? old url)) (string-append new (string-drop url (string-length old))) url))) @@ -646,9 +659,8 @@ releases are on gnu.org." (directory (dirname (uri-path uri))) (rewrite (url-prefix-rewrite %savannah-base "mirror://savannah"))) - ;; Note: We use the default 'file->signature', which adds ".sig", but not - ;; all projects on Savannah follow that convention: some use ".asc" and - ;; perhaps some lack signatures altogether. + ;; Note: We use the default 'file->signature', which adds ".sig", ".asc", + ;; or whichever detached signature naming scheme PACKAGE uses. (and=> (latest-html-release package #:base-url %savannah-base #:directory directory) -- 2.30.1