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).
next prev parent 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).