emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Ihor Radchenko <yantar92@posteo.net>
To: Max Nikulin <manikulin@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [PATCH] Autoload `org-assert-version' and remove org-loaddefs.el
Date: Mon, 10 Apr 2023 16:58:00 +0000	[thread overview]
Message-ID: <878rezn087.fsf@localhost> (raw)
In-Reply-To: <u109do$jnb$1@ciao.gmane.io>

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>


  reply	other threads:[~2023-04-10 16:56 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-01  7:26 [PATCH] Autoload `org-assert-version' and remove org-loaddefs.el Bastien
2022-12-02  3:38 ` Kyle Meyer
2022-12-02  7:44   ` Bastien
2022-12-03  4:18     ` Kyle Meyer
2022-12-06  3:54       ` David Masterson
2022-12-06  5:44         ` tomas
2022-12-06  7:13           ` David Masterson
2022-12-07 11:43     ` Ihor Radchenko
2022-12-07 14:08       ` Max Nikulin
2023-03-29 13:38     ` Ihor Radchenko
2023-03-29 16:04       ` Max Nikulin
2023-03-29 16:52         ` Ihor Radchenko
2023-04-01 14:44           ` Max Nikulin
2023-04-02  8:35             ` Ihor Radchenko
2023-04-02 15:59               ` Max Nikulin
2023-04-02 16:44                 ` Ihor Radchenko
2023-04-04 12:08                   ` Max Nikulin
2023-04-04 13:29                     ` Ihor Radchenko
2023-04-05 11:41                       ` Max Nikulin
2023-04-08 16:47           ` Max Nikulin
2023-04-09  8:29             ` Ihor Radchenko
2023-04-10  6:13               ` Max Nikulin
2023-04-10 16:58                 ` Ihor Radchenko [this message]
2023-06-04 10:58                   ` Max Nikulin
2022-12-06  3:00   ` David Masterson

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=878rezn087.fsf@localhost \
    --to=yantar92@posteo.net \
    --cc=emacs-orgmode@gnu.org \
    --cc=manikulin@gmail.com \
    /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).