emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Prevent mixed installation
@ 2022-08-05 11:51 Ihor Radchenko
  2022-09-04  4:45 ` Ihor Radchenko
  0 siblings, 1 reply; 2+ messages in thread
From: Ihor Radchenko @ 2022-08-05 11:51 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 764 bytes --]

Hi,

The annoying mixed installation problems keep popping up in the mailing
list and other communication channels.

The attached is a patch trying to forbid loading multiple Org versions.
The idea is putting a macro that internally expands Org git version at
compile time and later compares the expanded value with the runtime
value.

Comments? Alternative ideas?

In the past we also discussed checking load-history, but I am afraid
that it will spoil the loading time. load-history can get quite large.

Also, I was thinking about using
(provide 'library '(version-subfeature))
but I have no idea how to do it automatically.

The proposed patch only requires adding two lines to newly added Org
libraries in future. Otherwise, it should just work.

Best,
Ihor


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Assert-all-the-Org-files-to-load-the-same-Org-versio.patch --]
[-- Type: text/x-patch, Size: 44511 bytes --]

From d493ab5e467033919ab0ce0ebf502d39e0b131b2 Mon Sep 17 00:00:00 2001
Message-Id: <d493ab5e467033919ab0ce0ebf502d39e0b131b2.1659698899.git.yantar92@gmail.com>
From: Ihor Radchenko <yantar92@gmail.com>
Date: Thu, 4 Aug 2022 21:53:05 +0800
Subject: [PATCH] Assert all the Org files to load the same Org version

* lisp/org-compat.el (org-assert-version): New macro comparing Org
version at compile time and laod time.

Add `org-assert-version' call to all files:

* lisp/org-macs.el:
* lisp/org-crypt.el:
* lisp/org-ctags.el:
* lisp/org-cycle.el:
* lisp/org-datetree.el:
* lisp/org-duration.el:
* lisp/org-element.el (avl-tree):
* lisp/org-entities.el:
* lisp/org-faces.el:
* lisp/org-feed.el:
* lisp/org-fold-core.el:
* lisp/org-fold.el:
* lisp/org-footnote.el:
* lisp/org-goto.el:
* lisp/org-habit.el:
* lisp/org-id.el:
* lisp/org-indent.el:
* lisp/org-inlinetask.el:
* lisp/org-keys.el:
* lisp/org-lint.el:
* lisp/org-list.el:
* lisp/org-macro.el:
* lisp/org-mobile.el:
* lisp/org-mouse.el:
* lisp/org-num.el:
* lisp/org-pcomplete.el:
* lisp/org-persist.el:
* lisp/org-plot.el:
* lisp/org-protocol.el:
* lisp/org-refile.el:
* lisp/org-src.el:
* lisp/org-table.el:
* lisp/org-tempo.el:
* lisp/org-timer.el:
* lisp/org.el:
* lisp/ox-ascii.el:
* lisp/ox-beamer.el:
* lisp/ox-html.el:
* lisp/ox-icalendar.el:
* lisp/ox-koma-letter.el:
* lisp/ox-latex.el:
* lisp/ox-man.el:
* lisp/ox-md.el:
* lisp/ox-odt.el:
* lisp/ox-org.el:
* lisp/ox-publish.el:
* lisp/ox-texinfo.el:
* lisp/ox.el:
---
 lisp/ob-C.el           |  3 +++
 lisp/ob-R.el           |  3 +++
 lisp/ob-awk.el         |  4 ++++
 lisp/ob-calc.el        |  4 ++++
 lisp/ob-clojure.el     |  4 ++++
 lisp/ob-comint.el      |  4 ++++
 lisp/ob-core.el        |  4 ++++
 lisp/ob-css.el         |  4 ++++
 lisp/ob-ditaa.el       |  4 ++++
 lisp/ob-dot.el         |  4 ++++
 lisp/ob-emacs-lisp.el  |  2 ++
 lisp/ob-eshell.el      |  3 +++
 lisp/ob-eval.el        |  3 +++
 lisp/ob-exp.el         |  4 ++++
 lisp/ob-forth.el       |  4 ++++
 lisp/ob-fortran.el     |  4 ++++
 lisp/ob-gnuplot.el     |  4 ++++
 lisp/ob-groovy.el      |  4 ++++
 lisp/ob-haskell.el     |  3 +++
 lisp/ob-java.el        |  4 ++++
 lisp/ob-js.el          |  4 ++++
 lisp/ob-julia.el       |  4 ++++
 lisp/ob-latex.el       |  4 ++++
 lisp/ob-lilypond.el    |  4 ++++
 lisp/ob-lisp.el        |  4 ++++
 lisp/ob-lob.el         |  4 ++++
 lisp/ob-lua.el         |  4 ++++
 lisp/ob-makefile.el    |  3 +++
 lisp/ob-matlab.el      |  4 ++++
 lisp/ob-maxima.el      |  4 ++++
 lisp/ob-ocaml.el       |  4 ++++
 lisp/ob-octave.el      |  4 ++++
 lisp/ob-org.el         |  4 ++++
 lisp/ob-perl.el        |  3 +++
 lisp/ob-plantuml.el    |  4 ++++
 lisp/ob-processing.el  |  4 ++++
 lisp/ob-python.el      |  4 ++++
 lisp/ob-ref.el         |  4 ++++
 lisp/ob-ruby.el        |  4 ++++
 lisp/ob-sass.el        |  4 ++++
 lisp/ob-scheme.el      |  4 ++++
 lisp/ob-screen.el      |  4 ++++
 lisp/ob-sed.el         |  4 ++++
 lisp/ob-shell.el       |  3 +++
 lisp/ob-sql.el         |  4 ++++
 lisp/ob-sqlite.el      |  4 ++++
 lisp/ob-table.el       |  4 ++++
 lisp/ob-tangle.el      |  3 +++
 lisp/ob.el             |  4 ++++
 lisp/oc-basic.el       |  3 +++
 lisp/oc-biblatex.el    |  4 ++++
 lisp/oc-bibtex.el      |  4 ++++
 lisp/oc-csl.el         |  4 ++++
 lisp/oc-natbib.el      |  4 ++++
 lisp/oc.el             |  3 +++
 lisp/ol-bbdb.el        |  3 +++
 lisp/ol-bibtex.el      |  3 +++
 lisp/ol-docview.el     |  2 ++
 lisp/ol-doi.el         |  3 +++
 lisp/ol-eshell.el      |  2 ++
 lisp/ol-eww.el         |  4 ++++
 lisp/ol-gnus.el        |  3 +++
 lisp/ol-info.el        |  3 +++
 lisp/ol-irc.el         |  3 +++
 lisp/ol-man.el         |  3 +++
 lisp/ol-mhe.el         |  3 +++
 lisp/ol-rmail.el       |  3 +++
 lisp/ol-w3m.el         |  3 +++
 lisp/ol.el             |  3 +++
 lisp/org-agenda.el     |  3 +++
 lisp/org-archive.el    |  3 +++
 lisp/org-attach-git.el |  3 +++
 lisp/org-attach.el     |  3 +++
 lisp/org-capture.el    |  3 +++
 lisp/org-clock.el      |  3 +++
 lisp/org-colview.el    |  3 +++
 lisp/org-compat.el     |  3 +++
 lisp/org-crypt.el      |  3 +++
 lisp/org-ctags.el      |  3 +++
 lisp/org-cycle.el      |  3 +++
 lisp/org-datetree.el   |  3 +++
 lisp/org-duration.el   |  3 +++
 lisp/org-element.el    |  2 ++
 lisp/org-entities.el   |  3 +++
 lisp/org-faces.el      |  3 +++
 lisp/org-feed.el       |  3 +++
 lisp/org-fold-core.el  |  3 +++
 lisp/org-fold.el       |  3 +++
 lisp/org-footnote.el   |  3 +++
 lisp/org-goto.el       |  3 +++
 lisp/org-habit.el      |  3 +++
 lisp/org-id.el         |  3 +++
 lisp/org-indent.el     |  3 +++
 lisp/org-inlinetask.el |  3 +++
 lisp/org-keys.el       |  3 +++
 lisp/org-lint.el       |  3 +++
 lisp/org-list.el       |  3 +++
 lisp/org-macro.el      |  4 ++++
 lisp/org-macs.el       | 10 ++++++++++
 lisp/org-mobile.el     |  3 +++
 lisp/org-mouse.el      |  3 +++
 lisp/org-num.el        |  3 +++
 lisp/org-pcomplete.el  |  3 +++
 lisp/org-persist.el    |  3 +++
 lisp/org-plot.el       |  3 +++
 lisp/org-protocol.el   |  3 +++
 lisp/org-refile.el     |  2 ++
 lisp/org-src.el        |  3 +++
 lisp/org-table.el      |  3 +++
 lisp/org-tempo.el      |  3 +++
 lisp/org-timer.el      |  3 +++
 lisp/org.el            |  3 +++
 lisp/ox-ascii.el       |  3 +++
 lisp/ox-beamer.el      |  3 +++
 lisp/ox-html.el        |  3 +++
 lisp/ox-icalendar.el   |  3 +++
 lisp/ox-koma-letter.el |  3 +++
 lisp/ox-latex.el       |  3 +++
 lisp/ox-man.el         |  3 +++
 lisp/ox-md.el          |  3 +++
 lisp/ox-odt.el         |  3 +++
 lisp/ox-org.el         |  3 +++
 lisp/ox-publish.el     |  3 +++
 lisp/ox-texinfo.el     |  3 +++
 lisp/ox.el             |  3 +++
 125 files changed, 422 insertions(+)

