From unknown Sat Sep 06 19:24:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#34839] [PATCH] import: Add Launchpad updater. Resent-From: Arun Isaac Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 13 Mar 2019 11:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 34839 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 34839@debbugs.gnu.org Cc: Arun Isaac X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.155247550511485 (code B ref -1); Wed, 13 Mar 2019 11:12:01 +0000 Received: (at submit) by debbugs.gnu.org; 13 Mar 2019 11:11:45 +0000 Received: from localhost ([127.0.0.1]:41110 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h41nO-0002yx-D7 for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58433) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h41nL-0002yf-Ga for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:37 -0400 Received: from lists.gnu.org ([209.51.188.17]:38456) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h41nG-0002IK-BA for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h41nE-00016y-J3 for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h41nC-0002H3-VD for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:28 -0400 Received: from mugam.systemreboot.net ([139.59.75.54]:60710) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h41nB-0002FT-Qh for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=cV452yU2wLmGwSfs1hZowN7SwGD5P4vviSxXXHYvaMs=; b=fPCA3sWnZatZIsdE9uGLMNSPq8 X5P6u7c6SCecQeB16cYg3jnKI9FsuQDDRoyaEN1YKIs062NP0Q5xGUH7uvXjJ1qyq0bNQo2Zl6cMz 1Qescwz3IDIgAOQ/l+RqEf3AJj5SK9ui18ksaA9jV9asgb8n0xJ/HZRwNNXWuygI9RxE=; Received: from [14.139.128.10] (helo=localhost.localdomain) by systemreboot.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1h41n7-0004iP-3r; Wed, 13 Mar 2019 16:41:21 +0530 From: Arun Isaac Date: Wed, 13 Mar 2019 16:41:11 +0530 Message-Id: <20190313111111.16325-1-arunisaac@systemreboot.net> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 139.59.75.54 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: 0.9 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.1 (/) * guix/import/launchpad.scm: New file. * Makefile.am (MODULES): Register it. * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. --- Makefile.am | 1 + doc/guix.texi | 4 +- guix/import/launchpad.scm | 124 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 guix/import/launchpad.scm diff --git a/Makefile.am b/Makefile.am index cf35770ba7..fc39599962 100644 --- a/Makefile.am +++ b/Makefile.am @@ -202,6 +202,7 @@ MODULES = \ guix/import/gnu.scm \ guix/import/hackage.scm \ guix/import/json.scm \ + guix/import/launchpad.scm \ guix/import/opam.scm \ guix/import/print.scm \ guix/import/pypi.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 82cf2babb2..40213ebdba 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -48,7 +48,7 @@ Copyright @copyright{} 2017 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 Andy Wingo@* -Copyright @copyright{} 2017, 2018 Arun Isaac@* +Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018 Oleg Pykhalov@* @@ -8716,6 +8716,8 @@ the updater for @uref{https://hackage.haskell.org, Hackage} packages. the updater for @uref{https://www.stackage.org, Stackage} packages. @item crate the updater for @uref{https://crates.io, Crates} packages. +@item launchpad +the updater for @uref{https://launchpad.net, Launchpad} packages. @end table For instance, the following command only checks for updates of Emacs diff --git a/guix/import/launchpad.scm b/guix/import/launchpad.scm new file mode 100644 index 0000000000..ffd5e9221e --- /dev/null +++ b/guix/import/launchpad.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Arun Isaac +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix import launchpad) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (web uri) + #:use-module ((guix download) #:prefix download:) + #:use-module (guix import json) + #:use-module (guix packages) + #:use-module (guix upstream) + #:use-module (guix utils) + #:export (%launchpad-updater)) + +(define (find-extension url) + "Return the extension of the archive e.g. '.tar.gz' given a URL, or +false if none is recognized" + (find (lambda (x) (string-suffix? x url)) + (list ".tar.gz" ".tar.bz2" ".tar.xz" + ".zip" ".tar" ".tgz" ".tbz" ".love"))) + +(define (updated-launchpad-url old-package new-version) + ;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in + ;; the OLD-PACKAGE is a Launchpad url, then return false. + + (define (updated-url url) + (and (string-prefix? "https://launchpad.net/" url) + (let ((ext (or (find-extension url) "")) + (name (package-name old-package)) + (version (package-version old-package)) + (repo (launchpad-repository url))) + (cond + ((and + (>= (length (string-split version #\.)) 2) + (string=? (string-append "https://launchpad.net/" + repo "/" (version-major+minor version) + "/" version "/+download/" repo "-" version ext) + url)) + (string-append "https://launchpad.net/" + repo "/" (version-major+minor new-version) + "/" new-version "/+download/" repo "-" new-version ext)) + (#t #f))))) ; Some URLs are not recognised. + + (let ((source-uri (and=> (package-source old-package) origin-uri)) + (fetch-method (and=> (package-source old-package) origin-method))) + (cond + ((eq? fetch-method download:url-fetch) + (match source-uri + ((? string?) + (updated-url source-uri)) + ((source-uri ...) + (find updated-url source-uri)))) + (else #f)))) + +(define (launchpad-package? package) + "Return true if PACKAGE is a package from Launchpad, else false." + (->bool (updated-launchpad-url package "1.0.0"))) + +(define (launchpad-repository url) + "Return a string e.g. linuxdcpp of the name of the repository, from a string +URL of the form +'https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-1.1.0.tar.bz2'" + (match (string-split (uri-path (string->uri url)) #\/) + ((_ repo . rest) repo))) + +(define (latest-released-version package-name) + "Return a string of the newest released version name given the PACKAGE-NAME, +for example, 'linuxdcpp'. Return #f if there is no releases." + (define (pre-release? x) + ;; Versions containing anything other than digit characters and "." (for + ;; example, "5.1.0-rc1") are assumed to be pre-releases. + (not (string-every (char-set-union (char-set #\.) + char-set:digit) + (hash-ref x "version")))) + + (hash-ref + (last (remove + pre-release? + (hash-ref (json-fetch + (string-append "https://api.launchpad.net/1.0/" + package-name "/releases")) + "entries"))) + "version")) + +(define (latest-release pkg) + "Return an for the latest release of PKG." + (define (origin-github-uri origin) + (match (origin-uri origin) + ((? string? url) url) ; surely a Launchpad URL + ((urls ...) + (find (cut string-contains <> "launchpad.net") urls)))) + + (let* ((source-uri (origin-github-uri (package-source pkg))) + (name (package-name pkg)) + (newest-version (latest-released-version name))) + (if newest-version + (upstream-source + (package name) + (version newest-version) + (urls (list (updated-launchpad-url pkg newest-version)))) + #f))) ; On Launchpad but no proper releases + +(define %launchpad-updater + (upstream-updater + (name 'launchpad) + (description "Updater for Launchpad packages") + (pred launchpad-package?) + (latest latest-release))) -- 2.20.1 From unknown Sat Sep 06 19:24:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#34839] [PATCH] import: Add Launchpad updater. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 16 Mar 2019 10:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 34839 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Arun Isaac Cc: 34839@debbugs.gnu.org Received: via spool by 34839-submit@debbugs.gnu.org id=B34839.155273232131825 (code B ref 34839); Sat, 16 Mar 2019 10:33:01 +0000 Received: (at 34839) by debbugs.gnu.org; 16 Mar 2019 10:32:01 +0000 Received: from localhost ([127.0.0.1]:45805 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h56bh-0008H6-JR for submit@debbugs.gnu.org; Sat, 16 Mar 2019 06:32:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37461) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h56bf-0008Gm-1u for 34839@debbugs.gnu.org; Sat, 16 Mar 2019 06:32:00 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57776) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h56bZ-00029h-46; Sat, 16 Mar 2019 06:31:53 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=34084 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1h56bW-0001Ua-Ps; Sat, 16 Mar 2019 06:31:52 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20190313111111.16325-1-arunisaac@systemreboot.net> Date: Sat, 16 Mar 2019 11:31:48 +0100 In-Reply-To: <20190313111111.16325-1-arunisaac@systemreboot.net> (Arun Isaac's message of "Wed, 13 Mar 2019 16:41:11 +0530") Message-ID: <87ef77yusr.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Arun, Arun Isaac skribis: > * guix/import/launchpad.scm: New file. > * Makefile.am (MODULES): Register it. > * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. Neat, LGTM! What=E2=80=99s the coverage reported by =E2=80=98guix refresh --list-update= rs=E2=80=99 for this one? Thank you! Ludo=E2=80=99. From unknown Sat Sep 06 19:24:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#34839] [PATCH] import: Add Launchpad updater. Resent-From: Arun Isaac Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 17 Mar 2019 17:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 34839 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 34839@debbugs.gnu.org Received: via spool by 34839-submit@debbugs.gnu.org id=B34839.155284520226939 (code B ref 34839); Sun, 17 Mar 2019 17:54:02 +0000 Received: (at 34839) by debbugs.gnu.org; 17 Mar 2019 17:53:22 +0000 Received: from localhost ([127.0.0.1]:47719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5ZyM-00070P-5a for submit@debbugs.gnu.org; Sun, 17 Mar 2019 13:53:22 -0400 Received: from mugam.systemreboot.net ([139.59.75.54]:47318) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5ZyI-00070F-M9 for 34839@debbugs.gnu.org; Sun, 17 Mar 2019 13:53:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=8MDcRo3eGaNpjtUhbBBDIgEgsLB/80T9prCZ55/g7h8=; b=EyqtnZZJ9BovIRrsGcWmHpEQ9 g7NYnoX1/is42uavZsaxqKdA0d7qFR6UHLN3KldNFlJGiRRR6rw+BqZoT6/mtQ0G0R+Ey87uAPRie 9ZOlI7ebbfhhaxk6EmipjabyrDLp6oYoqfpFlyQrNElipR3qAt8+8DxPLl21h+TqccatQ=; Received: from [49.206.10.120] (helo=steel) by systemreboot.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1h5ZyF-0001q2-D7; Sun, 17 Mar 2019 23:23:15 +0530 From: Arun Isaac In-Reply-To: <87ef77yusr.fsf@gnu.org> References: <20190313111111.16325-1-arunisaac@systemreboot.net> <87ef77yusr.fsf@gnu.org> Date: Sun, 17 Mar 2019 23:22:59 +0530 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable >> * guix/import/launchpad.scm: New file. >> * Makefile.am (MODULES): Register it. >> * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. > > Neat, LGTM! May I push to master? > What=E2=80=99s the coverage reported by =E2=80=98guix refresh --list-upda= ters=E2=80=99 for this > one? The coverage is a meagre 0.1%. There are very few launchpad packages in Guix. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEf3MDQ/Lwnzx3v3nTLiXui2GAK7MFAlyOiXsACgkQLiXui2GA K7PRvwgAss8X68p8/BAqLz0WckOMI/4ATruxJc1yiDblPQWr7nllq2VyycPCNtU5 xThCtchHB6ogaWos0Y/QlGN06oV8flx0gwrEV28qo8Afl3gp4dGaGRM2YU1zCooC Jzjbx3bmBDx+tN4VjXbiRAMPIDXalZV45VZzWXQkQrH0bVEBFvyqZ5QgqrzJG1hY dSi4IaDh9rNWcb3s+HyyIQr+YaON/iNDQFGmOlFNPhy+pc2o0NnG8XYQ+Ag4k9TJ /R9nDZbJbkqwAVn3pZdpU1q+/a5SaqkwPzEwOFq12Qe0ziAJP9kBZ0/3dVbWQ4SK piiGM8APC0lGaZwWEqfsJNKsn6lKDg== =XZYK -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 19:24:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#34839] [PATCH] import: Add Launchpad updater. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 18 Mar 2019 08:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 34839 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Arun Isaac Cc: 34839@debbugs.gnu.org Received: via spool by 34839-submit@debbugs.gnu.org id=B34839.155289920917426 (code B ref 34839); Mon, 18 Mar 2019 08:54:02 +0000 Received: (at 34839) by debbugs.gnu.org; 18 Mar 2019 08:53:29 +0000 Received: from localhost ([127.0.0.1]:48054 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5o1R-0004X0-DL for submit@debbugs.gnu.org; Mon, 18 Mar 2019 04:53:29 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5o1P-0004Wo-Cb for 34839@debbugs.gnu.org; Mon, 18 Mar 2019 04:53:28 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33123) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h5o1J-00043t-5d; Mon, 18 Mar 2019 04:53:21 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=53254 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1h5o1I-0003I9-IL; Mon, 18 Mar 2019 04:53:20 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20190313111111.16325-1-arunisaac@systemreboot.net> <87ef77yusr.fsf@gnu.org> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 28 =?UTF-8?Q?Vent=C3=B4se?= an 227 de la =?UTF-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Mon, 18 Mar 2019 09:53:19 +0100 In-Reply-To: (Arun Isaac's message of "Sun, 17 Mar 2019 23:22:59 +0530") Message-ID: <87a7hssgw0.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Arun Isaac skribis: >>> * guix/import/launchpad.scm: New file. >>> * Makefile.am (MODULES): Register it. >>> * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. >> >> Neat, LGTM! > > May I push to master? Yes, definitely. :-) >> What=E2=80=99s the coverage reported by =E2=80=98guix refresh --list-upd= aters=E2=80=99 for this >> one? > > The coverage is a meagre 0.1%. There are very few launchpad packages in > Guix. Yeah, it=E2=80=99s pleasant nonetheless to gain extra coverage. Thank you! Ludo=E2=80=99. From unknown Sat Sep 06 19:24:51 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Arun Isaac Subject: bug#34839: closed (Re: [bug#34839] [PATCH] import: Add Launchpad updater.) Message-ID: References: <20190313111111.16325-1-arunisaac@systemreboot.net> X-Gnu-PR-Message: they-closed 34839 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 34839@debbugs.gnu.org Date: Mon, 18 Mar 2019 15:46:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1552923962-16622-1" This is a multi-part message in MIME format... ------------=_1552923962-16622-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #34839: [PATCH] import: Add Launchpad updater. which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 34839@debbugs.gnu.org. --=20 34839: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D34839 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1552923962-16622-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 34839-done) by debbugs.gnu.org; 18 Mar 2019 15:45:08 +0000 Received: from localhost ([127.0.0.1]:49024 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5uRm-0004IY-TN for submit@debbugs.gnu.org; Mon, 18 Mar 2019 11:45:07 -0400 Received: from mugam.systemreboot.net ([139.59.75.54]:58324) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5uRi-0004Hu-Tb for 34839-done@debbugs.gnu.org; Mon, 18 Mar 2019 11:45:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=attwRyscYeZ1Pksy9Pi/ZIahODvm76bp7HJSEOCDZIk=; b=Dxdixkde+dgK1q2s7t5zR9sA/ N+N1x+wLQfR2lU1LuJnCGp+oYWZX975cuSlaZ5WJOfMs7xdtqe7FGAFV53BEFP1lusHl8O0EnmTIW mBz5PIpAf5GSWgID0yID/c2Kolpm0XnN3ZjXiqa7IwJg8qu6OUCOGG4TCwkGpMB/N93nU=; Received: from [14.139.128.10] (helo=steel) by systemreboot.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1h5uRf-00031P-Rh; Mon, 18 Mar 2019 21:15:00 +0530 From: Arun Isaac To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: [bug#34839] [PATCH] import: Add Launchpad updater. In-Reply-To: <87a7hssgw0.fsf@gnu.org> References: <20190313111111.16325-1-arunisaac@systemreboot.net> <87ef77yusr.fsf@gnu.org> <87a7hssgw0.fsf@gnu.org> Date: Mon, 18 Mar 2019 21:14:47 +0530 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 34839-done Cc: 34839-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable >> May I push to master? > > Yes, definitely. :-) Pushed, thanks! >> The coverage is a meagre 0.1%. There are very few launchpad packages in >> Guix. > > Yeah, it=E2=80=99s pleasant nonetheless to gain extra coverage. Yes, indeed. :-) --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEf3MDQ/Lwnzx3v3nTLiXui2GAK7MFAlyPvO8ACgkQLiXui2GA K7MnpAf/biewnpaLfN/I9qjUU+9xxlxRTBn3fcY0gIFm7AhD3M01GhiAtgwO9q42 92D/OWGLlMGu/6oUeFnJqZG9ynmFat33/9d8SLRzsnyCMK+fufjcwdm10UOyve/k 91jONqZRXWIWFLt0U1NsXvYmTQdIIAlVh8sl1xw5w/BDqF3Jc+vjFQk7Y4TcdR5L rXz5nfieyF5RWN8liJFf0JCD7dgMHClUbCtpP+ai7QeDEwq0AvTt8tIAegeNlyij n+fnOGVdB5QK6mpUdcS1RO+5dE3o2WoPldxaeP3ON2JMpz5xWmuFP384+9BWr7q1 ES+3kbF9w12TqWDpiMh0T5RQSl8v/g== =M30c -----END PGP SIGNATURE----- --=-=-=-- ------------=_1552923962-16622-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 13 Mar 2019 11:11:45 +0000 Received: from localhost ([127.0.0.1]:41110 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h41nO-0002yx-D7 for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58433) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h41nL-0002yf-Ga for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:37 -0400 Received: from lists.gnu.org ([209.51.188.17]:38456) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h41nG-0002IK-BA for submit@debbugs.gnu.org; Wed, 13 Mar 2019 07:11:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h41nE-00016y-J3 for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h41nC-0002H3-VD for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:28 -0400 Received: from mugam.systemreboot.net ([139.59.75.54]:60710) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h41nB-0002FT-Qh for guix-patches@gnu.org; Wed, 13 Mar 2019 07:11:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=cV452yU2wLmGwSfs1hZowN7SwGD5P4vviSxXXHYvaMs=; b=fPCA3sWnZatZIsdE9uGLMNSPq8 X5P6u7c6SCecQeB16cYg3jnKI9FsuQDDRoyaEN1YKIs062NP0Q5xGUH7uvXjJ1qyq0bNQo2Zl6cMz 1Qescwz3IDIgAOQ/l+RqEf3AJj5SK9ui18ksaA9jV9asgb8n0xJ/HZRwNNXWuygI9RxE=; Received: from [14.139.128.10] (helo=localhost.localdomain) by systemreboot.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1h41n7-0004iP-3r; Wed, 13 Mar 2019 16:41:21 +0530 From: Arun Isaac To: guix-patches@gnu.org Subject: [PATCH] import: Add Launchpad updater. Date: Wed, 13 Mar 2019 16:41:11 +0530 Message-Id: <20190313111111.16325-1-arunisaac@systemreboot.net> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 139.59.75.54 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: 0.9 (/) X-Debbugs-Envelope-To: submit Cc: Arun Isaac X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.1 (/) * guix/import/launchpad.scm: New file. * Makefile.am (MODULES): Register it. * doc/guix.texi (Invoking guix refresh): Mention the Launchpad updater. --- Makefile.am | 1 + doc/guix.texi | 4 +- guix/import/launchpad.scm | 124 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 guix/import/launchpad.scm diff --git a/Makefile.am b/Makefile.am index cf35770ba7..fc39599962 100644 --- a/Makefile.am +++ b/Makefile.am @@ -202,6 +202,7 @@ MODULES = \ guix/import/gnu.scm \ guix/import/hackage.scm \ guix/import/json.scm \ + guix/import/launchpad.scm \ guix/import/opam.scm \ guix/import/print.scm \ guix/import/pypi.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 82cf2babb2..40213ebdba 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -48,7 +48,7 @@ Copyright @copyright{} 2017 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 Andy Wingo@* -Copyright @copyright{} 2017, 2018 Arun Isaac@* +Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018 Oleg Pykhalov@* @@ -8716,6 +8716,8 @@ the updater for @uref{https://hackage.haskell.org, Hackage} packages. the updater for @uref{https://www.stackage.org, Stackage} packages. @item crate the updater for @uref{https://crates.io, Crates} packages. +@item launchpad +the updater for @uref{https://launchpad.net, Launchpad} packages. @end table For instance, the following command only checks for updates of Emacs diff --git a/guix/import/launchpad.scm b/guix/import/launchpad.scm new file mode 100644 index 0000000000..ffd5e9221e --- /dev/null +++ b/guix/import/launchpad.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Arun Isaac +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (guix import launchpad) + #:use-module (ice-9 match) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (web uri) + #:use-module ((guix download) #:prefix download:) + #:use-module (guix import json) + #:use-module (guix packages) + #:use-module (guix upstream) + #:use-module (guix utils) + #:export (%launchpad-updater)) + +(define (find-extension url) + "Return the extension of the archive e.g. '.tar.gz' given a URL, or +false if none is recognized" + (find (lambda (x) (string-suffix? x url)) + (list ".tar.gz" ".tar.bz2" ".tar.xz" + ".zip" ".tar" ".tgz" ".tbz" ".love"))) + +(define (updated-launchpad-url old-package new-version) + ;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in + ;; the OLD-PACKAGE is a Launchpad url, then return false. + + (define (updated-url url) + (and (string-prefix? "https://launchpad.net/" url) + (let ((ext (or (find-extension url) "")) + (name (package-name old-package)) + (version (package-version old-package)) + (repo (launchpad-repository url))) + (cond + ((and + (>= (length (string-split version #\.)) 2) + (string=? (string-append "https://launchpad.net/" + repo "/" (version-major+minor version) + "/" version "/+download/" repo "-" version ext) + url)) + (string-append "https://launchpad.net/" + repo "/" (version-major+minor new-version) + "/" new-version "/+download/" repo "-" new-version ext)) + (#t #f))))) ; Some URLs are not recognised. + + (let ((source-uri (and=> (package-source old-package) origin-uri)) + (fetch-method (and=> (package-source old-package) origin-method))) + (cond + ((eq? fetch-method download:url-fetch) + (match source-uri + ((? string?) + (updated-url source-uri)) + ((source-uri ...) + (find updated-url source-uri)))) + (else #f)))) + +(define (launchpad-package? package) + "Return true if PACKAGE is a package from Launchpad, else false." + (->bool (updated-launchpad-url package "1.0.0"))) + +(define (launchpad-repository url) + "Return a string e.g. linuxdcpp of the name of the repository, from a string +URL of the form +'https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-1.1.0.tar.bz2'" + (match (string-split (uri-path (string->uri url)) #\/) + ((_ repo . rest) repo))) + +(define (latest-released-version package-name) + "Return a string of the newest released version name given the PACKAGE-NAME, +for example, 'linuxdcpp'. Return #f if there is no releases." + (define (pre-release? x) + ;; Versions containing anything other than digit characters and "." (for + ;; example, "5.1.0-rc1") are assumed to be pre-releases. + (not (string-every (char-set-union (char-set #\.) + char-set:digit) + (hash-ref x "version")))) + + (hash-ref + (last (remove + pre-release? + (hash-ref (json-fetch + (string-append "https://api.launchpad.net/1.0/" + package-name "/releases")) + "entries"))) + "version")) + +(define (latest-release pkg) + "Return an for the latest release of PKG." + (define (origin-github-uri origin) + (match (origin-uri origin) + ((? string? url) url) ; surely a Launchpad URL + ((urls ...) + (find (cut string-contains <> "launchpad.net") urls)))) + + (let* ((source-uri (origin-github-uri (package-source pkg))) + (name (package-name pkg)) + (newest-version (latest-released-version name))) + (if newest-version + (upstream-source + (package name) + (version newest-version) + (urls (list (updated-launchpad-url pkg newest-version)))) + #f))) ; On Launchpad but no proper releases + +(define %launchpad-updater + (upstream-updater + (name 'launchpad) + (description "Updater for Launchpad packages") + (pred launchpad-package?) + (latest latest-release))) -- 2.20.1 ------------=_1552923962-16622-1--