Subject: bug#11806: (setq load-path ..) of elisp-comp

From: Jack Kelly <[email-masked]>
Date: Sun, 1 Jul 2012 09:03:32 +1000

On Sat, Jun 30, 2012 at 11:19 AM, Makoto Fujiwara <[email-masked]> wrote:
> With your advice for VPATH issue, I am now using attached patch,
> thanks a lot,
> --- lib/elisp-comp.orig 2012-01-31 20:41:18.000000000 +0900
> +++ lib/elisp-comp      2012-04-13 22:14:39.000000000 +0900
> @@ -62,6 +62,7 @@
>  fi
>
>  tempdir=elc.$$
> +currdir=`pwd`
>
>  # Cleanup the temporary directory on exit.
>  trap 'ret=$?; rm -rf "$tempdir" && exit $ret' 0
> @@ -72,7 +73,7 @@
>
>  (
>    cd $tempdir
> -  echo "(setq load-path (cons nil load-path))" > script
> +  echo "(setq load-path (cons \"$currdir\" (cons nil load-path)))" > script
>    $EMACS -batch -q -l script -f batch-byte-compile *.el || exit $?
>    mv *.elc ..
>  ) || exit $?

Hi,

Unfortunately your patch doesn't quite work, because in a VPATH build
the build dir is not the sourcedir, so when you set $currdir, you are
setting the wrong path.

I'm not sure of the best way to fix this. The rules for calling
elisp-comp could be updated so that $(abs_srcdir) is passed along:

        abs_srcdir="$(abs_srcdir)" EMACS="$(EMACS)" $(SHELL)
$(elisp_comp) "$$@" || exit 1; \

, which is then added to load-path. elisp-comp would still need a
patch, but that's ok.

As to providing test cases, something like this should work:

configure.ac:

AC_INIT([foo], [bar], [[email-masked]])
AM_INIT_AUTOMAKE([foreign])
AM_PATH_LISPDIR
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Makefile.am:

lisp_LISP = foo.el
lisp_DATA = bar.el

foo.el:

(require 'bar)

bar.el:

(provide 'bar)

Once elisp-comp (and whatever else) is fixed, this setup should
survive a ./configure && make in both a normal and VPATH build.

(Aside: my copyright paperwork should still be in order. Email me
off-list if it is not.)

-- Jack