From unknown Tue Aug 19 07:26:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#58624 <58624@debbugs.gnu.org> To: bug#58624 <58624@debbugs.gnu.org> Subject: Status: [PATCH] guix gc: Add '--vacuum-store'. Reply-To: bug#58624 <58624@debbugs.gnu.org> Date: Tue, 19 Aug 2025 14:26:50 +0000 retitle 58624 [PATCH] guix gc: Add '--vacuum-store'. reassign 58624 guix-patches submitter 58624 Efraim Flashner severity 58624 normal tag 58624 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 19 05:30:07 2022 Received: (at submit) by debbugs.gnu.org; 19 Oct 2022 09:30:07 +0000 Received: from localhost ([127.0.0.1]:55833 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol5Op-0002Dr-A6 for submit@debbugs.gnu.org; Wed, 19 Oct 2022 05:30:07 -0400 Received: from lists.gnu.org ([209.51.188.17]:41290) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ol5Ok-0002D8-Sk for submit@debbugs.gnu.org; Wed, 19 Oct 2022 05:30:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43218) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ol5Oi-0003FJ-49 for guix-patches@gnu.org; Wed, 19 Oct 2022 05:30:01 -0400 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]:44943) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ol5Oc-0002PJ-9E for guix-patches@gnu.org; Wed, 19 Oct 2022 05:29:59 -0400 Received: by mail-ej1-x62c.google.com with SMTP id w18so38479181ejq.11 for ; Wed, 19 Oct 2022 02:29:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:from:to:cc:subject:date:message-id:reply-to; bh=oc8+dRDaejSL9wqWEc8iHkvF0ehETg8nygZPqkS8UOs=; b=TsSv8Y/KkHKZG80pIVAu1ED9eE/nbHYyUagmC8hgbqtRy6/sr/as+ODNWoB/+uxiKd aeNYPu4N4jITnLEorQqQDNh2JAkACw3gWFUSMxILuwx9ug0FyZizLLE+KwbH/CkcHxR1 k1zt65T7S4V3Q4jacbBoC3NgLbYPnqUVDiZWjntALJwlqoPF/ynncsIC4LUezQllvtxv OIL4R7cRwtIJmSWKXkX3R5ryKNgu/uNBbh7xKLzH01HI6ymPHsrHN/79NKEgoH/rI9oZ F3fznANcNTWPVjBYKcf6unZvKwvm9L1LFQsuNbZGjYtTEp/wotGxLwux9SYjzcE7Zi6P zAKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oc8+dRDaejSL9wqWEc8iHkvF0ehETg8nygZPqkS8UOs=; b=Ay+iiRFwjrf8AWh/o5trPacD8I/OukrTMfu0lCOqpwaehQYj5VT5+4+FhyXxJnUNuK lNwyyqOpT8Z0iF4VhlPCWNHeR0DiTMGKzilm9Vb9YSah9n4XBGT/J3doPiIk+Esqs6Ye BfLWZvuwTBha1H16pjoQqJQCr8DIl0eYz4U6Idoa34gKzuhJRT+0rQkCnd+IboG48wlL ID0JYmwXkpftzuZNseemUI8umsr7WnFDQpBFpFnJTeY++XL5VlxRO3PNomcxgSBP24YA cEdKllmUqNFHsSVOCqcs3371HFTfcoNz1ClV6GALnVQMbUpe73hVpFzHI/ZOYboR2afn xCwg== X-Gm-Message-State: ACrzQf1sOznAf7yCYh4tBQjWOeXgIQfdr6/4taAESiwaTDMYPnZrTtZ8 TCmTkFiOm0Otr4CPyk/DvMNov6Kxx38yWn5iKtA= X-Google-Smtp-Source: AMsMyM4UIqKYeo8ldjvQjumZQscQDrQHAqbTlDhrQ5OhVXnNI/M3Y34nU8xZ8Kqc8Q6iPazIvLD4bA== X-Received: by 2002:a17:907:2cd9:b0:78d:9e76:be26 with SMTP id hg25-20020a1709072cd900b0078d9e76be26mr5800632ejc.315.1666171792196; Wed, 19 Oct 2022 02:29:52 -0700 (PDT) Received: from localhost ([141.226.13.62]) by smtp.gmail.com with ESMTPSA id 16-20020a170906309000b0078d22b0bcf2sm8769944ejv.168.2022.10.19.02.29.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Oct 2022 02:29:51 -0700 (PDT) From: Efraim Flashner To: guix-patches@gnu.org Subject: [PATCH] guix gc: Add '--vacuum-store'. Date: Wed, 19 Oct 2022 12:26:20 +0300 Message-Id: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> X-Mailer: git-send-email 2.38.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::62c; envelope-from=efraim.flashner@gmail.com; helo=mail-ej1-x62c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.8 (/) X-Debbugs-Envelope-To: submit Cc: Efraim Flashner 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.8 (-) * guix/scripts/gc.scm (show-help, %options): Add '--vacuum-store'. * guix/store/database.scm (vacuum-database): New procedure. * doc/guix.texi (Invoking guix gc): Document the option. --- doc/guix.texi | 11 +++++++++++ guix/scripts/gc.scm | 11 +++++++++++ guix/store/database.scm | 9 ++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 3bf2dee752..89fd04415a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4531,6 +4531,17 @@ Invoking guix gc this option is primarily useful when the daemon was running with @option{--disable-deduplication}. +@item --vacuum-store +@cindex vacuum the store database +@comment Avoid words like 'repair,' 'compress,' and 'optimize.' +Guix uses an sqlite database to keep track of the items in (@pxref{The Store}). +Overtime it is possible that the database may grow to a large size and become +fragmented. As a result, one may wish to clear the freed space and join the +partially used pages in the database left behind from removed packages or after +running the garbage collector. Running @command{sudo guix gc --vacuum-store} +will lock the database and @code{VACUUM} the store, defragmenting the database +and purging freed pages, unlocking the database when it finishes.. + @end table @node Invoking guix pull diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 65cd4bdf8b..5e775c5cdb 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012-2013, 2015-2020, 2022 Ludovic Courtès +;;; Copyright © 2022 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ (define-module (guix scripts gc) generation-number) #:autoload (guix scripts package) (delete-generations) #:autoload (gnu home) (home-generation-base) + #:autoload (guix store database) (vacuum-database) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) @@ -86,6 +88,10 @@ (define (show-help) (display (G_ " --clear-failures remove PATHS from the set of cached failures")) (newline) + (display (G_ " + --vacuum-database repack the sqlite database tracking the store + using less space")) + (newline) (display (G_ " -h, --help display this help and exit")) (display (G_ " @@ -131,6 +137,11 @@ (define %options (lambda args (show-version-and-exit "guix gc"))) + (option '("vacuum-database") #f #f + (lambda args + (vacuum-database) + (exit 0))) + (option '(#\C "collect-garbage") #f #t (lambda (opt name arg result) (let ((result (alist-cons 'action 'collect-garbage diff --git a/guix/store/database.scm b/guix/store/database.scm index 8d08def833..e664015673 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017, 2019 Caleb Ristvedt ;;; Copyright © 2018, 2020, 2021 Ludovic Courtès ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2022 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,7 +46,8 @@ (define-module (guix store database) sqlite-register register-items %epoch - reset-timestamps)) + reset-timestamps + vacuum-database)) ;;; Code for working with the store database directly. @@ -438,3 +440,8 @@ (define* (register-items db items (register db item) (report)) items))))) + +(define (vacuum-database) + (let ((db (sqlite-open (store-database-file)))) + (sqlite-exec db "VACUUM;") + (sqlite-close db))) base-commit: 3bb145b6e2a8c84e7739ead9ae76dc4d42bb9850 -- 2.38.0 From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 20 14:51:14 2022 Received: (at 58624) by debbugs.gnu.org; 20 Oct 2022 18:51:14 +0000 Received: from localhost ([127.0.0.1]:36137 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oladO-0000RU-Aw for submit@debbugs.gnu.org; Thu, 20 Oct 2022 14:51:14 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:44892) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oladL-0000RG-Rs for 58624@debbugs.gnu.org; Thu, 20 Oct 2022 14:51:13 -0400 Received: by mail-ed1-f65.google.com with SMTP id g27so861982edf.11 for <58624@debbugs.gnu.org>; Thu, 20 Oct 2022 11:51:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:from:to:cc:subject:date :message-id:reply-to; bh=ZvyjiPA0vOJlHdHaRIVnHMMW3EWyeGvC5KfntddI7y4=; b=A5PFG/lOmrh8FhyZbs3BguUsHzeVhXZabRp3YETcVjqyF2nrhq039VE5VOkySg9zMp dtXb+JInJU5NoLKGtwgUoWctTz/GRWDOn7Bc2+bM4+maSGLy/REToXLWikA1YVxtodtT rxKa7Re/CmJdvOw8QFaJJKGmVk9ZZ7Lf7VNre/k1qLa3nr1I7MdJRdCfybcQgA+kmN8x 88PZbm1rR7z8L6CbEAZEorTN0ZJUV9GtuYa5Nk69rt3udkKEcOWglfTYqSo1jOBSoAe1 7uuWo3eHR/kIHQbk1AKV5SiLO7dtb2PFnPTkUb36jB4dTYrhp+2X+pvqw6oJZFfdz3Wa K2Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:to:from:subject:message-id:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZvyjiPA0vOJlHdHaRIVnHMMW3EWyeGvC5KfntddI7y4=; b=hX32nSGxQ4zNHVhP9Y3+ddJYoBuUb+cJA4bUOMS2jXyP2uFjtjRfFvIT5DZSu5Ah/1 iSw4JOHAWFZZXTFHt6Upfvavu3GBZ6HesjvhcliT7XUK3VjQ2fW1A/AyllW4Y+QmUzwq 6l7ZvPuzZ/OO5gdV3I0+hTmq/IdtRoabLjU5LBqn96zz4VjJITeqVao6n7o8b680yPpq SKIt3w4nRGwPuPbqLR/LfghKavZ26FOAhLGLiTA6W00p36HkMth0KFusXdG+eh9KNI0T UrUROsJvWKSrSxGYBlO65ALabZY2YtD8dN8i3UDbCOTzEsscqFya6mkMSXZyYJ/ASzbL nKbA== X-Gm-Message-State: ACrzQf18J5GfIEs3ATTgqxxrvnF10DF+OpmeDN7tSQvn214+DjnZefDC pUOfKHUfghZuNARMpBl1JUCJcVNB+bo= X-Google-Smtp-Source: AMsMyM58rr6duA4LM54L3oGqNTiHRyaVcwNfKPCRK8KSGqFhDCJpx3LaJvWSldcnewB/WP+ozQwuAg== X-Received: by 2002:a05:6402:1205:b0:458:c1b2:e428 with SMTP id c5-20020a056402120500b00458c1b2e428mr13414666edw.94.1666291865670; Thu, 20 Oct 2022 11:51:05 -0700 (PDT) Received: from lumine.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id f11-20020a170906738b00b0073dc8d0eabesm10888709ejl.15.2022.10.20.11.51.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 11:51:05 -0700 (PDT) Message-ID: Subject: Re: [PATCH] guix gc: Add '--vacuum-store'. From: Liliana Marie Prikler To: Efraim Flashner , 58624@debbugs.gnu.org Date: Thu, 20 Oct 2022 20:51:04 +0200 In-Reply-To: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> References: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.0 MIME-Version: 1.0 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 58624 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 (-) QW0gTWl0dHdvY2gsIGRlbSAxOS4xMC4yMDIyIHVtIDEyOjI2ICswMzAwIHNjaHJpZWIgRWZyYWlt IEZsYXNobmVyOgo+ICogZ3VpeC9zY3JpcHRzL2djLnNjbSAoc2hvdy1oZWxwLCAlb3B0aW9ucyk6 IEFkZCAnLS12YWN1dW0tc3RvcmUnLgo+ICogZ3VpeC9zdG9yZS9kYXRhYmFzZS5zY20gKHZhY3V1 bS1kYXRhYmFzZSk6IE5ldyBwcm9jZWR1cmUuCj4gKiBkb2MvZ3VpeC50ZXhpIChJbnZva2luZyBn dWl4IGdjKTogRG9jdW1lbnQgdGhlIG9wdGlvbi4KPiAtLS0KPiDCoGRvYy9ndWl4LnRleGnCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IDExICsrKysrKysrKysrCj4gwqBndWl4L3NjcmlwdHMvZ2Muc2Nt wqDCoMKgwqAgfCAxMSArKysrKysrKysrKwo+IMKgZ3VpeC9zdG9yZS9kYXRhYmFzZS5zY20gfMKg IDkgKysrKysrKystCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aXgudGV4aSBiL2RvYy9ndWl4LnRleGkK PiBpbmRleCAzYmYyZGVlNzUyLi44OWZkMDQ0MTVhIDEwMDY0NAo+IC0tLSBhL2RvYy9ndWl4LnRl eGkKPiArKysgYi9kb2MvZ3VpeC50ZXhpCj4gQEAgLTQ1MzEsNiArNDUzMSwxNyBAQCBJbnZva2lu ZyBndWl4IGdjCj4gwqB0aGlzIG9wdGlvbiBpcyBwcmltYXJpbHkgdXNlZnVsIHdoZW4gdGhlIGRh ZW1vbiB3YXMgcnVubmluZyB3aXRoCj4gwqBAb3B0aW9uey0tZGlzYWJsZS1kZWR1cGxpY2F0aW9u fS4KPiDCoAo+ICtAaXRlbSAtLXZhY3V1bS1zdG9yZQo+ICtAY2luZGV4IHZhY3V1bSB0aGUgc3Rv cmUgZGF0YWJhc2UKPiArQGNvbW1lbnQgQXZvaWQgd29yZHMgbGlrZSAncmVwYWlyLCcgJ2NvbXBy ZXNzLCcgYW5kICdvcHRpbWl6ZS4nCj4gK0d1aXggdXNlcyBhbiBzcWxpdGUgZGF0YWJhc2UgdG8g a2VlcCB0cmFjayBvZiB0aGUgaXRlbXMgaW4KPiAoQHB4cmVme1RoZSBTdG9yZX0pLgo+ICtPdmVy dGltZSBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBkYXRhYmFzZSBtYXkgZ3JvdyB0byBhIGxhcmdl IHNpemUKPiBhbmQgYmVjb21lCj4gK2ZyYWdtZW50ZWQuwqAgQXMgYSByZXN1bHQsIG9uZSBtYXkg d2lzaCB0byBjbGVhciB0aGUgZnJlZWQgc3BhY2UgYW5kCj4gam9pbiB0aGUKPiArcGFydGlhbGx5 IHVzZWQgcGFnZXMgaW4gdGhlIGRhdGFiYXNlIGxlZnQgYmVoaW5kIGZyb20gcmVtb3ZlZAo+IHBh Y2thZ2VzIG9yIGFmdGVyCj4gK3J1bm5pbmcgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLsKgIFJ1bm5p bmcgQGNvbW1hbmR7c3VkbyBndWl4IGdjIC0tCj4gdmFjdXVtLXN0b3JlfQo+ICt3aWxsIGxvY2sg dGhlIGRhdGFiYXNlIGFuZCBAY29kZXtWQUNVVU19IHRoZSBzdG9yZSwgZGVmcmFnbWVudGluZwo+ IHRoZSBkYXRhYmFzZQo+ICthbmQgcHVyZ2luZyBmcmVlZCBwYWdlcywgdW5sb2NraW5nIHRoZSBk YXRhYmFzZSB3aGVuIGl0IGZpbmlzaGVzLi4KWW91J3JlIHVzaW5nIHZhY3V1bS1zdG9yZSBoZXJl Li4uCgo+IMKgQGVuZCB0YWJsZQo+IMKgCj4gwqBAbm9kZSBJbnZva2luZyBndWl4IHB1bGwKPiBk aWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2djLnNjbSBiL2d1aXgvc2NyaXB0cy9nYy5zY20KPiBp bmRleCA2NWNkNGJkZjhiLi41ZTc3NWM1Y2RiIDEwMDY0NAo+IC0tLSBhL2d1aXgvc2NyaXB0cy9n Yy5zY20KPiArKysgYi9ndWl4L3NjcmlwdHMvZ2Muc2NtCj4gQEAgLTEsNSArMSw2IEBACj4gwqA7 OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUKPiDC oDs7OyBDb3B5cmlnaHQgwqkgMjAxMi0yMDEzLCAyMDE1LTIwMjAsIDIwMjIgTHVkb3ZpYyBDb3Vy dMOocwo+IDxsdWRvQGdudS5vcmc+Cj4gKzs7OyBDb3B5cmlnaHQgwqkgMjAyMiBFZnJhaW0gRmxh c2huZXIgPGVmcmFpbUBmbGFzaG5lci5jby5pbD4KPiDCoDs7Owo+IMKgOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4Lgo+IMKgOzs7Cj4gQEAgLTI3LDYgKzI4LDcgQEAgKGRlZmluZS1t b2R1bGUgKGd1aXggc2NyaXB0cyBnYykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdlbmVyYXRpb24tbnVtYmVyKQo+IMKg wqAgIzphdXRvbG9hZMKgwqAgKGd1aXggc2NyaXB0cyBwYWNrYWdlKSAoZGVsZXRlLWdlbmVyYXRp b25zKQo+IMKgwqAgIzphdXRvbG9hZMKgwqAgKGdudSBob21lKSAoaG9tZS1nZW5lcmF0aW9uLWJh c2UpCj4gK8KgICM6YXV0b2xvYWTCoMKgIChndWl4IHN0b3JlIGRhdGFiYXNlKSAodmFjdXVtLWRh dGFiYXNlKQo+IMKgwqAgIzp1c2UtbW9kdWxlIChpY2UtOSBtYXRjaCkKPiDCoMKgICM6dXNlLW1v ZHVsZSAoaWNlLTkgcmVnZXgpCj4gwqDCoCAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQo+IEBA IC04Niw2ICs4OCwxMCBAQCAoZGVmaW5lIChzaG93LWhlbHApCj4gwqDCoCAoZGlzcGxheSAoR18g Igo+IMKgwqDCoMKgwqDCoCAtLWNsZWFyLWZhaWx1cmVzwqDCoCByZW1vdmUgUEFUSFMgZnJvbSB0 aGUgc2V0IG9mIGNhY2hlZAo+IGZhaWx1cmVzIikpCj4gwqDCoCAobmV3bGluZSkKPiArwqAgKGRp c3BsYXkgKEdfICIKPiArwqDCoMKgwqDCoCAtLXZhY3V1bS1kYXRhYmFzZcKgIHJlcGFjayB0aGUg c3FsaXRlIGRhdGFiYXNlIHRyYWNraW5nIHRoZQo+IHN0b3JlCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2luZyBsZXNzIHNwYWNlIikpCj4gK8Kg IChuZXdsaW5lKQo+IMKgwqAgKGRpc3BsYXkgKEdfICIKPiDCoMKgIC1oLCAtLWhlbHDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQiKSkKPiDCoMKgIChk aXNwbGF5IChHXyAiCj4gQEAgLTEzMSw2ICsxMzcsMTEgQEAgKGRlZmluZSAlb3B0aW9ucwo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsYW1iZGEgYXJncwo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc2hvdy12ZXJzaW9uLWFuZC1leGl0ICJndWl4IGdj IikpKQo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgIChvcHRpb24gJygidmFjdXVtLWRhdGFiYXNlIikg I2YgI2YKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChsYW1iZGEgYXJncwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh2YWN1dW0tZGF0YWJhc2UpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGV4aXQgMCkpKQo+ICsKPiDCoMKgwqDC oMKgwqDCoMKgIChvcHRpb24gJygjXEMgImNvbGxlY3QtZ2FyYmFnZSIpICNmICN0Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGxhbWJkYSAob3B0IG5hbWUgYXJnIHJlc3VsdCkK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGxldCAoKHJlc3VsdCAoYWxp c3QtY29ucyAnYWN0aW9uICdjb2xsZWN0LWdhcmJhZ2UKPiBkaWZmIC0tZ2l0IGEvZ3VpeC9zdG9y ZS9kYXRhYmFzZS5zY20gYi9ndWl4L3N0b3JlL2RhdGFiYXNlLnNjbQo+IGluZGV4IDhkMDhkZWY4 MzMuLmU2NjQwMTU2NzMgMTAwNjQ0Cj4gLS0tIGEvZ3VpeC9zdG9yZS9kYXRhYmFzZS5zY20KPiAr KysgYi9ndWl4L3N0b3JlL2RhdGFiYXNlLnNjbQo+IEBAIC0yLDYgKzIsNyBAQAo+IMKgOzs7IENv cHlyaWdodCDCqSAyMDE3LCAyMDE5IENhbGViIFJpc3R2ZWR0IDxjYWxlYi5yaXN0dmVkdEBjdW5l Lm9yZz4KPiDCoDs7OyBDb3B5cmlnaHQgwqkgMjAxOCwgMjAyMCwgMjAyMSBMdWRvdmljIENvdXJ0 w6hzIDxsdWRvQGdudS5vcmc+Cj4gwqA7OzsgQ29weXJpZ2h0IMKpIDIwMjAgSmFuIChqYW5uZWtl KSBOaWV1d2VuaHVpemVuIDxqYW5uZWtlQGdudS5vcmc+Cj4gKzs7OyBDb3B5cmlnaHQgwqkgMjAy MiBFZnJhaW0gRmxhc2huZXIgPGVmcmFpbUBmbGFzaG5lci5jby5pbD4KPiDCoDs7Owo+IMKgOzs7 IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4Lgo+IMKgOzs7Cj4gQEAgLTQ1LDcgKzQ2LDgg QEAgKGRlZmluZS1tb2R1bGUgKGd1aXggc3RvcmUgZGF0YWJhc2UpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNxbGl0ZS1yZWdpc3Rlcgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWdp c3Rlci1pdGVtcwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAlZXBvY2gKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXNldC10aW1lc3RhbXBzKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXNldC10aW1lc3RhbXBzCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFjdXVtLWRhdGFi YXNlKSkKPiDCoAo+IMKgOzs7IENvZGUgZm9yIHdvcmtpbmcgd2l0aCB0aGUgc3RvcmUgZGF0YWJh c2UgZGlyZWN0bHkuCj4gwqAKPiBAQCAtNDM4LDMgKzQ0MCw4IEBAIChkZWZpbmUqIChyZWdpc3Rl ci1pdGVtcyBkYiBpdGVtcwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHJlZ2lzdGVyIGRiIGl0ZW0pCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAocmVwb3J0KSkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aXRlbXMpKSkpKQo+ICsKPiArKGRlZmluZSAodmFjdXVtLWRhdGFiYXNlKQo+ICvCoCAobGV0ICgo ZGIgKHNxbGl0ZS1vcGVuIChzdG9yZS1kYXRhYmFzZS1maWxlKSkpKQo+ICvCoMKgwqAgKHNxbGl0 ZS1leGVjIGRiICJWQUNVVU07IikKPiArwqDCoMKgIChzcWxpdGUtY2xvc2UgZGIpKSkKLi4uIGJ1 dCB2YWN1dW0tZGF0YWJhc2UgaGVyZS4KClNpbmNlIHRoZSBkYXRhYmFzZSBpcyBqdXN0IGEgcGFy dCBvZiB0aGUgc3RvcmUsIEkgdGhpbmsgbWFraW5nIGl0CiJ2YWN1dW0tZGF0YWJhc2UiIGV2ZXJ5 d2hlcmUgb3VnaHQgdG8gbWFrZSBpdCBib3RoIG1vcmUgY29uc2lzdGVudCBhbmQKbW9yZSBjb3Jy ZWN0LgoKQ2hlZXJzCg== From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 20 15:23:08 2022 Received: (at 58624) by debbugs.gnu.org; 20 Oct 2022 19:23:08 +0000 Received: from localhost ([127.0.0.1]:36155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1olb8G-0003Pc-36 for submit@debbugs.gnu.org; Thu, 20 Oct 2022 15:23:08 -0400 Received: from mail-ed1-f44.google.com ([209.85.208.44]:45826) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1olb8E-0003Ow-HB for 58624@debbugs.gnu.org; Thu, 20 Oct 2022 15:23:07 -0400 Received: by mail-ed1-f44.google.com with SMTP id a67so988293edf.12 for <58624@debbugs.gnu.org>; Thu, 20 Oct 2022 12:23:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender:from:to :cc:subject:date:message-id:reply-to; bh=S//69CoL4CJJ8Knt4+yu9bMapZXZ4Bt2tYz8ymqR0Vo=; b=nstusN8i5a265CZkGPp65GZH28ENygbXLoVTlHHTHitDRTb2fr5ovmKJW1jM5xQUca IrPsqKJrBMpIhnBPN99FvlmYK9zs6inSvPf1HMoYNJc1LhNkow53qeYmoaAwo4/jzeup neVekseIxV7an3x1I+b02yCRdBJa04PzFBv7xG3Rom1tjxa/na9Ex55+YlLjpoIAx/EW 9z/DUwtKDgIBP+n19zWP9vTcs5odKHwKWA3L5lXia9/ncfvESlLQfxWTL479E3tnxPEs s87Axc1zyErI165K8B9kWqXV8MRBm4N2AIVlfDEnNBPL76oKwKb7wP1F5WF1Ls+EVBpz 0u6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S//69CoL4CJJ8Knt4+yu9bMapZXZ4Bt2tYz8ymqR0Vo=; b=JlnXT3yCpw+jIkHdmu2oWdb1V6rUdBdqWlIOWRdX26lsNhpb7fIHUKwZ7YQPFI4n3u rxCPYPLO8yIxxRSAsczrwqM84nS9yzlLlKvYZQy+pgxU1/zeS4xb2rfkLET2qWbdwF/O zIzbjdNQFUrw8GLO5lR0z/qZ9y6WZ3YJ6mbg8UXUfNJ6dCaRbbjMYE8e809mSaqIAb3C YNfipiQWZq5QnW38SFXzSP0gZ2Mq6rog0jPwYEnFP94B1rj5UXwWwEYYwbyvfP+VfZ+L HqwkIEKcoPgMYFCRPVfA5wt44RUWHVddc0lZvJ7tW5bHXnu8LFMuEU0EAeFAjCu+XylG QFvw== X-Gm-Message-State: ACrzQf0TVNe/swzzUfwSz1PC/pQOOpCf36k7uTIxnnYmYmKDuSHuihRf qCl2MYs8YYrKBfGADnAs6oc= X-Google-Smtp-Source: AMsMyM7r1/zDUn+TyWAsGAgz6tvL6D1mxET9/fcAoKYWLu3Ts4OHyVnCkrrlXa7DxyegOSgDY6pGVQ== X-Received: by 2002:a05:6402:550e:b0:456:f79f:2bed with SMTP id fi14-20020a056402550e00b00456f79f2bedmr13898190edb.106.1666293780479; Thu, 20 Oct 2022 12:23:00 -0700 (PDT) Received: from localhost ([141.226.13.62]) by smtp.gmail.com with ESMTPSA id c2-20020a17090618a200b007933047f923sm2335616ejf.118.2022.10.20.12.22.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 12:22:59 -0700 (PDT) Date: Thu, 20 Oct 2022 22:22:52 +0300 From: Efraim Flashner To: Liliana Marie Prikler Subject: Re: [PATCH] guix gc: Add '--vacuum-store'. Message-ID: Mail-Followup-To: Efraim Flashner , Liliana Marie Prikler , 58624@debbugs.gnu.org References: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="fUiHTDS2dH7vV/C6" Content-Disposition: inline In-Reply-To: X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 58624 Cc: 58624@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: -0.5 (/) --fUiHTDS2dH7vV/C6 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Oct 20, 2022 at 08:51:04PM +0200, Liliana Marie Prikler wrote: > Am Mittwoch, dem 19.10.2022 um 12:26 +0300 schrieb Efraim Flashner: > > * guix/scripts/gc.scm (show-help, %options): Add '--vacuum-store'. > > * guix/store/database.scm (vacuum-database): New procedure. > > * doc/guix.texi (Invoking guix gc): Document the option. > > --- > > =C2=A0doc/guix.texi=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | 11 +++++++++++ > > =C2=A0guix/scripts/gc.scm=C2=A0=C2=A0=C2=A0=C2=A0 | 11 +++++++++++ > > =C2=A0guix/store/database.scm |=C2=A0 9 ++++++++- > > =C2=A03 files changed, 30 insertions(+), 1 deletion(-) > >=20 > > diff --git a/doc/guix.texi b/doc/guix.texi > > index 3bf2dee752..89fd04415a 100644 > > --- a/doc/guix.texi > > +++ b/doc/guix.texi > > @@ -4531,6 +4531,17 @@ Invoking guix gc > > =C2=A0this option is primarily useful when the daemon was running with > > =C2=A0@option{--disable-deduplication}. > > =C2=A0 > > +@item --vacuum-store > > +@cindex vacuum the store database > > +@comment Avoid words like 'repair,' 'compress,' and 'optimize.' > > +Guix uses an sqlite database to keep track of the items in > > (@pxref{The Store}). > > +Overtime it is possible that the database may grow to a large size > > and become > > +fragmented.=C2=A0 As a result, one may wish to clear the freed space a= nd > > join the > > +partially used pages in the database left behind from removed > > packages or after > > +running the garbage collector.=C2=A0 Running @command{sudo guix gc -- > > vacuum-store} > > +will lock the database and @code{VACUUM} the store, defragmenting > > the database > > +and purging freed pages, unlocking the database when it finishes.. > You're using vacuum-store here... >=20 > > =C2=A0@end table > > =C2=A0 > > =C2=A0@node Invoking guix pull > > diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm > > index 65cd4bdf8b..5e775c5cdb 100644 > > --- a/guix/scripts/gc.scm > > +++ b/guix/scripts/gc.scm > > @@ -1,5 +1,6 @@ > > =C2=A0;;; GNU Guix --- Functional package management for GNU > > =C2=A0;;; Copyright =C2=A9 2012-2013, 2015-2020, 2022 Ludovic Court=C3= =A8s > > > > +;;; Copyright =C2=A9 2022 Efraim Flashner > > =C2=A0;;; > > =C2=A0;;; This file is part of GNU Guix. > > =C2=A0;;; > > @@ -27,6 +28,7 @@ (define-module (guix scripts gc) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 generation-number) > > =C2=A0=C2=A0 #:autoload=C2=A0=C2=A0 (guix scripts package) (delete-gene= rations) > > =C2=A0=C2=A0 #:autoload=C2=A0=C2=A0 (gnu home) (home-generation-base) > > +=C2=A0 #:autoload=C2=A0=C2=A0 (guix store database) (vacuum-database) > > =C2=A0=C2=A0 #:use-module (ice-9 match) > > =C2=A0=C2=A0 #:use-module (ice-9 regex) > > =C2=A0=C2=A0 #:use-module (srfi srfi-1) > > @@ -86,6 +88,10 @@ (define (show-help) > > =C2=A0=C2=A0 (display (G_ " > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --clear-failures=C2=A0=C2=A0 remov= e PATHS from the set of cached > > failures")) > > =C2=A0=C2=A0 (newline) > > +=C2=A0 (display (G_ " > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --vacuum-database=C2=A0 repack the sqli= te database tracking the > > store > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= using less space")) > > +=C2=A0 (newline) > > =C2=A0=C2=A0 (display (G_ " > > =C2=A0=C2=A0 -h, --help=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 display this help and exit")) > > =C2=A0=C2=A0 (display (G_ " > > @@ -131,6 +137,11 @@ (define %options > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 (lambda args > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (show-version-and-exit "guix gc"))) > > =C2=A0 > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (option '("vacuum-database"= ) #f #f > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 (lambda args > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (vacuum-database) > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (exit 0))) > > + > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (option '(#\C "collect= -garbage") #f #t > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 (lambda (opt name arg result) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (let ((result (alist-cons 'action '= collect-garbage > > diff --git a/guix/store/database.scm b/guix/store/database.scm > > index 8d08def833..e664015673 100644 > > --- a/guix/store/database.scm > > +++ b/guix/store/database.scm > > @@ -2,6 +2,7 @@ > > =C2=A0;;; Copyright =C2=A9 2017, 2019 Caleb Ristvedt > > =C2=A0;;; Copyright =C2=A9 2018, 2020, 2021 Ludovic Court=C3=A8s > > =C2=A0;;; Copyright =C2=A9 2020 Jan (janneke) Nieuwenhuizen > > +;;; Copyright =C2=A9 2022 Efraim Flashner > > =C2=A0;;; > > =C2=A0;;; This file is part of GNU Guix. > > =C2=A0;;; > > @@ -45,7 +46,8 @@ (define-module (guix store database) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 sqlite-register > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 register-items > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 %epoch > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 res= et-timestamps)) > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 res= et-timestamps > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 vac= uum-database)) > > =C2=A0 > > =C2=A0;;; Code for working with the store database directly. > > =C2=A0 > > @@ -438,3 +440,8 @@ (define* (register-items db items > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (register db item) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (report)) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 items))))) > > + > > +(define (vacuum-database) > > +=C2=A0 (let ((db (sqlite-open (store-database-file)))) > > +=C2=A0=C2=A0=C2=A0 (sqlite-exec db "VACUUM;") > > +=C2=A0=C2=A0=C2=A0 (sqlite-close db))) > ... but vacuum-database here. >=20 > Since the database is just a part of the store, I think making it > "vacuum-database" everywhere ought to make it both more consistent and > more correct. Agreed. I even made sure it was --vacuum-database in the help menu from 'guix gc --help'. Truth is I wrote the code and then the next day I wrote the documentation, so figures I would document it wrong ... --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --fUiHTDS2dH7vV/C6 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmNRoAkACgkQQarn3Mo9 g1Ht2w/+I2UZ4fjmUmHaxL+acSvnW4AGXkZFsKuqCzWOYpCX1Bm1ZeM5G5KeT696 ggun/XC5OUua9xXmpSMqkDkKewHP68QArAWdMw9vrG0/QRBsGLVD4aaR1Qk44kv3 n4BHTSYLy0fC4rkoof2iLVORKzzAKZL4f3KTjyF2MmTrmR0hw3mnE5Z+EWKiYa82 Rn5WCWyXiAJcUu3qTxgtnpRuCv95uyfV1tTWnCiC13duG9I/zTkg7fI1G0LIkpT2 n/hVvx98bVkGoiYz5KqGvZzb8gqJ3VsiUwzZjX4zDRBdN2zsIrNl9oKgvCJ3JYcj Ipa90/jLK9nXGfEv/6KpoiqcavTNstjhuYYXaSVB2zjZkvTlPxUNZPtO5q815ays 4IrAUV1Z/8QeqlLZyvwh1ZCbt2mzcZmfzwZWb+ZBtsBkMIau4KXTKdeDz7ngEp/L qfEPflIkqNH1zm1Pu6OAe5O4+KdnfT+OHFEZ7sdnQMNwyH4wTaW2LnnVnLJBBtgu TJvC6gxrO8ZC7Kc9ehUdQnB5GxYb8q1FTTcnxZZmcxJTu42oCo2oRryYQMqqh+/o UvbBXEA7RixsNjiFinDvdOArmXG7VFcwmxwf7KjsZLSZL5RntjpSB8fevulbd3Zg sLiRV1ktG2ApvwMVUVyyLCxNyO8dlgRz35/2HEtgmssLc5mu34g= =QGd3 -----END PGP SIGNATURE----- --fUiHTDS2dH7vV/C6-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 20 15:28:10 2022 Received: (at 58624) by debbugs.gnu.org; 20 Oct 2022 19:28:10 +0000 Received: from localhost ([127.0.0.1]:36165 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1olbD8-0003X4-2v for submit@debbugs.gnu.org; Thu, 20 Oct 2022 15:28:10 -0400 Received: from mail-ej1-f49.google.com ([209.85.218.49]:41551) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1olbD5-0003Ws-Gx for 58624@debbugs.gnu.org; Thu, 20 Oct 2022 15:28:08 -0400 Received: by mail-ej1-f49.google.com with SMTP id d26so1914862ejc.8 for <58624@debbugs.gnu.org>; Thu, 20 Oct 2022 12:28:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:from:to:cc:subject:date:message-id:reply-to; bh=NCbfO/K5YXeC5RZDyBVQxY2KX4byDDDxn65FDGQbIZg=; b=HVEKx88TYwSkpZqypXFvtvZK5fUi1bgDjVyN9wHg36VwLdtHXB52f+GAyi9Wgp/aRQ RiV4yH3i4Op42V4+8CG4Oi2Q1Tx6h+XvyoghOvFCKLZTR2VAtgXZHALhlGiUewQa6Rvm OW3yg8UiOzFbhX1rveFNm6AIN3nt6g/QFwNBj0hYRWJFYIkDZuZC2BMOJK3/F1NkRKwT HlQ8I8PcEB2I1GpCzM4gZxgOX1rkCuVz0QYiBg+OobhreKJEbSLeh7E0W2VLcCdQRHox C4HWC1MMrms69WIJ7C7HU661ZAhOHZngklsyNXbGScgyxkl3dtPI+glYPycbLPwHOvZf pTfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NCbfO/K5YXeC5RZDyBVQxY2KX4byDDDxn65FDGQbIZg=; b=te73SSAngHkduF1mbQkCJ9qftape7LT27UL3Ij9/9FjLmtPxt53EiPBFIUzDRMpf/H elOeHtGJLrgQnC4s2MG/3aGGPOvkGZctwzRuRZ9rAxaYrY2lhoUXsvvkW0nNmqkvhS9/ 4varTwFkTgeA4SIa/aNSfCq723Ft9GSnRMfD28Hdkrn1ta+pSmCMU4YQLgiyr6pyNJcc jytWvTRR8eul2bpFleCSsOzATLbT+/6f4b9+tzDI2Lcy/SckMzgjvPv9N9gZrdixWeVP TCWzdLUPW/mzq6j51QZjGK6fxfj6FQnwiDkuZky2VlTJJ9OCNLp0uXy7yL4d63X8F3LF 7cnw== X-Gm-Message-State: ACrzQf0T/87l/xFWQbrVWTdzxcA7OPki5jXv5rYvbkXQI7iVxcKBO+DA er1KNoDWbZHIc5YBoetbolIWyuROWZEmLKTY2uE= X-Google-Smtp-Source: AMsMyM5l0AQGe8gmnJsmNsN5ElTgmQrmAxpfuSvBFlSF0kHN6KTfMqsqJzSJloBmlFfLS1uaNmSHQA== X-Received: by 2002:a17:906:cc0b:b0:78e:1d51:36ea with SMTP id ml11-20020a170906cc0b00b0078e1d5136eamr12486758ejb.408.1666294081585; Thu, 20 Oct 2022 12:28:01 -0700 (PDT) Received: from localhost ([141.226.13.62]) by smtp.gmail.com with ESMTPSA id r11-20020a170906704b00b0073d9630cbafsm10694050ejj.126.2022.10.20.12.28.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 12:28:01 -0700 (PDT) From: Efraim Flashner To: 58624@debbugs.gnu.org Subject: [PATCH v2] guix gc: Add '--vacuum-database'. Date: Thu, 20 Oct 2022 22:27:53 +0300 Message-Id: X-Mailer: git-send-email 2.38.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 58624 Cc: Efraim Flashner 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: -0.5 (/) * guix/scripts/gc.scm (show-help, %options): Add '--vacuum-database'. * guix/store/database.scm (vacuum-database): New procedure. * doc/guix.texi (Invoking guix gc): Document the option. --- doc/guix.texi | 12 ++++++++++++ guix/scripts/gc.scm | 11 +++++++++++ guix/store/database.scm | 9 ++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index fd8b19fe46..1c13480cbc 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4531,6 +4531,18 @@ Invoking guix gc this option is primarily useful when the daemon was running with @option{--disable-deduplication}. +@item --vacuum-database +@cindex vacuum the store database +@comment Avoid words like 'repair,' 'compress,' and 'optimize.' +Guix uses an sqlite database to keep track of the items in (@pxref{The Store}). +Overtime it is possible that the database may grow to a large size and become +fragmented. As a result, one may wish to clear the freed space and join the +partially used pages in the database left behind from removed packages or after +running the garbage collector. Running @command{sudo guix gc +--vacuum-database} will lock the database and @code{VACUUM} the store, +defragmenting the database and purging freed pages, unlocking the database when +it finishes.. + @end table @node Invoking guix pull diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 65cd4bdf8b..5e775c5cdb 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012-2013, 2015-2020, 2022 Ludovic Courtès +;;; Copyright © 2022 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ (define-module (guix scripts gc) generation-number) #:autoload (guix scripts package) (delete-generations) #:autoload (gnu home) (home-generation-base) + #:autoload (guix store database) (vacuum-database) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) @@ -86,6 +88,10 @@ (define (show-help) (display (G_ " --clear-failures remove PATHS from the set of cached failures")) (newline) + (display (G_ " + --vacuum-database repack the sqlite database tracking the store + using less space")) + (newline) (display (G_ " -h, --help display this help and exit")) (display (G_ " @@ -131,6 +137,11 @@ (define %options (lambda args (show-version-and-exit "guix gc"))) + (option '("vacuum-database") #f #f + (lambda args + (vacuum-database) + (exit 0))) + (option '(#\C "collect-garbage") #f #t (lambda (opt name arg result) (let ((result (alist-cons 'action 'collect-garbage diff --git a/guix/store/database.scm b/guix/store/database.scm index 8d08def833..e664015673 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017, 2019 Caleb Ristvedt ;;; Copyright © 2018, 2020, 2021 Ludovic Courtès ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2022 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,7 +46,8 @@ (define-module (guix store database) sqlite-register register-items %epoch - reset-timestamps)) + reset-timestamps + vacuum-database)) ;;; Code for working with the store database directly. @@ -438,3 +440,8 @@ (define* (register-items db items (register db item) (report)) items))))) + +(define (vacuum-database) + (let ((db (sqlite-open (store-database-file)))) + (sqlite-exec db "VACUUM;") + (sqlite-close db))) base-commit: 00ff6f7c399670a76efffb91276dea2633cc130c -- 2.38.0 From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 03 12:20:55 2022 Received: (at submit) by debbugs.gnu.org; 3 Nov 2022 16:20:55 +0000 Received: from localhost ([127.0.0.1]:50134 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqcxa-0003Ac-TO for submit@debbugs.gnu.org; Thu, 03 Nov 2022 12:20:55 -0400 Received: from lists.gnu.org ([209.51.188.17]:37092) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqcxW-0003AR-1c for submit@debbugs.gnu.org; Thu, 03 Nov 2022 12:20:53 -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 1oqcxV-0007UL-PK for guix-patches@gnu.org; Thu, 03 Nov 2022 12:20:49 -0400 Received: from mira.cbaines.net ([2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oqcxU-0000GR-5M for guix-patches@gnu.org; Thu, 03 Nov 2022 12:20:49 -0400 Received: from localhost (93-63-133-243.ip27.fastwebnet.it [93.63.133.243]) by mira.cbaines.net (Postfix) with ESMTPSA id 022DE27BBE9; Thu, 3 Nov 2022 16:20:41 +0000 (GMT) Received: from felis (localhost [127.0.0.1]) by localhost (OpenSMTPD) with ESMTP id b1e32608; Thu, 3 Nov 2022 16:20:41 +0000 (UTC) References: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> User-agent: mu4e 1.8.9; emacs 28.1 From: Christopher Baines To: Efraim Flashner Subject: Re: [bug#58624] [PATCH v2] guix gc: Add '--vacuum-database'. Date: Thu, 03 Nov 2022 17:20:24 +0100 In-reply-to: Message-ID: <875yfwnh5z.fsf@cbaines.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Received-SPF: pass client-ip=2a01:7e00:e000:2f8:fd4d:b5c7:13fb:3d27; envelope-from=mail@cbaines.net; helo=mira.cbaines.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 58624@debbugs.gnu.org, guix-patches@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.4 (--) --=-=-= Content-Type: text/plain Efraim Flashner writes: > * guix/scripts/gc.scm (show-help, %options): Add '--vacuum-database'. > * guix/store/database.scm (vacuum-database): New procedure. > * doc/guix.texi (Invoking guix gc): Document the option. > --- > doc/guix.texi | 12 ++++++++++++ > guix/scripts/gc.scm | 11 +++++++++++ > guix/store/database.scm | 9 ++++++++- > 3 files changed, 31 insertions(+), 1 deletion(-) I haven't tried this out, but it sounds good to me +1. Chris --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmNj6lhfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh aW5lcy5uZXQACgkQXiijOwuE9XeQXQ//SUtWH9tIqQPcupWFB+IOCcSvLzCX/wWJ 2n5bId8tGBtk8N9VrzFZN2vGUHgQpeLnBZHHBiEmHIzwFqgJ81KQvRW5nX8fPy28 S/cPUrNndB8YkiththX2RUZXpSuDzt4Qz4AynSP+6UQaP78oqTXBZ9qsMP07YCBm HS1D3rpACy84uq+yijoA7EQJiOdhYRcb6mPKoqK1kbGeelqxE7fl8F0rWHE2+BWe nlIlqHoVzeF7qzeihmIymgCxkHyltn+uy9svZUomCuhN3581TbpHRdl8ur8RD9na +6n2VJEMYP7oJsiYB/+QfI9T0RnruMhH8lQ0lESPKY+sp5vCA0IMQHEYDypOiGx1 yYk6EiYl6tws6Mh4+vW7g8tlupdzagYl1/puJjCsEUAO9hqsCSPYqoYic4ZHMVbm PQdryn94wYKhHjP7qUgXLhQ5nD1u9SwVwNnRuAc8+rF3SwmBl1jR2nifSVgEwWhr YrWrhvpwBx4c3RYv8OAK/kl9TqPEyUTu1kACC4zxJBAk1iOfv0tNiuDljtiFfRFI rwhqbsvkSZgnMHmDQe3ti/KumKKYh82qp+kiJ/qVVmgkpWgE0zkv8pOSOhNbBR5T KnqKlL1neimIpNu+qfOuKIC4bho03G3lzOVb8OFsPDntXDEnhSyalUehRiQoJeCl qSxhyt80m9g= =CEAF -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 06 07:04:30 2022 Received: (at 58624-done) by debbugs.gnu.org; 6 Nov 2022 12:04:30 +0000 Received: from localhost ([127.0.0.1]:58849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oreO5-0008DR-Rd for submit@debbugs.gnu.org; Sun, 06 Nov 2022 07:04:30 -0500 Received: from mail-wr1-f44.google.com ([209.85.221.44]:37440) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oreNz-0008DA-UK for 58624-done@debbugs.gnu.org; Sun, 06 Nov 2022 07:04:27 -0500 Received: by mail-wr1-f44.google.com with SMTP id bs21so12632069wrb.4 for <58624-done@debbugs.gnu.org>; Sun, 06 Nov 2022 04:04:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender:from:to :cc:subject:date:message-id:reply-to; bh=Q5bDhve3Fp1jo468GdOwMuN9z4w4j7+9Qd0EVymt154=; b=NrbPLFa8H0qa6pfo0d7y/JkRdNw8WJK6lB4klGDu2svt8vjq5XKEEsLHaLdpIHWg0u F88NqumODNW/jvjxSiV+SKzkjNXxLGLg/VNjQWq8ZC2gjUwBKsIxZwSW44xJX6W0wdgC IJUF567q4/hQWU8exn8eIB6WskbXOsygcgZ5VxBcYBusQ95szjaIYD/dgEdmbZjpRM3L T5UfW9MN9E3LL+4Uunv1sc0xd96OV56cPGU80pYr3s7UGV5NmI7utfpNFE405zmbBgNC utyNq04hF+a4e4TmT60CtaDs7/0qFAFlGTsOofDFJIMSQWmm9t8oYwjWtDPC3s/ZQq5n w0Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Q5bDhve3Fp1jo468GdOwMuN9z4w4j7+9Qd0EVymt154=; b=QY/b+acqNmbfLFfeVkgEdJ9PxLx5h6WqbFhkjVfZ3k4KeqTEFAVLp/TkTwpqLmPLI+ 9kZ9J2DEFoS9OLinBKKhGOHgIbSgUmPKMU2+IpyN426rwcRnfLHvlXFI/1PyF8ZfyE4i 8tsO2Pm6xHYqhIw7fNIIHA6RwtwUBa6LMdqlJBb3Qcb5GoHQ70WfxABXhQP20HxrB5zV m/JSgEw6ypPmErBLDFm9DVkdQKpzATo1tuO9Z/tEnNcupxO9yJv1aglAqm1xIwdeE7+z 1xujBgEhW9JQsIxXst1pH9FJin7m4sTD8y6GCnfyAzSQ1hXhhlIrR/fEmPVqMa1JOZ+e 23bQ== X-Gm-Message-State: ACrzQf1gk5FIZ4iswGGZektnCx3co61uSyE9Z+Pf2ZRmNkTRrx5Jeooi pFKfMnqmfA952D2N6yfiNEE= X-Google-Smtp-Source: AMsMyM4CFpHufJ2OtJeI4Jr7WjjfTpr7yzSEowelS+gp4L4dpriZXpP8TyeH5qICnRZ6fOj/G3ubaQ== X-Received: by 2002:a5d:42c5:0:b0:236:60ed:9abf with SMTP id t5-20020a5d42c5000000b0023660ed9abfmr28434520wrr.454.1667736256922; Sun, 06 Nov 2022 04:04:16 -0800 (PST) Received: from localhost ([141.226.15.67]) by smtp.gmail.com with ESMTPSA id hn3-20020a05600ca38300b003cf78aafdd7sm5064616wmb.39.2022.11.06.04.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Nov 2022 04:04:16 -0800 (PST) Date: Sun, 6 Nov 2022 14:04:14 +0200 From: Efraim Flashner To: Christopher Baines Subject: Re: [bug#58624] [PATCH v2] guix gc: Add '--vacuum-database'. Message-ID: Mail-Followup-To: Efraim Flashner , Christopher Baines , 58624-done@debbugs.gnu.org References: <56516d4a8143b96ef80d6dfd18f147568f23b73e.1666171506.git.efraim@flashner.co.il> <875yfwnh5z.fsf@cbaines.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="57bD3ytS9oS22zX2" Content-Disposition: inline In-Reply-To: <875yfwnh5z.fsf@cbaines.net> X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 58624-done Cc: 58624-done@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: -0.5 (/) --57bD3ytS9oS22zX2 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Nov 03, 2022 at 05:20:24PM +0100, Christopher Baines wrote: >=20 > Efraim Flashner writes: >=20 > > * guix/scripts/gc.scm (show-help, %options): Add '--vacuum-database'. > > * guix/store/database.scm (vacuum-database): New procedure. > > * doc/guix.texi (Invoking guix gc): Document the option. > > --- > > doc/guix.texi | 12 ++++++++++++ > > guix/scripts/gc.scm | 11 +++++++++++ > > guix/store/database.scm | 9 ++++++++- > > 3 files changed, 31 insertions(+), 1 deletion(-) >=20 > I haven't tried this out, but it sounds good to me +1. Thanks. In the documentation I used overtime vs 'over time' and I had a double period at the end of the last sentence, which I cleaned up before pushing. --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --57bD3ytS9oS22zX2 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmNnor4ACgkQQarn3Mo9 g1Fx2xAAqLtJl/cg0EOQvFAA4yY1EJmivs09WUkW3Q4WQ3YhRUPP/tGnOmIIosL4 wj5yFCYrgQ07Zd3jY0h2BEj+C9X0/qnBUvBAHPThDZG+FQNG2JPU/FrxrsYRaZug h+tHSJTjEPug25d+i8nuvN7OQhFmie2Gt2klSv7QxRuDiTZTNmscmX5psChjy1Fp tBK/MzIkM3//uRd9Cag3qoTsKW2sTtuSILq/qzC9RzztqH53pPor2MAS25USIYNN U4A+qphlbuxi8fXbcprT6Zbcbf7erqGBJldTUJAAuPTV0vV4Gc6JxsW9P2q7bxKQ cz8rwEKkXroUfVhSiYjQrF2u92hL6MCgHbb3hitA/OIuVJ+myg53cIfdUXN2xO4i YzeIK6bK28ciDqtS2K7AjM0yrzlxHGBmhdSjRkl0N72JqABqKwmKH7iBGCwc0jf7 GfHTndsIO95A9rmj8VExfzXSm0dYC+idNvdmSOU+07dFjtwy7FgKmpyVvNzerYtQ 6x6O/2hSaCPH+SI7zQ8sSxoKROJX1f9rnLEvB/jnqnBCn/2texUEeDTBAksWxYHP RmYVEu49UOheLgn+tGXcxUrOOqF++7wBXy6cSOWCqHK5FgpU4x9y+Q3C1FaKl7Ie d8tE0IwxQqksQsa6FtLy9Ku3I2U7ZBOWr95CNPIjEXKGf6af8RE= =Rfqp -----END PGP SIGNATURE----- --57bD3ytS9oS22zX2-- From unknown Tue Aug 19 07:26:50 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 04 Dec 2022 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator