Description
Hi,
the cider project circle ci windows tests started to unexpectedly fail recently , caused by what it appears to be extra space in the output of the child process while creating the project's package:
eldev -dtT -p test
[00:01.343] Started up on Tue Feb 15 20:17:44 2022
[00:01.343] Running on GNU Emacs 27.2 (build 1, x86_64-w64-mingw32)
of 2021-03-26
[00:01.343] Project directory: `c:/Users/circleci/project/'
...
[00:17.695] Full command line (in directory `c:/Users/circleci/project/'):
c:/Users/circleci/.local/bin/eldev.bat package --output-dir c:/Users/circleci/project/.eldev/27.2/local/generated --print-filename
[00:36.443] Output of the child Eldev process:
[00:36.443] PACK -> .eldev/27.2/local/generated/cider-1.3.0snapshot.tar
c:/Users/circleci/project/.eldev/27.2/local/generated/cider-1.3.0snapshot.tar
generated
Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...
[00:36.443] All project dependencies (including those for set `test') have been installed already or are local
[00:36.443] (Re)installing project package `cider'...
[00:36.507] Debugger entered--Lisp error: (file-missing "Opening input file" #("No such file or directory" 0 25 (charset cp437)) "c:/Users/circleci/project/Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
insert-file-contents("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable..." nil nil nil nil)
insert-file-contents-literally("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
package-install-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
eldev--package-install-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
eldev-install-package-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
#f(compiled-function (original dependency &rest rest) #<bytecode 0x14eddb5>) ...
apply(#f(compiled-function (original dependency &rest rest) #<bytecode 0x14eddb5>) ) ...
package-activate-1(#s(package-desc :name cider :version (1 3 0 -4) :summary nil :reqs ((emacs (26)) (clojure-mode (5 12)) (parseedn (1 0 6)) (queue (0 2)) (spinner (1 7)) (seq (2 22)) (sesman (0 3 2))) :kind single :archive "--eldev--" :dir nil :extras nil :signed nil) nil deps)
package-activate(cider)
eldev--do-activate-dependencies(cider ((:package cider :archives (("--eldev--" . "c:/Users/circleci/project/.eldev/27.2/packages/archives/--eldev--/") ("melpa-unstable" . "https://melpa.org/packages/") ("gnu" . "https://elpa.gnu.org/packages/")))) (test) nil)
eldev--install-or-upgrade-dependencies(project (test) nil nil t nil nil)
eldev-load-project-dependencies(test)
eldev--do-test(nil nil)
eldev-test()
apply(eldev-test nil)
eldev-cli((#("-dtT" 0 4 (charset cp437)) #("-p" 0 2 (charset cp437)) #("test" 0 4 (charset cp437))))
(kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil)))
eval((kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil))) t)
command-line-1((#("--execute" 0 9 (charset cp437)) ...))
command-line()
normal-top-level()
...
It appears the extra bootstrap line in the child's output confuses Eldev which instead of trying to locate the file at c:/Users/circleci/project/.eldev/27.2/local/generated/cider-1.3.0snapshot.tar
it tries to locate it in Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...
.
Irrespective as to why the child process tries to reboostrap Eldev, should we improve the relevant code to gracefully handle extra output in the child process, perhaps by using a pattern to scan for the package location rather than offsetting from the last line?
(when (string= (car command) "package")
(goto-char (point-max))
(forward-line -2)
(let ((point (point)))
(end-of-line)
(let ((file (buffer-substring-no-properties point (point))))
(forward-line)
(push `(,dependency-name ,file ,(looking-at "up-to-date")) eldev--local-dependency-packages))))
circle ci log file at https://gist.github.com/ikappaki/76d7d81e363a0f9244b2374d62d11a89#file-issue-eldev-circleci-cider-test-output-boot-log.
Thanks