diff --git a/lisp/ob-C.el b/lisp/ob-C.el
index 175f4b81d..e9951cb79 100644
--- a/lisp/ob-C.el
+++ b/lisp/ob-C.el
@@ -33,6 +33,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cc-mode)
 (require 'ob)
 (require 'org-macs)
diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index b04104de5..0d9a40b89 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -29,6 +29,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob)
 
diff --git a/lisp/ob-awk.el b/lisp/ob-awk.el
index c4916cc65..e2dfb0c9b 100644
--- a/lisp/ob-awk.el
+++ b/lisp/ob-awk.el
@@ -32,6 +32,10 @@ ;;; Commentary:
 ;;          which will be passed to the awk process through STDIN
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-compat)
 
diff --git a/lisp/ob-calc.el b/lisp/ob-calc.el
index aced6cfd6..2d52da344 100644
--- a/lisp/ob-calc.el
+++ b/lisp/ob-calc.el
@@ -27,6 +27,10 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating calc code
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'calc)
diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el
index 87e234ce2..571fc0b53 100644
--- a/lisp/ob-clojure.el
+++ b/lisp/ob-clojure.el
@@ -42,6 +42,10 @@ ;;; Commentary:
 ;; web page: https://technomancy.us/126
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (declare-function cider-current-connection "ext:cider-client" (&optional type))
diff --git a/lisp/ob-comint.el b/lisp/ob-comint.el
index efca03eeb..914f89157 100644
--- a/lisp/ob-comint.el
+++ b/lisp/ob-comint.el
@@ -30,6 +30,10 @@ ;;; Commentary:
 ;; org-babel at large.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob-core)
 (require 'org-compat)
 (require 'comint)
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 0d9a0a99a..42bf5032e 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -23,6 +23,10 @@ ;;; ob-core.el --- Working with Code Blocks          -*- lexical-binding: t; -*-
 ;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob-eval)
 (require 'org-macs)
diff --git a/lisp/ob-css.el b/lisp/ob-css.el
index e1a02ee9f..c132cb2c7 100644
--- a/lisp/ob-css.el
+++ b/lisp/ob-css.el
@@ -27,6 +27,10 @@ ;;; Commentary:
 ;; CSS from Org files.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:css '())
diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index 97501c446..1f82aea6b 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -36,6 +36,10 @@ ;;; Commentary:
 ;; 4) there are no variables (at least for now)
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-compat)
 
