Subject: bug#30961: Byte compilation problem with emacs-org

From: Konrad Hinsen <[email-masked]>
Date: Tue, 27 Mar 2018 16:20:24 +0200

An Emacs installation that includes package emacs-org exhibits a
well-documented bug: certain uses of org-babel, such as using the
R language, lead to the error message

   Invalid function: org-babel-header-args-safe-fn

For a discussion of this bug in other contexts, see for example:

   https://lists.gnu.org/archive/html/emacs-orgmode/2016-02/msg00415.html

I do not claim to fully understand the cause of this bug, but the
explanations mention a conflict between the org-mode version shipped
with Emacs and the later one being installed afterwards. This conflict
happens when the newer org-mode is byte-compiled, and leads to wrong
.elc files.

It is easy to verify that the Guix version also suffers from this
byte-compilation problem. Removing the "build" step, and thus byte
compilaion, by adding

    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (delete 'build))))

to the definition of emacs-org removes the error message.

What I do not understand yet is why this happens within Guix. The
explanations for the bug concentrate on the built-in org-mode version
having been initialized before byte compilation of the new one, and
recommend starting Emacs with the –quick option for the byte compilation
session. This is what Guix does as well, so the problem should not
exist.

I tried to remove the old org-mode from load-path during byte
compilation of the new version by manipulating EMACSLOADPATH, so far
without success. If Emacs' basic "lisp" dir is not on EMACSLOADPATH,
Emacs fails to do anything, but if it is, Emacs automatically adds
"lisp/org" via lisp/subdir.el.

Konrad.