Subject: bug#62762: 'make' often errors with "Org version mismatch" after pulling a new version of the code

From: Stefan Monnier <[email-masked]>
Date: Sat, 22 Apr 2023 10:32:50 -0400

Ihor Radchenko [2023-04-22 12:39:42] wrote:

> Eli Zaretskii <[email-masked]> writes:
>
>> I think it's the defconst thingy.  E.g., with foo.el which says
>>
>>   (defconst my-foo nil)
>>
>> I cannot override the value from the command line:
>>
>>   emacs -Q -batch --eval "(setq my-foo t)" -l foo.el --eval "(message \"%s\" my-foo)"
>>    => nil
>>
>> But if I replace defconst with defvar, it yields t, as I'd expect.
>>
>> So I think org--built-in-p should be a defvar, not defconst.  Or maybe
>> you can teach me how to override a defconst?  Stefan, any ideas?
>
> Well. I think I missed that `defconst', unlike `defvar', overrides the
> existing variable value. Switching to `defvar' is ok. (Or, it might be
> something like (eval-after-load 'org-macs ...), but I see no reason to
> prefer it over switching to defvar).
>
> I think it will be best to install the change in Emacs and then back-port
> it to Org. Will it be ok?

While you're there: could you rename that var?
I think it should be called `org--inhibit-version-check` (no "-p" since
it's a var and not a predicate, and more importantly no ill-defined
notion of "built-in").

        Stefan