From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id aF+eEncL4WM0CwAAbAwnHQ (envelope-from ) for ; Mon, 06 Feb 2023 15:15:19 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id KJ6+EXcL4WPCqwAAG6o9tA (envelope-from ) for ; Mon, 06 Feb 2023 15:15:19 +0100 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 aspmx1.migadu.com (Postfix) with ESMTPS id C8E9728D7F for ; Mon, 6 Feb 2023 15:15:18 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pP2Gw-0008Mi-JO; Mon, 06 Feb 2023 09:15:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pP2Gt-0008Ek-VK for guix-patches@gnu.org; Mon, 06 Feb 2023 09:15:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pP2Gs-0003Q3-K7 for guix-patches@gnu.org; Mon, 06 Feb 2023 09:15:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pP2Gs-0000i5-Ei for guix-patches@gnu.org; Mon, 06 Feb 2023 09:15:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#61322] [PATCH] status: Print a hint when a 'package-cache' hook fails to build. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 06 Feb 2023 14:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 61322 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 61322@debbugs.gnu.org Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16756928692651 (code B ref -1); Mon, 06 Feb 2023 14:15:02 +0000 Received: (at submit) by debbugs.gnu.org; 6 Feb 2023 14:14:29 +0000 Received: from localhost ([127.0.0.1]:47675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pP2GK-0000ge-MG for submit@debbugs.gnu.org; Mon, 06 Feb 2023 09:14:29 -0500 Received: from lists.gnu.org ([209.51.188.17]:48256) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pP2G2-0000fz-MA for submit@debbugs.gnu.org; Mon, 06 Feb 2023 09:14:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pP2G0-0002iq-Qw for guix-patches@gnu.org; Mon, 06 Feb 2023 09:14:09 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pP2G0-0003Cg-Fe; Mon, 06 Feb 2023 09:14:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=38Bu38fV1pm1uCFD9aR5A453FkBJ+PTD2q18+rQROls=; b=oPFsgLcphRcP6U org5tj3ZNxuKdABSR5pugLU7EW79whRlb08C6tUveiDGTORRTPCcFGG1KxvaqkSXwai5ZnFH4Tk4a G7XGv8xCqMF7zFTvWiiwdWOWLxxI1EO+dyWZNq9fbBKcZnOGtWfPreuDvx2UUPeQZsP3d8gvePOt9 tXOHNYoNs1I15VB7dWc4H2+VJIiZLnIrfietXC0Wy08ELsZyYF6xc5TrCYcmvbrATCjNKx01N+GnL 5TLHtNBhIE3y0JCOgKBG5RJ1WliqG0Hv5VpfLIs4mKuVRPPZP02WdlL9aaQBGmt7CVSVjExqbz9VK +RI6bQemxPS8HvfGfsVw==; Received: from [188.44.78.207] (helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pP2Fz-00050s-PI; Mon, 06 Feb 2023 09:14:08 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Mon, 6 Feb 2023 15:13:52 +0100 Message-Id: <20230206141352.29287-1-ludo@gnu.org> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Seal: i=1; s=key1; d=yhetil.org; t=1675692918; a=rsa-sha256; cv=none; b=eSXHsMXtMe9JqwxIIu+G1TVGAGE6bNylaBVqP7i92CZOgQaHZkHLls5sDaUO8CZyuGhcki QJfgUOlmL9mODCXENs2ep/Qy4wncIHSquDXzikWcnAYz1KVLHNlJpouLCqbADOIYq2+afg 9RRPNBiJkJJVWEVJpS/xPVS32ffDvqvanW/xh4uXSBGOF613x7LKQD+IITo3flzuPJo4sB ltqEPQ/S+Paj09+Yl/G3m5hGN50uC6L3V6tU5uXygVly/O/NIDBqYOckbxlP0WkWUA2lmd woNgkpMRIwX7S0LMzwqM8nIh4pREDIQ8ryv/FCRARL9dstpP9Ew2/vgXRMZ8rg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=oPFsgLcp; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1675692918; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=38Bu38fV1pm1uCFD9aR5A453FkBJ+PTD2q18+rQROls=; b=Y2AE+953C36C3wziYr5ruaEA9tyee+HbbBSc/G458JNi8MxFstzYMxnvNurrugq6+ivBWu E0AOP0pMB66KaJZgaOnCuVdBhwrM57Hg2R6ydTiHULMxQoQgF91j3HJEOP4utfHVXOB3vk szP2lNCPEOMC4cJFtJsMczoUd7y4G9lwmjA8CvMM8Sjt9PCoKdLu7ZP6PB4H6Is4Dl3ZZd tnbKuSHrxoIZTIIzDQfSWDORLh5C7o0zWofLdr8rY8QVg/kp17FpBd4kDAz4sR1i1KDHJS VWxQPjKkD89GmOAOijYiERBG4/FAyaKAlzk4IsSDE+i3U4qCV6h2zKfkUaEDzQ== Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=oPFsgLcp; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: -1.49 X-Spam-Score: -1.49 X-Migadu-Queue-Id: C8E9728D7F X-TUID: blO2ScboYMTw * guix/channels.scm (package-cache-file): Add 'channels' to the #:properties list. * guix/status.scm (print-build-event): Upon failure, display a hint when the derivation is a 'package-cache' hook. --- guix/channels.scm | 9 +++++++-- guix/status.scm | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) Hello! This patch mitigates a longstanding user interface issue. When pulling from a channel set where one of them has an issue, such as a reference to an unbound variable, you get something rather unhelpful like this: --8<---------------cut here---------------start------------->8--- $ guix pull -C ~/.config/guix/hpc-channels.scm -p /tmp/chantest Updating channel 'guix-hpc' from Git repository at 'https://gitlab.inria.fr/guix-hpc/guix-hpc.git'... Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'... Authenticating channel 'guix', commits 9edb3f6 to a582d86 (64 new commits)... Building from these channels: guix https://git.savannah.gnu.org/git/guix.git a582d86 guix-hpc https://gitlab.inria.fr/guix-hpc/guix-hpc.git 0e522d1 [...] guix-daemon 399B 205KiB/s 00:00 [##################] 100.0% guix-a582d8634 14KiB 1.2MiB/s 00:00 [##################] 100.0% building /gnu/store/c4racwl5ns6vpyjsx1ad3fxh9n48g0pl-guix-hpc.drv... building CA certificate bundle... listing Emacs sub-directories... building fonts directory... building directory of Info manuals... building profile with 2 packages... building /gnu/store/p2a500wi4nvznq85sf08jych48lpfijl-inferior-script.scm.drv... building package cache... \builder for `/gnu/store/pm5crwjcclblmdh8y15jk6i5wxml6j9g-guix-package-cache.drv' failed to produce output path `/gnu/store/12x6ka57amgv28rdnkc2wsq3hs8gr6gw-guix-package-cache' build of /gnu/store/pm5crwjcclblmdh8y15jk6i5wxml6j9g-guix-package-cache.drv failed View build log at '/var/log/guix/drvs/pm/5crwjcclblmdh8y15jk6i5wxml6j9g-guix-package-cache.drv.gz'. cannot build derivation `/gnu/store/06d4wla2l7qqldcaxif2qzgpsk377hvr-profile.drv': 1 dependencies couldn't be built guix pull: error: build of `/gnu/store/06d4wla2l7qqldcaxif2qzgpsk377hvr-profile.drv' failed --8<---------------cut here---------------end--------------->8--- In this case the relevant bit in the build log is: --8<---------------cut here---------------start------------->8--- In inria/hiepacs.scm: 879:41 3 (inputs #) In ice-9/boot-9.scm: 1685:16 2 (raise-exception _ #:continuable? _) 1780:13 1 (_ #<&compound-exception components: (#<&undefined-vari?>) In unknown file: 0 (backtrace #) (exception unbound-variable (value #f) (value "Unbound variable: ~S") (value (python2-numpy)) (value #f)) --8<---------------cut here---------------end--------------->8--- We probably cannot reliably “extract” the actual error from the build log, but we can at least hint in the right direction. This is what this patch does. Now you would get: --8<---------------cut here---------------start------------->8--- build of /gnu/store/dib9aa6g0zn3cvv7hvfrby7cnmpyrw2m-guix-package-cache.drv failed hint: This usually indicates a bug in one of the channels you are pulling from, or some incompatibility among them. You can check the build log and report the issue to the channel developers. The channels you are pulling from are: guix guix-hpc. View build log at '/var/log/guix/drvs/di/b9aa6g0zn3cvv7hvfrby7cnmpyrw2m-guix-package-cache.drv.gz'. cannot build derivation `/gnu/store/y11nksh5lhyj09zqszlg9pvg89wzpv5p-profile.drv': 1 dependencies couldn't be built guix build: error: build of `/gnu/store/y11nksh5lhyj09zqszlg9pvg89wzpv5p-profile.drv' failed --8<---------------cut here---------------end--------------->8--- Thoughts? Ludo’. diff --git a/guix/channels.scm b/guix/channels.scm index 40cbc4bb3a..d44e7a0a3a 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -952,6 +952,10 @@ (define build (backtrace)))) (mkdir #$output)))) + (define channels + (map (compose string->symbol manifest-entry-name) + (manifest-entries manifest))) + (gexp->derivation-in-inferior "guix-package-cache" build profile @@ -960,8 +964,9 @@ (define build ;; instead of failing. #:silent-failure? #t - #:properties '((type . profile-hook) - (hook . package-cache)) + #:properties `((type . profile-hook) + (hook . package-cache) + (channels . ,channels)) #:local-build? #t))) (define %channel-profile-hooks diff --git a/guix/status.scm b/guix/status.scm index 2c69f49fb5..5580c80ea9 100644 --- a/guix/status.scm +++ b/guix/status.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017-2022 Ludovic Courtès +;;; Copyright © 2017-2023 Ludovic Courtès ;;; Copyright © 2018, 2019 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. @@ -22,6 +22,7 @@ (define-module (guix status) #:use-module (guix i18n) #:use-module (guix colors) #:use-module (guix progress) + #:autoload (guix ui) (display-hint) #:autoload (guix build syscalls) (terminal-columns) #:autoload (guix build download) (nar-uri-abbreviation) #:use-module (guix store) @@ -526,6 +527,21 @@ (define erase-current-line* (erase-current-line*) ;erase spinner or progress bar (format port (failure (G_ "build of ~a failed")) drv) (newline port) + (let ((properties (and=> (false-if-exception + (read-derivation-from-file drv)) + derivation-properties))) + (when (and (pair? properties) + (eq? (assq-ref properties 'type) 'profile-hook) + (eq? (assq-ref properties 'hook) 'package-cache)) + (display-hint (format #f (G_ "This usually indicates a bug in one of +the channels you are pulling from, or some incompatibility among them. You +can check the build log and report the issue to the channel developers. + +The channels you are pulling from are: ~a.") + (string-join + (map symbol->string + (or (assq-ref properties 'channels) + '(guix)))))))) (match (derivation-log-file drv) (#f (format port (failure (G_ "Could not find build log for '~a'.")) base-commit: 25947bbc3217306742694304fa9b6499f0126c7a -- 2.39.1