Subject: bug#25360: File mode specification errors during building

From: [email-masked]
Date: Sun, 15 Jan 2017 19:27:56 -0500

[email-masked] (Phillip Lord) writes:

> [email-masked] writes:
>>>> There's nothing special about hydra builds. I quote them only because
>>>> they provide a convenient way to show a full, clean build log.
>>>>
>>>> The image-type-auto-detected-p issue persists, eg
>>>> http://hydra.nixos.org/build/46502443/log/raw
>>>>
>>>> Note this is a without-x build (image-type-auto-detected-p used to be
>>>> autoloaded in all builds).
>>>
>>> Unfortunately, I cannot reproduce this on my own machine. Exactly how is
>>> the hydra build configured? I've tried --without-x, as a guess, but I
>>> get no error.
>>
>> I can reproduce here.  Did you just run 'make bootstrap' after
>> reconfiguring?  I think you need 'make extraclean', because the part
>> that triggers this is not cleaned by bootstrap.
>
> To my understanding, make bootstrap is at least as clean as extraclean.

I think extraclean does some more things, but actually it might not be
relevant in this case.

>
>
>> Using insert-file-contents instead of file-file-noselect seems to fix it
>> for me:
>>
>> --- i/lisp/international/titdic-cnv.el
>> +++ w/lisp/international/titdic-cnv.el
>> @@ -1167,11 +1167,11 @@ miscdic-convert
>>  		    (if (eq coding 'iso-2022-cn-ext) "Chinese-CNS"
>>  		      "Chinese-GB"))
>>  		  "\" \"" title "\" t\n")
>> -	  (let* ((coding-system-for-read
>> -		  (coding-system-change-eol-conversion coding 'unix))
>> -		 (dicbuf (find-file-noselect filename)))
>> -	    (funcall converter dicbuf name title)
>> -	    (kill-buffer dicbuf))
>> +          (let ((coding-system-for-read
>> +                 (coding-system-change-eol-conversion coding 'unix)))
>> +            (with-temp-buffer
>> +              (insert-file-contents filename)
>> +              (funcall converter (current-buffer) name title)))
>>  	  (insert ";; Local Variables:\n"
>>  		  ";; version-control: never\n"
>>  		  ";; no-update-autoloads: t\n"
>
> Confused. What thing are you reproducing? The
> "image-type-auto-detected-p" or File mode specification error:
> (void-function html-mode) error?

Here is the command I found was problematic during the build (I added
the rm -f part, otherwise the file generation is skipped).

cd /home/npostavs/src/emacs/emacs-bootstrapping/leim && rm -f ../lisp/leim/quail/tsang-b5.el ../lisp/leim/quail/quick-b5.el && EMACSLOADPATH= '../src/bootstrap-emacs' --batch --no-site-file --no-site-lisp -l titdic-cnv.el -f batch-miscdic-convert -dir ./../lisp/leim/quail MISC-DIC/cangjie-table.b5
Converting cangjie-table.b5 to tsang-b5.el...
File mode specification error: (wrong-type-argument stringp image-type-auto-detected-p)
Converting cangjie-table.b5 to tsang-b5.el...done
Converting cangjie-table.b5 to quick-b5.el...
File mode specification error: (wrong-type-argument stringp image-type-auto-detected-p)
Converting cangjie-table.b5 to quick-b5.el...done

The patch I posted fixes these errors.

> The "find-file-noselect" call is responsible for the "html-mode" error,
> but that should have been fixed with this commit.
>
> commit 72c668a9042ac6475eadedfee5c87fb1e6b2d753
> Author: Phillip Lord <[email-masked]>
> Date:   Fri Jan 13 13:57:51 2017 +0000
>
> But this commit also stops the image-type-auto-detected-p errors for me.

Does the following print something non-nil for you?  For me it's nil
when I configure --without-x, and a byte code function value otherwise.

./bootstrap-emacs -batch -Q --eval '(message "%S" (symbol-function (quote image-type-auto-detected-p)))'