From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id kHGjI+VtDmITdwAAgWs5BA (envelope-from ) for ; Thu, 17 Feb 2022 16:46:45 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id 6NREHOVtDmKlJwAAG6o9tA (envelope-from ) for ; Thu, 17 Feb 2022 16:46:45 +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 3CD7135D46 for ; Thu, 17 Feb 2022 16:46:44 +0100 (CET) Received: from localhost ([::1]:33632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nKizS-00036l-Jr for larch@yhetil.org; Thu, 17 Feb 2022 10:46:42 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33488) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nKixz-0001su-WD for bug-guix@gnu.org; Thu, 17 Feb 2022 10:45:15 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:58607) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nKixq-0003vT-JL for bug-guix@gnu.org; Thu, 17 Feb 2022 10:45:11 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nKixq-00020E-8A for bug-guix@gnu.org; Thu, 17 Feb 2022 10:45:02 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#51801: No warning when attempting to build unsupported system with --system Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 17 Feb 2022 15:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51801 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Maxim Cournoyer Received: via spool by 51801-submit@debbugs.gnu.org id=B51801.16451126737639 (code B ref 51801); Thu, 17 Feb 2022 15:45:02 +0000 Received: (at 51801) by debbugs.gnu.org; 17 Feb 2022 15:44:33 +0000 Received: from localhost ([127.0.0.1]:52504 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nKixE-0001yz-Gr for submit@debbugs.gnu.org; Thu, 17 Feb 2022 10:44:33 -0500 Received: from hera.aquilenet.fr ([185.233.100.1]:37110) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nKixA-0001yh-CL for 51801@debbugs.gnu.org; Thu, 17 Feb 2022 10:44:23 -0500 Received: from localhost (localhost [127.0.0.1]) by hera.aquilenet.fr (Postfix) with ESMTP id 8701DB6D; Thu, 17 Feb 2022 16:44:13 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at aquilenet.fr Received: from hera.aquilenet.fr ([127.0.0.1]) by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Rs8YsaFnWcfY; Thu, 17 Feb 2022 16:44:11 +0100 (CET) Received: from ribbon (unknown [193.50.110.222]) by hera.aquilenet.fr (Postfix) with ESMTPSA id 91ED5112; Thu, 17 Feb 2022 16:44:10 +0100 (CET) From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87o86oix8e.fsf@gmail.com> Date: Thu, 17 Feb 2022 16:44:09 +0100 In-Reply-To: <87o86oix8e.fsf@gmail.com> (Maxim Cournoyer's message of "Fri, 12 Nov 2021 21:51:45 -0500") Message-ID: <874k4xmrau.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spamd-Bar: / X-Rspamd-Server: hera X-Rspamd-Queue-Id: 8701DB6D X-Spamd-Result: default: False [-0.10 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TAGGED_RCPT(0.00)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain,text/x-patch]; DBL_PROHIBIT(0.00)[2.0.0.2:email,2.0.0.0:email]; RCPT_COUNT_TWO(0.00)[2]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:+]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; MID_RHS_MATCH_FROM(0.00)[] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: 51801@debbugs.gnu.org Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1645112804; 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: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=J6NC+c+D5wHaoTI/tUrGRGGXdtQ5Xag1slHbYwbIeng=; b=nRDoyjyXSt+WdrsPIxJRgNQ3fbK4WAaWnaDhn2AxUwKnA5wliwx7LyR9JkempjTeZHeEpP BBvxB+6oDhtLbppz8DCKwufceRBH+lPKQf9hV10jwPrtgZuVCalyTXBd85ZBs823FtCFN/ zW/JukmYmHew2TGw6huhvIS3OuvWvgo48UEUIHzzbYyr+cyClatwleKptJgwjaEWi2YrRg 2lJ8e0iqJeWAo5CC7B00KZnM68FLw1adWDw5G/FyGpMr8pXxVlC8gMuDa3v/hO+mm7ynHQ hR/lCqUlwBo2DxWM1HZo2ZhwY4KuRMYfkbqgqruDAnnG3V9sh5EziIGWLxxv4w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1645112804; a=rsa-sha256; cv=none; b=ocbMtJIK02Pj1oS5UUQjnM95qfZ3CJSGJ4m85LCf+ifJh/XfD7x18DPDgGRWyXFVixYkP2 PZqdnkYIQUva6Xa8dya5VgU9zniVRUQuWGSJFdxnaPtalRX9MtreqElmn2aimLdUBHAdd2 ifj+zhdSIfZbfDqri46pgJcqJPdc5ydVqpWqJ0qu9u/CazAngf0/6zp89AlZhvf1R5epHq kRWCnAIYVGc54nd975Jw032LyGdJtTCRNe0jOWcpDHXP99Tn86ldWtMH4nEo2uIh8tX9+P 0eAmScZZ+j7nFVPiGvByIBC4Av764qeIjaag9I0Hf3Ufi2eNRn18vtVM/YxOLw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -4.13 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 3CD7135D46 X-Spam-Score: -4.13 X-Migadu-Scanner: scn0.migadu.com X-TUID: i+gqB6lvBlqB --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi! Maxim Cournoyer skribis: > I was surprised that: > > guix build fpc --system=3Darmhf-linux > > would send me in a dead end without any word of caution, given that > armhf-linux is *not* listed in the supported-systems field. > > We should at least warn near the beginning of the build, and remind of > that fact at the end of the build in case of failure. I came up with the patches below. The first part forbids unsupported packages altogether in user-facing commands: =E2=80=98guix install=E2=80=99, =E2=80=98guix shell=E2=80=99, etc= . Until now, they=E2=80=99d just start building things that were bound to fail. The second part adds a mere warning for =E2=80=98guix build=E2=80=99 (it do= es not repeat it at the end, though). Thanks, Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-packages-package-transitive-supported-systems-ignore.patch Content-Transfer-Encoding: quoted-printable >From 1b02db917f6b24b7c41dc20e2833fff452d9b900 Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Ludovic=3D20Court=3DC3=3DA8s?=3D Date: Thu, 17 Feb 2022 16:04:15 +0100 Subject: [PATCH 1/3] packages: 'package-transitive-supported-systems' ignor= es '%current-target-system'. Previously 'package-transitive-supported-systems' would enter an infinite loop over the cross-compilation tool chain if %CURRENT-TARGET-SYSTEM was set. * guix/packages.scm (package-transitive-supported-systems)[supported-system= s-procedure]: Pass explicit SYSTEM and TARGET parameters. * tests/packages.scm ("supported-package? vs. %current-target-system"): New test. --- guix/packages.scm | 4 ++-- tests/packages.scm | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 9d5b23eb8a..3f0262602d 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,= 2021 Ludovic Court=C3=A8s +;;; Copyright =C2=A9 2012-2022 Ludovic Court=C3=A8s ;;; Copyright =C2=A9 2014, 2015, 2017, 2018, 2019 Mark H Weaver ;;; Copyright =C2=A9 2015 Eric Bavier ;;; Copyright =C2=A9 2016 Alex Kost @@ -1235,7 +1235,7 @@ (define supported-systems (_ systems))) (package-supported-systems package) - (bag-direct-inputs (package->bag package)))))) + (bag-direct-inputs (package->bag package system #f)))))) =20 supported-systems) =20 diff --git a/tests/packages.scm b/tests/packages.scm index 55b1c4064f..02bdba5f98 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -508,6 +508,16 @@ (define read-at (and (supported-package? p "x86_64-linux") (supported-package? p "armhf-linux")))) =20 +(test-assert "supported-package? vs. %current-target-system" + ;; The %CURRENT-TARGET-SYSTEM value should have no influence. + (parameterize ((%current-target-system "arm-linux-gnueabihf")) + (let ((p (dummy-package "foo" + (build-system gnu-build-system) + (supported-systems '("x86_64-linux" "armhf-linux"))))) + (and (supported-package? p "x86_64-linux") + (not (supported-package? p "i686-linux")) + (supported-package? p "armhf-linux"))))) + (test-skip (if (not %store) 8 0)) =20 (test-assert "package-source-derivation, file" base-commit: 6481dbda5100e9b0ff9c5221280d2c0cadd663b7 --=20 2.34.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0002-profiles-profile-derivation-rejects-unsupported-pack.patch Content-Transfer-Encoding: quoted-printable >From d492eab963522f2dcea7bad1016fe6b718ddffed Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Ludovic=3D20Court=3DC3=3DA8s?=3D Date: Thu, 17 Feb 2022 16:06:39 +0100 Subject: [PATCH 2/3] profiles: 'profile-derivation' rejects unsupported packages. Previously user-facing commands would happily start building packages even if they do not support that system. With this change, all the user-facing commands reject unsupported packages without going further. * guix/profiles.scm (profile-derivation): Add #:allow-unsupported-packages?. Define 'check-supported-packages' and honor #:allow-unsupported-packages?. * tests/guix-pack.sh, tests/guix-package.sh, tests/guix-shell.sh: Ensure that unsupported packages are rejected. --- guix/profiles.scm | 22 ++++++++++++++++++++-- tests/guix-pack.sh | 5 ++++- tests/guix-package.sh | 13 ++++++++++++- tests/guix-shell.sh | 5 ++++- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 9715a769aa..bad9b95519 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -33,7 +33,7 @@ (define-module (guix profiles) #:use-module ((guix utils) #:hide (package-name->name+version)) #:use-module ((guix build utils) #:select (package-name->name+version mkdir-p)) - #:use-module ((guix diagnostics) #:select (&fix-hint)) + #:use-module ((guix diagnostics) #:select (&fix-hint formatted-message)) #:use-module (guix i18n) #:use-module (guix records) #:use-module (guix packages) @@ -1860,6 +1860,7 @@ (define* (profile-derivation manifest (name "profile") (hooks %default-profile-hooks) (locales? #t) + (allow-unsupported-packages? #f) (allow-collisions? #f) (relative-symlinks? #f) system target) @@ -1868,7 +1869,9 @@ (define* (profile-derivation manifest the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc. Unless ALLOW-COLLISIONS? is true, a '&profile-collision-error' is raised if entries in MANIFEST collide (for instance if there are two same-name packa= ges -with a different version number.) +with a different version number.) Unless ALLOW-UNSUPPORTED-PACKAGES? is t= rue +or TARGET is set, raise an error if MANIFEST contains a package that does = not +support SYSTEM. =20 When LOCALES? is true, the build is performed under a UTF-8 locale; this a= dds a dependency on the 'glibc-utf8-locales' package. @@ -1878,12 +1881,27 @@ (define* (profile-derivation manifest =20 When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST are cross-built for TARGET." + (define (check-supported-packages system) + ;; Raise an error if a package in MANIFEST does not support SYSTEM. + (map-manifest-entries + (lambda (entry) + + (match (manifest-entry-item entry) + ((? package? package) + (unless (supported-package? package system) + (raise (formatted-message (G_ "package ~a does not support ~a") + (package-full-name package) system))= )) + (_ #t))) + manifest)) + (mlet* %store-monad ((system (if system (return system) (current-system))) (target (if target (return target) (current-target-system))) + (ok? -> (or allow-unsupported-packages? target + (check-supported-packages system))) (ok? (if allow-collisions? (return #t) (check-for-collisions manifest system diff --git a/tests/guix-pack.sh b/tests/guix-pack.sh index 0339221ac2..1356a74083 100644 --- a/tests/guix-pack.sh +++ b/tests/guix-pack.sh @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright =C2=A9 2018 Chris Marusich -# Copyright =C2=A9 2018, 2019, 2020 Ludovic Court=C3=A8s +# Copyright =C2=A9 2018, 2019, 2020, 2022 Ludovic Court=C3=A8s # # This file is part of GNU Guix. # @@ -36,6 +36,9 @@ export GUIX_BUILD_OPTIONS test_directory=3D"`mktemp -d`" trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT =20 +# Reject unsuppoted packages. +! guix pack intelmetool -s armhf-linux -n + # Compute the derivation of a pack. drv=3D"`guix pack coreutils -d --no-grafts`" guix gc -R "$drv" | grep "`guix build coreutils -d --no-grafts`" diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 92ab565c5b..d1b383d2ad 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2= 021 Ludovic Court=C3=A8s +# Copyright =C2=A9 2012-2022 Ludovic Court=C3=A8s # Copyright =C2=A9 2013 Nikita Karetnikov # # This file is part of GNU Guix. @@ -59,6 +59,17 @@ test -L "$profile" && test -L "$profile-1-link" ! test -f "$profile-2-link" test -f "$profile/bin/guile" =20 +# Unsupported packages cannot be installed. +! guix package -e '(begin (use-modules (guix) (gnu packages base)) (packag= e (inherit sed) (supported-systems (list))))' -n +case $(uname -m) in + x86_64|i[3456]86) + ! guix package -i novena-eeprom -n + break;; + *) + ! guix package -i intelmetool -n + break;; +esac + # Collisions are properly flagged (in this case, 'g-wrap' propagates # guile@2.2, which conflicts with guile@2.0.) ! guix package --bootstrap -n -p "$profile" -i g-wrap guile@2.0 diff --git a/tests/guix-shell.sh b/tests/guix-shell.sh index 23ff1c5bcf..6340f90574 100644 --- a/tests/guix-shell.sh +++ b/tests/guix-shell.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright =C2=A9 2021 Ludovic Court=C3=A8s +# Copyright =C2=A9 2021-2022 Ludovic Court=C3=A8s # # This file is part of GNU Guix. # @@ -35,6 +35,9 @@ guix shell --bootstrap --pure guile-bootstrap -- guile --= version # '--ad-hoc' is a thing of the past. ! guix shell --ad-hoc guile-bootstrap =20 +# Rejecting unsupported packages. +! guix shell -s armhf-linux intelmetool -n + # Ignoring unauthorized files. cat > "$tmpdir/guix.scm" <From d4368c8c307f61b5346df540aaf329b8495fe32c Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Ludovic=3D20Court=3DC3=3DA8s?=3D Date: Thu, 17 Feb 2022 16:23:42 +0100 Subject: [PATCH 3/3] guix build: Warn when attempting to build an unsupport= ed package. Fixes . Reported by Maxim Cournoyer . * guix/scripts/build.scm (options->derivations)[warn-if-unsupported]: New procedure. [compute-derivation]: Use it. * tests/guix-build.sh: Add test. --- guix/scripts/build.scm | 22 ++++++++++++++++++++-- tests/guix-build.sh | 12 +++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 97e2f5a167..d9cdb6e5e0 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,= 2021, 2021 Ludovic Court=C3=A8s +;;; Copyright =C2=A9 2012-2022 Ludovic Court=C3=A8s ;;; Copyright =C2=A9 2013 Mark H Weaver ;;; Copyright =C2=A9 2020 Marius Bakke ;;; Copyright =C2=A9 2020 Ricardo Wurmus @@ -559,11 +559,29 @@ (define systems (define things-to-build (map transform (options->things-to-build opts))) =20 + (define warn-if-unsupported + (let ((target (assoc-ref opts 'target))) + (if target + (lambda (package system) + ;; We cannot tell whether PACKAGE supports TARGET. + package) + (lambda (package system) + (match package + ((? package? package) + (unless (supported-package? package system) + (warning (package-location package) + (G_ "package ~a does not support ~a~%") + (package-full-name package) system)) + package) + (x x)))))) + (define (compute-derivation obj system) ;; Compute the derivation of OBJ for SYSTEM. (match obj ((? package? p) - (let ((p (or (and graft? (package-replacement p)) p))) + (let ((p (warn-if-unsupported + (or (and graft? (package-replacement p)) p) + system))) (match src (#f (list (package->derivation store p system))) diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 86e41e2927..9cbf8fe26d 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright =C2=A9 2012, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021 Lu= dovic Court=C3=A8s +# Copyright =C2=A9 2012-2014, 2016-2022 Ludovic Court=C3=A8s # Copyright =C2=A9 2020 Marius Bakke # Copyright =C2=A9 2021 Chris Marusich # @@ -31,6 +31,16 @@ guix build --version guix build -e '(@ (gnu packages bootstrap) %bootstrap-glibc)' -S test "`guix build -e '(@ (gnu packages bootstrap) %bootstrap-glibc)' -S`" = =3D "" =20 +# Warn when attempting to build an unsupported package. +case "$(guix build intelmetool -s armhf-linux -v0 -n 2>&1)" in + *warning:*intelmetool*support*armhf*) + true + break;; + *) + false; + break;; +esac + # Should pass. guix build -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' | \ grep -e '-guile-' --=20 2.34.0 --=-=-=--