emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Max Nikulin <manikulin@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: Bug? org-assert-version does not prevent mixed install
Date: Tue, 27 Dec 2022 23:32:13 +0700	[thread overview]
Message-ID: <tof6me$eb3$1@ciao.gmane.io> (raw)
In-Reply-To: <87h6xs6b52.fsf@localhost>

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	other threads:[~2022-12-27 16:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-18  5:20 Bug? org-assert-version does not prevent mixed install Max Nikulin
2022-12-18 13:04 ` Ihor Radchenko
2022-12-18 14:06   ` Max Nikulin
2022-12-18 14:26     ` Ihor Radchenko
2022-12-27 16:32       ` Max Nikulin [this message]
2022-12-28  9:46         ` Ihor Radchenko
2023-01-04 11:27           ` Max Nikulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='tof6me$eb3$1@ciao.gmane.io' \
    --to=manikulin@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).