emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug? org-assert-version does not prevent mixed install


From: Max Nikulin
Subject: Re: Bug? org-assert-version does not prevent mixed install
Date: Tue, 27 Dec 2022 23:32:13 +0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 18/12/2022 21:26, Ihor Radchenko wrote:
Max Nikulin writes:

We might do something like

(eval-and-compile (org-assert-version))

This will give obscure error during compiling since `org-assert-version'
is not defined.

Yes, but we will at least abort the compilation this way.

You are right that it prevents creation of .elc files. Unfortunately `byte-recompile-directory' converts failure into a message instead of aborting package install completely.

When used consistently, it should cause load of Org completely uncompiled during next Emacs session. It is better than having incorrectly compiled files.

Notice that `org-assert-version' works for compiled files only, so if a user loads some third-party package (hyperbole?) that loads built-in Org and later adds new Org to `load-path' then we get an obscure error again.

Currently I am experimenting with minimal examples, not with full Org package, so I may confuse something.

;; Remove when support of Emacs-29 is dropped.
(unless (fboundp 'org-assert-version)
    (error "Org is compiled or loaded while older version loaded already.
   Please, ensure that no other org versions are loaded and recompile."))

Another idea to have more concise code in each file is to put a new macro to a *new* file to avoid the issue with old org-macs.el without definition of the new macro `org-assert-version'. So each file should contain

(require 'org-assert-version-undefined)
(org-assert-version-undefined)

`org-assert-version' remains in org-macs.el. The goal is to generate an instructive error. The problem is that after fix in org-assert-version-undefined.el, an old version will be active for some users.

In addition I have noticed that e.g. org-matlab.el contains

     (require 'org-macs)
     (org-assert-version)

Shouldn't it be (eval-when-compile (require 'org-macs)) since no functions are used from this file? Some files have duplicated (require 'org-macs).





reply via email to

[Prev in Thread] Current Thread [Next in Thread]