[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Autoload `org-assert-version' and remove org-loaddefs.el
From: |
Ihor Radchenko |
Subject: |
Re: [PATCH] Autoload `org-assert-version' and remove org-loaddefs.el |
Date: |
Mon, 10 Apr 2023 16:58:00 +0000 |
Max Nikulin <manikulin@gmail.com> writes:
>> What about creating org-assert-version.el file that will contain
>> something like
>>
>> (if (fboundp 'org-assert-version)
>> (org-assert-version)
>> (warn "<workaround for compilation>"))
>>
>> Then, instead of (org-assert-version) call, we can put
>> (load "org-assert-version.el") in Org libraries.
>
> I believed that the only way to make `org-assert-version' effective is
> to put org version in every Org compiled .elc file, so you suggestion
> makes version check useless.
Hmm. Not completely useless - it will still effectively compare between
Org version in org-version.el and org-assert-version.el. But indeed less
accurate.
> An earlier idea was to put
> `org-assert-version' *definition* to a separate file keeping call in
> each file as one time workaround to ensure that `org-assert-version' is
> defined while compiling when an older Org version is loaded to Emacs < 29.
Does it solve the problem with "make install" on Debian?
> Currently I do not understand:
> - Why presence of .el files in the same directory (old Org version) with
> .elc files affects result of compilation (at least for Emacs-28)?
I may be missing your point, but `load-prefer-newer' maybe?
> - Why even when the `org-assert-version' macro is defined, an error is
> signaled on attempt to load a compiled file with unexpanded
> (org-assert-version) call (a file compiled with warning "the function
> ‘org-assert-version’ is not known")?
This is because `org-assert-version' was not defined in Emacs during
compile time. During compilation, Emacs produces byte code calling a
function. AFAIU, the byte code is equivalent to
(funcall #'org-assert-version), which fails with error (try it with M-:).
> Unfortunately I did not bookmarked discussions containing details
> related to straight.el issues, so I am unsure if the problems are the
> same as for installing from ELPA by package.el.
straight.el has a special arrangement for compiling Org. See
https://github.com/radian-software/straight.el/blob/master/straight.el#L3133
Basically, it spawns a child Emacs process and thus does not struggle
with mixed compilation state. (I am not 100% sure about the "make
install" issue you encountered).
The main issue with straight.el is its design - straight.el has no
equivalent of `package-selected-packages' and instead loads the packages
as they appear in the init.el. It is a problem when some statement has
(require 'org) early in the config, before straight sets up the newer
Org version.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>