tags 11806 + patch thanks On 07/01/2012 01:03 AM, Jack Kelly wrote: > On Sat, Jun 30, 2012 at 11:19 AM, Makoto Fujiwara <mak...@ki.nu> 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], [b...@quux.net]) > 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. > Thanks. I've condensed a patch from you explanation (see attachment). I will push it shortly if there are no objections.
> (Aside: my copyright paperwork should still be in order. Email me > off-list if it is not.) > I don't have an account on fencepost, so I can't check this, sorry. Since your part of the changes are short enough to be classified as "tiny change", I've just added a 'Copyright-paperwork-exempt' field to the patch to get the easiest way out. > -- Jack Thanks, Stefano
>From 5c94d97d90aa5b731a11c538f8b835e57bf39fee Mon Sep 17 00:00:00 2001 Message-Id: <5c94d97d90aa5b731a11c538f8b835e57bf39fee.1341510886.git.stefano.lattar...@gmail.com> From: Jack Kelly <j...@jackkelly.name> Date: Thu, 5 Jul 2012 18:50:37 +0200 Subject: [PATCH] lisp: better support of VPATH builds Fixes automake bug#11806. * lib/am/lisp.am: Pass the value of '$(abs_srcdir)' to the elisp-compile script in the environment. * lib/elisp-comp: Add the vale of '$abs_srcdir' to the emacs load-path. * t/lisp-pr11806.sh: New test. * t/list-of-tests.mk: Add it. Copyright-paperwork-exempt: yes Co-authored-by: Stefano Lattarini <stefano.lattar...@gnu.org> Reported-by: Makoto Fujiwara <mak...@ki.nu> Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- lib/am/lisp.am | 3 ++- lib/elisp-comp | 4 ++-- t/lisp-pr11806.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ t/list-of-tests.mk | 1 + 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100755 t/lisp-pr11806.sh diff --git a/lib/am/lisp.am b/lib/am/lisp.am index ba5c92a..050d7dc 100644 --- a/lib/am/lisp.am +++ b/lib/am/lisp.am @@ -36,7 +36,8 @@ elc-stamp: $(LISP) done; \ ## Finally call elisp-comp for all files. shift; \ - EMACS="$(EMACS)" $(SHELL) $(elisp_comp) "$$@" || exit 1; \ + abs_srcdir="$(abs_srcdir)" EMACS="$(EMACS)" $(SHELL) \ + $(elisp_comp) "$$@" || exit 1; \ else : ; fi @mv -f elc-temp $@ diff --git a/lib/elisp-comp b/lib/elisp-comp index 7766db4..b646640 100755 --- a/lib/elisp-comp +++ b/lib/elisp-comp @@ -1,7 +1,7 @@ #!/bin/sh # Copyright (C) 1995-2012 Free Software Foundation, Inc. -scriptversion=2010-02-06.18; # UTC +scriptversion=2012-07-05.17; # UTC # Franc,ois Pinard <pin...@iro.umontreal.ca>, 1995. # @@ -75,7 +75,7 @@ cp "$@" $tempdir ( cd $tempdir - echo "(setq load-path (cons nil load-path))" > script + echo "(setq load-path (cons \"$abs_srcdir\" (cons nil load-path)))" > script $EMACS -batch -q -l script -f batch-byte-compile *.el || exit $? mv *.elc .. ) || exit $? diff --git a/t/lisp-pr11806.sh b/t/lisp-pr11806.sh new file mode 100755 index 0000000..c372ea5 --- /dev/null +++ b/t/lisp-pr11806.sh @@ -0,0 +1,51 @@ +#! /bin/sh +# Copyright (C) 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Compiling .el files that requires each other in a VPATH build. +# See automake bug#11806. + +required=emacs +. ./defs || exit 1 + +cat >> configure.ac << 'END' +AM_PATH_LISPDIR +AC_OUTPUT +END + +cat > Makefile.am << 'END' +lisp_LISP = foo.el +lisp_DATA = bar.el +END + +echo "(require 'bar)" > foo.el +echo "(provide 'bar)" > bar.el + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +mkdir build +cd build +../configure +$MAKE +test -f foo.elc +cd .. + +./configure +$MAKE +test -f foo.elc + +: diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 852b87a..dd88819 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -640,6 +640,7 @@ t/lisp6.sh \ t/lisp7.sh \ t/lisp8.sh \ t/lispdry.sh \ +t/lisp-pr11806.sh \ t/listval.sh \ t/location.sh \ t/longline.sh \ -- 1.7.9.5