From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: bug#22740: Freshness check blocks upgrading Date: Tue, 23 Feb 2016 11:54:30 +0300 Message-ID: <87k2lvolh5.fsf@gmail.com> References: <20160219171209.GA530@solar> <87mvqv943a.fsf@gmail.com> <874md0moo2.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aY8kM-0005VF-LM for bug-guix@gnu.org; Tue, 23 Feb 2016 03:55:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aY8kI-0001Iu-3W for bug-guix@gnu.org; Tue, 23 Feb 2016 03:55:06 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:41842) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aY8kH-0001IW-Vd for bug-guix@gnu.org; Tue, 23 Feb 2016 03:55:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aY8kH-0008OM-LT for bug-guix@gnu.org; Tue, 23 Feb 2016 03:55:01 -0500 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <874md0moo2.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Mon, 22 Feb 2016 22:16:13 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 22740@debbugs.gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s (2016-02-23 00:16 +0300) wrote: > Alex Kost skribis: > >> Andreas Enge (2016-02-19 20:12 +0300) wrote: >> >>> Hello, >>> >>> when upgrading packages, there is a check for new GNU releases. >>> In the presence of network problems preventing to reach the correspondi= ng >>> servers, the command "guix package -u" hangs indefinitely. >>> >>> It would be nice to add a (short) time-out to the procedure looking >>> for updates, or better yet, to add a command line flag to turn it off: >>> Even when the servers are reachable, checking for new versions takes >>> a considerable amount of time that can be saved in many circumstances. >>> >>> Personally, I would not even mind turning this feature off completely; >> >> I totally agree with this! I didn't like it since the very beginning. > > I agree. I implemented it mostly for the fun of it and to demonstrate > that we could possibly do =E2=80=9Cclever=E2=80=9D things with access to = high-level > package objects (the command could automatically offer to use the new > source instead of the old one), but in practice it=E2=80=99s been largely > annoying. > > Ludo=E2=80=99, waiting for the patch that removes it. :-) Attached. I also removed 'check-package-freshness' from (gnu packages) as it is not used anywhere else, or should it be left? --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-Do-not-check-package-freshness-during-upgrade.patch Content-Transfer-Encoding: quoted-printable >From 1d6d4d0864672b0676f09eb6c8285684e5b8785c Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 23 Feb 2016 11:38:00 +0300 Subject: [PATCH] Do not check package freshness during upgrade. Fixes . Reported by Andreas Enge . * gnu/packages.scm (waiting, ftp-open*, check-package-freshness): Remove. * guix/scripts/package.scm (options->installable): Adjust accordingly. * emacs/guix-main.scm (package->manifest-entry*): Likewise. --- emacs/guix-main.scm | 4 +-- gnu/packages.scm | 69 +-------------------------------------------= ---- guix/scripts/package.scm | 12 +++------ 3 files changed, 6 insertions(+), 79 deletions(-) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 335686e..11b9c77 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -856,9 +856,7 @@ parameter/value pairs." =20 (define* (package->manifest-entry* package #:optional output) (and package - (begin - (check-package-freshness package) - (package->manifest-entry package output)))) + (package->manifest-entry package output))) =20 (define* (make-install-manifest-entries id #:optional output) (package->manifest-entry* (package-by-id id) output)) diff --git a/gnu/packages.scm b/gnu/packages.scm index b309a78..64a695d 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -2,6 +2,7 @@ ;;; Copyright =C2=A9 2012, 2013, 2014, 2015 Ludovic Court=C3=A8s ;;; Copyright =C2=A9 2013 Mark H Weaver ;;; Copyright =C2=A9 2014 Eric Bavier +;;; Copyright =C2=A9 2016 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,9 +23,6 @@ #:use-module (guix packages) #:use-module (guix ui) #:use-module (guix utils) - #:use-module ((guix ftp-client) #:select (ftp-open)) - #:use-module (guix gnu-maintenance) - #:use-module (guix upstream) #:use-module (ice-9 ftw) #:use-module (ice-9 vlist) #:use-module (ice-9 match) @@ -46,8 +44,6 @@ find-best-packages-by-name find-newest-available-packages =20 - check-package-freshness - specification->package specification->package+output)) =20 @@ -280,69 +276,6 @@ return its return value." (lambda (k signum) (handler signum)))) =20 -(define-syntax-rule (waiting exp fmt rest ...) - "Display the given message while EXP is being evaluated." - (let* ((message (format #f fmt rest ...)) - (blank (make-string (string-length message) #\space))) - (display message (current-error-port)) - (force-output (current-error-port)) - (call-with-sigint-handler - (lambda () - (dynamic-wind - (const #f) - (lambda () exp) - (lambda () - ;; Clear the line. - (display #\cr (current-error-port)) - (display blank (current-error-port)) - (display #\cr (current-error-port)) - (force-output (current-error-port))))) - (lambda (signum) - (format (current-error-port) " interrupted by signal ~a~%" SIGINT) - #f)))) - -(define ftp-open* - ;; Memoizing version of `ftp-open'. The goal is to avoid initiating a n= ew - ;; FTP connection for each package, esp. since most of them are to the s= ame - ;; server. This has a noticeable impact when doing "guix upgrade -u". - (memoize ftp-open)) - -(define (check-package-freshness package) - "Check whether PACKAGE has a newer version available upstream, and report -it." - ;; TODO: Automatically inject the upstream version when desired. - - (catch #t - (lambda () - (when (false-if-exception (gnu-package? package)) - (let ((name (package-name package)) - (full-name (package-full-name package))) - ;; XXX: This could work with non-GNU packages as well. However, - ;; GNU's FTP-based updater would be too slow if it weren't memoi= zed, - ;; and the generic interface in (guix upstream) doesn't support - ;; that. - (match (waiting (latest-release name - #:ftp-open ftp-open* - #:ftp-close (const #f)) - (_ "looking for the latest release of GNU ~a..."= ) name) - ((? upstream-source? source) - (let ((latest-version - (string-append (upstream-source-package source) "-" - (upstream-source-version source)))) - (when (version>? latest-version full-name) - (format (current-error-port) - (_ "~a: note: using ~a \ -but ~a is available upstream~%") - (location->string (package-location package)) - full-name latest-version)))) - (_ #t))))) - (lambda (key . args) - ;; Silently ignore networking errors rather than preventing - ;; installation. - (case key - ((getaddrinfo-error ftp-error) #f) - (else (apply throw key args)))))) - (define (specification->package spec) "Return a package matching SPEC. SPEC may be a package name, or a packa= ge name followed by a hyphen and a version number. If the version number is = not diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index b93ffb0..f658343 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -2,7 +2,7 @@ ;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016 Ludovic Court=C3=A8s ;;; Copyright =C2=A9 2013 Nikita Karetnikov ;;; Copyright =C2=A9 2013, 2015 Mark H Weaver -;;; Copyright =C2=A9 2014 Alex Kost +;;; Copyright =C2=A9 2014, 2016 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -551,10 +551,6 @@ upgrading, #f otherwise." (define (options->installable opts manifest) "Given MANIFEST, the current manifest, and OPTS, the result of 'args-fol= d', return the new list of manifest entries." - (define (package->manifest-entry* package output) - (check-package-freshness package) - (package->manifest-entry package output)) - (define upgrade? (options->upgrade-predicate opts)) =20 @@ -567,7 +563,7 @@ return the new list of manifest entries." (call-with-values (lambda () (specification->package+output name output= )) - package->manifest-entry*)))) + package->manifest-entry)))) (_ #f)) (manifest-entries manifest))) =20 @@ -576,13 +572,13 @@ return the new list of manifest entries." (('install . (? package? p)) ;; When given a package via `-e', install the first of = its ;; outputs (XXX). - (package->manifest-entry* p "out")) + (package->manifest-entry p "out")) (('install . (? string? spec)) (if (store-path? spec) (store-item->manifest-entry spec) (let-values (((package output) (specification->package+output spec))) - (package->manifest-entry* package output)))) + (package->manifest-entry package output)))) (_ #f)) opts)) =20 --=20 2.6.3 --=-=-=--