Subject: bug#55743: 28.1.50; No directory error in comp-run-async-workers

From: Juri Linkov <[email-masked]>
Date: Wed, 01 Jun 2022 22:13:37 +0300

>> >> Shouldn't native compilation run in the directory where the emacs
>> >> source files are located instead of running in the default directory
>> >> of an arbitrary buffer that might be invalid?
>> >
>> > No, because native compilation could be invoked to compile a file that
>> > has nothing to do with the Emacs source tree, e.g., some file of the
>> > user or some 3rd-party package installed in some arbitrary place.
>> 
>> Still, shouldn't it run compilation in the same directory
>> where that file is located?  Isn't this better than running
>> compilation in a random dir from a random buffer?
>
> No, it isn't better, because the directory should be set by the
> caller.  The compilation primitive cannot second-guess what the caller
> meant.  For example, the file to be compiled could load other files,
> and load-path could mention the current directory in some relative
> form; or the directory of the file could not be chdir'ed into, but
> files in it could be accessed; or some VCS could be involved (so you
> need to be in the VCS repository), or something else.  make-process
> uses the default-directory of the current buffer because making sure
> that directory is the correct one is left to the caller, and it makes
> it easy for the caller to ensure the compilation runs in the correct
> directory.

I don't understand who is the caller?  The user?  The user visits
an non-existent directory, by e.g. `C-x C-f /bla/bla/bla', then
emacs compilation kicks in using that directory, and signals the error.
If this is the intended behavior, then I guess this bug report can be closed,
since I fixed the non-existent directory case in *Completions*.