diff --git a/lisp/ob-dot.el b/lisp/ob-dot.el
index 6bab3a0fe..2d2003bf5 100644
--- a/lisp/ob-dot.el
+++ b/lisp/ob-dot.el
@@ -39,6 +39,10 @@ ;;; Commentary:
 ;; 4) there are no variables (at least for now)
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:dot
diff --git a/lisp/ob-emacs-lisp.el b/lisp/ob-emacs-lisp.el
index aca088404..3289b6183 100644
--- a/lisp/ob-emacs-lisp.el
+++ b/lisp/ob-emacs-lisp.el
@@ -27,6 +27,8 @@ ;;; Commentary:
 
 ;;; Code:
 
+(org-assert-version)
+
 (require 'ob-core)
 
 (declare-function org-babel--get-vars "ob" (params))
diff --git a/lisp/ob-eshell.el b/lisp/ob-eshell.el
index 2bc1fe236..552ab1b53 100644
--- a/lisp/ob-eshell.el
+++ b/lisp/ob-eshell.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 ;; Org Babel support for evaluating Eshell source code.
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'ob)
 (require 'eshell)
 
diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el
index aa5b64509..463041948 100644
--- a/lisp/ob-eval.el
+++ b/lisp/ob-eval.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 ;; shell commands.
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'org-macs)
 
 (defvar org-babel-error-buffer-name "*Org-Babel Error Output*")
diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el
index 40d0278a5..d7aecde99 100644
--- a/lisp/ob-exp.el
+++ b/lisp/ob-exp.el
@@ -23,6 +23,10 @@ ;;; ob-exp.el --- Exportation of Babel Source Blocks -*- lexical-binding: t; -*-
 ;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob-core)
 
 (declare-function org-babel-lob-get-info "ob-lob" (&optional datum))
diff --git a/lisp/ob-forth.el b/lisp/ob-forth.el
index a68b358b6..a67d3384f 100644
--- a/lisp/ob-forth.el
+++ b/lisp/ob-forth.el
@@ -32,6 +32,10 @@ ;;; Requirements:
 ;; `forth-mode' which is distributed with gforth (in gforth.el).
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-fortran.el b/lisp/ob-fortran.el
index 8d88ad34c..ad84314fc 100644
--- a/lisp/ob-fortran.el
+++ b/lisp/ob-fortran.el
@@ -27,6 +27,10 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating fortran code.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'cc-mode)
diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
index 4c76bea19..b0567646d 100644
--- a/lisp/ob-gnuplot.el
+++ b/lisp/ob-gnuplot.el
@@ -39,6 +39,10 @@ ;;; Requirements:
 ;; - gnuplot-mode :: you can search the web for the latest active one.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-groovy.el b/lisp/ob-groovy.el
index ffaa81cc0..426eaacdc 100644
--- a/lisp/ob-groovy.el
+++ b/lisp/ob-groovy.el
@@ -31,6 +31,10 @@ ;;; Requirements:
 ;;   https://github.com/russel/Emacs-Groovy-Mode
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts) ;; Autoloaded
diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el
index ccd3f078a..739bfaa42 100644
--- a/lisp/ob-haskell.el
+++ b/lisp/ob-haskell.el
@@ -39,6 +39,9 @@ ;;; Requirements:
 ;; - (optionally) lhs2tex: https://people.cs.uu.nl/andres/lhs2tex/
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'comint)
diff --git a/lisp/ob-java.el b/lisp/ob-java.el
index 824635ecf..5dbf2f856 100644
--- a/lisp/ob-java.el
+++ b/lisp/ob-java.el
@@ -28,6 +28,10 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating java source code.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts)
diff --git a/lisp/ob-js.el b/lisp/ob-js.el
index 4fbe543cd..04eb77bd4 100644
--- a/lisp/ob-js.el
+++ b/lisp/ob-js.el
@@ -38,6 +38,10 @@ ;;; Requirements:
 ;;   configuration instructions
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (declare-function run-mozilla "ext:moz" (arg))
diff --git a/lisp/ob-julia.el b/lisp/ob-julia.el
index 7f25fafad..cd639ae4a 100644
--- a/lisp/ob-julia.el
+++ b/lisp/ob-julia.el
@@ -28,6 +28,10 @@ ;;; Commentary:
 ;; Based on ob-R.el by Eric Schulte and Dan Davison.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob)
 
diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el
index 03d3595fb..a86699e22 100644
--- a/lisp/ob-latex.el
+++ b/lisp/ob-latex.el
@@ -30,6 +30,10 @@ ;;; Commentary:
 ;; be created directly form the latex source code.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-lilypond.el b/lisp/ob-lilypond.el
index 50e1a7673..518e4d667 100644
--- a/lisp/ob-lilypond.el
+++ b/lisp/ob-lilypond.el
@@ -32,6 +32,10 @@ ;;; Commentary:
 ;; This depends on epstopdf --- See https://www.ctan.org/pkg/epstopdf.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (declare-function org-fold-show-all "org-fold" (&optional types))
diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el
index 239fa5218..d3ed569ec 100644
--- a/lisp/ob-lisp.el
+++ b/lisp/ob-lisp.el
@@ -36,6 +36,10 @@ ;;; Requirements:
 ;; - https://common-lisp.net/project/slime/
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-lob.el b/lisp/ob-lob.el
index 88d47c169..8da91bdaf 100644
--- a/lisp/ob-lob.el
+++ b/lisp/ob-lob.el
@@ -23,6 +23,10 @@ ;;; ob-lob.el --- Functions Supporting the Library of Babel -*- lexical-binding:
 ;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob-core)
 (require 'ob-table)
diff --git a/lisp/ob-lua.el b/lisp/ob-lua.el
index b7fb2a8b8..52aa0599a 100644
--- a/lisp/ob-lua.el
+++ b/lisp/ob-lua.el
@@ -35,6 +35,10 @@ ;;; Commentary:
 ;; However, sessions are not yet working.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'cl-lib)
diff --git a/lisp/ob-makefile.el b/lisp/ob-makefile.el
index aef55bcad..ac1c1b2c8 100644
--- a/lisp/ob-makefile.el
+++ b/lisp/ob-makefile.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 ;; This file exists solely for tangling a Makefile from Org files.
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:makefile '())
diff --git a/lisp/ob-matlab.el b/lisp/ob-matlab.el
index 19c17b646..0ccab2168 100644
--- a/lisp/ob-matlab.el
+++ b/lisp/ob-matlab.el
@@ -35,6 +35,10 @@ ;;; Requirements:
 ;; http://matlab-emacs.sourceforge.net/
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'ob-octave)
 
diff --git a/lisp/ob-maxima.el b/lisp/ob-maxima.el
index d5bd4d924..1a944376e 100644
--- a/lisp/ob-maxima.el
+++ b/lisp/ob-maxima.el
@@ -31,6 +31,10 @@ ;;; Commentary:
 ;; 2) we are adding the "cmdline" header argument
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts)
diff --git a/lisp/ob-ocaml.el b/lisp/ob-ocaml.el
index b26e63923..804551ba5 100644
--- a/lisp/ob-ocaml.el
+++ b/lisp/ob-ocaml.el
@@ -35,6 +35,10 @@ ;;; Requirements:
 ;; - tuareg-mode :: https://elpa.nongnu.org/nongnu/tuareg.html
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'comint)
 (require 'org-macs)
diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el
index b3a74ab4a..d780b626f 100644
--- a/lisp/ob-octave.el
+++ b/lisp/ob-octave.el
@@ -29,6 +29,10 @@ ;;; Requirements:
 ;; octave-mode.el and octave-inf.el come with GNU emacs
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-org.el b/lisp/ob-org.el
index 5765c57e7..df7f85d08 100644
--- a/lisp/ob-org.el
+++ b/lisp/ob-org.el
@@ -27,6 +27,10 @@ ;;; Commentary:
 ;; contents of the code block are returned in a raw result.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (declare-function org-export-string-as "ox"
diff --git a/lisp/ob-perl.el b/lisp/ob-perl.el
index cbac5343f..d08eb5cd1 100644
--- a/lisp/ob-perl.el
+++ b/lisp/ob-perl.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating perl source code.
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-tangle-lang-exts)
diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el
index ebbcdf166..e83b8ecad 100644
--- a/lisp/ob-plantuml.el
+++ b/lisp/ob-plantuml.el
@@ -34,6 +34,10 @@ ;;; Requirements:
 ;; plantuml.jar | `org-plantuml-jar-path' should point to the jar file (when exec mode is `jar')
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:plantuml
diff --git a/lisp/ob-processing.el b/lisp/ob-processing.el
index c97be78ea..4ecbfbdc3 100644
--- a/lisp/ob-processing.el
+++ b/lisp/ob-processing.el
@@ -50,6 +50,10 @@ ;;; Requirements:
 ;; - Processing.js module :: https://processingjs.org/
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'sha1)
 
