Received: (at submit) by debbugs.gnu.org; 4 May 2023 11:25:31 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu May 04 07:25:31 2023 Received: from localhost ([127.0.0.1]:48730 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1puX5X-0006EC-5W for submit <at> debbugs.gnu.org; Thu, 04 May 2023 07:25:31 -0400 Received: from lists.gnu.org ([209.51.188.17]:42212) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <mail@HIDDEN>) id 1puX5T-0006Dq-7j for submit <at> debbugs.gnu.org; Thu, 04 May 2023 07:25:29 -0400 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 <mail@HIDDEN>) id 1puX5J-00018S-Lq for guix-patches@HIDDEN; Thu, 04 May 2023 07:25:23 -0400 Received: from mira.cbaines.net ([2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <mail@HIDDEN>) id 1puX5F-0006Dq-HG for guix-patches@HIDDEN; Thu, 04 May 2023 07:25:15 -0400 Received: from localhost (unknown [IPv6:2a02:8010:68c1:0:54d1:d5d4:280e:f699]) by mira.cbaines.net (Postfix) with ESMTPSA id 81B8527BBE2 for <guix-patches@HIDDEN>; Thu, 4 May 2023 12:24:49 +0100 (BST) Received: from localhost (localhost [local]) by localhost (OpenSMTPD) with ESMTPA id 4f989652 for <guix-patches@HIDDEN>; Thu, 4 May 2023 11:24:48 +0000 (UTC) From: Christopher Baines <mail@HIDDEN> To: guix-patches@HIDDEN Subject: [PATCH] gexp: Stop generating unreadable builder scripts. Date: Thu, 4 May 2023 12:24:48 +0100 Message-Id: <20230504112448.22462-1-mail@HIDDEN> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27; envelope-from=mail@HIDDEN; helo=mira.cbaines.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.4 (--) In Guile, it's possible to produce output from write that can't be read, and this applies to the code staged through g-expressions for derivations. This commit detects this early when the derivation is being created, rather than leaving the error to happen when the derivation is built. This is important as it means that tools like guix lint will indicate that there's a problem, hopefully reducing the number of broken derivations in Guix. * guix/gexp.scm (gexp->derivation): Check that the builder script can be read. --- guix/gexp.scm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/guix/gexp.scm b/guix/gexp.scm index 0fe4f1c98a..7af9302ccf 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -1215,9 +1215,18 @@ (define (add-modules exp modules) #:target target) (return #f))) (guile -> (lowered-gexp-guile lowered)) - (builder (text-file script-name - (sexp->string - (lowered-gexp-sexp lowered))))) + (builder (text-file + script-name + (let ((builder-string + (sexp->string + (lowered-gexp-sexp lowered)))) + (catch 'read-error + (lambda () + (call-with-input-string builder-string + read) + builder-string) + (lambda (key . args) + (error "invalid gexp" name exp args))))))) (mbegin %store-monad (set-grafting graft?) ;restore the initial setting (raw-derivation name -- 2.39.1
Christopher Baines <mail@HIDDEN>
:guix-patches@HIDDEN
.
Full text available.guix-patches@HIDDEN
:bug#63263
; Package guix-patches
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.