[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Incorrect behavior for install rule and py-compile for _PYTHON targe
From: |
Alexandre Duret-Lutz |
Subject: |
Re: Incorrect behavior for install rule and py-compile for _PYTHON targets |
Date: |
Mon, 12 Jan 2004 23:56:35 +0100 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux) |
>>> "Sander" == Sander Niemeijer <address@hidden> writes:
[...]
Sander> - change 'PYTHON=$(PYTHON) $(py_compile) --basedir
Sander> $(DESTDIR)$(pythondir) $$dlist' for each python install target to
Sander> test -z "$$dlist" || PYTHON=$(PYTHON) $(py_compile) --basedir
Sander> $(DESTDIR)$(pythondir) $$dlist'
Sander> - revert the check for the amount of files given to py-compile to the
Sander> way it was done in automake 1.7.9 (i.e. using the 'if [ $# = 0 ]'
Sander> check after checking for basedir/help/version flags.
Sander> This has the advantage that py-compile isn't executed at all anymore
Sander> when a 'make install' is run for an excluded conditional _PYTHON
Sander> target.
Thanks. I'm checking this in, on HEAD and branch-1-8.
2004-01-12 Alexandre Duret-Lutz <address@hidden>
* lib/py-compile: Check input files after option processing.
Ensure --basedir has an argument.
* lib/am/python.am (install-%DIR%PYTHON): Do not run py-compile
if nothing was installed.
* tests/python10.test: New file.
* tests/Makefile.am (TESTS): Add python10.test.
Suggested by Sander Niemeijer.
Index: NEWS
===================================================================
RCS file: /cvs/automake/automake/NEWS,v
retrieving revision 1.256.2.18
diff -u -r1.256.2.18 NEWS
--- NEWS 11 Jan 2004 21:48:24 -0000 1.256.2.18
+++ NEWS 12 Jan 2004 22:53:52 -0000
@@ -1,6 +1,11 @@
Bug fixed in 1.8.1a:
-* Nothing yet.
+* A (well known) portability bug slipped in the changes made to
+ install-sh in Automake 1.8.1. The broken install-sh would refuse to
+ install anything on Tru64.
+
+* Fix install rules for conditionally built python files. (This never
+ really worked.)
Bug fixed in 1.8.1:
Index: lib/py-compile
===================================================================
RCS file: /cvs/automake/automake/lib/py-compile,v
retrieving revision 1.4
diff -u -r1.4 py-compile
--- lib/py-compile 9 Nov 2003 00:10:50 -0000 1.4
+++ lib/py-compile 12 Jan 2004 22:53:53 -0000
@@ -1,9 +1,9 @@
#!/bin/sh
# py-compile - Compile a Python program
-scriptversion=2003-11-09.01
+scriptversion=2004-01-12.23
-# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2004 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
@@ -36,12 +36,12 @@
basedir=
case "$1" in
- '')
- echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
- exit 1
- ;;
--basedir)
basedir=$2
+ if test -z "$basedir"; then
+ echo "$0: Missing argument to --basedir." 1>&2
+ exit 1
+ fi
shift 2
;;
-h|--h*)
@@ -60,6 +60,11 @@
exit 0
;;
esac
+
+if [ $# = 0 ]; then
+ echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ exit 1
+fi
# if basedir was given, then it should be prepended to filenames before
# byte compilation.
Index: lib/am/python.am
===================================================================
RCS file: /cvs/automake/automake/lib/am/python.am,v
retrieving revision 1.18.2.2
diff -u -r1.18.2.2 python.am
--- lib/am/python.am 10 Jan 2004 13:41:53 -0000 1.18.2.2
+++ lib/am/python.am 12 Jan 2004 22:53:53 -0000
@@ -52,6 +52,7 @@
done; \
## Byte-compile must be done at install time, since file times are
## encoded in the actual files.
+ test -z "$$dlist" || \
PYTHON=$(PYTHON) $(py_compile) --basedir $(DESTDIR)$(%NDIR%dir) $$dlist
endif %?INSTALL%
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.539.2.4
diff -u -r1.539.2.4 Makefile.am
--- tests/Makefile.am 8 Jan 2004 23:32:26 -0000 1.539.2.4
+++ tests/Makefile.am 12 Jan 2004 22:53:54 -0000
@@ -391,6 +391,7 @@
python7.test \
python8.test \
python9.test \
+python10.test \
recurs.test \
recurs2.test \
remake.test \
Index: tests/Makefile.in
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.in,v
retrieving revision 1.698.2.10
diff -u -r1.698.2.10 Makefile.in
--- tests/Makefile.in 11 Jan 2004 21:48:25 -0000 1.698.2.10
+++ tests/Makefile.in 12 Jan 2004 22:53:54 -0000
@@ -505,6 +505,7 @@
python7.test \
python8.test \
python9.test \
+python10.test \
recurs.test \
recurs2.test \
remake.test \
Index: tests/python10.test
===================================================================
RCS file: tests/python10.test
diff -N tests/python10.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/python10.test 12 Jan 2004 22:53:54 -0000
@@ -0,0 +1,87 @@
+#! /bin/sh
+# Copyright (C) 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake 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.
+#
+# GNU Automake 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 Automake; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Test _PYTHON with conditionals.
+
+required=python
+. ./defs || exit 1
+
+set -e
+
+cat >>configure.in <<'EOF'
+AM_PATH_PYTHON
+AM_CONDITIONAL([ONE], [test "x$one" = x1])
+AC_OUTPUT
+EOF
+
+cat > Makefile.am <<'END'
+if ONE
+mydir=$(prefix)/my
+my_PYTHON = one.py
+else
+yourdir=$(prefix)/your
+your_PYTHON = two.py
+endif
+
+one.py:
+ echo 'def one(): return 1' >$@
+two.py:
+ echo 'def two(): return 1' >$@
+
+disttest: distdir
+ test -f $(distdir)/one.py
+ test -f $(distdir)/two.py
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+mkdir inst
+inst=`pwd`/inst
+mkdir build
+cd build
+../configure --prefix="$inst"
+$MAKE install
+test -f $inst/your/two.py
+test -f $inst/your/two.pyc
+test -f $inst/your/two.pyo
+test ! -f $inst/my/one.py
+test ! -f $inst/my/one.pyc
+test ! -f $inst/my/one.pyo
+$MAKE uninstall
+test ! -f $inst/your/two.py
+test ! -f $inst/your/two.pyc
+test ! -f $inst/your/two.pyo
+
+../configure --prefix="$inst" one=1
+$MAKE install
+test ! -f $inst/your/two.py
+test ! -f $inst/your/two.pyc
+test ! -f $inst/your/two.pyo
+test -f $inst/my/one.py
+test -f $inst/my/one.pyc
+test -f $inst/my/one.pyo
+$MAKE uninstall
+test ! -f $inst/my/one.py
+test ! -f $inst/my/one.pyc
+test ! -f $inst/my/one.pyo
+
+$MAKE disttest
--
Alexandre Duret-Lutz