X-Loop: help-debbugs@HIDDEN
Subject: [bug#68271] [PATCH 0/3] Make some deduplicating speedups.
Resent-From: Christopher Baines <mail@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: guix-patches@HIDDEN
Resent-Date: Fri, 05 Jan 2024 20:51:02 +0000
Resent-Message-ID: <handler.68271.B.170448785315419 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 68271
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: 68271 <at> debbugs.gnu.org
X-Debbugs-Original-To: guix-patches@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.170448785315419
(code B ref -1); Fri, 05 Jan 2024 20:51:02 +0000
Received: (at submit) by debbugs.gnu.org; 5 Jan 2024 20:50:53 +0000
Received: from localhost ([127.0.0.1]:58025 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1rLr9Z-00040d-Gw
for submit <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:50:53 -0500
Received: from lists.gnu.org ([2001:470:142::17]:57158)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <mail@HIDDEN>) id 1rLr9U-00040M-7T
for submit <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:50:52 -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 <mail@HIDDEN>) id 1rLr9I-0005Pb-R4
for guix-patches@HIDDEN; Fri, 05 Jan 2024 15:50:37 -0500
Received: from mira.cbaines.net ([212.71.252.8])
by eggs.gnu.org with esmtp (Exim 4.90_1)
(envelope-from <mail@HIDDEN>) id 1rLr9H-0002ym-Ea
for guix-patches@HIDDEN; Fri, 05 Jan 2024 15:50:36 -0500
Received: from localhost (unknown [217.155.61.229])
by mira.cbaines.net (Postfix) with ESMTPSA id D1BE627BBE2
for <guix-patches@HIDDEN>; Fri, 5 Jan 2024 20:50:33 +0000 (GMT)
Received: from felis (localhost [127.0.0.1])
by localhost (OpenSMTPD) with ESMTP id ec58259b
for <guix-patches@HIDDEN>; Fri, 5 Jan 2024 20:50:33 +0000 (UTC)
User-agent: mu4e 1.10.7; emacs 29.1
From: Christopher Baines <mail@HIDDEN>
Date: Fri, 05 Jan 2024 20:50:02 +0000
Message-ID: <87h6jrqzc7.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
micalg=pgp-sha512; protocol="application/pgp-signature"
Received-SPF: pass client-ip=212.71.252.8; 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 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
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: -0.1 (/)
--=-=-=
Content-Type: text/plain
Christopher Baines (3):
guix: utils: Add delete-duplicates/sort.
guix: derivations: Use delete-duplicates/sort.
guix: packages: Speed up deduplicating inputs.
guix/derivations.scm | 10 ++++++----
guix/packages.scm | 23 +++++++++++++++++++----
guix/utils.scm | 28 ++++++++++++++++++++++++++++
3 files changed, 53 insertions(+), 8 deletions(-)
--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmWYa5hfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xd0ww//a5t0bHlFnCTiDMFqHSdw22JQ2UGs+HHb
Fu3n2KFmFBkmkcnRehpnm1AM3s5EvKPL54CIIgIa79feW3pvNPKov+tCLE8xszzg
lTjlEr8E3M8zr1kyfAgPwASZ1+DHmyIlfLeAViwnhLShx1Oj3tR5vIuLYdvrt4JA
5IRCSTnua7bleSm3zXOXaHFyblcau1EN64nD0z2lhBQXdzkyYfcr14+Qv/m7YlXH
NdaOTnpI51BkUTPEw1msH29/S2X2qGoju7hMEo6a5RCg/ZerCGR4kuKdyMqrueXP
XjhA4qTZZP/Bk4qx0SDq7vmGLG02bc03h4RUn0FUhK/6/bLbwU4VBJ3bppYPlSK5
kr8j0UmxgUUGBh6xcJ17ShkTc1F1+uIcjhpQKApQdH5It0IjTydMH+fabrW9ggOc
K3y/LWYRRp/ZO0vz9oMqq8YJ2ORYKWKEG0lLUCGkvGFzzDgsYdeWKGZB163+aujC
6IEwg5fMH950fW09LTaV+MZPDQgYGKgkRW8QfiLcknqJ4Ap46y2thusZE1euJtIk
zX0/FaBWQ9dGljdpG64RxU9e7KxCvBZs4Nr0C3ZUvqMTFPzMwLMdNte8ilF/5LD2
5TxTSsK3dHJsQFxz80p9I4IlreMw0ihg43ydN5cspKSMiyroF17xduBWsSbLLk61
VJ90VerJmbA=
=iBqK
-----END PGP SIGNATURE-----
--=-=-=--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Christopher Baines <mail@HIDDEN> Subject: bug#68271: Acknowledgement ([PATCH 0/3] Make some deduplicating speedups.) Message-ID: <handler.68271.B.170448785315419.ack <at> debbugs.gnu.org> References: <87h6jrqzc7.fsf@HIDDEN> X-Gnu-PR-Message: ack 68271 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 68271 <at> debbugs.gnu.org Date: Fri, 05 Jan 2024 20:51:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): guix-patches@HIDDEN If you wish to submit further information on this problem, please send it to 68271 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 68271: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D68271 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN
Subject: [bug#68271] [PATCH 1/3] guix: utils: Add delete-duplicates/sort.
References: <87h6jrqzc7.fsf@HIDDEN>
In-Reply-To: <87h6jrqzc7.fsf@HIDDEN>
Resent-From: Christopher Baines <mail@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN
Resent-Date: Fri, 05 Jan 2024 20:54:01 +0000
Resent-Message-ID: <handler.68271.B68271.170448801115727 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 68271
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: 68271 <at> debbugs.gnu.org
Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
X-Debbugs-Original-Xcc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Received: via spool by 68271-submit <at> debbugs.gnu.org id=B68271.170448801115727
(code B ref 68271); Fri, 05 Jan 2024 20:54:01 +0000
Received: (at 68271) by debbugs.gnu.org; 5 Jan 2024 20:53:31 +0000
Received: from localhost ([127.0.0.1]:58036 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1rLrC7-00045b-Ep
for submit <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:31 -0500
Received: from mira.cbaines.net ([212.71.252.8]:43068)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <mail@HIDDEN>) id 1rLrC5-00045K-90
for 68271 <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:30 -0500
Received: from localhost (unknown [217.155.61.229])
by mira.cbaines.net (Postfix) with ESMTPSA id 94C4E27BBE2
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:23 +0000 (GMT)
Received: from localhost (localhost [local])
by localhost (OpenSMTPD) with ESMTPA id 3df7c8f0
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:22 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
Date: Fri, 5 Jan 2024 20:53:20 +0000
Message-ID: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
X-Mailer: git-send-email 2.41.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
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: -1.0 (-)
Similar to delete-duplicates, but sorts the list first and then compares the
pairs in the list. This is faster than delete-duplicates for larger lists.
* guix/utils.scm (delete-duplicates): New procedure.
Change-Id: Ibc2897cdb7c76be0d0e099bc47fee005a88bea2e
---
guix/utils.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/guix/utils.scm b/guix/utils.scm
index e4e9d922e7..c1c967ee6c 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -146,6 +146,8 @@ (define-module (guix utils)
edit-expression
delete-expression
+ delete-duplicates/sort
+
filtered-port
decompressed-port
call-with-decompressed-port
@@ -502,6 +504,32 @@ (define (delete-expression source-properties)
"Delete the expression specified by SOURCE-PROPERTIES."
(edit-expression source-properties (const "") #:include-trailing-newline? #t))
+
+;;;
+;;; Lists.
+;;;
+
+(define* (delete-duplicates/sort unsorted-lst less #:optional (equal? eq?))
+ (if (null? unsorted-lst)
+ unsorted-lst
+ (let ((sorted-lst (sort unsorted-lst
+ ;; Sort in the reverse order
+ (lambda (a b) (eq? #f (less a b))))))
+ (let loop ((lst (cdr sorted-lst))
+ (last-element (car sorted-lst))
+ (result (list (car sorted-lst))))
+ (if (null? lst)
+ result
+ (let ((current-element (car lst)))
+ (if (equal? current-element last-element)
+ (loop (cdr lst)
+ last-element
+ result)
+ (loop (cdr lst)
+ current-element
+ (cons current-element
+ result)))))))))
+
;;;
;;; Keyword arguments.
base-commit: deeb7d1f53d7ddfa977b3eadd760312bbd0a2509
--
2.41.0
X-Loop: help-debbugs@HIDDEN
Subject: [bug#68271] [PATCH 2/3] guix: derivations: Use delete-duplicates/sort.
Resent-From: Christopher Baines <mail@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN
Resent-Date: Fri, 05 Jan 2024 20:54:02 +0000
Resent-Message-ID: <handler.68271.B68271.170448801215735 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 68271
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: 68271 <at> debbugs.gnu.org
Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
X-Debbugs-Original-Xcc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Received: via spool by 68271-submit <at> debbugs.gnu.org id=B68271.170448801215735
(code B ref 68271); Fri, 05 Jan 2024 20:54:02 +0000
Received: (at 68271) by debbugs.gnu.org; 5 Jan 2024 20:53:32 +0000
Received: from localhost ([127.0.0.1]:58038 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1rLrC7-00045h-Py
for submit <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:32 -0500
Received: from mira.cbaines.net ([212.71.252.8]:43070)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <mail@HIDDEN>) id 1rLrC5-00045L-8w
for 68271 <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:30 -0500
Received: from localhost (unknown [217.155.61.229])
by mira.cbaines.net (Postfix) with ESMTPSA id E941127BBE9
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:23 +0000 (GMT)
Received: from localhost (localhost [local])
by localhost (OpenSMTPD) with ESMTPA id 8acfac1b
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:22 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
Date: Fri, 5 Jan 2024 20:53:21 +0000
Message-ID: <cb11dedad1ec9838e33af735b5176337334dc362.1704488002.git.mail@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
References: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
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: -1.0 (-)
As this seems to be a small speedup, as tested by computing derivations for
all packages targeting i586-pc-gnu.
* guix/derivations.scm (derivation/masked-inputs): Use delete-duplicates/sort.
Change-Id: I9ec963c10e67a525037c346f44c92a87376935c5
---
guix/derivations.scm | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 9fec7f4f0b..29c7ef9a5c 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -745,10 +745,12 @@ (define (derivation/masked-inputs drv)
(make-derivation-input hash sub-drvs))))
inputs)))
(make-derivation outputs
- (sort (delete-duplicates inputs)
- (lambda (drv1 drv2)
- (string<? (derivation-input-derivation drv1)
- (derivation-input-derivation drv2))))
+ (delete-duplicates/sort
+ inputs
+ (lambda (drv1 drv2)
+ (string<? (derivation-input-derivation drv1)
+ (derivation-input-derivation drv2)))
+ eq?)
sources
system builder args env-vars
#f)))))
--
2.41.0
X-Loop: help-debbugs@HIDDEN
Subject: [bug#68271] [PATCH 3/3] guix: packages: Speed up deduplicating inputs.
Resent-From: Christopher Baines <mail@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, rekado@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN
Resent-Date: Fri, 05 Jan 2024 20:54:02 +0000
Resent-Message-ID: <handler.68271.B68271.170448803115766 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 68271
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: 68271 <at> debbugs.gnu.org
Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
X-Debbugs-Original-Xcc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Ricardo Wurmus <rekado@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Received: via spool by 68271-submit <at> debbugs.gnu.org id=B68271.170448803115766
(code B ref 68271); Fri, 05 Jan 2024 20:54:02 +0000
Received: (at 68271) by debbugs.gnu.org; 5 Jan 2024 20:53:51 +0000
Received: from localhost ([127.0.0.1]:58040 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1rLrCC-00045z-5h
for submit <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:51 -0500
Received: from mira.cbaines.net
([2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27]:47199)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <mail@HIDDEN>) id 1rLrC7-00045N-B8
for 68271 <at> debbugs.gnu.org; Fri, 05 Jan 2024 15:53:34 -0500
Received: from localhost (unknown [217.155.61.229])
by mira.cbaines.net (Postfix) with ESMTPSA id 30C1B27BBEA
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:24 +0000 (GMT)
Received: from localhost (localhost [local])
by localhost (OpenSMTPD) with ESMTPA id 0c47e6c0
for <68271 <at> debbugs.gnu.org>; Fri, 5 Jan 2024 20:53:23 +0000 (UTC)
From: Christopher Baines <mail@HIDDEN>
Date: Fri, 5 Jan 2024 20:53:22 +0000
Message-ID: <7bb6eeca77516fdd01e9b0b98eb9e21ac87c7509.1704488002.git.mail@HIDDEN>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
References: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
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: -1.0 (-)
Use delete-duplicates/sort rather than delete-duplicates, as this seems to
perform a little better, at least when testing by computing derivations
targeting i586-pc-gnu for all packages.
* guix/packages.scm (input<?, deduplicate-inputs): New procedures.
(bag-derivation, bag->cross-derivation): Use deduplicate-inputs.
Change-Id: Ic47b50aa52f11d701e5aefa2a095219e3a98cfd1
---
guix/packages.scm | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/guix/packages.scm b/guix/packages.scm
index 930b1a3b0e..09dc88e2af 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -1889,6 +1889,21 @@ (define (input=? input1 input2)
(derivation=? obj1 obj2))
(equal? obj1 obj2))))))))
+(define (input<? input1 input2)
+ (let ((label1 (first input1))
+ (label2 (first input2)))
+ (if (string=? label1 label2)
+ (let ((obj1 (second input1))
+ (obj2 (second input2)))
+ (if (and (derivation? obj1) (derivation? obj2))
+ (string<? (derivation-file-name obj1)
+ (derivation-file-name obj2))
+ #f))
+ (string<? label1 label2))))
+
+(define-inlinable (deduplicate-inputs inputs)
+ (delete-duplicates/sort inputs input<? input=?))
+
(define* (bag->derivation bag #:optional context)
"Return the derivation to build BAG for SYSTEM. Optionally, CONTEXT can be
a package object describing the context in which the call occurs, for improved
@@ -1911,7 +1926,7 @@ (define* (bag->derivation bag #:optional context)
;; that lead to the same derivation. Delete those duplicates to avoid
;; issues down the road, such as duplicate entries in '%build-inputs'.
(apply (bag-build bag) (bag-name bag)
- (delete-duplicates input-drvs input=?)
+ (deduplicate-inputs input-drvs)
#:search-paths paths
#:outputs (bag-outputs bag) #:system system
(bag-arguments bag)))))
@@ -1951,9 +1966,9 @@ (define* (bag->cross-derivation bag #:optional context)
all))))
(apply (bag-build bag) (bag-name bag)
- #:build-inputs (delete-duplicates build-drvs input=?)
- #:host-inputs (delete-duplicates host-drvs input=?)
- #:target-inputs (delete-duplicates target-drvs input=?)
+ #:build-inputs (deduplicate-inputs build-drvs)
+ #:host-inputs (deduplicate-inputs host-drvs)
+ #:target-inputs (deduplicate-inputs target-drvs)
#:search-paths paths
#:native-search-paths npaths
#:outputs (bag-outputs bag)
--
2.41.0
X-Loop: help-debbugs@HIDDEN
Subject: [bug#68271] [PATCH 1/3] guix: utils: Add delete-duplicates/sort.
Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: guix-patches@HIDDEN
Resent-Date: Fri, 12 Jan 2024 13:55:02 +0000
Resent-Message-ID: <handler.68271.B68271.170506764131745 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 68271
X-GNU-PR-Package: guix-patches
X-GNU-PR-Keywords: patch
To: Christopher Baines <mail@HIDDEN>
Cc: Josselin Poiret <dev@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>, 68271 <at> debbugs.gnu.org, Ricardo Wurmus <rekado@HIDDEN>, Christopher Baines <guix@HIDDEN>
Received: via spool by 68271-submit <at> debbugs.gnu.org id=B68271.170506764131745
(code B ref 68271); Fri, 12 Jan 2024 13:55:02 +0000
Received: (at 68271) by debbugs.gnu.org; 12 Jan 2024 13:54:01 +0000
Received: from localhost ([127.0.0.1]:35216 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1rOHyz-0008Fq-A6
for submit <at> debbugs.gnu.org; Fri, 12 Jan 2024 08:54:01 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:36810)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <ludo@HIDDEN>) id 1rOHyx-0008Fc-2x
for 68271 <at> debbugs.gnu.org; Fri, 12 Jan 2024 08:54:00 -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 <ludo@HIDDEN>)
id 1rOHyq-0001LQ-HZ; Fri, 12 Jan 2024 08:53:52 -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:References:In-Reply-To:Subject:To:
From; bh=c4JbLNJ7In3P2B6B1lKm+fHIhkAAsb4pISt/ruXSRZw=; b=D37tEVyFiGqSXa3n1uT2
2Y4HLdcsCFd03dkVdxHLdDsQkDyWqxZVau0vZgHgLXBzbGj5fuavxbjNlcBxJVhFtF1k7oezHRhyd
WKY+OYB+GnNM/JhCinzB5CdlkKXievM1GS/iC97jKbntjoiXJcsKuVlyUk8Ap9d/nlvg7jAz4jsX1
vN8Hx9gUC0k/7I2V/JDT+PYYyHLwIg0pjtfY7tXXNX4p/z0WKYBz/viBwGxNu0UH950C45zhgXWXR
GtiNsjWoeBXxiuu4b4mAHFORrVznXNJ9xsTfGghrb7MAVU4I2p8KIjTuidJG9dnsTc59PP0quLpih
eb/QBrvSF9DUyg==;
From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
In-Reply-To: <ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
(Christopher Baines's message of "Fri, 5 Jan 2024 20:53:20 +0000")
References: <87h6jrqzc7.fsf@HIDDEN>
<ce0156e7528f6a6a54f0469774b41604e7872a22.1704488002.git.mail@HIDDEN>
Date: Fri, 12 Jan 2024 14:53:43 +0100
Message-ID: <87h6jik68o.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
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: -3.3 (---)
Christopher Baines <mail@HIDDEN> skribis:
> Similar to delete-duplicates, but sorts the list first and then compares =
the
> pairs in the list. This is faster than delete-duplicates for larger lists.
We=E2=80=99re dealing with small lists here though (derivation inputs). Di=
d you
try to time the benefit?
There=E2=80=99s a complexity/benefit tradeoff and I wonder if it cuts it.
> +(define* (delete-duplicates/sort unsorted-lst less #:optional (equal? eq=
?))
> + (if (null? unsorted-lst)
> + unsorted-lst
This =E2=80=98if=E2=80=99 is unnecessary.
> + (let ((sorted-lst (sort unsorted-lst
> + ;; Sort in the reverse order
> + (lambda (a b) (eq? #f (less a b))))))
Just: (negate less).
> + (let loop ((lst (cdr sorted-lst))
> + (last-element (car sorted-lst))
> + (result (list (car sorted-lst))))
> + (if (null? lst)
> + result
> + (let ((current-element (car lst)))
Please follow the convention of using =E2=80=98match=E2=80=99 rather than c=
ar caddr
caddddar (info "(guix) Data Types and Pattern Matching"):
(match lst
(()
result)
((head . tail)
=E2=80=A6))
Ludo=E2=80=99.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.