unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
       [not found] ` <20221128164705.366A7C004B6@vcs2.savannah.gnu.org>
@ 2022-11-30 17:34   ` Stefan Kangas
  2022-12-01  1:05     ` Juanma Barranquero
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Kangas @ 2022-11-30 17:34 UTC (permalink / raw)
  To: Juanma Barranquero, emacs-devel

Juanma Barranquero <lekktu@gmail.com> writes:

> branch: master
> commit 2772ebe3667f28cefd0d6134204ce6a3c7a8c323
> Author: Juanma Barranquero <lekktu@gmail.com>
> Commit: Juanma Barranquero <lekktu@gmail.com>
>
>     Do not prune native-compiled system directories (bug#59658)
>
>     * lisp/emacs-lisp/comp.el (native-compile-prune-cache):
>     Skip last directory in `native-comp-eln-load-path'.

It seems like this leads to a failing test:

Running 3 tests (2022-11-30 18:26:07+0100, selector ‘(not (or (tag
:expensive-test) (tag :unstable)))’)
Cache cleared
Test test-native-compile-prune-cache backtrace:
  signal(ert-test-failed (((should-not (file-directory-p c2)) :form (f
  ert-fail(((should-not (file-directory-p c2)) :form (file-directory-p
  #f(compiled-function () #<bytecode -0x8ca32608ded3464>)()
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name test-native-compile-prune-cache :docu
  ert-run-or-rerun-test(#s(ert--stats :selector (not (or (tag :expensi
  ert-run-tests((not (or (tag :expensive-test) (tag :unstable))) #f(co
  ert-run-tests-batch((not (or (tag :expensive-test) (tag :unstable)))
  ert-run-tests-batch-and-exit((not (or (tag :expensive-test) (tag :un
  command-line-1(("-L" ":." "-l" "ert" "-l" "lisp/emacs-lisp/comp-test
  command-line()
  normal-top-level()
Test test-native-compile-prune-cache condition:
    (ert-test-failed
     ((should-not
       (file-directory-p c2))
      :form
      (file-directory-p "/tmp/emacs-test-MHYUZK-comp/eln-cache/29.0.50-old")
      :value t))
   FAILED  1/3  test-native-compile-prune-cache (0.003363 sec) at
lisp/emacs-lisp/comp-tests.el:46
Cache cleared
   passed  2/3  test-native-compile-prune-cache/delete-only-eln (0.002607 sec)
Cache cleared
   passed  3/3
test-native-compile-prune-cache/dont-delete-in-parent-of-cache
(0.002566 sec)

Ran 3 tests, 2 results as expected, 1 unexpected (2022-11-30
18:26:07+0100, 0.132447 sec)

1 unexpected results:
   FAILED  test-native-compile-prune-cache

make[3]: *** [Makefile:174: lisp/emacs-lisp/comp-tests.log] Error 1



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-11-30 17:34   ` master 2772ebe366: Do not prune native-compiled system directories (bug#59658) Stefan Kangas
@ 2022-12-01  1:05     ` Juanma Barranquero
  2022-12-01  3:49       ` Stefan Kangas
  0 siblings, 1 reply; 7+ messages in thread
From: Juanma Barranquero @ 2022-12-01  1:05 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1499 bytes --]

Yes, I see. We'll have to decide where's the error, or what's the intended
behavior.

test-native-compile-prune-cache sets native-comp-eln-load-path to a single
directory and then tests whether native-compile-prune-cache can delete a
stale cache dir inside it (and keep a non-stale one).

It is obviously going to fail with my fix, because with it installed,
native-compile-prune-cache is never going to delete anything in the last
(or, in this case, unique) directory in native-comp-eln-load-path, because,
as the docstring of native-comp-eln-load-path says, "[t]he last directory
of this list is assumed to be the system one" (i.e, the one containing the
preloaded/ subdirectory and its content).

So, alternatives:

1.- We fix the test so it sets native-comp-eln-load-path to a list of two
directories, and checks that the stale subdir is deleted in the first, and
nothing is deleted in the second ("system") one.

2.- We remove my change and allow that native-compile-prune-cache sometimes
deletes files in the "system" eln cache, but Eli argued that we don't know
if the user will have write access to it, and we're not sure we *want* to
allow native-compile-prune-cache to delete files there...

3.- Or we find a way to reliably decide whether a cache directory is, in
fact, the "system" one (which we can currently do, heuristically, because
it contains preloaded/), and fix *both* my patch and the test so it only
considers untouchable those cache directories that really are "system" ones.

[-- Attachment #2: Type: text/html, Size: 1915 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-12-01  1:05     ` Juanma Barranquero
@ 2022-12-01  3:49       ` Stefan Kangas
  2022-12-01  3:57         ` Juanma Barranquero
  2022-12-01  7:18         ` Eli Zaretskii
  0 siblings, 2 replies; 7+ messages in thread
From: Stefan Kangas @ 2022-12-01  3:49 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: emacs-devel

Juanma Barranquero <lekktu@gmail.com> writes:

> Yes, I see. We'll have to decide where's the error, or what's the intended
> behavior.

The point of the command is basically to free some disk space by getting
rid of (presumably unused) files from ~/.emacs.d/eln-cache.

> 1.- We fix the test so it sets native-comp-eln-load-path to a list of two
> directories, and checks that the stale subdir is deleted in the first, and
> nothing is deleted in the second ("system") one.

I don't really have an opinion on the rest, so just fixing the test
sounds like an okay outcome from my perspective.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-12-01  3:49       ` Stefan Kangas
@ 2022-12-01  3:57         ` Juanma Barranquero
  2022-12-01  7:18         ` Eli Zaretskii
  1 sibling, 0 replies; 7+ messages in thread
From: Juanma Barranquero @ 2022-12-01  3:57 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

On Thu, Dec 1, 2022 at 4:49 AM Stefan Kangas <stefankangas@gmail.com> wrote:

> The point of the command is basically to free some disk space by getting
> rid of (presumably unused) files from ~/.emacs.d/eln-cache.

That's why I reported and fixed a bug: it was removing files from
[installation-directory]/native-lisp/VERSION-xxxxxxxx

> I don't really have an opinion on the rest, so just fixing the test
> sounds like an okay outcome from my perspective.

Ok. I'll do it soonish (I hope).

[-- Attachment #2: Type: text/html, Size: 758 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-12-01  3:49       ` Stefan Kangas
  2022-12-01  3:57         ` Juanma Barranquero
@ 2022-12-01  7:18         ` Eli Zaretskii
  2022-12-01 16:56           ` Juanma Barranquero
  1 sibling, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2022-12-01  7:18 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: lekktu, emacs-devel

> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Wed, 30 Nov 2022 19:49:25 -0800
> Cc: emacs-devel@gnu.org
> 
> Juanma Barranquero <lekktu@gmail.com> writes:
> 
> > Yes, I see. We'll have to decide where's the error, or what's the intended
> > behavior.
> 
> The point of the command is basically to free some disk space by getting
> rid of (presumably unused) files from ~/.emacs.d/eln-cache.
> 
> > 1.- We fix the test so it sets native-comp-eln-load-path to a list of two
> > directories, and checks that the stale subdir is deleted in the first, and
> > nothing is deleted in the second ("system") one.
> 
> I don't really have an opinion on the rest, so just fixing the test
> sounds like an okay outcome from my perspective.

I agree that we should fix the test, not what the command does.



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-12-01  7:18         ` Eli Zaretskii
@ 2022-12-01 16:56           ` Juanma Barranquero
  2022-12-03 11:25             ` Juanma Barranquero
  0 siblings, 1 reply; 7+ messages in thread
From: Juanma Barranquero @ 2022-12-01 16:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stefan Kangas, emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 44 bytes --]

I'll install this if everyone's ok with it.

[-- Attachment #1.2: Type: text/html, Size: 143 bytes --]

[-- Attachment #2: comp-tests.patch --]
[-- Type: application/octet-stream, Size: 3871 bytes --]

diff --git i/test/lisp/emacs-lisp/comp-tests.el w/test/lisp/emacs-lisp/comp-tests.el
index 082b641fe3..418c729694 100644
--- i/test/lisp/emacs-lisp/comp-tests.el
+++ w/test/lisp/emacs-lisp/comp-tests.el
@@ -32,15 +32,19 @@ with-test-native-compile-prune-cache
   (declare (indent 0) (debug t))
   `(ert-with-temp-directory testdir
-     (setq testdir (expand-file-name "eln-cache" testdir))
-     (make-directory testdir)
-     (let* ((c1 (expand-file-name "29.0.50-cur" testdir))
-            (c2 (expand-file-name "29.0.50-old" testdir))
-            (native-comp-eln-load-path (list testdir))
-            (comp-native-version-dir "29.0.50-cur"))
-       (dolist (d (list c1 c2))
-         (make-directory d)
-         (with-temp-file (expand-file-name "some.eln" d) (insert "foo"))
-         (with-temp-file (expand-file-name "some.eln.tmp" d) (insert "foo")))
-       ,@body)))
+     (let ((usr-cache (expand-file-name "eln-usr-cache" testdir))
+	   (sys-cache (expand-file-name "eln-sys-cache" testdir)))
+       (make-directory usr-cache)
+       (make-directory sys-cache)
+       (let* ((c1 (expand-file-name "29.0.50-cur" usr-cache))
+              (c2 (expand-file-name "29.0.50-old" usr-cache))
+	      (s1 (expand-file-name "29.0.50-cur" sys-cache))
+	      (s2 (expand-file-name "preloaded" s1))
+              (native-comp-eln-load-path (list usr-cache sys-cache))
+              (comp-native-version-dir "29.0.50-cur"))
+	 (dolist (d (list c1 c2 s1 s2))
+           (make-directory d)
+           (with-temp-file (expand-file-name "some.eln" d) (insert "foo"))
+           (with-temp-file (expand-file-name "some.eln.tmp" d) (insert "foo")))
+	 ,@body))))
 
 (ert-deftest test-native-compile-prune-cache ()
@@ -48,7 +52,8 @@ test-native-compile-prune-cache
   (with-test-native-compile-prune-cache
     (native-compile-prune-cache)
-    (should (file-directory-p c1))
-    (should (file-regular-p (expand-file-name "some.eln" c1)))
-    (should (file-regular-p (expand-file-name "some.eln.tmp" c1)))
+    (dolist (d (list c1 s1 s2))
+      (should (file-directory-p d))
+      (should (file-regular-p (expand-file-name "some.eln" d)))
+      (should (file-regular-p (expand-file-name "some.eln.tmp" d))))
     (should-not (file-directory-p c2))
     (should-not (file-regular-p (expand-file-name "some.eln" c2)))
@@ -58,20 +63,22 @@ test-native-compile-prune-cache/delete-only-eln
   (skip-unless (featurep 'native-compile))
   (with-test-native-compile-prune-cache
-    (with-temp-file (expand-file-name "keep1.txt" c1) (insert "foo"))
-    (with-temp-file (expand-file-name "keep2.txt" c2) (insert "foo"))
+    (dolist (d (list c1 c2 s1 s2))
+      (with-temp-file (expand-file-name "keep.txt" d) (insert "foo")))
     (native-compile-prune-cache)
-    (should (file-regular-p (expand-file-name "keep1.txt" c1)))
-    (should (file-regular-p (expand-file-name "keep2.txt" c2)))))
+    (dolist (d (list c1 c2 s1 s2))
+      (should (file-regular-p (expand-file-name "keep.txt" d))))))
 
 (ert-deftest test-native-compile-prune-cache/dont-delete-in-parent-of-cache ()
   (skip-unless (featurep 'native-compile))
   (with-test-native-compile-prune-cache
-    (let ((f1 (expand-file-name "../some.eln" testdir))
-          (f2 (expand-file-name "some.eln" testdir)))
-      (with-temp-file f1 (insert "foo"))
-      (with-temp-file f2 (insert "foo"))
+    (let ((f1 (expand-file-name "../some.eln" usr-cache))
+          (f2 (expand-file-name "some.eln" usr-cache))
+	  (f3 (expand-file-name "../some.eln" sys-cache))
+	  (f4 (expand-file-name "some.eln" sys-cache)))
+      (dolist (f (list f1 f2 f3 f4))
+	(with-temp-file f (insert "foo")))
       (native-compile-prune-cache)
-      (should (file-regular-p f1))
-      (should (file-regular-p f2)))))
+      (dolist (f (list f1 f2 f3 f4))
+	(should (file-regular-p f))))))
 
 ;;; comp-tests.el ends here

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: master 2772ebe366: Do not prune native-compiled system directories (bug#59658)
  2022-12-01 16:56           ` Juanma Barranquero
@ 2022-12-03 11:25             ` Juanma Barranquero
  0 siblings, 0 replies; 7+ messages in thread
From: Juanma Barranquero @ 2022-12-03 11:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stefan Kangas, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 33 bytes --]

I've committed the test changes.

[-- Attachment #2: Type: text/html, Size: 130 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-12-03 11:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <166965402487.18442.18379860639913355185@vcs2.savannah.gnu.org>
     [not found] ` <20221128164705.366A7C004B6@vcs2.savannah.gnu.org>
2022-11-30 17:34   ` master 2772ebe366: Do not prune native-compiled system directories (bug#59658) Stefan Kangas
2022-12-01  1:05     ` Juanma Barranquero
2022-12-01  3:49       ` Stefan Kangas
2022-12-01  3:57         ` Juanma Barranquero
2022-12-01  7:18         ` Eli Zaretskii
2022-12-01 16:56           ` Juanma Barranquero
2022-12-03 11:25             ` Juanma Barranquero

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).