From debbugs-submit-bounces@debbugs.gnu.org Sat May 24 13:13:44 2025 Received: (at submit) by debbugs.gnu.org; 24 May 2025 17:13:44 +0000 Received: from localhost ([127.0.0.1]:34871 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uIsRI-000209-GZ for submit@debbugs.gnu.org; Sat, 24 May 2025 13:13:44 -0400 Received: from lists.gnu.org ([2001:470:142::17]:34238) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uIsRE-0001zn-RR for submit@debbugs.gnu.org; Sat, 24 May 2025 13:13:37 -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 1uIsR8-0000lh-DV for guix-patches@gnu.org; Sat, 24 May 2025 13:13:30 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uIsR6-00060q-G6 for guix-patches@gnu.org; Sat, 24 May 2025 13:13:30 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-443a787bd14so13616855e9.1 for ; Sat, 24 May 2025 10:13:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748106806; x=1748711606; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Imlu4CdBW2wUCfYrPnDGzdbrN4qwm3qVLTEXQWtIBW0=; b=CQ+T9zHrTQHdnVwu5+ioc4wpVrkAtS7u5XN/iLDFs17+7Y0O6heK/32v6bG6kZPmQF mxfINqWATiXmJCrR3Pru+EP95bEZ7ZTgh3C2PwLDc9u3Uljryzsk75/1s0FKCXtJsR5M 4wmfwWHCB1hmWKHF3uYJHFHRzk30VGAPc8X0D+2/W6ml/iSUll7qoluvhazlrwNKXfm+ 1QYaaTsJZDnImKo19ZZdGTBOnVTflodDS9iCITGlF/ISL6YBpLzcLv1aSUn/jDxVPiT6 yNEhDMpbgYDDhpynOHSLLySDRNry+NKW5cfXs4OR0teB+v3MtR5+kgUhdfwJGtm3mpRH 02nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748106806; x=1748711606; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Imlu4CdBW2wUCfYrPnDGzdbrN4qwm3qVLTEXQWtIBW0=; b=IMXjIfqokAV+Zk9ttbgK85dGqG76uOCOzxV/2UPGsPqSmhoMLykYC9tnBA0AqMjM2l MaQEr01g/L3juHqnaOPR8NNHd9w8yxA2HuogtQ0ZK5oTEIYzoVP03/e4Fu7glnpphJhT 7uERTj31hA1PEW3ztH50qJfX3ONUVlssiHx36y5qScqs18fQutyMChaS1P7T+Jafe6xI Q9HJSh2SxE70+jUbuUo7UU+Y2BAwMfMS6K7UjHC69KdornykWMTpweJwF8aa4hDPAsaH gmlPfpUFKukILJnHicY13EiGPVk4UGdnXtMclVJ1wUll6We9qIbAyLQP3PTgYP+wagfs Tpew== X-Gm-Message-State: AOJu0YxkwIhbkLPEPAV9lG/+jeHJHZ2cKOcbgPLcTxUbcaLo3pp5MdsD w4/5DV3M49ylzT0fEMNrmGRnYTwIs4uT50EpySnJcrr9QbvoC4fol8hF/3wrmg== X-Gm-Gg: ASbGncvMSvbTJWAY72XeOHP1OLl7JaAP5ta9mAZPsrzCHPGwh8T8hHzmcHDzm2sVL3l QgeIcgRSi30eV4WmkjACd4LOuqiH/y4RKIPrtIO7gBOHN6IDbk74h/t0w1ukmhK0gk3pY6ipstg YZewPVSH01cIsF3TxAqjdBnoMVIINm8Q9ygnrpNRFYbZ/AMcd8wH4BnCaZU9sDhYWt0FiN01sCA m/AgIgO6bpW9fofBpr2ZyU5Z44p3w3YyNCUt3aMoCYBhK0S9+S4ErUKblDODR9hEjs+g7UuugUR HOxGcPH6WpkUyWyk7s+hKIrD6MUR8YmXNCDnOVIYuJLYbTpBKtEIG7WqQK+6Aec= X-Google-Smtp-Source: AGHT+IGRBv5mzLz+TaYIC1nSRw+nXQCFkeTb9sZHJGFEjNNNnanSWXXIZceGOmxHAyhjWTt4xpiDJw== X-Received: by 2002:a05:6000:3108:b0:3a3:6eb9:6064 with SMTP id ffacd0b85a97d-3a4c15087demr6723402f8f.17.1748106805857; Sat, 24 May 2025 10:13:25 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442ebd46aa4sm251795235e9.1.2025.05.24.10.13.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 May 2025 10:13:25 -0700 (PDT) From: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= To: guix-patches@gnu.org Subject: [PATCH] pull: allow filtering which channels to pull from the CLI Date: Sat, 24 May 2025 19:12:35 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Christopher Baines , Josselin Poiret , Ludovic Courtès , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=sergio.pastorperez@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit Cc: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a list of channels to pull. Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 --- guix/scripts/pull.scm | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 76aed0b5cc..61a68b8d70 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -839,21 +839,41 @@ (define (validate-cache-directory-ownership) (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") - (define (no-arguments arg _) - (leave (G_ "~A: extraneous argument~%") arg)) + (define (filter-channels channels names) + "Filter CHANNELS whose name symbol is present in NAMES list. +If NAMES is an empty list, don't filter anything. Warn when a name is not +available in the channels list." + (if (null? names) + channels + (let ((available-names (map channel-name + channels))) + (for-each (lambda (name) + (unless (member name available-names) + (warning (G_ "Channel '~a' not present in channel list~%") + name))) + names) + (filter (lambda (ch) + (member (channel-name ch) + ;; A channel named guix must always be present. + (cons* 'guix names))) + channels)))) (with-error-handling (with-git-error-handling (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler no-arguments)) + (list %default-options))) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (profile (or (assoc-ref opts 'profile) %current-profile)) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?)) - (verify-certificate? (assoc-ref opts 'verify-certificate?))) + (verify-certificate? (assoc-ref opts 'verify-certificate?)) + (selected-channels (filter-map + (match-lambda + (('argument . name) (string->symbol name)) + (_ #f)) + opts))) (cond ((assoc-ref opts 'query) (process-query opts profile)) @@ -877,7 +897,8 @@ (define-command (guix-pull . args) (ensure-default-profile) (honor-x509-certificates store) - (let* ((channels (channel-list opts)) + (let* ((channels (filter-channels (channel-list opts) + selected-channels)) (instances (latest-channel-instances store channels #:current-channels base-commit: 096dedd0bb13523002c814b001429c2f65b6f10d -- 2.49.0 From debbugs-submit-bounces@debbugs.gnu.org Sat May 24 17:23:07 2025 Received: (at 78580) by debbugs.gnu.org; 24 May 2025 21:23:07 +0000 Received: from localhost ([127.0.0.1]:36868 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uIwKg-0008T5-Jj for submit@debbugs.gnu.org; Sat, 24 May 2025 17:23:07 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:52712) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uIwKe-0008Ry-8e for 78580@debbugs.gnu.org; Sat, 24 May 2025 17:23:04 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-442d146a1aaso11757185e9.1 for <78580@debbugs.gnu.org>; Sat, 24 May 2025 14:23:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748121777; x=1748726577; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aawEU7QOFC+tmxP6JQHDDyu9x1YmCTSQcVdYtZJof98=; b=kdbaUaRQBIfv7TmcjRtV3nmStY9E7PTf6NMzZPvwCno/QZGA2eqDgKzw4R7ZEjXfX/ LkbM8GTSXuIlqIpfbMPWsGa7vI5TpDm2rGc6etU4hJT5jXL8RibG4utUTa/GblDKuU+9 mzLFeJ2plAsIy4UhZd0QsbK/9M4bnIrkOJ2tyDpoVMgVNxsAZYUfe7V2oKu9KjW6abZG UcLc7BvXkfU2SDooKJDBhF+2QCwZ1NBx1IgbasQBCrCnjYvevKTAUMM4Dg/sMTdV3am8 7v+kYGlletxzoJCuDJvWWigzjPVXdMVCiLfkt1FjU2cicOJOO2xBkx6YKh0TXzPEFBy6 Go5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748121777; x=1748726577; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aawEU7QOFC+tmxP6JQHDDyu9x1YmCTSQcVdYtZJof98=; b=pN9/ZY3pUFH3Y5zgc5B9yQOz/8w48pIvL5KdzfnYKhN8bvsfDwATWbFJCoNwW1BTLD 7BBywjj8mEvMJ1YtBUqNrK3PVnmY1aVTWjUYEOoiYJRaGOrybzZ84CrOWwrzR7zPHFyZ INfI8jF0VHFPtkzWmVKJ0ShJ5QZjJ3XpXnhpG3wT7fDcjp5hDAczIF4iasuWVsey0mYx 1GKzBPtIbjJm4Pqg0RdXp43I0nPKyvBXST1/Tv5EglVgKVgfYJ1sfcosQcUiTEPwXv8Q KpO9d1eBDNvYGknb6egZGZEn72iOrP1czg2n7wN3ef0JmJISptL/emK57M0sKLMp72xO XSRw== X-Gm-Message-State: AOJu0Yxu/w6uwgh8JyKGR+xsV67z+wrdyDNd+SUEgaCD1GMtU9i1XyU4 GHCHg2LBwn9uG5lvz+NRE6cQmtJZp8030eqwFgj9d7f4oDTC32/VXwdt8MTN5A== X-Gm-Gg: ASbGncu5ymFe0lXt5fYYu4lxkxknK4Oq/OqDJVhdFpqCRJznD9KAqPvg057GcFpNQBi lAhA6YmL87B71PHCj7+1eJ6pYNVqqSBgdHBzNeuvo32kn08Or7qnRZ2o4ktVu0qzf19WcHTQ6ZM x3XQZZNOIm9YrZ/K879sLNa3P1e8+T4VHdq5E2I6lKbNGahPcnSYRg2RcH0RrO1UsZXA9aswqg6 9/WfYI2wIDgzRoWkqkhdTW2E6WmTuu+DV9lEh5Lis+0Bj8F7EIUBNNnrEU4FavzcHwujGwFgu7Q 92x5bbHcC/+qUbh74CweMOOeQAMU8mKYVD+qsOfstgJcRTuJTOmjT5jK6o3wo+Xo0niquw8bNQ= = X-Google-Smtp-Source: AGHT+IEVWdwJL/B6PXawvAK0HAr4O75Rtv+demGOJF7gPH9rT6mSAmRJ7ZiQb0jQiTUmgAqUTH+Tdw== X-Received: by 2002:a05:600c:1385:b0:43d:3df:42d8 with SMTP id 5b1f17b1804b1-44c93da7c08mr28789665e9.6.1748121777338; Sat, 24 May 2025 14:22:57 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a35ca4d263sm30140420f8f.3.2025.05.24.14.22.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 May 2025 14:22:56 -0700 (PDT) From: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= To: 78580@debbugs.gnu.org Subject: [PATCH v2] pull: allow filtering which channels to pull from the CLI Date: Sat, 24 May 2025 23:22:01 +0200 Message-ID: <24f41b12012dc5551391f516b8dc3088563db9b5.1748121721.git.sergio.pastorperez@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Sergio Pastor Pérez , Christopher Baines , Gabriel Wicki , Josselin Poiret , Ludovic Courtès , Mathieu Othacehe , Maxim Cournoyer , Simon Tournier , Tobias Geerinckx-Rice Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a list of channels to pull. Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 --- doc/guix.texi | 11 +++++++++-- guix/scripts/pull.scm | 42 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index e4e2b853f1..e3de7ce47b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4656,8 +4656,15 @@ Invoking guix pull deleting /var/guix/profiles/per-user/charlie/current-guix-1-link @end example -The @command{guix pull} command is usually invoked with no arguments, -but it supports the following options: +The general syntax is: + +@example +guix pull [@var{options}] [@var{CHANNELS}@dots{}] +@end example + +The optional @var{channels} argument filters the list of pulled channels +to those whose names match the given list. The channel named @dfn{guix} +is always pulled. @table @code @item --url=@var{url} diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 76aed0b5cc..677df965bb 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -81,8 +81,13 @@ (define %default-options (validate-pull . ,ensure-forward-channel-update))) (define (show-help) - (display (G_ "Usage: guix pull [OPTION]... -Download and deploy the latest version of Guix.\n")) + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] +Download and deploy the latest version of Guix. + +If CHANNELS are specified, pull only from channels with those names (e.g.: +'guix pull rde nonguix' pulls only from the 'guix', 'rde', and 'nonguix' +channels as defined in your channel configuration). +The channel named 'guix' is always pulled.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " @@ -839,21 +844,41 @@ (define (validate-cache-directory-ownership) (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") - (define (no-arguments arg _) - (leave (G_ "~A: extraneous argument~%") arg)) + (define (filter-channels channels names) + "Filter CHANNELS whose name symbol is present in NAMES list. +If NAMES is an empty list, don't filter anything. Warn when a name is not +available in the channels list." + (if (null? names) + channels + (let ((available-names (map channel-name + channels))) + (for-each (lambda (name) + (unless (member name available-names) + (warning (G_ "Channel '~a' not present in channel list~%") + name))) + names) + (filter (lambda (ch) + (member (channel-name ch) + ;; A channel named guix must always be present. + (cons* 'guix names))) + channels)))) (with-error-handling (with-git-error-handling (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler no-arguments)) + (list %default-options))) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (profile (or (assoc-ref opts 'profile) %current-profile)) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?)) - (verify-certificate? (assoc-ref opts 'verify-certificate?))) + (verify-certificate? (assoc-ref opts 'verify-certificate?)) + (selected-channels (filter-map + (match-lambda + (('argument . name) (string->symbol name)) + (_ #f)) + opts))) (cond ((assoc-ref opts 'query) (process-query opts profile)) @@ -877,7 +902,8 @@ (define-command (guix-pull . args) (ensure-default-profile) (honor-x509-certificates store) - (let* ((channels (channel-list opts)) + (let* ((channels (filter-channels (channel-list opts) + selected-channels)) (instances (latest-channel-instances store channels #:current-channels base-commit: 096dedd0bb13523002c814b001429c2f65b6f10d -- 2.49.0 From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 03:06:32 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 07:06:32 +0000 Received: from localhost ([127.0.0.1]:41496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ5RI-0003pA-6T for submit@debbugs.gnu.org; Sun, 25 May 2025 03:06:32 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:55354) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ5RE-0003oT-Qg for 78580@debbugs.gnu.org; Sun, 25 May 2025 03:06:29 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3a36e0d22c1so825045f8f.2 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 00:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1748156782; x=1748761582; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=eJJCm7SKZU29wHYRLea0g0OPCs2f3fuHAuus/TC/TDo=; b=lj0RUsMTtFUyXP857D8r8Gs2em65kW6zSNXt56dAVYx30FSH7eCy+jbfluxQIwfRX4 +e/4+8+683u6Ab4guScKEMb0ZO7v2L7RRMumlodFBx+YXf4m4dQUcB8AvWnJWw0k8Kqw ucvtbtNJPzQ0iAEmjQex0GXFliTYC9eiwZyB2IlmWbKKHgkx8IKhNMexBasE+xzZx/cf Yv3+O0NDwDZi70f7TtSUbCuYpfj2mbJ6B1+XubEw4aywGe1/n0G98TXBj3Hw84fe2s8R IKzd72/W4qSNlTzB1wJIYR+oqb3llYMCzhRWBRMht/Ph6yBBI2eo+ODW/83O04WeJ7ix XrFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748156782; x=1748761582; h=content-transfer-encoding:mime-version:message-id:date:user-agent :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eJJCm7SKZU29wHYRLea0g0OPCs2f3fuHAuus/TC/TDo=; b=kdh6BuZRzTrkqZCWjDXieLBRwPpDdMh39ALJMcwUwuDyG2zJ+RtG8d9EckPtd7nWrb DAzT6b+IbKkU2OSXobQjM5z3JoCi+tvOuWf8n/IiJ+ZEmhcjIYlbAL0Vn8Fw/j9h+VHf NYB9duGWL/XWZYIjkkvRiTebLmeQoUxugdnLHT7QmCR/d2Bq+flB9AJcUeuBH0rC3IR4 nksMjzpa8ux6oOQFqKuORSZ9RdH4M6LSxtxGJIzFFUiHQGrNpLtkPGEa19SbfN58QKEO 1r6FYuIu9zZi44eBwW6j+TtBES0cgx7jTXJLZVBOlmJdYHUTA1waj9o1Xr8My82Fk2um O3uA== X-Gm-Message-State: AOJu0Yy7jlohQcl7YN1ghcoeK52BAUcU1PV589utAk8fIF+qBeH0pgoc n1kTQqgEAQy7HWqRzOr2TUY8dn7ZBWI8pwyICR5TVXZx6G4Wt8Q76pmCbi7rj50OIA0= X-Gm-Gg: ASbGncuqD6yaaI4ZZDaFYh5RrrwUFatFOljVoh0UTaHi0Si9+tdIEyhKKQwEuFbh1gd OWcYAQzCdgDwFeIREchYZK02tzSnEVYCtlTZkY9aYl8OmJx3QRgsmRhh2joRUh0B4Hv2n3L0WQS 8pl9GMcvbJXXdwN9hW4dr+92QQRAyZ9sP+t3eJPdaidsknl3KP/yAMNsWnLIA7PNvIrDRy9Odd+ /Tsubi4NFggZO7jDUmdegw7JEvZmfjy3QLGDGE9Sk+9RZVxIlA/N81yB04KJ+3oDDVuRnKLt58Q YOXQniLTP08fChCposWrvlzT04vZ69eMxuGLut+jCJsejXV2 X-Google-Smtp-Source: AGHT+IFsGgHsG1l86hqLRNQX1V1sGuXDrCcAU6AyTERlbjyKYP659Nqu/j241OKi5lWlNa7LMVUPDQ== X-Received: by 2002:a5d:64c6:0:b0:3a1:f72a:8948 with SMTP id ffacd0b85a97d-3a4cb4086b1mr3899201f8f.9.1748156782042; Sun, 25 May 2025 00:06:22 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-447f7bae847sm194089775e9.36.2025.05.25.00.06.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 00:06:21 -0700 (PDT) From: Sergey Trofimov To: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI User-Agent: mu4e 1.12.11; emacs 30.0.92 Date: Sun, 25 May 2025 09:06:20 +0200 Message-ID: <87r00d185v.fsf@sarg.org.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Sergio, Sergio Pastor Pérez writes: > * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a list > of channels to pull. > > Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 > --- > doc/guix.texi | 11 +++++++++-- > guix/scripts/pull.scm | 42 ++++++++++++++++++++++++++++++++++-------- > 2 files changed, 43 insertions(+), 10 deletions(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index e4e2b853f1..e3de7ce47b 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -4656,8 +4656,15 @@ Invoking guix pull > deleting /var/guix/profiles/per-user/charlie/current-guix-1-link > @end example > > -The @command{guix pull} command is usually invoked with no arguments, > -but it supports the following options: > +The general syntax is: > + > +@example > +guix pull [@var{options}] [@var{CHANNELS}@dots{}] > +@end example > + > +The optional @var{channels} argument filters the list of pulled channels > +to those whose names match the given list. The channel named @dfn{guix} > +is always pulled. > wouldn't it be better to let user decide whether `guix` channel has to be pulled? The use-case is simple - I've made a change in my personal channel and I want to apply it without risking to build missing / download new substitutes of the main channel. From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 03:22:20 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 07:22:20 +0000 Received: from localhost ([127.0.0.1]:41639 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ5gZ-00053k-JN for submit@debbugs.gnu.org; Sun, 25 May 2025 03:22:19 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:52316) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ5gX-00053M-HS for 78580@debbugs.gnu.org; Sun, 25 May 2025 03:22:18 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-440685d6afcso15778725e9.0 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 00:22:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748157731; x=1748762531; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=+MECqRBnzlOYuTaa/JriQThR9EU6pio8iJ8+w6CKCvU=; b=k56OjMdTPaOF17bvFnuiBEWNFNmZMQeKFshIPJ1lVQW7udCj3vs1yG8vKSgI+EqBLh UFtESQ9dU0MuUDt8b9AZhSnkWb/6XVP3gZbHOZHJqwoObATSfTilcpNjzczgsgmaOmLN TI1l9CPiShJwAS7h0d6bkS1FnI5IIDwh4+MBogqR9ef7YzFTlsYwXBr8871NBDqNntAY 8KRcCWaICt6XLXn6+Vv4leDglQOnUPPWUtfJByoI+RwowTq2Qy1T7Vu1dCbaPFPjg5HY 0xBYXaArfExmqmJopj4DBr/KEmkRg1ZtH1ZX78gwYp8a1r9Z93j3OFoe3uam0Vbod4J7 8VQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748157731; x=1748762531; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+MECqRBnzlOYuTaa/JriQThR9EU6pio8iJ8+w6CKCvU=; b=f4BgxITW6dg2D+T6Gxboss+earvdGTymPqgJP4n3X9oaR80A9DazVzT5xx1XCrsD7g QFyOWFVUa0Z8oEFDSDx8XgifG2cwTopWLWrmb704JCexwaIZ5V9HQ9Iw74ylOlCC0V/h fr6vl0Q/QvYz3Eg+w6xCnUzY7VztajLeOsNqCJNVKKVAOtkCmp516Yk4Et60zhsvpOoW vRfwuJAMeQz+ZRO8EwZ/N+QlMYyaDL4d1aojjnA/4jBm1oaUgm01CcKyRC3Wa/mXLk7R uj1OjK6ABJMjJIggby28UoNQrRZNEhPEcksvfOB7JRcqH7GdSs9zk41fgT1k3lsuxxmS QtXQ== X-Gm-Message-State: AOJu0YzCh7Imw8QKrMQa1Z5b4AUcD5miwyWbBG9jAXzrv4GBpK0fb/y5 ZDF5oPp1qU45jOqc3jETgT4V8fsiRMFdL/wDr+SyHqZzgQZh5v+LoeoG X-Gm-Gg: ASbGncuh9ACS7zJ/fHvuOLAsJxmLdyhOqwjW+8tSa2kMAakFQxMYhRvt7AWl9hUbUzl D26Shnu+yPoOLhd9DVuBZX8lci+WFD4W1dCF8ic9w+CHAA0ChRzRyCMSAt6zVBdg5bbRsSk8jjH 7hAG2J/DJRDyVwI990UmqvMM2RXffcsxBY70ExohujuTW0bsMs6TfnrCLUksmCw0w2JfENcVKbl Ha2V1wnh9bJZYdV1nKiAyqvBuViJjRIPJ25d3ILzdis+ti0BoqzxMVr9bsJIjB47BC/YLcNXm+u uUO9F2Mb70/NcsTS3T9QBQNXsACQLqiwm7CzZ7R5lH6SqxSFTiKuo2vWzmwT5Js= X-Google-Smtp-Source: AGHT+IGcg/s6/7Pjj3mrYyO8mHVxY7Cg9WFdWiFZ45U0VYKDVv577zfavX1Nm8ZkfL2WRtl9CPHDJw== X-Received: by 2002:a05:600c:190d:b0:442:ffb1:b58 with SMTP id 5b1f17b1804b1-44c9427f43emr38548655e9.12.1748157730869; Sun, 25 May 2025 00:22:10 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a37fb452e5sm13853123f8f.20.2025.05.25.00.22.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 00:22:10 -0700 (PDT) From: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= To: Sergey Trofimov Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI In-Reply-To: <87r00d185v.fsf@sarg.org.ru> References: <87r00d185v.fsf@sarg.org.ru> Date: Sun, 25 May 2025 09:22:09 +0200 Message-ID: <87cybx5f4u.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Sergey. Sergey Trofimov writes: >> +The optional @var{channels} argument filters the list of pulled channels >> +to those whose names match the given list. The channel named @dfn{guix} >> +is always pulled. >> > > wouldn't it be better to let user decide whether `guix` channel has to > be pulled? The use-case is simple - I've made a change in my personal > channel and I want to apply it without risking to build missing / > download new substitutes of the main channel. Unfortunately this is not possible. That was my initial idea as well, but the `guix' channel is required. If you allow it to compose the list of channels to pull without the `guix' channel, you get this error: --8<---------------cut here---------------start------------->8--- $ ./pre-inst-env guix pull rde Updating channel 'rde' from Git repository at 'https://git.sr.ht/~abcdw/rde'... Building from this channel: rde https://git.sr.ht/~abcdw/rde bf8f628 /home/pastor/projects/guix/puntos/dots/.config/guix/channels.scm:12:6: error: 'guix' channel is lacking hint: Make sure your list of channels contains one channel named `guix' providing the core of Guix. --8<---------------cut here---------------end--------------->8--- Once thing we could do, is to pin the Guix channel to the current commit so it does not pull. I can try to implement that if you would like to have that behaviour. From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 03:30:57 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 07:30:57 +0000 Received: from localhost ([127.0.0.1]:41713 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ5ov-0005mw-BR for submit@debbugs.gnu.org; Sun, 25 May 2025 03:30:57 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]:55437) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ5ot-0005mR-0a for 78580@debbugs.gnu.org; Sun, 25 May 2025 03:30:55 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3a36e0d22c1so834049f8f.2 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 00:30:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1748158249; x=1748763049; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pCmytG16TWVRrW6iUdYxvnS8q7GL6V0GUNiMbWuIzfg=; b=gmelf9A+yhQ2VamHlI04b3NmespHWKURQtvzK7ogsKZmXGWg/0WI1vD5oziymeyNCI ETfT2FGWpuXkTOT83N6IfZfKg8XB1/dml4DEkaCveS9+r8IV38H1q6bKDJML+Np/f4Yx uTBK4Jn0EsdF7ZcKpVfDGis23kY+ZWCCoXoUokb9vGodmdU7Em5jNuMo2cCD7+fER/WD P1kQjs+g8SBOpVAzQzpilEHxPiatA7nAVcwuhUKpuzJnKDi5cJp967jSzQS2MGJEa0Wy oMiSY/P+V9ua4NGlpQUcpvGfznJ+sda3tyqjCeemvKRI3DulO9voYXtc/jMqxhMLC4AQ rklQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748158249; x=1748763049; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pCmytG16TWVRrW6iUdYxvnS8q7GL6V0GUNiMbWuIzfg=; b=FUIkg94B/DNfM1D4Jgn14MZhxPnM1C340K0au18PNhruCioYJmSbJrZF4IERrLEAvw UvrqWVcdbtb3bxJsXPgHnciCLp2wSSO4gbChbkwyRHRFiEA9fABIXlXZan0+JKfOwDGY Y4Wh8l+gcYwlNya839P+RJoyEpHh9KhzGfB95tHwxprjG5hIwnYJtaI2y9nog4nLwtoU O1i6UjSgxyN58lurrLixziPzSerU8JwgyPJ4sBC94XRvOrYUJ4NxCzXMXbQqRCTRvxaS smB9SbR/9P8nepMe4Gm3rpzWy9zTTdFP0ciUj4wTiRLeY2ql0c6zmlBLyXSsp6iupzXm 9l/Q== X-Gm-Message-State: AOJu0YxitWVboep/dcEEHjFctKs4HT5VmH0ug9WsdBaV38w9wESV+CNf wZb5904xHvJ+CePwIqXUEfHtQ5cNSYTN+IvFDydkmpLwuv6d4u+nQlKOKQ9mKluqhEI= X-Gm-Gg: ASbGncvr6/N//rponL78giSoUpQI8reqkvI6D8Zdtr+vC63dLSNjmFUr1XsqttDWemx 5PbLoKVg6vRZvU8QTniQ3rFaKHOmd5flvHMO1PXs/7U1/5FqtRvcNSDHhFECY8dLaRZd8wPm4TL ZOrR49BPTxMUr1uU0s4af50qI0+6A7Qx5uVU9bczDkZ36T5/fF4FMzgE98yMHK6EkS2nUj9HDKa aE++HiL+o5xXzbm12/LHpXQRYp0cVSr0MdPqGrieS0lO8nHxSbbhazVxcu5atcCZQkjF4qnOklu Kq7X8bK4lqi4NceDW8iEwbuzaii3m1N3MFVwjM/iKq06btL80VkcdRSpbXyui2GPm3m+MNUxvTA VCor+ij5slpwZ9QWBptM= X-Google-Smtp-Source: AGHT+IHDlce3hsSkfYddiZNMbCDEP54I/UbtlZ7v4dQR3FBHabHEzeKvbuxkih+H/1HrrDFFzqzUxA== X-Received: by 2002:a5d:584f:0:b0:3a4:d6aa:1277 with SMTP id ffacd0b85a97d-3a4d6aa16f5mr498154f8f.37.1748158248853; Sun, 25 May 2025 00:30:48 -0700 (PDT) Received: from localhost (static.210.80.180.157.clients.your-server.de. [157.180.80.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-447f6f04334sm195380325e9.10.2025.05.25.00.30.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 00:30:48 -0700 (PDT) From: Sergey Trofimov To: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI In-Reply-To: <87cybx5f4u.fsf@gmail.com> ("Sergio Pastor =?utf-8?Q?P=C3=A9r?= =?utf-8?Q?ez=22's?= message of "Sun, 25 May 2025 09:22:09 +0200") References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> User-Agent: mu4e 1.12.11; emacs 30.0.92 Date: Sun, 25 May 2025 09:30:46 +0200 Message-ID: <87ldql1715.fsf@sarg.org.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Sergio, Sergio Pastor Pérez writes: > Hello Sergey. > > Sergey Trofimov writes: >>> +The optional @var{channels} argument filters the list of pulled channels >>> +to those whose names match the given list. The channel named @dfn{guix} >>> +is always pulled. >>> >> >> wouldn't it be better to let user decide whether `guix` channel has to >> be pulled? The use-case is simple - I've made a change in my personal >> channel and I want to apply it without risking to build missing / >> download new substitutes of the main channel. > > Unfortunately this is not possible. That was my initial idea as well, > but the `guix' channel is required. If you allow it to compose the list > of channels to pull without the `guix' channel, you get this error: > --8<---------------cut here---------------start------------->8--- > $ ./pre-inst-env guix pull rde > Updating channel 'rde' from Git repository at 'https://git.sr.ht/~abcdw/rde'... > Building from this channel: > rde https://git.sr.ht/~abcdw/rde bf8f628 > /home/pastor/projects/guix/puntos/dots/.config/guix/channels.scm:12:6: error: 'guix' channel is lacking > hint: Make sure your list of channels contains one channel named `guix' providing the core of Guix. > --8<---------------cut here---------------end--------------->8--- > > Once thing we could do, is to pin the Guix channel to the current commit > so it does not pull. I can try to implement that if you would like to > have that behaviour. It'd be nice, otherwise one would need to use `--commit=$(guix describe ...)` which might work, but is not that user friendly. From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 04:20:59 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 08:20:59 +0000 Received: from localhost ([127.0.0.1]:42052 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ6bK-00015G-L2 for submit@debbugs.gnu.org; Sun, 25 May 2025 04:20:59 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:44437) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ6bI-00014q-Eo for 78580@debbugs.gnu.org; Sun, 25 May 2025 04:20:57 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3a4d33f971aso324837f8f.1 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 01:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748161250; x=1748766050; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=JvcG4Jt6cMIGek6CbOx41UmNOZ9Qk+85DJUfY4oKVsM=; b=DCx0hR4wxVL562BSNvZrLiOSNmjruiH4484TuyeynfrJaT2ewn5AoJb/CsNrQB2yKW 1plMVUKnhuovAvq8dnwLkgJ20EZ5/xkJxRHVgq4Al77qVyjK3tvscZQSD9XcbrKPU9dq iCKOVK7mAp7DfiFUs0YfhS3g/wXD+iEGGUdT2TuFnzyVemyVIkoVYpUr1trdqEgUeyGM sv1ukzy93cO9RkVrh9ojR/dpjXvO0eg+45qBZswqUtih1XdW2oXh8NwV/kLgsc46U5Jd BR7Hl9W66Jfp+yjW5P6mWuXXqcBEObY67HZhd+4su2D5Q5P/kmVnu2dfaxtrgufGWKEq XsSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748161250; x=1748766050; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=JvcG4Jt6cMIGek6CbOx41UmNOZ9Qk+85DJUfY4oKVsM=; b=icpdTUgVQ5Lf1K/f1IxN+FYNVr8BKyG+bBFC2cU5pz8TOxtZu5Q7XehxKq7tVIoN/V GtzIT50k2/gp+uiO4Kf1vUyQeGpicJ3OcbtD8ltSf0hesKvxJ1H2KAZeq98h2phExsqY b2mrRn9MocmUckwoIwXNVuugOHMFvifsYVStx3jYi7e9lY/ibeMSiIHOcSg4b8TfZ0kB ZkozIayvZB0pqP1Ya5XZl+RkC7lzJRxmMmGiGfBJIZZwfsiQDUwVwrEl6XatPLcqCdvc LKxU4xwdjeuGH5PEdQuiPBEfJrmhrTx9c42ihiyrEn45SrokA18xYJ4YFzbtg8bJoaNp gd9g== X-Gm-Message-State: AOJu0YyXHsGqxvUJGz4MOLM4z5YPaVq1AgWst4NxysdVMGEBo8gK8w1R L9zCRUTepohNpXJPGeeaReOmGfBig3hAEXETy+4ashfw5gXS3BAEy2WicEf/P0Ce X-Gm-Gg: ASbGncuf3OicaFFK5qHbueND58D6/YqoZ4kiMT1nvmMUKkFbMXiBaGGbmkNDWqj4g08 rvOmraczJZr7ETJPwqCIoEBHHwgg9IDORbtFj6rfInJf6BlWKKn5YhIy75wdyMJBEQrKmwnRWab AljQ4VUaTNflf262KEyN3aYf8sYq8J/vZYdGoVrDhSLTCYitWL63A91u3hX5Fxvk+yDSS86PoO3 sKWtoxdpa4YArWiybS61OD7olhN7JGhiM9DU4T3E2jeJDaRU0Tc1LtVunoq6EBDxBk2+YgQ16OZ Tlx2scL7xQFhXw2iyF9dYx/3lyZh9W8vrRK5phfCP5AzB93CA/JLIu5mub8FmVbMRZ6daCt9Mg= = X-Google-Smtp-Source: AGHT+IG1ekIwOSexz2NwNEZzwcGiGPXI+fRFALTbVbmeO6Ku4KEQTqzo9fFztQaFnEFZMnE4Q88y6g== X-Received: by 2002:a05:6000:2f88:b0:3a4:d0c7:312b with SMTP id ffacd0b85a97d-3a4d0c73a6emr2689866f8f.26.1748161249614; Sun, 25 May 2025 01:20:49 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442ffaa75cfsm191064265e9.1.2025.05.25.01.20.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 01:20:49 -0700 (PDT) From: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= To: 78580@debbugs.gnu.org Subject: [PATCH v3] pull: allow filtering which channels to pull from the CLI Date: Sun, 25 May 2025 10:20:17 +0200 Message-ID: <73fbe44376bf6ce0957da5069cb5f27ef4fb9839.1748161217.git.sergio.pastorperez@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Sergio Pastor Pérez , Sergey Trofimov , Christopher Baines , Gabriel Wicki , Josselin Poiret , Ludovic Courtès , Mathieu Othacehe , Maxim Cournoyer , Simon Tournier , Tobias Geerinckx-Rice Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a list of channels to pull. Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 --- doc/guix.texi | 10 +++++++-- guix/scripts/pull.scm | 52 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 52 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index e4e2b853f1..26f16cfa7a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4656,8 +4656,14 @@ Invoking guix pull deleting /var/guix/profiles/per-user/charlie/current-guix-1-link @end example -The @command{guix pull} command is usually invoked with no arguments, -but it supports the following options: +The general syntax is: + +@example +guix pull [@var{options}] [@var{CHANNELS}@dots{}] +@end example + +The optional @var{channels} argument filters the list of pulled channels +to those whose names match the given list. @table @code @item --url=@var{url} diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 76aed0b5cc..8da7ec7ac4 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -81,8 +81,12 @@ (define %default-options (validate-pull . ,ensure-forward-channel-update))) (define (show-help) - (display (G_ "Usage: guix pull [OPTION]... -Download and deploy the latest version of Guix.\n")) + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] +Download and deploy the latest version of Guix. + +If CHANNELS are specified, pull only from channels with those names (e.g.: +'guix pull rde nonguix' pulls only from the 'guix', 'rde', and 'nonguix' +channels as defined in your channel configuration).\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " @@ -839,21 +843,51 @@ (define (validate-cache-directory-ownership) (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") - (define (no-arguments arg _) - (leave (G_ "~A: extraneous argument~%") arg)) + (define (filter-channels channels current-channels names) + "Filter CHANNELS whose name symbol is present in NAMES list. +If NAMES is an empty list, don't filter anything. Warn when a name is not +available in the channels list." + (if (null? names) + channels + (let ((available-names (map channel-name + channels))) + (for-each (lambda (name) + (unless (member name available-names) + (warning (G_ "Channel '~a' not present in channel list~%") + name))) + names) + (let ((program (car (command-line))) + (current-guix (find (lambda (ch) + (eq? (channel-name ch) 'guix)) + current-channels)) + (selected-channels (filter (lambda (ch) + (member (channel-name ch) + names)) + channels))) + ;; The guix channel must always be present. + (if (member 'guix names) + ;; If the guix channel is selected, let it pull. + selected-channels + ;; If the guix channel is not, pin it. + (cons* current-guix + selected-channels)))))) (with-error-handling (with-git-error-handling (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler no-arguments)) + (list %default-options))) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (profile (or (assoc-ref opts 'profile) %current-profile)) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?)) - (verify-certificate? (assoc-ref opts 'verify-certificate?))) + (verify-certificate? (assoc-ref opts 'verify-certificate?)) + (selected-channels (filter-map + (match-lambda + (('argument . name) (string->symbol name)) + (_ #f)) + opts))) (cond ((assoc-ref opts 'query) (process-query opts profile)) @@ -877,7 +911,9 @@ (define-command (guix-pull . args) (ensure-default-profile) (honor-x509-certificates store) - (let* ((channels (channel-list opts)) + (let* ((channels (filter-channels (channel-list opts) + current-channels + selected-channels)) (instances (latest-channel-instances store channels #:current-channels base-commit: 096dedd0bb13523002c814b001429c2f65b6f10d -- 2.49.0 From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 04:23:34 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 08:23:34 +0000 Received: from localhost ([127.0.0.1]:42075 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ6dp-0001Fc-Qv for submit@debbugs.gnu.org; Sun, 25 May 2025 04:23:34 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:60497) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ6dn-0001FD-8J for 78580@debbugs.gnu.org; Sun, 25 May 2025 04:23:31 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-3a375d758a0so1136165f8f.0 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 01:23:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748161405; x=1748766205; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=JwPiM1YuKvKCtk3R3SJqViwaFpOzxH8A1ZlLsGD9YFc=; b=CkX5OoWpiIn5jTPi1uK7wsihQhPdXdgvgKAEXCtKA6elOi6+70KFqarvzwWGESS3/M JFk/cu/iAw3qbFoyGtLCBBMUeSmDFdw/NyCsXy10cSfgxB9biAu1CYf6mGz+w0T5AYp0 4kQlCcuWKXveKDMpnvSRef/GtPmfO3GKDRBZLoIt0xWf6bsYQX0L2oNS7B+O2I/92eR5 GYrgYKdeolMVDWBHMw6MZAJWzYCYK18MC12viggn7itVWQIIDP6Lt0sDq9c+xSRwN85V xvFgBgyF2wILUmH/m6Fbzi+6C5bHK0jRXgtpmOkuJKd3G80ZK6SSTqJWrvLR63ENe8+G ce1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748161405; x=1748766205; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JwPiM1YuKvKCtk3R3SJqViwaFpOzxH8A1ZlLsGD9YFc=; b=lAMoqXgszljZW2Keah0iJMKrtVqwC7Hp2ht/JrWRP2USfRysrnp2J3W1OcNzKwqWzl VgkXzR8XUtevYMeWJvag5ub+cwOuKYaCIb9CpMkQ7K0iLV4iM6G5XrQAx/Iu5fUXpCWT VgmC8CQWw40q2ML4LQbfzo+b4qXOOMT3lXISP7BpFeqlmEGz1HjqyBXYwoIPVVbui0OP ULQD5xX/upxuWE7sR6gvIRHnarDEtx5MwkqGSntqdbGUrHzRTbBa87GPhPnANsxjau8f EW+RXFZ0mDmlNfSoSjNzPBQfxX13uc9MZpuHuewZSfnpWonQrk0yI7libBkWTtrGBYS3 aOFg== X-Gm-Message-State: AOJu0Yx/9KuzYzYLALoVnKhq8kGjiZlMy6UoJTc9NlqqdLa9ZjmduzhB NUmpkwBoiFxtYqqRJu2akAJ7eqshCHPTxzyN8DMgZt3zwCwSgvV8Xm+Toz+rCp/M X-Gm-Gg: ASbGnctr25O/MJh9mWrJ30+NSIjPMyOqqBvIKxGtb27G0Bqql5RdiFSeIYQeP5lPD65 Py6kgkywwRvlpS8vYiFL6Rtg/uZuQXHj5ZgibiT+KQNVqxWHED1CZOxDQE1Qzy/N67v169otmZG zyU4RkRqvgjZMXRbwL/ak6YNGCQ/Fxcm0HWy1PPiqJl7h2DZnSreBa2Qb4ovHwd5GAKwoz1cP9h 1GToGvGOuBcP2lVDi8kM2CfGrCjeMsgt4XYh1MfAgBKunzPyZMyee3llyupo82KRvJYfI7sAIvP l4htThuTwsK2K8s5xQeqzyZgwviqQkYvaiKahkaK+a9ylGzvAy2VGh4v+Yiv1kQ= X-Google-Smtp-Source: AGHT+IFPZhvdsZmobse9FqyEmEJhMih9moEOtBQ0m3gO4+OezrjyxSUZlMIpgY7elJ4/JathyS614g== X-Received: by 2002:a05:6000:26d1:b0:3a0:b1f7:c1da with SMTP id ffacd0b85a97d-3a4cb4b8353mr3553465f8f.46.1748161405003; Sun, 25 May 2025 01:23:25 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4d6c9faffsm598621f8f.74.2025.05.25.01.23.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 01:23:24 -0700 (PDT) From: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= To: Sergey Trofimov Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI In-Reply-To: <87ldql1715.fsf@sarg.org.ru> References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> <87ldql1715.fsf@sarg.org.ru> Date: Sun, 25 May 2025 10:23:23 +0200 Message-ID: <87a5715cas.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Sergey Trofimov writes: >> Once thing we could do, is to pin the Guix channel to the current commit >> so it does not pull. I can try to implement that if you would like to >> have that behaviour. > > It'd be nice, otherwise one would need to use `--commit=$(guix describe > ...)` which might work, but is not that user friendly. Done[1] :) Please let me know if you have any more feedback! [1] https://issues.guix.gnu.org/78580#5 From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 05:54:33 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 09:54:33 +0000 Received: from localhost ([127.0.0.1]:42809 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ83s-0000XC-Iq for submit@debbugs.gnu.org; Sun, 25 May 2025 05:54:32 -0400 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]:56724) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ83p-0000Wr-Ry for 78580@debbugs.gnu.org; Sun, 25 May 2025 05:54:30 -0400 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-ad572ba1347so206968666b.1 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 02:54:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1748166863; x=1748771663; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DUDqz9z0u8gBuw+A4pps+cG2kHvVJWzOJe1+sQNew7w=; b=ZvtYtWLp+kd0LIXn5jhSZn9U3zVT88VbH3oXKbhKj2B/qFMrXWkJ/8FbIMP1Ei01k+ UerIKUxBU4sG1fNzP+u7vke/6Ag4WSLWT3Xv615TJPjVDOfrbs9lm6nAIn4bFGLBQZ6j jaZhPjp60FmG2ypJ8ZittQmsMvZQYBZ3i89efZxwRV0MukHg0CToKqBfkty3M97+8KQA 9dpoMLWHVHFIyw2bmqFmjHfsu2sVvPF9VhVKZJjDwyN7WiNZiSZjyui8WRg8Y5QA8ycg KLvgYDKHVbJw2l1WIhi80K1JlK2j6EMiSjacYyr2xXUFcsnxTYsG0egFttu+c/0l7kc8 LxxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748166863; x=1748771663; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DUDqz9z0u8gBuw+A4pps+cG2kHvVJWzOJe1+sQNew7w=; b=g789P8HwdKMT0+64QECXwbnsTQupGke728L/1NwtF7+GIHVZ76Rzf0lBLv1pWF8e4y rUA4hetaj9h7xNta1Kl2wUncWzHg8oj549OWKbPBbeyRuqvI+WR5l8PN4D/+g+AdWNUX HeU+d7pdR3zqaBZDkgHgDDjjLdXMhvip8Wg3sFkCBOPn5RPAlCWFfj5IqViHerWJ+0Ji /w9rai+ICJhilX+EtQoGHUJR3VqljVlGDu51GQydd3xBCMkevumFfnYgsDZXIp62Rlkt spEDu2Pw+3FbqyATy3gacEzAY1IWp9PJ1witponk5BZYqBS4d8itJgq8f1W3cwazCQOs eWtA== X-Gm-Message-State: AOJu0Yy42XGbQiILyneBYbmltAzBn/yNr+fMdUfsMJGKgFYYMM0cJTXE 9kA33rFgvBFVgKPmzJPlYPJulxDM+F34zGWH/XNkGXGyErzY4xTWVBmzzxDZMJdJsqE= X-Gm-Gg: ASbGncvo7yVle7ckU7ztqiqXbGx/LqMMYwRlS/PPWOR+hb3C/vTx60RJhL354XXqop1 XSPDAuEXAFybl1adfLtO/nV2G5oLIf76fHXNPUK3WXOgTdp2PEc5IKGegsKfRvJtFQFnxHKfStG fTyjTYrpD5/78aerXBgfoh4p9OuLFQ/F1evkU6LM0F3xKEAeg5Zks0CQ53rxFKwgPOdodgQUpWk 0YWs3fUYIr7qo0UqxzN81mhiRHsvxLNaTtB4bDlaBFBjTp3mLgPEiKOtL4UaBskHK8NRPviaLKD 1N4L0SD09v1DgLEvy1NPJmWKe+0tKOdpmTOr2s8n7lggYIR7 X-Google-Smtp-Source: AGHT+IE5p6qQpY1TWlJuOlj2Bb3rJV+QRjcZTPuPP3jMQtP59l2biyZF5cw5cEy8NRf0Fv82dKSnmA== X-Received: by 2002:a17:907:6d0c:b0:ad5:54e0:4c97 with SMTP id a640c23a62f3a-ad85b211e8emr364382766b.50.1748166863500; Sun, 25 May 2025 02:54:23 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad52d497a0fsm1540866666b.140.2025.05.25.02.54.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 02:54:23 -0700 (PDT) From: Sergey Trofimov To: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI In-Reply-To: <87a5715cas.fsf@gmail.com> ("Sergio Pastor =?utf-8?Q?P=C3=A9r?= =?utf-8?Q?ez=22's?= message of "Sun, 25 May 2025 10:23:23 +0200") References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> <87ldql1715.fsf@sarg.org.ru> <87a5715cas.fsf@gmail.com> User-Agent: mu4e 1.12.11; emacs 30.0.92 Date: Sun, 25 May 2025 11:54:22 +0200 Message-ID: <871psdyq0h.fsf@sarg.org.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Sergio Pastor Pérez writes: > Sergey Trofimov writes: >>> Once thing we could do, is to pin the Guix channel to the current commit >>> so it does not pull. I can try to implement that if you would like to >>> have that behaviour. >> >> It'd be nice, otherwise one would need to use `--commit=$(guix describe >> ...)` which might work, but is not that user friendly. > > Done[1] :) > > Please let me know if you have any more feedback! > > [1] https://issues.guix.gnu.org/78580#5 Ok, after a test I see it does something unexpected. I have 4 channels in my system (guix/nonguix/sops/personal). After `guix pull nonguix` I've ended up with a generation containing only guix and nonguix, other channels were gone. If I get your intent right, then instead of `filter-channels` you need to implement `unpin-channels`, so that the new generation is built from the current channels and the ones specified by the user are updated. From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 06:21:07 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 10:21:07 +0000 Received: from localhost ([127.0.0.1]:43010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ8Ta-0002ct-8Z for submit@debbugs.gnu.org; Sun, 25 May 2025 06:21:07 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:55751) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ8TW-0002bj-T9 for 78580@debbugs.gnu.org; Sun, 25 May 2025 06:21:04 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-3a3771c0f8cso971912f8f.3 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 03:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748168457; x=1748773257; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=FN4u433JBq5tygngGi2qOfIkmoGKXiZadTOlc3AaajA=; b=VThkiNoMqIDtF2pMN60eE2aCm3eRAlZKNmCLu/Si6Y4FvNPJbIwy9qT1Zv7+8Sh04a RuMT7hbO/yiA+s9fmq/z3lp1d7nMHE+4JHRci+xxie5IQoNpjwrkHjOI1q4RTsjLOuq3 wF7eXq1p3azjpgxP5XKFw2RVB0rCDqc0D1LbuDbQyj/M/ArtyAM9ulCzA7CcbfTxvsRF KIVbGAOIAQ+BO3hsyC9ktwRf2bZSXXuu4MzdsMK8yvW4F04bE7VLbpe1U4uQVcaNP7cV TT9k918rZbU1UqYKkpevprBC491uXAHrnuLCyBDuNivy3W5Jw/IZJcGjqmYtYY+YzgNC 9MWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748168457; x=1748773257; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FN4u433JBq5tygngGi2qOfIkmoGKXiZadTOlc3AaajA=; b=QtWlVMBdgLMeCnGrg86zdQnDUbcOc8zxiUtxJSeDXXGkbUvD90hqXK5OKtu0S5EsE7 8Vip5IDt3ezCzpin+9UdQc/qeN5iI1YCYjGU7KduTvsLGSoe/UHs0tKYZaQKIQHvDLB1 VXHKTHlrVsOJM3lvfYgSEP6t25y2mj3JNbcTnW7euWmnOL+oMhZg70mEr/LJM8Fou1zC 6APCYaVDuHMHt7Cpys4gp7FqMGjIZH6h6MjejbpU6WZuIg/OCuRZJ1KyBHF63cIKeARX nJZKaCP85sB82e0Z+R3iW5PfKFYGAfSIio+JSK5FYuhxJrdzABAayq4mYefTwR1TsACE 5ctA== X-Gm-Message-State: AOJu0YxqKwkQYjnJLibyJ8Lb0AhDhI3n3+/a7S5jTwGJcqZ6R1q5sWo7 BItSn3QaqaeBXceQBih13vGmouhZU8Ilnd8i4MLWpyvjy9P+eXAffPhJ X-Gm-Gg: ASbGncudWhi9o8kK9U8Lmzr/TuMJRQ39NsaCEpuNmER2EqysVerSGazVoTfQ4N7odnL fV07g1gY6ul2oawrOdH2hCdPsk78z/oeblUfhumEBd91BPMt+ssLBjWFW7UKWdai+CajcnY9sS4 UYxHR7v63KnyjY72CLwNWbNBRprYLfTFAZkea+BS418GGwU+2m2C1v593U19B5HLthZ7MNkfQfR gVryHctrJ+ndxBVcYBIs0Hy/sIrNVz5q5G0GaZENyG+0nfDroZ/XUBUNunscCql7EV2508IbhJH pQUQ3+BKUAAdeBz/vL6dNdAex+6vxay4Nw4vkHfWEK3YlllcL2FBM8SwD+L/KMQ= X-Google-Smtp-Source: AGHT+IFs5skzKU3XanV6ZqbZ4jvAQSRwpAmySg3xGIKlAMMp+tHcYhf4iwng0DHGOdMlnXDxRT67Hg== X-Received: by 2002:a5d:688a:0:b0:3a4:ce96:75d8 with SMTP id ffacd0b85a97d-3a4ce967831mr1853317f8f.4.1748168456437; Sun, 25 May 2025 03:20:56 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a35ca62b5dsm32575071f8f.55.2025.05.25.03.20.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 03:20:55 -0700 (PDT) From: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= To: Sergey Trofimov Subject: Re: [bug#78580] [PATCH v2] pull: allow filtering which channels to pull from the CLI In-Reply-To: <871psdyq0h.fsf@sarg.org.ru> References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> <87ldql1715.fsf@sarg.org.ru> <87a5715cas.fsf@gmail.com> <871psdyq0h.fsf@sarg.org.ru> Date: Sun, 25 May 2025 12:20:55 +0200 Message-ID: <874ix956uw.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Sergey Trofimov writes: > Hi,=20 > > Sergio Pastor P=C3=A9rez writes: > >> Sergey Trofimov writes: >>>> Once thing we could do, is to pin the Guix channel to the current comm= it >>>> so it does not pull. I can try to implement that if you would like to >>>> have that behaviour. >>> >>> It'd be nice, otherwise one would need to use `--commit=3D$(guix descri= be >>> ...)` which might work, but is not that user friendly. >> >> Done[1] :) >> >> Please let me know if you have any more feedback! >> >> [1] https://issues.guix.gnu.org/78580#5 > > Ok, after a test I see it does something unexpected. I have 4 channels > in my system (guix/nonguix/sops/personal). After `guix pull nonguix` > I've ended up with a generation containing only guix and nonguix, other > channels were gone. If I get your intent right, then instead of > `filter-channels` you need to implement `unpin-channels`, so that the > new generation is built from the current channels and the ones specified > by the user are updated. You are right. I did not realise that the internals of `guix pull' does not take a list of channels to update but a whole channel profile to deploy I will correct. Thanks for pointing it out. From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 06:55:25 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 10:55:25 +0000 Received: from localhost ([127.0.0.1]:43353 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ90m-0005iq-Mh for submit@debbugs.gnu.org; Sun, 25 May 2025 06:55:25 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:61884) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ90k-0005iD-6f for 78580@debbugs.gnu.org; Sun, 25 May 2025 06:55:23 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-442ccf0e1b3so19853725e9.3 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 03:55:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748170515; x=1748775315; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=d2jI/z4ZOJ7Q93sTYP4LtgBa44D13W9PthHb6d2uGD8=; b=RhRuyhDqCOQ/skAKVdU5I8nP3an3bCpmY7NkdNn2HgDsmeULHw1kDUdFOinMG2RRvU aFkA+w9wyHh0fvJBDnZmNFs30Eb/r+DEqNP144eq//Jpw9G+KU4PlTQ0b3TntKJwt4oV COag5zK631ltpiai0ACC5OVhDGJz4oDD1PtbORt3WRjVgBigWfQViPqVg8LpewX9+kzh Ru1J8M09ag7OYTWayZdH0Qkznyw2viZ/BDXEQSSL1Jw6gdRJOXcUgkx/4jDC89I1QHnl 2MVpwxwy4wxwUlarWjdFsV/NrDnyv2pN0zBk2yU8zSdrh+tYhoS6URUXJKnkXpaeEBlJ 0UjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748170515; x=1748775315; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=d2jI/z4ZOJ7Q93sTYP4LtgBa44D13W9PthHb6d2uGD8=; b=aRAImjz2GOMqfqbBCeoxup7dacRZM+vIixrbBGbTzyKTI5rRdIz8vG/g670shYGKMO yP51piOeb06dPiuqOOwmpUxBzWMo7SLo6/y7IpSYwFxBDSc/v0OpEMD8D0Nx4DTj53Eb VlxC6I/G4IUQSaLHKMIOygFYboT77NQtzpiN6fc3GC+6epOZiU5UPBHASJ5X1TcRn7pa QQDG3tKbQ7h2VBk7VfAF7vqpWguAApkhvoVx1a6z45Dt2ZHaGBdqJRSSKmcuIOjoLieE yqhtL71Dboh8q2u1+cG4dzFaTYoexiOBELAYcmN7CPTIQewp/5jaq8e8pkkjr8TpKqAS 9BOQ== X-Gm-Message-State: AOJu0YxHS6kXKHKF4bbW7i+INp02fae+nHZUnF45VcTw486kFRF2dLiX zkLB6f4tyi0gWImUE6VpDl/pbOwheoU58dtWsDfGU2XOKNlqMT6w6szUUiwxbWBo X-Gm-Gg: ASbGnctZxkVFk2rsCchxmhQVmUqTx6VGSJ7fEBRTAAAVBT6KSgRO4aFyO/zq2g2Zwgp KjvXbKgXMDu7mJD5pum0wWjyGvpMb5+B7/KJ52CoEi9QRalvMy6moY47V+NPzCwqnmfP5BS9g/c DfxCuDI5XcTHoS4hwM7v00g+VQZ+8a/LG7ixKAtEqq9HZB8tpSjwKIdQpE9CHRpPHS1Ck7XN4tl h44ziAXn9qkRodS4eW0JJ8vHM82x/jHdaYKAkpKvDpxa30bB+CoNwTIZ2CTZTl360+cRDNbmUio nFvEk/eHcVTRIpyxp31qZAlL8y/OAHNQSeaUtUN6EeeH+rQ+XK5iy6fVJKdXg/o= X-Google-Smtp-Source: AGHT+IGfW9yioJx92jedSLOmVnbI+KIMdoSl204MskMBAE1xk79Q0lye/B59fOQ4A+imN+fi6cv3Xg== X-Received: by 2002:a05:600c:4e0a:b0:43c:f895:cb4e with SMTP id 5b1f17b1804b1-44c91dd158bmr49831945e9.17.1748170514623; Sun, 25 May 2025 03:55:14 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-447f18251c7sm203889115e9.3.2025.05.25.03.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 03:55:14 -0700 (PDT) From: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= To: 78580@debbugs.gnu.org Subject: [PATCH v4] pull: allow filtering which channels to pull from the CLI Date: Sun, 25 May 2025 12:55:02 +0200 Message-ID: <47f6b899454a44acc2570a57b5fa6caaf8a47706.1748170502.git.sergio.pastorperez@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Sergio Pastor Pérez , Sergey Trofimov , Christopher Baines , Gabriel Wicki , Josselin Poiret , Ludovic Courtès , Mathieu Othacehe , Maxim Cournoyer , Simon Tournier , Tobias Geerinckx-Rice Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a list of channels to pull. Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 --- doc/guix.texi | 10 ++++++-- guix/scripts/pull.scm | 53 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index e4e2b853f1..26f16cfa7a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4656,8 +4656,14 @@ Invoking guix pull deleting /var/guix/profiles/per-user/charlie/current-guix-1-link @end example -The @command{guix pull} command is usually invoked with no arguments, -but it supports the following options: +The general syntax is: + +@example +guix pull [@var{options}] [@var{CHANNELS}@dots{}] +@end example + +The optional @var{channels} argument filters the list of pulled channels +to those whose names match the given list. @table @code @item --url=@var{url} diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 76aed0b5cc..fc6809d68c 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -81,8 +81,12 @@ (define %default-options (validate-pull . ,ensure-forward-channel-update))) (define (show-help) - (display (G_ "Usage: guix pull [OPTION]... -Download and deploy the latest version of Guix.\n")) + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] +Download and deploy the latest version of Guix. + +If CHANNELS are specified, pull only from channels with those names (e.g.: +'guix pull rde nonguix' pulls only from the 'guix', 'rde', and 'nonguix' +channels as defined in your channel configuration).\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " @@ -839,21 +843,52 @@ (define (validate-cache-directory-ownership) (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") - (define (no-arguments arg _) - (leave (G_ "~A: extraneous argument~%") arg)) + (define (unpin-channels channels current-channels names) + "Unpin CHANNELS whose name symbol is present in NAMES list. +If NAMES is an empty list, don't filter anything. Warn when a name is not +available in the channels list." + (if (null? names) + channels + (let ((available-names (map channel-name + channels)) + (selected-channels (filter (lambda (ch) + (member (channel-name ch) + names)) + channels))) + (for-each (lambda (name) + (unless (member name available-names) + (warning (G_ "Channel '~a' not present in channel list~%") + name))) + names) + + (map (lambda (cur-ch) + (let ((selected-channel (find (lambda (ch) + (eq? (channel-name ch) + (channel-name cur-ch))) + selected-channels))) + ;; If the user selected this channel. Follow channel file + ;; specification. Otherwise, leave the channel pinned as + ;; defined by the current profile. + (or selected-channel + cur-ch))) + current-channels)))) (with-error-handling (with-git-error-handling (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler no-arguments)) + (list %default-options))) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (profile (or (assoc-ref opts 'profile) %current-profile)) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?)) - (verify-certificate? (assoc-ref opts 'verify-certificate?))) + (verify-certificate? (assoc-ref opts 'verify-certificate?)) + (selected-channels (filter-map + (match-lambda + (('argument . name) (string->symbol name)) + (_ #f)) + opts))) (cond ((assoc-ref opts 'query) (process-query opts profile)) @@ -877,7 +912,9 @@ (define-command (guix-pull . args) (ensure-default-profile) (honor-x509-certificates store) - (let* ((channels (channel-list opts)) + (let* ((channels (unpin-channels (channel-list opts) + current-channels + selected-channels)) (instances (latest-channel-instances store channels #:current-channels base-commit: 096dedd0bb13523002c814b001429c2f65b6f10d -- 2.49.0 From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 07:04:00 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 11:04:00 +0000 Received: from localhost ([127.0.0.1]:43436 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJ995-0006QS-ST for submit@debbugs.gnu.org; Sun, 25 May 2025 07:04:00 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:44045) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJ993-0006Pw-83 for 78580@debbugs.gnu.org; Sun, 25 May 2025 07:03:57 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-442ec3ce724so11129475e9.0 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 04:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748171031; x=1748775831; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BAVthV5NbHBiMr/z/41vI+TLU9eIcjZ4h3bkf3ddP90=; b=i0nhozkWvQ443lUKWABQkfUQAFue1DMOYsrx8/IPxwI9JeGWLc1Zz0JEW0C/XXItN9 WUvBlgk3jRyprKuL2VtXqre4FmZAnlLNH2T6rZmG34OTVf4T6eRTrdrHgdYnodut3yAn x75G88L4fc8Uepn19CmrpbpXVU9rQqMiaWD6gKZgcf+sO1abKWPBzSuR9QoB5jb+wi/2 JKtte1/c3ouP/R+LxWokhnuHKh+62MRyqGLHgpLr+CMUdUjhpxWMtOAOoPAh0MjLUYIr pzE7KYg6QQCWgkSakFyg0DCc7xjKbvuMBAXYJTUA/79lXCDg48yc4+P/QpmkMFBoe8Ia Qjmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748171031; x=1748775831; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BAVthV5NbHBiMr/z/41vI+TLU9eIcjZ4h3bkf3ddP90=; b=YbAe0JeOJCVbgSx+q35UItQuZ1NzA3Y0qsxKDfeSjx8YT9i6d+zfofOcvZkerg3kYf 5WkQbrRY9cAb6oae4qMX3kIUXhYA0wNfUvXMAvn3iwqZpLsSpoYt1CtLRuVMn1CvU4nW wGqlP9TYOAA+aEXGcmXLfkGRLjxSmpAIP4QGkSBjslWPg1VGoP7+Bi3/NQ7+DbN8vrU0 gTZZka30maP5GrOqicA0TqYL00qlq0b/QJt1g76M1pQ8CW2Z/rrlhDZnDZjSuYiqIU5K ZahIOgLHXC9bEsW0OXv2UAoaOwHmct2l/6q/2geIs18JCwi62Z9YpbiqTR338MXlMEFK GpSA== X-Gm-Message-State: AOJu0YxEmDH2CPE4Lyzz1n+q5wNh6db7FJ6Fs9daPVqXS3jz99ltSrW3 94rr6EjMit7iTAa7dZnF/jD4HTSiGuEpyVnqh1hEzivbKqftnkBwVK81 X-Gm-Gg: ASbGncvpsRww85xGSdyB62mVaUOVBiBgdjPhmVwrWlkvyQR70Ao1SphxAW08mlaFMEe 1aMYpzfGg51tDPu1szPLp4glkkEv9F/0UxVCiya/HpkMGfhM7W+kAgrxFWgyGm4bKXSD41RzhL5 ekNQgkwot/6q7ZbJwC37UmTqJzICHK1H6jD6br394vosx8eSu2I+aj68mgam5Q1QK6j26lm6nCm 8qDrB3p7w1M1oMOdLYoYiqUpbUIrEzCQ26dMP6q3QeWc52tMM2OEHGqitrXZV+chwiDMoOB6FoL LGgdfO0Bjoo8/smoWO8qnYo03j9wMGwA7XUv1MrsqJUTTZy7TzvzTc12Bj72PCI= X-Google-Smtp-Source: AGHT+IHrK+oLo6wvCJ9nsGzh4TaA8G9U620P/pF9A/nv+U2YhQ1NrQOs7OLEGTkAJ0ubztn0WGXVng== X-Received: by 2002:a05:600c:3c93:b0:43d:fa58:81d3 with SMTP id 5b1f17b1804b1-44c933f0edfmr36833305e9.32.1748171030773; Sun, 25 May 2025 04:03:50 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a36c6eeaf8sm24309229f8f.48.2025.05.25.04.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 04:03:50 -0700 (PDT) From: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= To: Sergey Trofimov Subject: Re: [bug#78580] [PATCH v4] pull: allow filtering which channels to pull from the CLI In-Reply-To: <871psdyq0h.fsf@sarg.org.ru> References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> <87ldql1715.fsf@sarg.org.ru> <87a5715cas.fsf@gmail.com> <871psdyq0h.fsf@sarg.org.ru> Date: Sun, 25 May 2025 13:03:49 +0200 Message-ID: <871psd54ve.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Sergey Trofimov writes: > Hi,=20 > > Sergio Pastor P=C3=A9rez writes: > >> Sergey Trofimov writes: >>>> Once thing we could do, is to pin the Guix channel to the current comm= it >>>> so it does not pull. I can try to implement that if you would like to >>>> have that behaviour. >>> >>> It'd be nice, otherwise one would need to use `--commit=3D$(guix descri= be >>> ...)` which might work, but is not that user friendly. >> >> Done[1] :) >> >> Please let me know if you have any more feedback! >> >> [1] https://issues.guix.gnu.org/78580#5 > > Ok, after a test I see it does something unexpected. I have 4 channels > in my system (guix/nonguix/sops/personal). After `guix pull nonguix` > I've ended up with a generation containing only guix and nonguix, other > channels were gone. If I get your intent right, then instead of > `filter-channels` you need to implement `unpin-channels`, so that the > new generation is built from the current channels and the ones specified > by the user are updated. Alright, now you should get the expected behaviour[1]. Please let me know if you see any problem. [1] https://issues.guix.gnu.org/78580#9 From debbugs-submit-bounces@debbugs.gnu.org Sun May 25 10:21:12 2025 Received: (at 78580) by debbugs.gnu.org; 25 May 2025 14:21:12 +0000 Received: from localhost ([127.0.0.1]:46281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJCDu-0008H7-J3 for submit@debbugs.gnu.org; Sun, 25 May 2025 10:21:12 -0400 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:48568) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uJCDr-0008Fu-Gq for 78580@debbugs.gnu.org; Sun, 25 May 2025 10:21:08 -0400 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-60410a9c6dcso2238510a12.1 for <78580@debbugs.gnu.org>; Sun, 25 May 2025 07:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1748182861; x=1748787661; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Y/VHL2kNhGlVyZNRsT7AUpF7YBF7126KEKZSKoq8M1Q=; b=xlB5AiH2BtXi7P0fJmtVzsk0JcsvOOUc8/D4/rvKt/ezYnMbHdDxsksR7ojdOwfk3Q s0OQgZ3br+SkWU8EbLbRAg1m3galBm8R0eguxRaEHaPNj/KikGwkTBKPsmnWQ1d40WjU OaVI2FGRiBRrf8x10QhkhEMpWllLOxNPjnf8xw3hr45QKowSMYC1JV/QxRheXDkUNP6y 7hDFocdHC1sSdRfB2cs2CgKIbSnkq5caIk4cDfAS4++ALS7J3HtI75FlBIJcwCGMHN2a zk3RwVR/hFguRAcPUtY4DbwrRHJRBXlLkxxO9Am4yzSzupWZ5jS/1iMlS7587hqPxQGo yFUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748182861; x=1748787661; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Y/VHL2kNhGlVyZNRsT7AUpF7YBF7126KEKZSKoq8M1Q=; b=wRBwKqPwX7ljEFssIGjEE4KNtELxQQ13WqnD2UEIeTZllTiu4BT96rwGmNMv4ss3YV /tTWoQfJ/V6ZsQW4zT1bCdamp25MWd+eMl9IhqQvI/2bCN2HVIbUydd/sU6Aq5hT5BHu eG8fKMFOdvOwWKLd/Tzsfp8xO6XiLQqNNra7EyC4mqUtnWY0NdqTzjT8Bi2OoBkp0+Bd U+iIO2ZOntOXDMd7x2kBDeEq0vkK5NwwFDQM9B2a8kzdFM5kGn4c59Jdrmbldc5EtwZS EeDjObh4q/+W+eBZowmtC4yf6xIB7pOZv1DBXRrPdjz3cbqMd5TWRPMAalfS5T0GNZHW tWgg== X-Gm-Message-State: AOJu0YwHrCli4U4+hrjEHYRE3FWblKoVeGeXG84tES5K4p+4B0UuaW6T qGksGKJPiHeU0q4BlcdWNjIArwX2zVMfqJLCs7vzUCvOUVT0wp7rBX1b+vzq0pwZTgA= X-Gm-Gg: ASbGncsGenHeTW/XNggoZljXA/9TjLCHmcCKEhwny7e5spRaDbg7jRiAZFzap9+43or DcuDHslpLlg7d8YeIzYyv88NViFwF5L9O8/oMXHt3u+1SZZoF5Yva2s9c9pS+k0qAbxgQ9QWJc6 vs+7QeF4YlRyGKj3oD78z/P2VfpHE6KXjIDxn9c+8HEWnlhi/dOE13PLN68zkGuRk2CoxBDKHGV aJbcou2z3s3tLJMjhMCKspnjZU9cLE6wtrMCd/qsfeKsZ0B8AlyU7x1fA90sA3Us0Fw0y64LQQ5 JDTxKcbQRrsIEy8EqZkKPpTvEcb7BEgqGLlocyV4TJVYbKLfNllhXBZNn5s= X-Google-Smtp-Source: AGHT+IFTwmVsGXzIAxCl8Q00ldiT+jX6CyyhoYum71TRXWWW9T/Rj3wkobjf9Pn83EPY0Cb8MmvDWA== X-Received: by 2002:a17:907:6d0c:b0:ace:cdfc:40aa with SMTP id a640c23a62f3a-ad85b111d89mr525557366b.19.1748182861074; Sun, 25 May 2025 07:21:01 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad52d06dc6csm1554047266b.53.2025.05.25.07.21.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 May 2025 07:21:00 -0700 (PDT) From: Sergey Trofimov To: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= Subject: Re: [bug#78580] [PATCH v4] pull: allow filtering which channels to pull from the CLI In-Reply-To: <871psd54ve.fsf@gmail.com> ("Sergio Pastor =?utf-8?Q?P=C3=A9r?= =?utf-8?Q?ez=22's?= message of "Sun, 25 May 2025 13:03:49 +0200") References: <87r00d185v.fsf@sarg.org.ru> <87cybx5f4u.fsf@gmail.com> <87ldql1715.fsf@sarg.org.ru> <87a5715cas.fsf@gmail.com> <871psdyq0h.fsf@sarg.org.ru> <871psd54ve.fsf@gmail.com> User-Agent: mu4e 1.12.11; emacs 30.0.92 Date: Sun, 25 May 2025 16:20:59 +0200 Message-ID: <87seksydo4.fsf@sarg.org.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Josselin Poiret , Tobias Geerinckx-Rice , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Ludovic =?utf-8?Q?Court=C3=A8s?= , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) X-Draft-From: ("nndoc+ephemeral:bug#78580" 3) Hi, Pérez writes: [...] > > Alright, now you should get the expected behaviour[1]. Please let me > know if you see any problem. > > [1] https://issues.guix.gnu.org/78580#9 Confirming it works now correctly. Date: Sun, 25 May 2025 16:20:59 +0200 From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 04 04:51:25 2025 Received: (at 78580) by debbugs.gnu.org; 4 Jun 2025 08:51:25 +0000 Received: from localhost ([127.0.0.1]:46972 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMjqG-0008E8-QO for submit@debbugs.gnu.org; Wed, 04 Jun 2025 04:51:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33168) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uMjqE-0008DT-H8 for 78580@debbugs.gnu.org; Wed, 04 Jun 2025 04:51:23 -0400 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 1uMjq4-0002AF-4W; Wed, 04 Jun 2025 04:51:12 -0400 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=RVdULmefWbZ5qcJKtgWatXD0VfuwToQBNdTOOKKhoys=; b=GIoAbMNXRMGNVxhk6Ahv uD+q5qDFLbVOCTlPfTI7iyvkGmnKlv9fGWxF4KMpcoWwp06hch/gbut8AkQWtRwOK5VSea4NQkB4X DG9RR7q7Pbe8Ordpl1luo7UMM5KhT6ne1fpjs9xSKOik9FgA6OLCo+YLUIg/1qoBpYrCUxmUeuay1 mUlmLTyJdz8158SMkn9XK2YIqFsawVBS9C9D7n+HHXeHt23KTZqjKf31sb4HM3VHVqLgiy3/igjEy gKZocPJINA6uP4bTZ9I4eZwBwpOYG6jbXSoLKIIML4GBHmk3zmFak5v0yWShno7Saf9wAMDk0H910 3MVicaB1xzWFbw==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= Subject: Re: [bug#78580] [PATCH v4] pull: allow filtering which channels to pull from the CLI In-Reply-To: <47f6b899454a44acc2570a57b5fa6caaf8a47706.1748170502.git.sergio.pastorperez@gmail.com> ("Sergio Pastor =?utf-8?Q?P=C3=A9rez=22's?= message of "Sun, 25 May 2025 12:55:02 +0200") References: <47f6b899454a44acc2570a57b5fa6caaf8a47706.1748170502.git.sergio.pastorperez@gmail.com> User-Agent: mu4e 1.12.11; emacs 29.4 X-URL: https://people.bordeaux.inria.fr/lcourtes/ X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu X-Revolutionary-Date: Quintidi 15 Prairial an 233 de la =?utf-8?Q?R=C3=A9v?= =?utf-8?Q?olution=2C?= jour de la Caille Date: Tue, 03 Jun 2025 10:14:36 +0200 Message-ID: <87r001mec3.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.8 (-) X-Debbugs-Envelope-To: 78580 Cc: Tobias Geerinckx-Rice , Josselin Poiret , Sergey Trofimov , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) Hi Sergio, Sergio Pastor P=C3=A9rez writes: > * guix/scripts/pull.scm (guix-pull): treat non-prefix CLI arguments as a = list > of channels to pull. > > Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 Please mention the doc/guix.texi changes. Some comments: > +@example > +guix pull [@var{options}] [@var{CHANNELS}@dots{}] =E2=80=9Cchannels=E2=80=9D (lower-case). > +The optional @var{channels} argument filters the list of pulled channels > +to those whose names match the given list. This would need to be clarified. IIUC, what =E2=80=98guix pull A=E2=80=99 = does is that it updates A but keeps the other channels unchanged, right? There=E2=80=99s a risk with this practice though: channels are typically te= sted against the latest version of each other. For example, =E2=80=98guix-scien= ce=E2=80=99 in continuous integration is built against the latest =E2=80=98guix=E2=80= =99; if one tries to update =E2=80=98guix-science=E2=80=99 without updating =E2=80=98gu= ix=E2=80=99, there=E2=80=99s a gradient of problems that might occur: it might work fine, or substitutes might be missing, or some packages from =E2=80=98guix-science= =E2=80=99 will fail to build, or =E2=80=98guix pull=E2=80=99 will fail upfront. > + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] > +Download and deploy the latest version of Guix. =E2=80=9CDownload and deploy the latest version of Guix, possibly limited t= o CHANNELS.=E2=80=9D > +If CHANNELS are specified, pull only from channels with those names (e.g= .: > +'guix pull rde nonguix' pulls only from the 'guix', 'rde', and 'nonguix' > +channels as defined in your channel configuration).\n")) I=E2=80=99d drop this paragraph: =E2=80=98--help=E2=80=99 is concise by con= vention and further explanations should go to the manual. > + (define (unpin-channels channels current-channels names) > + "Unpin CHANNELS whose name symbol is present in NAMES list. > +If NAMES is an empty list, don't filter anything. Warn when a name is n= ot > +available in the channels list." You can turn the docstring into a comment since it=E2=80=99s not a top-level procedure. > + (if (null? names) > + channels > + (let ((available-names (map channel-name > + channels)) > + (selected-channels (filter (lambda (ch) > + (member (channel-name ch) > + names)) > + channels))) As per our coding conventions (info "(guix) Formatting Code"), s/ch/channel/ but you can shorten the other identifiers: =E2=80=98names=E2=80=99, =E2=80= =98selected=E2=80=99. > + (for-each (lambda (name) > + (unless (member name available-names) > + (warning (G_ "Channel '~a' not present in channe= l list~%") =E2=80=9Cchannel '~a~' selected but missing from channel list~%" (messages = are lower-case). > + (map (lambda (cur-ch) s/cur-ch/channel/ > + (let ((selected-channel (find (lambda (ch) > + (eq? (channel-name ch) > + (channel-name cur-= ch))) > + selected-channels))) > + ;; If the user selected this channel. Follow channel = file ^ Should be a comma. Thanks, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 04 17:24:07 2025 Received: (at 78580) by debbugs.gnu.org; 4 Jun 2025 21:24:07 +0000 Received: from localhost ([127.0.0.1]:53775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMvaf-0004yb-Nz for submit@debbugs.gnu.org; Wed, 04 Jun 2025 17:24:07 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:42020) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uMvac-0004xP-Dm for 78580@debbugs.gnu.org; Wed, 04 Jun 2025 17:24:03 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3a4fd1ba177so274738f8f.0 for <78580@debbugs.gnu.org>; Wed, 04 Jun 2025 14:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749072235; x=1749677035; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pZoEaOC04vQm1LwlXFMcFJIrWRkJ8g/iaLVNkkoCVyQ=; b=CZ2dulgok0adwS1DLNNP+xNpPRLmaT1AuyBJ4psE7L22dh5bpYVhs5TkvnwD/pLvTa B53p7aWPDoYOK7f1n4gwQMyyRqZeJgGaKOcTAaH46JhjxjGeSYf5wZllAINDOoqSean/ /TAXx9HI4XmYVTdCB0joD84rqRNi+sUK7IbnOg06BG7Kf+MB+DebS2qcJQNit99WyLbf c2XCdizlC3zocD31qzwj8TomJn/bf9xRB9PfLXr2HuDAj6/kN1wV4MGyKVxPqHTADlM9 MmzKKtbeJGUynNNkeWdw//5qSHjgQ1HnZ2KFHx6y7ECepUmaPOtcmqazksJb7PocsBUg XcfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749072235; x=1749677035; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pZoEaOC04vQm1LwlXFMcFJIrWRkJ8g/iaLVNkkoCVyQ=; b=UCk9pr8SemaMU4rkClSNrpnqM/BlOGJvCKNdho4tK+i8IdSzR8Gs4amcaU2mQ5BRJr 3KRlMifUXVR5Y8O/7XQK73c0eeI38zMFvUCtN1L5PTrAaxsfItzI/K6/dxA+kZs46byW S9WKqNx2pa85zDiBrZ2I3uZdk7oykVHRNiP49r4jVtcBJtJrmNSDCDInRTVo2VOSPcsH wgz7w44ZtDQzNLX6RtLNNbBGLmeGIw2eAmPizp47ik8x4O1ULHrogNfAkt2VyR+P0Xr/ lIOWqmD6ZUF2Jwksqof9MutZG0/C32KjR1Wc28QTfoD8MQQ5OUeN/ci8pAlw1z7jaRoE /HxQ== X-Gm-Message-State: AOJu0YwNmP2nrJZwaf8ScrlLoowI3sd65Txohw3A75fJX1YBVeA13/Ou /iOII4otpSbtfsnVxZBF76NT0VzVm6nXwOsXiY4M2Wm2BH1offnabDiCvfh1nA== X-Gm-Gg: ASbGncv0MkR13GMURpbduF15vqURqqdVcF7P31tEIhN8nC/McDyBnLkfhIN6aXEj7em OX/Ikn0xjpebR7BTpO+pIOA1ZYceGXbGAF3ZWBGzg7LI8HJtUjHNRRxbF6Pqu7SvtR7JYr8rgIc UuZC/8dK3yVU15qTBXZ0tIlthcrvSlSuiTDFUWMchVNHf8SRjb2RPM4le8NdQa0HKQUMvHCgTkq +byKqjhPOr9XMFGpeLdglM3WSXQJSBAXvDo54BjtOLcXXwfkBu5xIqZQAFrC7aH7X6Osn77fbsu du16htYNUQHQHojK3aH/aQf43oTkmnYAdAdHuAoNUVnhVyE7P5uqb1rfgtpWpm7LnQo/zqdGHg= = X-Google-Smtp-Source: AGHT+IGs2cHdNLD27Hc0IvB9uQZreD6UuH6DU2MKaddS04z31VdFj9MaA0svazwxlLMjUtusHPOoHA== X-Received: by 2002:a05:6000:18a5:b0:3a4:eee4:cdec with SMTP id ffacd0b85a97d-3a526dc53f4mr840413f8f.6.1749072235298; Wed, 04 Jun 2025 14:23:55 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f9924a4csm2888055e9.39.2025.06.04.14.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Jun 2025 14:23:54 -0700 (PDT) From: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= To: 78580@debbugs.gnu.org Subject: [PATCH v5] pull: allow filtering which channels to pull from the CLI Date: Wed, 4 Jun 2025 23:23:32 +0200 Message-ID: <6585e1648c9bf6f468d3c161c81406597e13327c.1749072212.git.sergio.pastorperez@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Debbugs-Cc: Sergio Pastor Pérez , Sergey Trofimov , Ludovic Courtès , Christopher Baines , Gabriel Wicki , Josselin Poiret , Mathieu Othacehe , Maxim Cournoyer , Simon Tournier , Tobias Geerinckx-Rice Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: =?UTF-8?q?Sergio=20Pastor=20P=C3=A9rez?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/pull.scm (guix-pull): Treat non-prefix CLI arguments as a list of channels to pull. * doc/guix.texi (guix pull): Document new command syntax and behavior for filtering pulled channels by name. Change-Id: I5d08c4b1cc84ab58a9c4e7600eb86468f92d10f0 --- doc/guix.texi | 18 ++++++++++++++-- guix/scripts/pull.scm | 50 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 5fefba3634..b6d7461f34 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4656,8 +4656,22 @@ Invoking guix pull deleting /var/guix/profiles/per-user/charlie/current-guix-1-link @end example -The @command{guix pull} command is usually invoked with no arguments, -but it supports the following options: +The general syntax is: + +@example +guix pull [@var{options}] [@var{channels}@dots{}] +@end example + +The optional @var{channels} argument filters the list of pulled channels +to those whose names match the given list. + +For example, given a list of channels with names A B C: + +@example +guix pull A B +@end example + +would update channels A and B while keeping C unchanged. @table @code @item --url=@var{url} diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 76aed0b5cc..3d8e613171 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013-2015, 2017-2024 Ludovic Courtès ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2025 Sergio Pastor Pérez ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,8 +82,8 @@ (define %default-options (validate-pull . ,ensure-forward-channel-update))) (define (show-help) - (display (G_ "Usage: guix pull [OPTION]... -Download and deploy the latest version of Guix.\n")) + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] +Download and deploy the latest version of Guix, possibly limited to CHANNELS.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) (display (G_ " @@ -839,21 +840,52 @@ (define (validate-cache-directory-ownership) (define-command (guix-pull . args) (synopsis "pull the latest revision of Guix") - (define (no-arguments arg _) - (leave (G_ "~A: extraneous argument~%") arg)) + ;; Unpin CHANNELS whose name symbol is present in the NAMES list. If NAMES + ;; is an empty list, do not filter anything. Warn if a name is not available + ;; in the channels list. + (define (unpin-channels channels current-channels names) + (if (null? names) + channels + (let ((available-names (map channel-name + channels)) + (selected-channels (filter (lambda (channel) + (member (channel-name channel) + names)) + channels))) + (for-each (lambda (name) + (unless (member name available-names) + (warning (G_ "channel '~a~' selected but missing from channel list~%") + name))) + names) + + (map (lambda (channel) + (let ((selected-channel (find (lambda (ch) + (eq? (channel-name ch) + (channel-name channel))) + selected-channels))) + ;; If the user selected this channel, follow channel file + ;; specification. Otherwise, leave the channel pinned as + ;; defined by the current profile. + (or selected-channel + channel))) + current-channels)))) (with-error-handling (with-git-error-handling (let* ((opts (parse-command-line args %options - (list %default-options) - #:argument-handler no-arguments)) + (list %default-options))) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (profile (or (assoc-ref opts 'profile) %current-profile)) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?)) - (verify-certificate? (assoc-ref opts 'verify-certificate?))) + (verify-certificate? (assoc-ref opts 'verify-certificate?)) + (selected-channels (filter-map + (match-lambda + (('argument . name) (string->symbol name)) + (_ #f)) + opts))) (cond ((assoc-ref opts 'query) (process-query opts profile)) @@ -877,7 +909,9 @@ (define-command (guix-pull . args) (ensure-default-profile) (honor-x509-certificates store) - (let* ((channels (channel-list opts)) + (let* ((channels (unpin-channels (channel-list opts) + current-channels + selected-channels)) (instances (latest-channel-instances store channels #:current-channels base-commit: ed5988f0d2cf14e3cc35a32e6ad91d7cbf535e2f -- 2.49.0 From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 04 17:32:18 2025 Received: (at 78580) by debbugs.gnu.org; 4 Jun 2025 21:32:19 +0000 Received: from localhost ([127.0.0.1]:53863 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uMvic-0005ld-7V for submit@debbugs.gnu.org; Wed, 04 Jun 2025 17:32:18 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:48528) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uMvia-0005lH-HH for 78580@debbugs.gnu.org; Wed, 04 Jun 2025 17:32:17 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-450cfb6a794so1689125e9.1 for <78580@debbugs.gnu.org>; Wed, 04 Jun 2025 14:32:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749072730; x=1749677530; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=zHj6OYC4U8TgSfzZjJ42kW9oIQZXBQGEl/9X92iDXxU=; b=dyrvCY0iR5JvwXnpH9ytjcR9Pyaf47GwvYEcSDoBw6VWJZh09ZQc/GCGOne2PWDRN1 epmvZS0RHlsWs4PfxxKg8rdX8KnzswpizfsLmAw8mntqgKFzeBZG4buTOxj+GzmLiojx J7HXOku4fCdDySWOAAdS8Ru3z8ev9Ni7nEGMsaD490UogsBaQyKEIcQxRaRYHumUsJB6 w2lz1pGrblVf+2oqvNabI++FmAbQcKTx1Q2DZzXTZyQWLBkSd/mKdAvRII3kpShKbeRh 0InbDfz47QuGwbtZ86VqWf3Ie2ez3b0tqVhMwDD1UZbemn72mQ196PRgr4GpleqOKCHt tLSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749072730; x=1749677530; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zHj6OYC4U8TgSfzZjJ42kW9oIQZXBQGEl/9X92iDXxU=; b=LI9HtVI6V996xsxu0N6rzZ3P/2+LyvT9oN9YJjQMhY4Wv+Uqwg8asVpQd+MyGGGZnw E5Ger3adeJjxy0fAaH+iy1QH4G1Z/7bI8uJwvpn/K01ZBr88UhSSXUqEE3rOgqhiClsT p3oN1Aj+sTpPJkqccWUsViqO17AWiVDzPkzuIBBjtHX98h45qVGO7CBk1QD/knosjiW8 T5CcL0h0Zu3hHs6Z/sAvYUrHl7ZhE4gN7GEfdmU2Clz3pjoPv0H4fOgNRu3e4t2BoxO6 JS3hkT7Bn26Jv0s7GTO6rpHWksX7mz0jP3QOOAF1WfQAawVKymS39sXld7F5+WA+0w/s btlQ== X-Gm-Message-State: AOJu0YyDfurhvmpnskjE118njJhqryu/bkX4gGZ0gjQPsPdTbtsKKvys HWliH2IFVkxP6vuf6DGPDayzgtdDon79mrnv0o2nQcc5nGw5ROCs7FBZ X-Gm-Gg: ASbGnctoxbJ8ncWxweKtCqAmiWTS0/BJqbYMlY6zc6ZMa9n/EtytyAHLn36ll0Rk1nt elHEJt2gEXIcGd5H+a9EVMO6yxoBYV7FpPXbwEbkhCqaFogRjJL2PM0b7lRhSQX0SEHQlFP+BOo stnn7MzLdlTomB1+Uvh7B1lO4fwUR3qeXuN6S7V+aHE/Pfkbqm/jmchrW1zar9920/soYGzZa4P 1OTGfzJPElmvt+XtGCMjxQRwjzLpgx2Rb8fXvY0+D2I4YJeD6kdMZ70MMbMk7Yq3iRvGNaqUCPE 0GsE/a7LfkDuHdfuIOFWJ3ZYjEf9bWU4L6Z2hgEGBAZ+CrOghFXl3E+yjy/BlYczCWTmB2609A= = X-Google-Smtp-Source: AGHT+IHA/BEeY5UFGBdr38j5RCmTJUcdO3iECGY0DOifnnwNQMR55zFEUXF+qpKFSlsOThGZ5ZRgmw== X-Received: by 2002:a05:600c:c0d2:20b0:43d:94:2d1e with SMTP id 5b1f17b1804b1-451f78169eemr11167585e9.13.1749072729918; Wed, 04 Jun 2025 14:32:09 -0700 (PDT) Received: from localhost ([2a0c:5a85:d10d:400:c3bc:fe9a:3b9b:8351]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f99c4546sm2847565e9.12.2025.06.04.14.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Jun 2025 14:32:09 -0700 (PDT) From: Sergio Pastor =?utf-8?Q?P=C3=A9rez?= To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: [bug#78580] [PATCH v4] pull: allow filtering which channels to pull from the CLI In-Reply-To: <87r001mec3.fsf@gnu.org> References: <47f6b899454a44acc2570a57b5fa6caaf8a47706.1748170502.git.sergio.pastorperez@gmail.com> <87r001mec3.fsf@gnu.org> Date: Wed, 04 Jun 2025 23:32:07 +0200 Message-ID: <87sekfp50o.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 78580 Cc: Tobias Geerinckx-Rice , Josselin Poiret , Sergey Trofimov , Maxim Cournoyer , Simon Tournier , Mathieu Othacehe , Gabriel Wicki , Christopher Baines , 78580@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello Ludo, thanks for reviewing my patch! Ludovic Court=C3=A8s writes: >> +The optional @var{channels} argument filters the list of pulled channels >> +to those whose names match the given list. > > This would need to be clarified. IIUC, what =E2=80=98guix pull A=E2=80= =99 does is that > it updates A but keeps the other channels unchanged, right? > > There=E2=80=99s a risk with this practice though: channels are typically = tested > against the latest version of each other. For example, =E2=80=98guix-sci= ence=E2=80=99 > in continuous integration is built against the latest =E2=80=98guix=E2=80= =99; if one > tries to update =E2=80=98guix-science=E2=80=99 without updating =E2=80=98= guix=E2=80=99, there=E2=80=99s a > gradient of problems that might occur: it might work fine, or > substitutes might be missing, or some packages from =E2=80=98guix-science= =E2=80=99 will > fail to build, or =E2=80=98guix pull=E2=80=99 will fail upfront. Well, since channels are not updated synchronously and atomically, the same situation can happen by a pull before channels are synchronized. Anyways, many users maintain their own channel for testing packages that are not yet ready to be upstreamed. In this cases, you usually want to update your channel for quick testing, but you don't necessarily want to pull the latest Guix, possible leaving your without substitutes. All in all, I think providing this interface is un upgrade without downsides. Channels that are pinned in your channel specification will remain pinned, so it's really one more layer of control for the user. For example, it that allows the user to circumvent the unpleasant update to a substituteless channel configuration. >> + (display (G_ "Usage: guix pull [OPTION]... [CHANNELS...] >> +Download and deploy the latest version of Guix. > > =E2=80=9CDownload and deploy the latest version of Guix, possibly limited= to CHANNELS.=E2=80=9D > >> +If CHANNELS are specified, pull only from channels with those names (e.= g.: >> +'guix pull rde nonguix' pulls only from the 'guix', 'rde', and 'nonguix' >> +channels as defined in your channel configuration).\n")) > > I=E2=80=99d drop this paragraph: =E2=80=98--help=E2=80=99 is concise by c= onvention and further > explanations should go to the manual. > >> + (define (unpin-channels channels current-channels names) >> + "Unpin CHANNELS whose name symbol is present in NAMES list. >> +If NAMES is an empty list, don't filter anything. Warn when a name is = not >> +available in the channels list." > > You can turn the docstring into a comment since it=E2=80=99s not a top-le= vel > procedure. > >> + (if (null? names) >> + channels >> + (let ((available-names (map channel-name >> + channels)) >> + (selected-channels (filter (lambda (ch) >> + (member (channel-name ch) >> + names)) >> + channels))) > > As per our coding conventions (info "(guix) Formatting Code"), > s/ch/channel/ > but you can shorten the other identifiers: =E2=80=98names=E2=80=99, =E2= =80=98selected=E2=80=99. > >> + (for-each (lambda (name) >> + (unless (member name available-names) >> + (warning (G_ "Channel '~a' not present in chann= el list~%") > > =E2=80=9Cchannel '~a~' selected but missing from channel list~%" (message= s are lower-case). > >> + (map (lambda (cur-ch) > > s/cur-ch/channel/ > >> + (let ((selected-channel (find (lambda (ch) >> + (eq? (channel-name ch) >> + (channel-name cur= -ch))) >> + selected-channels))) >> + ;; If the user selected this channel. Follow channel= file > ^ > Should be a comma. Alright, I've already sent v5[1] of the patch with all your suggestions. [1] https://issues.guix.gnu.org/78580#13 Best regards, Sergio.