From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id mHigMEfwWWRLdwEASxT56A (envelope-from ) for ; Tue, 09 May 2023 09:03:35 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id GOCuMEfwWWSU/QAAauVa8A (envelope-from ) for ; Tue, 09 May 2023 09:03:35 +0200 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 7F0C830D96 for ; Tue, 9 May 2023 09:03:34 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pwHMy-0005S5-4b; Tue, 09 May 2023 03:02:44 -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 ) id 1pw7Ya-0004FI-7Z for bug-guix@gnu.org; Mon, 08 May 2023 16:34:04 -0400 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 1pw7YZ-0005Ki-Uc for bug-guix@gnu.org; Mon, 08 May 2023 16:34:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pw7YZ-0006UN-PJ for bug-guix@gnu.org; Mon, 08 May 2023 16:34:03 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#63319: [PATCH 3/3] profiles: remove `parent' field. Resent-From: Ulf Herrman Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 08 May 2023 20:34:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63319 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 63319@debbugs.gnu.org Received: via spool by 63319-submit@debbugs.gnu.org id=B63319.168357804224929 (code B ref 63319); Mon, 08 May 2023 20:34:03 +0000 Received: (at 63319) by debbugs.gnu.org; 8 May 2023 20:34:02 +0000 Received: from localhost ([127.0.0.1]:41791 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pw7YX-0006Tp-PN for submit@debbugs.gnu.org; Mon, 08 May 2023 16:34:02 -0400 Received: from tilde.club ([142.44.150.184]:33638 ident=postfix) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pw7YW-0006Te-9t for 63319@debbugs.gnu.org; Mon, 08 May 2023 16:34:00 -0400 Received: by tilde.club (Postfix, from userid 5378) id 15D7A22301A5E; Mon, 8 May 2023 20:34:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 tilde.club 15D7A22301A5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tilde.club; s=mail; t=1683578040; bh=qaviHf7stZS8jHlXgeXk0KQbjb+9eIREa2b31+Mh0PU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=zkFqo8ZuMlO6cxR57D+2VWDa/fCCnVZxMcHe7YR/j06PYIeP2dkXz2ucpGjn7u/Ic BPyD1Gr23fot/JKKtONlJarTbD++CGYz3z6XU2HZqbIfzyLc3oySB093N+QBgLVqOq XTpS/skyBMvwppCEVfp70o1mg7oVkqi5KRR1Odqc= From: Ulf Herrman Date: Mon, 8 May 2023 15:33:35 -0500 Message-Id: <20230508203335.30659-4-striness@tilde.club> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230508203335.30659-1-striness@tilde.club> References: <20230508203335.30659-1-striness@tilde.club> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Mailman-Approved-At: Tue, 09 May 2023 03:02:40 -0400 X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Seal: i=1; s=key1; d=yhetil.org; t=1683615814; a=rsa-sha256; cv=none; b=EAXlT93hVbJRPsxzT06pBbA7ntBQmwM0Co/GIVpXb6v1XBgnuyWPfpF/SQbWfbH0bQT2O0 uDJ1wwEqjRwFAmTV8s6j56y21VhrjF7RYIREyZucZ8OJF0LynZ78jKJFLJrVPN+qCGjsjJ qDSGfqnqfezq0huSFSmLQX00jJipCd1zYVWKWbl6szmhoz5FlITau3lbKMoCWPKfKbfa6G cPdePu5cOd4aVEUhhJih6s1kUoak0PpML88EnoUpSL0Hk88SFtLLmhscI9GkwB0nGYAAEO 7eWpGqhsdYUGs8J2o7IH2munPBPJHo7D09Rq+q/iXNv+EqLHBL6rKlGh031DJA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tilde.club header.s=mail header.b=zkFqo8Zu; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tilde.club (policy=none); 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" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1683615814; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: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:dkim-signature; bh=xFrGRSy/OE/J2q6oB2RmeUbPEwh9NAWX0QaG2h2sCgg=; b=AldipEH1Qv4ik82jrfKHGc/H4WP3oJQtlvBOKE6uR69qL3JZJejLpK1guurBeMiwh4WSZ+ Wwvm3imf6W3PfcAhfzqJPWcgiBrFgmzSxb2FQCoryxlRn97w73eqyTNDswH/IV+90Mpphg /l+iveyhLgBqo/vT5qi1P2acJ0BaG0khejW/yXZSeqh6f/6sBw2pnRQfCZEGrIjo/NWWTv AT4h77bVvh5z51KL1lKv8EGwWIuQOZnxM/aJyrTGrihljLgBCNtev7EckDlEMvMAAbOOrK v5Rvr+xsqDkfZRsBihsfrxwTIjK22JBiIzR7XUnEzETHNK3d77SCRG7GbsVwkQ== X-Migadu-Spam: Yes X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tilde.club header.s=mail header.b=zkFqo8Zu; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tilde.club (policy=none); 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-Spam: Yes X-Migadu-Spam-Score: 8.82 X-Spam-Score: 8.82 X-Migadu-Queue-Id: 7F0C830D96 X-TUID: pvWCiZt6Ue8f This field was only present for consumption by (guix ui) when reporting propagation chains that lead to profile collision errors, but it is only valid in general with respect to a single manifest. (guix ui) now derives parent information by itself with respect to an explicit manifest, so this field is no longer needed. * guix/profiles.scm (manifest-entry-parent): remove field. (package->manifest-entry, sexp->manifest): do not populate it. (manifest->gexp): adjust match specifications to account for its absence. * guix/inferior.scm (inferior-package->manifest-entry): do not populate nonexistent parent field. --- guix/inferior.scm | 36 ++++++-------- guix/profiles.scm | 123 +++++++++++++++++++--------------------------- 2 files changed, 67 insertions(+), 92 deletions(-) diff --git a/guix/inferior.scm b/guix/inferior.scm index 5dfd30a6c8..4030640f6d 100644 --- a/guix/inferior.scm +++ b/guix/inferior.scm @@ -819,27 +819,23 @@ (define-syntax-rule (memoized package output exp) result)))) (let loop ((package package) - (output output) - (parent (delay #f))) + (output output)) (memoized package output - ;; For each dependency, keep a promise pointing to its "parent" entry. - (letrec* ((deps (map (match-lambda - ((label package) - (loop package "out" (delay entry))) - ((label package output) - (loop package output (delay entry)))) - (inferior-package-propagated-inputs package))) - (entry (manifest-entry - (name (inferior-package-name package)) - (version (inferior-package-version package)) - (output output) - (item package) - (dependencies (delete-duplicates deps)) - (search-paths - (inferior-package-transitive-native-search-paths package)) - (parent parent) - (properties properties)))) - entry)))) + (let ((deps (map (match-lambda + ((label package) + (loop package "out")) + ((label package output) + (loop package output))) + (inferior-package-propagated-inputs package)))) + (manifest-entry + (name (inferior-package-name package)) + (version (inferior-package-version package)) + (output output) + (item package) + (dependencies (delete-duplicates deps)) + (search-paths + (inferior-package-transitive-native-search-paths package)) + (properties properties)))))) ;;; diff --git a/guix/profiles.scm b/guix/profiles.scm index b812a6f7d9..0d22667362 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -90,7 +90,6 @@ (define-module (guix profiles) manifest-entry-item manifest-entry-dependencies manifest-entry-search-paths - manifest-entry-parent manifest-entry-properties lower-manifest-entry @@ -229,8 +228,6 @@ (define-record-type* manifest-entry (default '())) (search-paths manifest-entry-search-paths ; search-path-specification* (default '())) - (parent manifest-entry-parent ; promise (#f | ) - (default (delay #f))) (properties manifest-entry-properties ; list of symbol/value pairs (default '()))) @@ -416,29 +413,23 @@ (define (default-properties package) (transformations `((transformations . ,transformations))))) (define* (package->manifest-entry package #:optional (output "out") - #:key (parent (delay #f)) (properties (default-properties package))) "Return a manifest entry for the OUTPUT of package PACKAGE." - ;; For each dependency, keep a promise pointing to its "parent" entry. - (letrec* ((deps (map (match-lambda - ((label package) - (package->manifest-entry package - #:parent (delay entry))) - ((label package output) - (package->manifest-entry package output - #:parent (delay entry)))) - (package-propagated-inputs package))) - (entry (manifest-entry - (name (package-name package)) - (version (package-version package)) - (output output) - (item package) - (dependencies (delete-duplicates deps)) - (search-paths - (package-transitive-native-search-paths package)) - (parent parent) - (properties properties)))) - entry)) + (let ((deps (map (match-lambda + ((label package) + (package->manifest-entry package)) + ((label package output) + (package->manifest-entry package output))) + (package-propagated-inputs package)))) + (manifest-entry + (name (package-name package)) + (version (package-version package)) + (output output) + (item package) + (dependencies (delete-duplicates deps)) + (search-paths + (package-transitive-native-search-paths package)) + (properties properties)))) (define* (package->development-manifest package #:optional @@ -534,7 +525,7 @@ (define (entry->gexp entry) (return (match entry (($ name version output (? string? path) - (_ ...) (search-paths ...) _ (properties ...)) + (_ ...) (search-paths ...) (properties ...)) #~(#$name #$version #$output #$path #$@(optional 'propagated-inputs deps) #$@(optional 'search-paths @@ -542,7 +533,7 @@ (define (entry->gexp entry) search-paths)) #$@(optional 'properties properties))) (($ name version output package - (_deps ...) (search-paths ...) _ (properties ...)) + (_deps ...) (search-paths ...) (properties ...)) #~(#$name #$version #$output (ungexp package (or output "out")) #$@(optional 'propagated-inputs deps) @@ -565,7 +556,7 @@ (define (entry->gexp entry) (define (sexp->manifest sexp) "Parse SEXP as a manifest." - (define (infer-dependency item parent) + (define (infer-dependency item) ;; Return a for ITEM. (let-values (((name version) (package-name->name+version @@ -573,31 +564,25 @@ (define (infer-dependency item parent) (manifest-entry (name name) (version version) - (item item) - (parent parent)))) + (item item)))) - (define* (sexp->manifest-entry/v3 sexp #:optional (parent (delay #f))) + (define* (sexp->manifest-entry/v3 sexp) ;; Read SEXP as a version 3 manifest entry. (match sexp ((name version output path ('propagated-inputs deps) ('search-paths search-paths) extra-stuff ...) - ;; For each of DEPS, keep a promise pointing to ENTRY. - (letrec* ((deps* (map (cut sexp->manifest-entry/v3 <> (delay entry)) - deps)) - (entry (manifest-entry - (name name) - (version version) - (output output) - (item path) - (dependencies deps*) - (search-paths (map sexp->search-path-specification - search-paths)) - (parent parent) - (properties (or (assoc-ref extra-stuff 'properties) - '()))))) - entry)))) + (manifest-entry + (name name) + (version version) + (output output) + (item path) + (dependencies (map sexp->manifest-entry/v3 deps)) + (search-paths (map sexp->search-path-specification + search-paths)) + (properties (or (assoc-ref extra-stuff 'properties) + '())))))) (define-syntax let-fields (syntax-rules () @@ -611,7 +596,7 @@ (define-syntax let-fields ((_ lst () body ...) (begin body ...)))) - (define* (sexp->manifest-entry sexp #:optional (parent (delay #f))) + (define* (sexp->manifest-entry sexp) (match sexp (('repeated name version path) ;; This entry is the same as another one encountered earlier; look it @@ -628,23 +613,20 @@ (define* (sexp->manifest-entry sexp #:optional (parent (delay #f))) ((name version output path fields ...) (let-fields fields (propagated-inputs search-paths properties) (mlet* %state-monad - ((entry -> #f) - (deps (mapm %state-monad - (cut sexp->manifest-entry <> (delay entry)) + ((deps (mapm %state-monad + sexp->manifest-entry propagated-inputs)) + (entry -> (manifest-entry + (name name) + (version version) + (output output) + (item path) + (dependencies deps) + (search-paths (map sexp->search-path-specification + search-paths)) + (properties properties))) (visited (current-state)) (key -> (list name version path))) - (set! entry ;XXX: emulate 'letrec*' - (manifest-entry - (name name) - (version version) - (output output) - (item path) - (dependencies deps) - (search-paths (map sexp->search-path-specification - search-paths)) - (parent parent) - (properties properties))) (mbegin %state-monad (set-current-state (vhash-cons key entry visited)) (return entry))))))) @@ -661,18 +643,15 @@ (define* (sexp->manifest-entry sexp #:optional (parent (delay #f))) ...))) (manifest (map (lambda (name version output path deps search-paths) - (letrec* ((deps* (map (cute infer-dependency <> (delay entry)) - deps)) - (entry (manifest-entry - (name name) - (version version) - (output output) - (item path) - (dependencies deps*) - (search-paths - (map sexp->search-path-specification - search-paths))))) - entry)) + (manifest-entry + (name name) + (version version) + (output output) + (item path) + (dependencies (map infer-dependency deps)) + (search-paths + (map sexp->search-path-specification + search-paths)))) name version output path deps search-paths))) ;; Version 3 represents DEPS as full-blown manifest entries. -- 2.39.1