Subject: Re: bug#45433: 28.0.50; byte/native-compiling ivy and ox-publish possibly miscompiled

From: Andrea Corallo <[email-masked]>
Date: Wed, 30 Dec 2020 14:44:12 +0000

Mauricio Collares <[email-masked]> writes:

> Andrea Corallo <[email-masked]> writes:
>
>> Hi Mauricio,
>>
>> I had a look, this issue is not native compiler related as I get the
>> same behavior byte compiling.
>>
>> The trouble seems with `ivy-add-face-text-property' being defaliased,
>> ATM I'm not sure what is going on tho.
>>
>>   Andrea
>
> Hi Andrea,
>
> Here's an attempt at a minimized testcase:
>
> * Contents of ~/ivy.el:
>
> (defun ivy--call-marked (action)
>   (let* ((prefix-len (length ivy-mark-prefix))
>          (marked-candidates
>           (mapcar
>            (lambda (s)
>              (let ((cand (substring s prefix-len)))
>                (if ivy--directory
>                    (expand-file-name cand ivy--directory)
>                  cand)))
>            ivy-marked-candidates))
>          (multi-action (ivy--get-multi-action ivy-last)))))
>
> (defalias 'ivy--file-local-name
>   (if (fboundp 'file-local-name)
>       #'file-local-name
>     (lambda (file)
>       (or (file-remote-p file 'localname) file))))
>
> (provide 'ivy)
>
> * Run the following three commands (note that skipping either command 1
>   or command 2 makes the last command pass):
>
> $ emacs -Q --batch --eval "(add-to-list 'load-path \"/home/collares\")"
> -f batch-byte-compile ~/ivy.el
>
> $ emacs -Q --batch --eval "(add-to-list 'load-path \"/home/collares\")"
> --eval "(setq comp-eln-load-path '(\"/home/collares/\"))" -f batch-native-compile ~/ivy.el
>
> $ emacs -Q --batch --eval "(add-to-list 'load-path \"/home/collares\")"
> --eval "(setq comp-eln-load-path '(\"/home/collares/\"))" --eval "(require 'ivy)"
>
> With this, I still get the same error locally:
>
> [... five undefined variable/function warnings, due to the code I
> deleted to minimize the testcase ...] 
> Debugger entered--Lisp error: (void-variable fboundp)
>   byte-code("\300\301\302\303!\203\f\0\303\202\n\0\304\"\210\305\306!\207" [defalias ivy--file-local-name fboundp file-local-name #f(compiled-function (file) #<bytecode 0x5f7d1a5a33e66f3>) provide ivy] 4)
>   require(ivy)
>   command-line-1(("--eval" "(add-to-list 'load-path \"/home/collares\")" "--eval" "(setq comp-eln-load-path '(\"/home/collares/\"))" "--eval" "(require 'ivy)"))
>   command-line()
>   normal-top-level()
>
> Best,
> Mauricio

Hi Mauricio,

I had no time to progress with it but I want to look into it in the
coming days.

Thanks for reducing the test-case, this is greatly appreciated and will
certainly save me time.

  Andrea