* Re: ignore trailing slash for `guix gc -d' /gnu/store/...something/ [not found] <20150202233426.GA28580@venom.fritz.box> @ 2015-02-03 20:57 ` Ludovic Courtès 2015-02-25 20:24 ` Tomáš Čech 0 siblings, 1 reply; 4+ messages in thread From: Ludovic Courtès @ 2015-02-03 20:57 UTC (permalink / raw) To: sleep_walker; +Cc: guix-devel, bug-guix sleep_walker@suse.cz skribis: > Package: guix > Version: 0.8.1 > > When I invoke `guix gc -d /path', success of the command depends whether /path ends with slash or not: > > $ guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/ > guix gc: error: build failed: path `/gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/' is not in the Nix store > > $ guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3 > finding garbage collector roots... > cannot read potential root `/var/guix/manifests' > deleting `/gnu/store/73b760g2nr9syhznydgly8r7vl2k9z11-profile' > deleting `/gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3' > deleting `/gnu/store/trash' > deleting unused links... > note: currently hard linking saves 247.60 MiB > > > * with the misleading error message it is usability bug > * it should be safe always try to remove slash from the end > * other commands may be affected too and the behaviour should be consistent for all commands What behavior do you think would be appropriate when running, say: guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/bin/lua Should it be equivalent to: guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3 I would think so, but I’d like to have feedback. Thanks, Ludo’. PS: Make sure to use bug-guix@gnu.org for bug reports. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ignore trailing slash for `guix gc -d' /gnu/store/...something/ 2015-02-03 20:57 ` ignore trailing slash for `guix gc -d' /gnu/store/...something/ Ludovic Courtès @ 2015-02-25 20:24 ` Tomáš Čech 2015-05-24 12:04 ` bug#19757: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' Cyrill Schenkel 0 siblings, 1 reply; 4+ messages in thread From: Tomáš Čech @ 2015-02-25 20:24 UTC (permalink / raw) To: guix-devel, bug-guix [-- Attachment #1: Type: text/plain, Size: 1624 bytes --] Sorry for late response. On Tue, Feb 03, 2015 at 09:57:04PM +0100, Ludovic Courtès wrote: >sleep_walker@suse.cz skribis: > >> Package: guix >> Version: 0.8.1 >> >> When I invoke `guix gc -d /path', success of the command depends whether /path ends with slash or not: >> >> $ guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/ >> guix gc: error: build failed: path `/gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/' is not in the Nix store >> >> $ guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3 >> finding garbage collector roots... >> cannot read potential root `/var/guix/manifests' >> deleting `/gnu/store/73b760g2nr9syhznydgly8r7vl2k9z11-profile' >> deleting `/gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3' >> deleting `/gnu/store/trash' >> deleting unused links... >> note: currently hard linking saves 247.60 MiB >> >> >> * with the misleading error message it is usability bug >> * it should be safe always try to remove slash from the end >> * other commands may be affected too and the behaviour should be consistent for all commands > >What behavior do you think would be appropriate when running, say: > > guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3/bin/lua > >Should it be equivalent to: > > guix gc -d /gnu/store/mgqk0kv5jckrd7l5cwj68fp7cz2l4qqj-luajit-2.0.3 > >I would think so, but I’d like to have feedback. I think so as well. > >Thanks, >Ludo’. > >PS: Make sure to use bug-guix@gnu.org for bug reports. Sorry about that, I'm still getting used to GNU's bugtracker... [-- Attachment #2: Type: application/pgp-signature, Size: 181 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#19757: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' 2015-02-25 20:24 ` Tomáš Čech @ 2015-05-24 12:04 ` Cyrill Schenkel 2015-05-26 20:27 ` Ludovic Courtès 0 siblings, 1 reply; 4+ messages in thread From: Cyrill Schenkel @ 2015-05-24 12:04 UTC (permalink / raw) To: 19757 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: 0001-gc-ignore-trailing-slash-or-subdirectories-for-guix-.patch --] [-- Type: text/x-patch, Size: 2614 bytes --] From 7385c2ddd4ca50cb80afcd315287eaadff4d8421 Mon Sep 17 00:00:00 2001 From: Cyrill Schenkel <cyrill.schenkel@gmail.com> Date: Sun, 24 May 2015 13:46:37 +0200 Subject: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' Fixes <http://bugs.gnu.org/19757>. * guix/scripts/gc.scm (guix-gc): Convert paths to direct store paths. * guix/store.scm (direct-store-path): Get rid of subdirectories in store path. * tests/guix-gc.sh: New tests. --- guix/scripts/gc.scm | 2 +- guix/store.scm | 7 +++++++ tests/guix-gc.sh | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 4bae65a..a250cdc 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -168,7 +168,7 @@ Invoke the garbage collector.\n")) (collect-garbage store min-freed) (collect-garbage store)))) ((delete) - (delete-paths store paths)) + (delete-paths store (map direct-store-path paths))) ((list-references) (list-relatives references)) ((list-requisites) diff --git a/guix/store.scm b/guix/store.scm index fc2f8d9..98b293b 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -121,6 +121,7 @@ derivation-path? store-path-package-name store-path-hash-part + direct-store-path log-file)) (define %protocol-version #x10c) @@ -1038,6 +1039,12 @@ syntactically valid store path." (and=> (regexp-exec path-rx path) (cut match:substring <> 1)))) +(define (direct-store-path path) + "Return the direct store path part of PATH." + (let* ((minimal-prefix-length (+ (string-length (%store-prefix)) 35)) + (slash-index (string-index path #\/ minimal-prefix-length))) + (if slash-index (string-take path slash-index) path))) + (define (log-file store file) "Return the build log file for FILE, or #f if none could be found. FILE must be an absolute store file name, or a derivation file name." diff --git a/tests/guix-gc.sh b/tests/guix-gc.sh index eac9d82..c1eb66c 100644 --- a/tests/guix-gc.sh +++ b/tests/guix-gc.sh @@ -64,3 +64,23 @@ guix gc -C 1KiB # Check trivial error cases. if guix gc --delete /dev/null; then false; else true; fi + +# Bug #19757 +out="`guix build guile-bootstrap`" +test -d "$out" + +guix gc --delete "$out" + +! test -d "$out" + +out="`guix build guile-bootstrap`" +test -d "$out" + +guix gc --delete "$out/" + +! test -d "$out" + +out="`guix build guile-bootstrap`" +test -d "$out" + +guix gc --delete "$out/bin/guile" -- 2.1.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#19757: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' 2015-05-24 12:04 ` bug#19757: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' Cyrill Schenkel @ 2015-05-26 20:27 ` Ludovic Courtès 0 siblings, 0 replies; 4+ messages in thread From: Ludovic Courtès @ 2015-05-26 20:27 UTC (permalink / raw) To: Cyrill Schenkel; +Cc: 19757-done Cyrill Schenkel <cyrill.schenkel@gmail.com> skribis: > From 7385c2ddd4ca50cb80afcd315287eaadff4d8421 Mon Sep 17 00:00:00 2001 > From: Cyrill Schenkel <cyrill.schenkel@gmail.com> > Date: Sun, 24 May 2015 13:46:37 +0200 > Subject: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' > > Fixes <http://bugs.gnu.org/19757>. > > * guix/scripts/gc.scm (guix-gc): Convert paths to direct store paths. > * guix/store.scm (direct-store-path): Get rid of subdirectories in store path. > * tests/guix-gc.sh: New tests. Applied, thank you! I tweaked ‘direct-store-path’ so that it gracefully handles non-store file names such as “/dev/null”. Ludo’. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-05-26 20:28 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20150202233426.GA28580@venom.fritz.box> 2015-02-03 20:57 ` ignore trailing slash for `guix gc -d' /gnu/store/...something/ Ludovic Courtès 2015-02-25 20:24 ` Tomáš Čech 2015-05-24 12:04 ` bug#19757: [PATCH] gc: ignore trailing slash or subdirectories for `guix gc -d' Cyrill Schenkel 2015-05-26 20:27 ` Ludovic Courtès
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).