Subject: bug#78521: Error: No package in XXX with `package-install-file`

From: Jen-Chieh Shen <[email-masked]>
Date: Mon, 26 May 2025 05:58:11 -0700

> What I cannot deduce from this snippet, is if the Dired buffer at PATH
was previously
> opened or had any marked files in it.

It wasn't previously opened.

>  Could you check that (dired-get-marked-files) returns nil or call
(dired-unmark-all-marks)
> before invoking `package-dir-info`?

(dired-get-marked-files) doesn't return nil. I tried using
(dired-unmark-all-marks),
but (dired-get-marked-files) still returns the file—in this case, the path
to the Eask file.

The latest test code:

```elisp
(with-temp-buffer
  (dired path)
  (dired-unmark-all-marks)
  (eask--unsilent
    (message "? %s" (dired-get-marked-files))  ; This returns the Eask-file
path for some reason.
    (eask-ignore-errors-silent (package-dir-info))))  ; still fail
```

The latest output:

```
0 marks removed
9
<https://github.com/emacs-eask/cli/actions/runs/15254500319/job/42898768686?pr=324#step:6:10>?
(/home/runner/work/cli/cli/test/jest/install/foo-mode/Eask)
10
<https://github.com/emacs-eask/cli/actions/runs/15254500319/job/42898768686?pr=324#step:6:11>Package
lacks a file header
```

Thanks!

On Sun, May 25, 2025 at 8:08 AM Philip Kaludercic <[email-masked]>
wrote:

> Jen-Chieh Shen <[email-masked]> writes:
>
> > Hi, Philip.
> >
> > The error was covered by my error message. After going one level deep,
> the
> > real error message is `Package lacks a file header `.
> > It occurred with the following code, not `package-install-file` (sorry
> for
> > the confusion).
> >
> > ``elisp
> > (with-temp-buffer
> >   (dired path)
> >   (ignore-errors (package-dir-info)))  ; error occurred this line
> > ```
>
> Right, I was expecting something like this.  We recently added a change
> that allows marking files in Dired and having `package-dir-info' respect
> this by only considering these files IF the current buffer is in
> dired-mode /and/ the Dired buffer has marked files.  What I cannot
> deduce from this snippet, is if the Dired buffer at PATH was previously
> opened or had any marked files in it.  Could you check that
> (dired-get-marked-files) returns nil or call (dired-unmark-all-marks)
> before invoking `package-dir-info`?
>
> > The test package I'm trying to install is located at
> > https://github.com/emacs-eask/cli/tree/master/test/jest/install/foo-mode
> .
> >
> > Thanks!
>
> Thank you for your cooperation!
>
> > On Thu, May 22, 2025 at 3:45 AM Philip Kaludercic <[email-masked]>
> > wrote:
> >
> >> Eli Zaretskii <[email-masked]> writes:
> >>
> >> >> From: Jen-Chieh Shen <[email-masked]>
> >> >> Date: Tue, 20 May 2025 17:08:38 -0700
> >> >>
> >> >> I recently encountered an error, No package in XXX, when using the
> >> package-install-file function in
> >> >> the latest Emacs snapshot. This function was working correctly as of
> >> May 5, 2025, but started failing
> >> >> sometime after May 8, 2025. I suspect there may have been a breaking
> >> change introduced.
> >> >>
> >> >> This issue only affects the snapshot build—my CI tests cover Emacs
> >> versions 26.3, 27.2, 28.2, 29.4, 30.1,
> >> >> and the snapshot, and all versions except the snapshot pass. You can
> >> view the test results here:
> >> >> https://github.com/emacs-eask/cli/actions/runs/14904371642.
> >> >
> >> > Philip, could you please take a look at this issue?
> >>
> >> Can you elaborate what the tests are doing?  package-install-file works
> >> fine for me on my end.
> >>
>