Subject: bug#42984: 27.1; package-list results in error while updating archive due to malformed path

From: Mirko Vukovic <[email-masked]>
Date: Thu, 26 Nov 2020 10:58:13 -0500

On Thu, Nov 26, 2020 at 10:38 AM Eli Zaretskii <[email-masked]> wrote:

> > From: Mirko Vukovic <[email-masked]>
> > Date: Thu, 26 Nov 2020 10:28:17 -0500
> > Cc: Stefan Kangas <[email-masked]>, [email-masked]
> >
> > Tracing package--check-signature-content
> >
> > * I trace it in plain emacs, started with emacs -Q
> > * I edebug the function and step through it
> > * I have a single signature and its status is no-pub-key which triggers
> the No public key error
> >
> > * This results in the message in the error buffer with the malformed
> directory
> >
> > Below is the code annotated with values of key variables. I did not see
> anything obvious.
> >
> > I evaluated context at several points. I following deeper into the
> epg-... functions, stopped when I saw
> > compiler macros. I would need guidance to trace those.
>
> Thanks.  I think the situation is clear:
>
> >   ;; #s(epg-context :protocol OpenPGP :program
> "c:/msys64-a/usr/bin/gpg.exe"
>
> The "C:/msys64-a" part indicates that gpg.exe is an MSYS2 port, not a
> native MinGW port.  So it's expected that it will manipulate
> Posix-like file names like /c/foo/bar and /home/977315/...  It is also
> expected that it may not realize that "c:/foo/bar" is an absolute file
> name, since in the Posix world any file name which doesn't begin with
> a slash is not an absolute file name.  So it concatenates the file
> name passed to it by Emacs with /home/977315/... on the assumption
> that the file name passed by Emacs is a relative file name.
>
> Bottom line: you need to install a native MinGW port of gpg, or make
> some wrapper script for gpg which would convert Windows d:/foo/bar
> file names into the Posix-like format expected by MSYS2 executables.
>
> Thanks.
>
I think this solved it:

   1. Installed MinGW version: pacman -S mingw64/mingw-w64-x86_64-gnupg
   2. Started emacs -Q in the MingGW64 terminal (not the MSYS2 terminal)
   3. package-list-packages completes without errors:

>From the *Messages* buffer:

Importing package-keyring.gpg...done
Setting ‘package-selected-packages’ temporarily since "emacs -q" would
overwrite customizations
Package refresh done
Packages that can be upgraded: 2; type ‘U’ to mark for upgrading.

To me this implies that gnupg should be installed along with Emacs 27.1 in
MinGW64. I will try to contact the maintainer to suggest that.

Thank you very much for your help.

Mirko