diff --git a/lisp/ob-python.el b/lisp/ob-python.el
index 932aca08e..30acf21ab 100644
--- a/lisp/ob-python.el
+++ b/lisp/ob-python.el
@@ -28,6 +28,10 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating python source code.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'python)
diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el
index d5356f18c..199db89ef 100644
--- a/lisp/ob-ref.el
+++ b/lisp/ob-ref.el
@@ -49,6 +49,10 @@ ;;; Commentary:
 ;;  #+end_src
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob-core)
 (require 'org-macs)
 (require 'cl-lib)
diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el
index 9543f3bba..6ece63b4d 100644
--- a/lisp/ob-ruby.el
+++ b/lisp/ob-ruby.el
@@ -36,6 +36,10 @@ ;;; Requirements:
 ;;   https://github.com/eschulte/rinari/raw/master/util/inf-ruby.el
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 
diff --git a/lisp/ob-sass.el b/lisp/ob-sass.el
index 5c947fee1..400f9b326 100644
--- a/lisp/ob-sass.el
+++ b/lisp/ob-sass.el
@@ -38,6 +38,10 @@ ;;; Requirements:
 ;; - sass-mode :: https://github.com/nex3/haml/blob/master/extra/sass-mode.el
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-default-header-args:sass '())
diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el
index a2c71b217..8e3d48c32 100644
--- a/lisp/ob-scheme.el
+++ b/lisp/ob-scheme.el
@@ -38,6 +38,10 @@ ;;; Requirements:
 ;;   ELPA.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'geiser nil t)
 (require 'geiser-impl nil t)
diff --git a/lisp/ob-screen.el b/lisp/ob-screen.el
index b7245cfb9..294a40cbf 100644
--- a/lisp/ob-screen.el
+++ b/lisp/ob-screen.el
@@ -34,6 +34,10 @@ ;;; Commentary:
 ;; M-x org-babel-screen-test RET
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-screen-location "screen"
diff --git a/lisp/ob-sed.el b/lisp/ob-sed.el
index 02c2a0174..9befa7163 100644
--- a/lisp/ob-sed.el
+++ b/lisp/ob-sed.el
@@ -40,6 +40,10 @@ ;;; Usage:
 ;; tell Org Babel which file the sed script to act on.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (defvar org-babel-sed-command "sed"
diff --git a/lisp/ob-shell.el b/lisp/ob-shell.el
index 1cd7d127e..dff3d9326 100644
--- a/lisp/ob-shell.el
+++ b/lisp/ob-shell.el
@@ -26,6 +26,9 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating shell source code.
 
 ;;; Code:
+
+(org-assert-version)
+
 (require 'ob)
 (require 'org-macs)
 (require 'shell)
diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el
index e4cf28ced..d1256bf83 100644
--- a/lisp/ob-sql.el
+++ b/lisp/ob-sql.el
@@ -69,6 +69,10 @@ ;;; Commentary:
 ;;
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 
 (declare-function org-table-import "org-table" (file arg))
diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el
index 006b27eca..f22f9883f 100644
--- a/lisp/ob-sqlite.el
+++ b/lisp/ob-sqlite.el
@@ -27,6 +27,10 @@ ;;; Commentary:
 ;; Org-Babel support for evaluating sqlite source code.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob)
 (require 'ob-sql)
 
diff --git a/lisp/ob-table.el b/lisp/ob-table.el
index 0e93abfc8..807d58298 100644
--- a/lisp/ob-table.el
+++ b/lisp/ob-table.el
@@ -53,6 +53,10 @@ ;;; Commentary:
 ;; are optional.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ob-core)
 (require 'org-macs)
 
diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el
index 4b8fad6ce..b71a6b88a 100644
--- a/lisp/ob-tangle.el
+++ b/lisp/ob-tangle.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-src)
 (require 'org-macs)
diff --git a/lisp/ob.el b/lisp/ob.el
index 44828c724..83fc5b23e 100644
--- a/lisp/ob.el
+++ b/lisp/ob.el
@@ -22,6 +22,10 @@ ;;; ob.el --- Working with Code Blocks in Org        -*- lexical-binding: t; -*-
 ;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'org-keys)
diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 25bbe3784..7020ec47e 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -66,6 +66,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'bibtex)
 (require 'json)
 (require 'map)
diff --git a/lisp/oc-biblatex.el b/lisp/oc-biblatex.el
index 6221286eb..e8f677b7a 100644
--- a/lisp/oc-biblatex.el
+++ b/lisp/oc-biblatex.el
@@ -62,6 +62,10 @@ ;;; Commentary:
 ;;    #+print_bibliography: :keyword abc,xyz :title "Primary Sources"
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'map)
 (require 'org-macs)
 (require 'oc)
diff --git a/lisp/oc-bibtex.el b/lisp/oc-bibtex.el
index 0b598fda4..33fba8c40 100644
--- a/lisp/oc-bibtex.el
+++ b/lisp/oc-bibtex.el
@@ -35,6 +35,10 @@ ;;; Commentary:
 ;; Bibliography should consist of ".bib" files only.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'oc)
 
 (declare-function org-element-property "org-element" (property element))
diff --git a/lisp/oc-csl.el b/lisp/oc-csl.el
index 0b2fe5c41..b1251c36c 100644
--- a/lisp/oc-csl.el
+++ b/lisp/oc-csl.el
@@ -105,6 +105,10 @@ ;;; Commentary:
 ;; Many thanks to him!
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'map)
 (require 'bibtex)
diff --git a/lisp/oc-natbib.el b/lisp/oc-natbib.el
index 2193a070e..00c069e15 100644
--- a/lisp/oc-natbib.el
+++ b/lisp/oc-natbib.el
@@ -42,6 +42,10 @@ ;;; Commentary:
 ;; Bibliography accepts any style supported by "natbib" package.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'oc)
 
 (declare-function org-element-property "org-element" (property element))
diff --git a/lisp/oc.el b/lisp/oc.el
index 4dcb3f57c..10ca9d89f 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -61,6 +61,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-compat)
 (require 'org-macs)
 (require 'seq)
diff --git a/lisp/ol-bbdb.el b/lisp/ol-bbdb.el
index d756c7948..7c01c5919 100644
--- a/lisp/ol-bbdb.el
+++ b/lisp/ol-bbdb.el
@@ -93,6 +93,9 @@ ;;; Commentary:
 ;;
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-compat)
 (require 'org-macs)
diff --git a/lisp/ol-bibtex.el b/lisp/ol-bibtex.el
index 5b683469c..951f61f49 100644
--- a/lisp/ol-bibtex.el
+++ b/lisp/ol-bibtex.el
@@ -107,6 +107,9 @@ ;;; History:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'bibtex)
 (require 'cl-lib)
 (require 'org-compat)
diff --git a/lisp/ol-docview.el b/lisp/ol-docview.el
index 864f9e042..7dbeb0ada 100644
--- a/lisp/ol-docview.el
+++ b/lisp/ol-docview.el
@@ -42,6 +42,8 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
 
 (require 'doc-view)
 (require 'ol)
diff --git a/lisp/ol-doi.el b/lisp/ol-doi.el
index 94585e4c3..4ed63730e 100644
--- a/lisp/ol-doi.el
+++ b/lisp/ol-doi.el
@@ -26,6 +26,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 (defcustom org-link-doi-server-url "https://doi.org/"
diff --git a/lisp/ol-eshell.el b/lisp/ol-eshell.el
index 1dee61b98..23e5dc3c9 100644
--- a/lisp/ol-eshell.el
+++ b/lisp/ol-eshell.el
@@ -23,6 +23,8 @@ ;;; Commentary:
 
 ;;; Code:
 
+(org-assert-version)
+
 (require 'eshell)
 (require 'esh-mode)
 (require 'ol)
diff --git a/lisp/ol-eww.el b/lisp/ol-eww.el
index 7811be2c1..c3992fa07 100644
--- a/lisp/ol-eww.el
+++ b/lisp/ol-eww.el
@@ -44,6 +44,10 @@ ;;; Commentary:
 
 \f
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 (require 'cl-lib)
 (require 'eww)
diff --git a/lisp/ol-gnus.el b/lisp/ol-gnus.el
index a1dbc3bb8..a7bb65555 100644
--- a/lisp/ol-gnus.el
+++ b/lisp/ol-gnus.el
@@ -31,6 +31,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'gnus-sum)
 (require 'gnus-util)
 (require 'nnheader)
diff --git a/lisp/ol-info.el b/lisp/ol-info.el
index dc5f6d5ba..a2de55cf1 100644
--- a/lisp/ol-info.el
+++ b/lisp/ol-info.el
@@ -30,6 +30,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 ;; Declare external functions and variables
diff --git a/lisp/ol-irc.el b/lisp/ol-irc.el
index ed8bad5a5..d43e0c928 100644
--- a/lisp/ol-irc.el
+++ b/lisp/ol-irc.el
@@ -48,6 +48,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 (declare-function erc-buffer-filter "erc" (predicate &optional proc))
diff --git a/lisp/ol-man.el b/lisp/ol-man.el
index aa22964c5..efec989b8 100644
--- a/lisp/ol-man.el
+++ b/lisp/ol-man.el
@@ -24,6 +24,9 @@ ;;; ol-man.el --- Links to man pages -*- lexical-binding: t; -*-
 ;;
 ;;; Commentary:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 (org-link-set-parameters "man"
diff --git a/lisp/ol-mhe.el b/lisp/ol-mhe.el
index e112e1b79..8bd8aa6bf 100644
--- a/lisp/ol-mhe.el
+++ b/lisp/ol-mhe.el
@@ -30,6 +30,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'ol)
 
diff --git a/lisp/ol-rmail.el b/lisp/ol-rmail.el
index 186eeb86f..4d6f82c9b 100644
--- a/lisp/ol-rmail.el
+++ b/lisp/ol-rmail.el
@@ -30,6 +30,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 ;; Declare external functions and variables
diff --git a/lisp/ol-w3m.el b/lisp/ol-w3m.el
index ea2982900..7bd241080 100644
--- a/lisp/ol-w3m.el
+++ b/lisp/ol-w3m.el
@@ -41,6 +41,9 @@ ;;; Acknowledgments:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ol)
 
 (defvar w3m-current-url)
diff --git a/lisp/ol.el b/lisp/ol.el
index 02c9e1009..041796277 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-compat)
 (require 'org-macs)
 (require 'org-fold)
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index d48a8a24a..ca01cfdc5 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -45,6 +45,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ol)
 (require 'org-fold-core)
diff --git a/lisp/org-archive.el b/lisp/org-archive.el
index 08ebd751b..de818db60 100644
--- a/lisp/org-archive.el
+++ b/lisp/org-archive.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'cl-lib)
 
diff --git a/lisp/org-attach-git.el b/lisp/org-attach-git.el
index 72f21c205..95a2359c3 100644
--- a/lisp/org-attach-git.el
+++ b/lisp/org-attach-git.el
@@ -29,6 +29,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-attach)
 (require 'vc-git)
 
diff --git a/lisp/org-attach.el b/lisp/org-attach.el
index fe49af6f3..a7b02fd42 100644
--- a/lisp/org-attach.el
+++ b/lisp/org-attach.el
@@ -34,6 +34,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 (require 'ol)
diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 5780ecbee..435e68d0e 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -47,6 +47,9 @@ ;;; TODO
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-refile)
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index 362abe358..a8bfa946e 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 
diff --git a/lisp/org-colview.el b/lisp/org-colview.el
index 13643101b..fe092bc62 100644
--- a/lisp/org-colview.el
+++ b/lisp/org-colview.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index ef4f4e0d1..4517d8512 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -29,10 +29,13 @@ ;;; Commentary:
 
 ;;; Code:
 
+
 (require 'cl-lib)
 (require 'seq)
 (require 'org-macs)
 
+(org-assert-version)
+
 (declare-function org-agenda-diary-entry "org-agenda")
 (declare-function org-agenda-maybe-redo "org-agenda" ())
 (declare-function org-agenda-set-restriction-lock "org-agenda" (&optional type))
diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el
index b2542ab43..82e5a73b8 100644
--- a/lisp/org-crypt.el
+++ b/lisp/org-crypt.el
@@ -54,6 +54,9 @@ ;;; Thanks:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-compat)
 
diff --git a/lisp/org-ctags.el b/lisp/org-ctags.el
index ccc2dfa22..62e75a1de 100644
--- a/lisp/org-ctags.el
+++ b/lisp/org-ctags.el
@@ -137,6 +137,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (eval-when-compile (require 'cl-lib))
 (require 'org)
 
diff --git a/lisp/org-cycle.el b/lisp/org-cycle.el
index 41d878a14..8dbf9692c 100644
--- a/lisp/org-cycle.el
+++ b/lisp/org-cycle.el
@@ -29,6 +29,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-fold)
 
diff --git a/lisp/org-datetree.el b/lisp/org-datetree.el
index dec8bcace..a24472a95 100644
--- a/lisp/org-datetree.el
+++ b/lisp/org-datetree.el
@@ -30,6 +30,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 
 (defvar org-datetree-base-level 1
diff --git a/lisp/org-duration.el b/lisp/org-duration.el
index 338ea11a9..6d6b8b5cf 100644
--- a/lisp/org-duration.el
+++ b/lisp/org-duration.el
@@ -51,6 +51,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-macs)
 
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 9e9b7c5ec..e5482863c 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -58,6 +58,8 @@ ;;; Commentary:
 
 ;;; Code:
 
+(org-assert-version)
+
 (require 'avl-tree)
 (require 'ring)
 (require 'cl-lib)
diff --git a/lisp/org-entities.el b/lisp/org-entities.el
index d35e3fa8a..153aa2b67 100644
--- a/lisp/org-entities.el
+++ b/lisp/org-entities.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (declare-function org-mode "org" ())
 (declare-function org-toggle-pretty-entities "org"       ())
 (declare-function org-table-align            "org-table" ())
diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index a3db35f12..afc8c609e 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (defgroup org-faces nil
   "Faces in Org mode."
   :tag "Org Faces"
diff --git a/lisp/org-feed.el b/lisp/org-feed.el
index 118cac887..64db73bb1 100644
--- a/lisp/org-feed.el
+++ b/lisp/org-feed.el
@@ -88,6 +88,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'sha1)
 
diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el
index 322840ed0..a9329c806 100644
--- a/lisp/org-fold-core.el
+++ b/lisp/org-fold-core.el
@@ -287,6 +287,9 @@ ;;; Performance considerations
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-compat)
 
diff --git a/lisp/org-fold.el b/lisp/org-fold.el
index 49a599ae4..29781be2d 100644
--- a/lisp/org-fold.el
+++ b/lisp/org-fold.el
@@ -42,6 +42,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-fold-core)
 
diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el
index 0e9cb5b75..aedd41335 100644
--- a/lisp/org-footnote.el
+++ b/lisp/org-footnote.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 ;;;; Declarations
 
 (require 'cl-lib)
diff --git a/lisp/org-goto.el b/lisp/org-goto.el
index 4eb361558..680130384 100644
--- a/lisp/org-goto.el
+++ b/lisp/org-goto.el
@@ -22,6 +22,9 @@ ;;; org-goto.el --- Fast navigation in an Org buffer  -*- lexical-binding: t; -*
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'org-refile)
 
diff --git a/lisp/org-habit.el b/lisp/org-habit.el
index 412bce4a5..05e5f61a7 100644
--- a/lisp/org-habit.el
+++ b/lisp/org-habit.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-agenda)
diff --git a/lisp/org-id.el b/lisp/org-id.el
index f54e7280a..ae5b360e4 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -70,6 +70,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'org-refile)
 (require 'ol)
diff --git a/lisp/org-indent.el b/lisp/org-indent.el
index 01a53f753..de237415c 100644
--- a/lisp/org-indent.el
+++ b/lisp/org-indent.el
@@ -36,6 +36,9 @@ ;;; Commentary:
 ;;
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'org)
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el
index 563b8594f..cb0561ce4 100644
--- a/lisp/org-inlinetask.el
+++ b/lisp/org-inlinetask.el
@@ -78,6 +78,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 
 (defgroup org-inlinetask nil
diff --git a/lisp/org-keys.el b/lisp/org-keys.el
index e2195f54d..d65379a72 100644
--- a/lisp/org-keys.el
+++ b/lisp/org-keys.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 
 (defvar org-outline-regexp)
diff --git a/lisp/org-lint.el b/lisp/org-lint.el
index e00bdaa7f..3670bb1f1 100644
--- a/lisp/org-lint.el
+++ b/lisp/org-lint.el
@@ -85,6 +85,9 @@ ;;; Commentary:
 \f
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob)
 (require 'oc)
diff --git a/lisp/org-list.el b/lisp/org-list.el
index 0f0aaefdc..533f05408 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -76,6 +76,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
diff --git a/lisp/org-macro.el b/lisp/org-macro.el
index e280815a2..ed1f65ec1 100644
--- a/lisp/org-macro.el
+++ b/lisp/org-macro.el
@@ -46,6 +46,10 @@ ;;; Commentary:
 ;; {{{email}}} and {{{title}}} macros.
 
 ;;; Code:
+
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index b90341e84..6dac78fa4 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -34,6 +34,16 @@ ;;; Code:
 (require 'cl-lib)
 (require 'format-spec)
 
+;;; Org version verification.
+
+(defmacro org-assert-version ()
+  "Assert compile time and runtime verstion match."
+  `(cl-assert
+    (equal (org-git-version) ,(org-git-version))
+    t "Org version mismatch.  Make sure that correct `load-path' is set early in init.el"))
+
+(org-assert-version)
+
 (declare-function org-mode "org" ())
 (declare-function org-agenda-files "org" (&optional unrestricted archives))
 (declare-function org-fold-show-context "org-fold" (&optional key))
diff --git a/lisp/org-mobile.el b/lisp/org-mobile.el
index d3ef77b00..31c8381bc 100644
--- a/lisp/org-mobile.el
+++ b/lisp/org-mobile.el
@@ -31,6 +31,9 @@ ;;; Commentary:
 ;; iPhone and Android - any external viewer/flagging/editing
 ;; application that uses the same conventions could be used.
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-agenda)
diff --git a/lisp/org-mouse.el b/lisp/org-mouse.el
index b9d583e4f..afc908111 100644
--- a/lisp/org-mouse.el
+++ b/lisp/org-mouse.el
@@ -136,6 +136,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'cl-lib)
 
diff --git a/lisp/org-num.el b/lisp/org-num.el
index 4de62630e..4179d1205 100644
--- a/lisp/org-num.el
+++ b/lisp/org-num.el
@@ -61,6 +61,9 @@ ;;; Commentary:
 \f
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org) ;Otherwise `org-num--comment-re' burps on `org-comment-string'
diff --git a/lisp/org-pcomplete.el b/lisp/org-pcomplete.el
index 775f2f9a8..b4f5f67ed 100644
--- a/lisp/org-pcomplete.el
+++ b/lisp/org-pcomplete.el
@@ -26,6 +26,9 @@ ;;; Code:
 
 ;;;; Require other packages
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-macs)
 (require 'org-compat)
 (require 'pcomplete)
diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index ee28fc51d..ee7dce218 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -149,6 +149,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org-compat)
 (require 'org-id)
 (require 'xdg nil t)
diff --git a/lisp/org-plot.el b/lisp/org-plot.el
index 0fcedbc99..6e5f3592d 100644
--- a/lisp/org-plot.el
+++ b/lisp/org-plot.el
@@ -31,6 +31,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org)
 (require 'org-table)
diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el
index 2f5e0e0c9..604aeb915 100644
--- a/lisp/org-protocol.el
+++ b/lisp/org-protocol.el
@@ -129,6 +129,9 @@ ;;; Commentary:
 ;;
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'org)
 (require 'ol)
 
diff --git a/lisp/org-refile.el b/lisp/org-refile.el
index 01f0dfa46..5684ed4fd 100644
--- a/lisp/org-refile.el
+++ b/lisp/org-refile.el
@@ -26,6 +26,8 @@ ;;; Commentary:
 
 ;;; Code:
 
+(org-assert-version)
+
 (require 'org)
 
 (declare-function org-inlinetask-remove-END-maybe "org-inlinetask" ())
diff --git a/lisp/org-src.el b/lisp/org-src.el
index b7e0af50e..b44fc1f15 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -31,6 +31,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob-comint)
 (require 'org-macs)
diff --git a/lisp/org-table.el b/lisp/org-table.el
index a5a550812..ad34ea1d6 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -34,6 +34,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-macs)
 (require 'org-compat)
diff --git a/lisp/org-tempo.el b/lisp/org-tempo.el
index 94da94ffd..0902a45e8 100644
--- a/lisp/org-tempo.el
+++ b/lisp/org-tempo.el
@@ -38,6 +38,9 @@ ;;; Commentary:
 ;;
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'tempo)
 (require 'cl-lib)
 (require 'org)
diff --git a/lisp/org-timer.el b/lisp/org-timer.el
index c89e05360..9741ac679 100644
--- a/lisp/org-timer.el
+++ b/lisp/org-timer.el
@@ -35,6 +35,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-clock)
 
diff --git a/lisp/org.el b/lisp/org.el
index f8977bba5..9549ec5f0 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -71,6 +71,9 @@ (defvar org-inlinetask-min-level)
 
 ;;;; Require other packages
 
+(require 'org-compat)
+(org-assert-version)
+
 (require 'cl-lib)
 
 (eval-when-compile (require 'gnus-sum))
diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el
index cfc2bc5fd..02a83fc3a 100644
--- a/lisp/ox-ascii.el
+++ b/lisp/ox-ascii.el
@@ -28,6 +28,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ox)
 (require 'ox-publish)
 (require 'cl-lib)
diff --git a/lisp/ox-beamer.el b/lisp/ox-beamer.el
index e6232d8d2..952fd455c 100644
--- a/lisp/ox-beamer.el
+++ b/lisp/ox-beamer.el
@@ -30,6 +30,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox-latex)
 
diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 9e8740754..d61024577 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -31,6 +31,9 @@ ;;; Code:
 
 ;;; Dependencies
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'ox)
diff --git a/lisp/ox-icalendar.el b/lisp/ox-icalendar.el
index 410289abf..6b0f47f20 100644
--- a/lisp/ox-icalendar.el
+++ b/lisp/ox-icalendar.el
@@ -32,6 +32,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'org-agenda)
 (require 'ox-ascii)
diff --git a/lisp/ox-koma-letter.el b/lisp/ox-koma-letter.el
index 5f62cd1c0..258452fc5 100644
--- a/lisp/ox-koma-letter.el
+++ b/lisp/ox-koma-letter.el
@@ -165,6 +165,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox-latex)
 
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 3427a7ec6..221d52c11 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -27,6 +27,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox)
 (require 'ox-publish)
diff --git a/lisp/ox-man.el b/lisp/ox-man.el
index e808edcdf..339ab11cd 100644
--- a/lisp/ox-man.el
+++ b/lisp/ox-man.el
@@ -37,6 +37,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox)
 
diff --git a/lisp/ox-md.el b/lisp/ox-md.el
index 50db53910..75282dc49 100644
--- a/lisp/ox-md.el
+++ b/lisp/ox-md.el
@@ -29,6 +29,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox-html)
 (require 'ox-publish)
diff --git a/lisp/ox-odt.el b/lisp/ox-odt.el
index 7e4ae357e..208a39d9d 100644
--- a/lisp/ox-odt.el
+++ b/lisp/ox-odt.el
@@ -25,6 +25,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'org-compat)
diff --git a/lisp/ox-org.el b/lisp/ox-org.el
index 011d37616..159a41b98 100644
--- a/lisp/ox-org.el
+++ b/lisp/ox-org.el
@@ -25,6 +25,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'ox)
 (declare-function htmlize-buffer "ext:htmlize" (&optional buffer))
 (defvar htmlize-output-type)
diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el
index 9018ce7dd..a5999ef7b 100644
--- a/lisp/ox-publish.el
+++ b/lisp/ox-publish.el
@@ -38,6 +38,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'format-spec)
 (require 'ox)
diff --git a/lisp/ox-texinfo.el b/lisp/ox-texinfo.el
index 1eec586fd..623c1632c 100644
--- a/lisp/ox-texinfo.el
+++ b/lisp/ox-texinfo.el
@@ -26,6 +26,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ox)
 
diff --git a/lisp/ox.el b/lisp/ox.el
index 40ad7ae4e..fa6f3f19a 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -72,6 +72,9 @@ ;;; Commentary:
 
 ;;; Code:
 
+(require 'org-macs)
+(org-assert-version)
+
 (require 'cl-lib)
 (require 'ob-exp)
 (require 'oc)
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-04  4:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-05 11:51 [PATCH] Prevent mixed installation Ihor Radchenko
2022-09-04  4:45 ` Ihor Radchenko

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).