[ESS] ess-16.10 / Error 2

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Mon Jan 9 12:14:29 CET 2017

> ESS project,
> One of the developers asked that I forward this.
> I send the output of running 'make' on ess-16.10.
> Sincerely,
> Eric Lindblad
> http://www.nurmi-labs.blogspot.com
> --------------------------------------------
> System: Slackware Linux (version 14.0)
> CPUs: Intel(R) Atom(TM) CPU N270 @1.60GHz
> sh-4.2$ emacs --version
> GNU Emacs 24.2.1
> Copyright (C) 2012 Free Software Foundation, Inc.
> You may redistribute copies of Emacs
> under the terms of the GNU General Public License.
> For more information about these matters, see the file named COPYING.
> sh-4.2$ cd ess-16.10
> sh-4.2$ make
> cd etc; make all
> make[1]: Entering directory `/root/00/ess-16.10/etc'
> make[1]: Nothing to be done for `all'.
> make[1]: Leaving directory `/root/00/ess-16.10/etc'
> cd lisp; make all
> make[1]: Entering directory `/root/00/ess-16.10/lisp'
> emacs -batch -no-site-file -no-init-file -l ./ess-comp.el -f batch-byte-compile ess-custom.el
> loading 'ess-compat ..
> loading 'ess-custom ..
> loading 'ess ..
> Symbol's function definition is void: defvar-local

Your emacs version 24.2 (2012)  is relatively old.
The oldest version I have had access relatively quickly, is 24.3
and if I type
    C-h f  defvar-local

there, I get a "positive" result.

What happens if you start emacs and ask for  'defvar-local' (as
I did above)?

Also, you could apply the following patch to the ess sources --
and report back if it helps ! ---
It defines  defvar-local {the way it is defined in a recent version
of emacs, so it may not work necessarily work well in emacs 24.2
!} in case it is not found :

--- ess/lisp/ess-compat.el
+++ ess/lisp/ess-compat.el
@@ -278,6 +278,18 @@ mode is enabled.  Usually, such commands should use
 also checks the value of `use-empty-active-region'."
     (and transient-mark-mode mark-active)))
+(unless (fboundp 'defvar-local)
+  (defmacro defvar-local (var val &optional docstring)
+    "Define VAR as a buffer-local variable with default value VAL.
+Like `defvar' but additionally marks the variable as being automatically
+buffer-local wherever it is set."
+    (declare (debug defvar) (doc-string 3))
+    ;; Can't use backquote here, it's too early in the bootstrap.
+    (list 'progn (list 'defvar var val docstring)
+          (list 'make-variable-buffer-local (list 'quote var)))))
 (provide 'ess-compat)

I hope this helps further!

Best regards,
Martin Maechler
ETH Zurich

> make[1]: *** [ess-custom.elc] Error 255
> make[1]: Leaving directory `/root/00/ess-16.10/lisp'
> make: *** [all] Error 2
> sh-4.2$

More information about the ESS-help mailing list