Subject: Re: bug#40099: 28.0.50; [feature/native-comp] Different working dir of .eln files is not expected by pdf-tools

From: Andrea Corallo <[email-masked]>
Date: Wed, 18 Mar 2020 12:59:34 +0000

Ihor Radchenko <[email-masked]> writes:

>> Could I have exact instructions to preproduce it?
>
> 1. Install pdf-tools and compile .elc
> 2. Run (native-compile-async "/path/to/pdf-tools/" t)
> 3. Restart emacs
> 4. Load pdf-tools and run (pdf-tools-install)
>
>> I'm not into pdf-tools but I think the trouble could be that its "make
>> build" does something different in terms of compilation that what
>> `native-compile' does.  I suspect it's not a load path problem.
>
> pdf-tools does not even get to the point where it invokes make.
> The backtrace is:
>
> Debugger entered--Lisp error: (wrong-type-argument (and (not null) file-directory) nil build-directory)
>   (pdf-tools-build-server "/home/yantar92/.emacs.d/straight/build/pdf-tools/eln-x86_64-pc-linux-gnu-85c5ba0bf5e77f42/" nil nil #f(compiled-function (executable) #<bytecode 0x1442895ca862f2c6>))
>   (pdf-tools-install)
>
> I checked the source code to get a clue where the directory argument is
> coming from. Here is relevant code:
>
> (defconst pdf-tools-directory
>   (or (and load-file-name
>            (file-name-directory load-file-name))
>       default-directory)
>   "The directory from where this library was first loaded.")
>
> The value of pdf-tools-directory is
> "/home/yantar92/.emacs.d/straight/build/pdf-tools/eln-x86_64-pc-linux-gnu-85c5ba0bf5e77f42/".
> It makes sense considering that it takes the value of load-file-name,
> which is probably set to where .eln file is located. However, pdf-tools
> does not expect the location of the loaded file to be different from the
> package dir.
>
> Hope it helps.
>
> Best regards,
> Ihor

Great I think the problem is clear, pdf-tools is using `load-file-name'
as a way to obtain `pdf-tools-directory' but this is false assumption
for the eln folder directory we have arranged.

I'm not sure we want or can mitigate this easily but I guess the same
assumption is done in other packages so it's tricky.

Adding Stephane in cc to get an optinion on this.

Thanks for reporting.

  Andrea

-- 
[email-masked]