emacs-orgmode
[Top][All Lists]
Advanced

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

Re: bug#59882: Multiple versions of Org in load-path problem


From: Max Nikulin
Subject: Re: bug#59882: Multiple versions of Org in load-path problem
Date: Sun, 25 Dec 2022 18:46:37 +0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2

On 18/12/2022 22:40, Stefan Monnier wrote:
Could Someone™ investigate why that code
doesn't do its job.

The code in question is in `package--reload-previously-loaded` and
my understanding is that it should cause `org-macs` to be reloaded

I do not see obvious flaws in `package--reload-previously-loaded' code. My guess is that we get reports from users who have installed released versions of emacs.

Notice that my complain concerning failure `byte-recompile-directory', hidden from its caller, is still valid.

On 25/12/2022 16:48, Ihor Radchenko wrote:
Max Nikulin writes:

I have tried the following in Emacs-27. For Emacs >= 29 add -L to Org <=
9.5.

Stefan convinced me that I was too optimistic concerning Emacs-29.

- "emacs -l org" to simulate a regular user session with some opened files.
- Update to Org-9.6 from ELPA.
- Close emacs and start it again "emacs -l org"

Result:
byte-code: Invalid function: org-assert-version

I tried to follow these steps, but unfortunately I am unable to
reproduce. Everything works fine using Emacs 27 on my side. Strange.

I tried it once more in a minimal LXC container with Ubuntu-22.04 LTS jammy. This time I even removed the elpa-org-9.5.2 system package, so built-in version of org is really used. So, emacs-27

- emacs -l org
- M-x list-packages RET
- / n org RET
- move cursor to org, install it
- i x y
- compilation buffers pops up with warning and errors.

Due to "-l org" some libraries like org, org-macs, ob are loaded. Files that `require' already loaded libraries generate warnings

Compiling file /home/emcs/.emacs.d/elpa/org-9.6/ob-R.el at Sun Dec 18 04:30:49 2022

In end of data:
ob-R.el:562:1:Warning: the function ‘org-assert-version’ is not known to be
    defined.

because `org-assert-version' is defined in org-macs.el, but the old version without it is already loaded. Call to `org-assert-version' is just added to the .elc file.

E.g. org-keys.el produce the same warning. Another case is

Compiling file /home/emcs/.emacs.d/elpa/org-9.6/ob-matlab.el at Sun Dec 18 04:30:50 2022 ob-matlab.el:43:1:Error: Symbol’s function definition is void: org-assert-version

This file contains "(require 'ob-octave)". Attempt of load new version of ob-octave fails because during execution of it contents causes an error due to the `org-assert-version' call.

In particular, compilation of org.el fails because the new version has new "(require 'org-fold)" and the latter also tries to call undefined `org-assert-version'.

So at this point we have partially compiled broken install. Some files are not compiled, others have call to `org-assert-version' instead of its expansion.

Let's try to start emacs again and load org. Since org.el is not compiled, "(org-assert-version)" inside it is unable to catch any problem due to mixed-version compilation. Now `org-release' returns new version. The failure happens during "(require 'org-keys)" that was compiled with the warning.

Debugger entered--Lisp error: (invalid-function org-assert-version)
  org-assert-version()
byte-code("\300\301!\210\302 \210\300\303!\210\300\304!\207" [require org-macs org-assert-version cl-lib oc] 2)
  require(org-keys)

So we have an obscure load time error. I would say that compile *error* messages are obscure as well because it is unclear that errors happen in `require'. E.g. when compiling org-matlab.el the reported line number is for "(require 'ob-maxima)" while compiling of ob.maxima.el finished with a warning, not an error and it is really confusing. "ob-octave:34:" in addition to "ob-matlab:43:" during compiling of ob-matlab.el would be more informative.



reply via email to

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