summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--lib/am/python.am30
-rwxr-xr-xlib/py-compile18
-rw-r--r--m4/python.m42
-rw-r--r--t/ax/am-test-lib.sh66
-rw-r--r--t/list-of-tests.mk1
-rwxr-xr-xt/nobase-python.sh50
-rwxr-xr-xt/py-compile-basedir.sh18
-rwxr-xr-xt/py-compile-basic.sh19
-rwxr-xr-xt/py-compile-basic2.sh70
-rwxr-xr-xt/py-compile-destdir.sh22
-rwxr-xr-xt/py-compile-option-terminate.sh20
-rwxr-xr-xt/python-pr10995.sh8
-rwxr-xr-xt/python-too-old.sh3
-rwxr-xr-xt/python-vars.sh2
-rwxr-xr-xt/python-virtualenv.sh95
-rwxr-xr-xt/python10.sh36
-rwxr-xr-xt/python11.sh3
-rwxr-xr-xt/python12.sh14
-rwxr-xr-xt/python3.sh6
20 files changed, 272 insertions, 214 deletions
diff --git a/NEWS b/NEWS
index 4860b3092..e672ad11b 100644
--- a/NEWS
+++ b/NEWS
@@ -266,6 +266,9 @@ Bugs fixed in 1.12.5:
finding classic 'libname.a' style libraries when 'name.lib' and
'name.dll.lib' aren't available.
+ - Python byte-compilation supports the new layout mandated by PEP-3147,
+ with its __pycache__ directory (automake bug#8847).
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
New in 1.12.4:
diff --git a/lib/am/python.am b/lib/am/python.am
index f9b7790c8..143245e87 100644
--- a/lib/am/python.am
+++ b/lib/am/python.am
@@ -95,19 +95,37 @@ endif %?INSTALL%
## -------------- ##
if %?INSTALL%
+
+?FIRST?am__pep3147_tweak = \
+?FIRST? sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
+
.PHONY uninstall-am: uninstall-%DIR%PYTHON
uninstall-%DIR%PYTHON:
@$(NORMAL_UNINSTALL)
@list='$(%DIR%_PYTHON)'; test -n "$(%NDIR%dir)" || list=; \
-?BASE? files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-?!BASE? $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
- test -n "$$files" || exit 0; \
+?BASE? py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+?!BASE? $(am__nobase_strip_setup); py_files=`$(am__nobase_strip)`; \
+ test -n "$$py_files" || exit 0; \
dir='$(DESTDIR)$(%NDIR%dir)'; \
## Also remove the .pyc and .pyo byte compiled versions.
- filesc=`echo "$$files" | sed 's|$$|c|'`; \
- fileso=`echo "$$files" | sed 's|$$|o|'`; \
+## This is somewhat tricky, because for newer pythons we have to take
+## PEP-3147 into account.
+ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
+ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
+ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
+ echo "$$py_files_pep3147";\
+ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
+ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
st=0; \
- for files in "$$files" "$$filesc" "$$fileso"; do \
+ for files in \
+ "$$py_files" \
+ "$$pyc_files" \
+ "$$pyo_files" \
+## Installation of '.py' files is not influenced by PEP-3147, so it
+## is correct *not* to have $pyfiles_pep3147 here.
+ "$$pyc_files_pep3147" \
+ "$$pyo_files_pep3147" \
+ ; do \
$(am__uninstall_files_from_dir) || st=$$?; \
done; \
exit $$st
diff --git a/lib/py-compile b/lib/py-compile
index 691690374..14d0d1231 100755
--- a/lib/py-compile
+++ b/lib/py-compile
@@ -116,7 +116,7 @@ else
fi
$PYTHON -c "
-import sys, os, py_compile
+import sys, os, py_compile, imp
files = '''$files'''
@@ -129,12 +129,19 @@ for file in files.split():
continue
sys.stdout.write(file)
sys.stdout.flush()
- py_compile.compile(filepath, filepath + 'c', path)
+ if hasattr(imp, 'get_tag'):
+ py_compile.compile(filepath, imp.cache_from_source(filepath), path)
+ else:
+ py_compile.compile(filepath, filepath + 'c', path)
sys.stdout.write('\n')" || exit $?
# this will fail for python < 1.5, but that doesn't matter ...
$PYTHON -O -c "
-import sys, os, py_compile
+import sys, os, py_compile, imp
+
+# pypy does not use .pyo optimization
+if hasattr(sys, 'pypy_translation_info'):
+ sys.exit(0)
files = '''$files'''
sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
@@ -146,7 +153,10 @@ for file in files.split():
continue
sys.stdout.write(file)
sys.stdout.flush()
- py_compile.compile(filepath, filepath + 'o', path)
+ if hasattr(imp, 'get_tag'):
+ py_compile.compile(filepath, imp.cache_from_source(filepath, False), path)
+ else:
+ py_compile.compile(filepath, filepath + 'o', path)
sys.stdout.write('\n')" 2>/dev/null || :
# Local Variables:
diff --git a/m4/python.m4 b/m4/python.m4
index a2478181f..50213a9c9 100644
--- a/m4/python.m4
+++ b/m4/python.m4
@@ -37,7 +37,7 @@ AC_DEFUN([AM_PATH_PYTHON],
dnl Find a Python interpreter. Python versions prior to 2.0 are not
dnl supported. (2.0 was released on October 16, 2000).
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
+[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
AC_ARG_VAR([PYTHON], [the Python interpreter])
diff --git a/t/ax/am-test-lib.sh b/t/ax/am-test-lib.sh
index d3351d2d0..6d7c69b04 100644
--- a/t/ax/am-test-lib.sh
+++ b/t/ax/am-test-lib.sh
@@ -443,6 +443,65 @@ fetch_tap_driver ()
# use the perl implementation by default for the moment.
am_tap_implementation=${am_tap_implementation-shell}
+# $PYTHON and support for PEP-3147. Needed to check our python-related
+# install rules.
+python_has_pep3147 ()
+{
+ if test -z "$am_pep3147_tag"; then
+ am_pep3147_tag=$($PYTHON -c 'import imp; print(imp.get_tag())') \
+ || am_pep3147_tag=none
+ fi
+ test $am_pep3147_tag != none
+}
+am_pep3147_tag=
+
+# pyc_location [-p] [FILE]
+# ------------------------
+# Determine what the actual location of the given '.pyc' or '.pyo'
+# byte-compiled file should be, taking into account PEP-3147. Save
+# the location in the '$am_pyc_file' variable. If the '-p' option
+# is given, print the location on the standard output as well.
+pyc_location ()
+{
+ case $#,$1 in
+ 2,-p) am_pyc_print=yes; shift;;
+ 1,*) am_pyc_print=no;;
+ *) fatal_ "pyc_location: invalid usage";;
+ esac
+ if python_has_pep3147; then
+ case $1 in
+ */*) am_pyc_dir=${1%/*} am_pyc_base=${1##*/};;
+ *) am_pyc_dir=. am_pyc_base=$1;;
+ esac
+ am_pyc_ext=${am_pyc_base##*.}
+ am_pyc_base=${am_pyc_base%.py?}
+ am_pyc_file=$am_pyc_dir/__pycache__/$am_pyc_base.$am_pep3147_tag.$am_pyc_ext
+ else
+ am_pyc_file=$1
+ fi
+ test $am_pyc_print = no || printf '%s\n' "$am_pyc_file"
+}
+
+# py_installed [--not] FILE
+# --------------------------
+# Check that the given python FILE has been installed (resp. *not*
+# installed, if the '--not' option is specified). If FILE is a
+# byte-compiled '.pyc' file, the new installation layout specified
+# by PEP-3147 will be taken into account.
+py_installed ()
+{
+ case $#,$1 in
+ 1,*) am_test_py_file='test -f';;
+ 2,--not) am_test_py_file='test ! -e'; shift;;
+ *) fatal_ "pyc_installed: invalid usage";;
+ esac
+ case $1 in
+ *.py[co]) pyc_location "$1"; am_target_py_file=$am_pyc_file;;
+ *) am_target_py_file=$1;;
+ esac
+ $am_test_py_file "$am_target_py_file"
+}
+
# Usage: require_compiler_ {cc|c++|fortran|fortran77}
require_compiler_ ()
{
@@ -654,9 +713,10 @@ require_tool ()
! cross_compiling || skip_all_ "doesn't work in cross-compile mode"
;;
python)
- # Python doesn't support --version, it has -V
- echo "$me: running python -V"
- python -V || skip_all_ "python interpreter not available"
+ PYTHON=${PYTHON-python}
+ # Older python versions don't support --version, they have -V.
+ echo "$me: running $PYTHON -V"
+ $PYTHON -V || skip_all_ "python interpreter not available"
;;
ro-dir)
# Skip this test case if read-only directories aren't supported
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 40e350506..6585ce688 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -874,7 +874,6 @@ t/print-libdir.sh \
t/proginst.sh \
t/programs-primary-rewritten.sh \
t/py-compile-basic.sh \
-t/py-compile-basic2.sh \
t/py-compile-basedir.sh \
t/py-compile-destdir.sh \
t/py-compile-env.sh \
diff --git a/t/nobase-python.sh b/t/nobase-python.sh
index fe72ad47c..de640f3ee 100755
--- a/t/nobase-python.sh
+++ b/t/nobase-python.sh
@@ -28,21 +28,31 @@ cat > Makefile.am <<'END'
mydir=$(prefix)/my
my_PYTHON = one.py sub/base.py
nobase_my_PYTHON = two.py sub/nobase.py
-
-test-install-data: install-data
- find inst -print; : For debugging.
- test -f inst/my/one.py
- test -f inst/my/one.pyc
- test -f inst/my/two.py
- test -f inst/my/two.pyc
- test -f inst/my/base.py
- test -f inst/my/base.pyc
- test -f inst/my/sub/nobase.py
- test -f inst/my/sub/nobase.pyc
- test ! -f inst/my/nobase.py
- test ! -f inst/my/nobase.pyc
END
+test_install()
+{
+ $MAKE install-data
+ find inst -print # For debugging.
+ py_installed inst/my/one.py
+ py_installed inst/my/one.pyc
+ py_installed inst/my/two.py
+ py_installed inst/my/two.pyc
+ py_installed inst/my/base.py
+ py_installed inst/my/base.pyc
+ py_installed inst/my/sub/nobase.py
+ py_installed inst/my/sub/nobase.pyc
+ py_installed --not inst/my/nobase.py
+ py_installed --not inst/my/nobase.pyc
+}
+
+test_uninstall()
+{
+ $MAKE uninstall
+ test -d inst/my
+ ! find inst/my -type f -print | grep .
+}
+
mkdir sub
for file in one.py sub/base.py two.py sub/nobase.py; do
@@ -56,23 +66,19 @@ $AUTOMAKE --add-missing
./configure --prefix "$(pwd)/inst" --program-prefix=p
$MAKE
-$MAKE test-install-data
-$MAKE uninstall
-
-find inst/my -type f -print | grep . && exit 1
+test_install
+test_uninstall
$MAKE install-strip
+test_uninstall
# Likewise, in a VPATH build.
-$MAKE uninstall
$MAKE distclean
mkdir build
cd build
../configure --prefix "$(pwd)/inst" --program-prefix=p
-$MAKE
-$MAKE test-install-data
-$MAKE uninstall
-find inst/my -type f -print | grep . && exit 1
+test_install
+test_uninstall
:
diff --git a/t/py-compile-basedir.sh b/t/py-compile-basedir.sh
index 8abad87e7..05e11598b 100755
--- a/t/py-compile-basedir.sh
+++ b/t/py-compile-basedir.sh
@@ -38,13 +38,17 @@ for d in foo foo/bar "$(pwd)/foo" . .. ../foo ''; do
: > "$d2/$f.py"
: > "$d2/sub/$f.py"
./py-compile --basedir "$d" "$f.py" "sub/$f.py"
- ls -l "$d2" "$d2/sub" # For debugging.
- test -f "$d2/$f.pyc"
- test -f "$d2/$f.pyo"
- test -f "$d2/sub/$f.pyc"
- test -f "$d2/sub/$f.pyo"
- rm -f "$d2/$f.pyc" "$d2/$f.pyo" "$d2/sub/$f.pyc" "$d2/sub/$f.pyo"
- find . | grep '\.py[co]$' && exit 1
+ find "$d2" # For debugging.
+ py_installed "$d2/$f.pyc"
+ py_installed "$d2/$f.pyo"
+ py_installed "$d2/sub/$f.pyc"
+ py_installed "$d2/sub/$f.pyo"
+ files=$(find "$d2" | grep '\.py[co]$')
+ test $(echo "$files" | wc -l) -eq 4
+ case $d2 in
+ .|..) rm -f $files;;
+ *) rm -rf "$d2";;
+ esac
done
:
diff --git a/t/py-compile-basic.sh b/t/py-compile-basic.sh
index d80ef8988..d846c1ebe 100755
--- a/t/py-compile-basic.sh
+++ b/t/py-compile-basic.sh
@@ -46,7 +46,8 @@ class Foo:
bar = baz = (1, (2,), [3, 4]); zardoz = 0;
END
-cat > bar.py <<'END'
+mkdir sub
+cat > sub/bar.py <<'END'
# Import of non-existent modules, or assertion of false conditions,
# shouldn't cause problems, as it should be enough for the code to
# be syntactically correct.
@@ -54,10 +55,16 @@ import Automake.No.Such.Module
assert False
END
-./py-compile foo.py bar.py
-test -f foo.pyc
-test -f foo.pyo
-test -f bar.pyc
-test -f bar.pyo
+# An empty file in a more deeply-nested directory should be ok as well.
+mkdir -p 1/_/2/_/3/_
+: > 1/_/2/_/3/_/0.py
+
+./py-compile foo.py sub/bar.py 1/_/2/_/3/_/0.py
+py_installed foo.pyc
+py_installed foo.pyo
+py_installed sub/bar.pyc
+py_installed sub/bar.pyo
+py_installed 1/_/2/_/3/_/0.pyc
+py_installed 1/_/2/_/3/_/0.pyo
:
diff --git a/t/py-compile-basic2.sh b/t/py-compile-basic2.sh
deleted file mode 100755
index 8100e9867..000000000
--- a/t/py-compile-basic2.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2011-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/>.
-
-# Test more basic functionalities of the 'py-compile' script, with
-# dummy python sources, but more complex directory layouts. See also
-# related test 'py-compile-basic.sh'.
-
-required=python
-. test-init.sh
-
-ocwd=$(pwd) || fatal_ "getting current working directory"
-
-pyfiles="
- foo.py
- ./foo1.py
- ../foo2.py
- ../dir/foo3.py
- $ocwd/foo4.py
- sub/bar.py
- sub/subsub/barbar.py
- __init__.py
- sub/__init__.py
- 1.py
- .././_.py
-"
-
-lst='
- dir/foo
- dir/foo1
- foo2
- dir/foo3
- foo4
- dir/sub/bar
- dir/sub/subsub/barbar
- dir/__init__
- dir/sub/__init__
- dir/1
- _
-'
-
-mkdir dir
-cd dir
-cp "$am_scriptdir/py-compile" . \
- || fatal_ "failed to fetch auxiliary script py-compile"
-mkdir sub sub/subsub
-touch $pyfiles
-./py-compile $pyfiles
-cd "$ocwd"
-
-for x in $lst; do echo $x.pyc; echo $x.pyo; done | sort > exp
-find . -name '*.py[co]' | sed 's|^\./||' | sort > got
-
-cat exp
-cat got
-diff exp got
-
-:
diff --git a/t/py-compile-destdir.sh b/t/py-compile-destdir.sh
index 71f3f7a8a..c26175f9f 100755
--- a/t/py-compile-destdir.sh
+++ b/t/py-compile-destdir.sh
@@ -1,4 +1,4 @@
-#! /bin/sh
+ #! /bin/sh
# Copyright (C) 2011-2012 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -31,13 +31,17 @@ echo 'def foo (): return "foo"' > $destdir/foo.py
echo 'def bar (): return "bar"' > $destdir/sub/bar.py
./py-compile --destdir $destdir foo.py sub/bar.py
-ls -l $destdir $destdir/sub # For debugging.
-ls . sub | grep '\.py[co]$' && exit 1
-test -f $destdir/foo.pyc
-test -f $destdir/foo.pyo
-test -f $destdir/sub/bar.pyc
-test -f $destdir/sub/bar.pyo
-strings $destdir/*.py[co] $destdir/sub/*.py[co] || : # For debugging.
-$FGREP $destdir $destdir/*.py[co] $destdir/sub/*.py[co] && exit 1
+
+find $destdir # For debugging.
+st=0
+for x in c o; do
+ for b in foo sub/bar; do
+ f=$(pyc_location -p "$destdir/$b.py$x")
+ test -f "$f"
+ strings "$f" || : # For debugging.
+ $FGREP $destdir $f && { echo BAD: $f; st=1; }
+ done
+done
+exit $st
:
diff --git a/t/py-compile-option-terminate.sh b/t/py-compile-option-terminate.sh
index 9af5e1386..a14c5ad6f 100755
--- a/t/py-compile-option-terminate.sh
+++ b/t/py-compile-option-terminate.sh
@@ -26,18 +26,18 @@ cp "$am_scriptdir/py-compile" . \
: > ./-o.py
: > ./--foo.py
./py-compile -- -o.py --foo.py
-test -f ./-o.pyc
-test -f ./-o.pyo
-test -f ./--foo.pyc
-test -f ./--foo.pyo
+py_installed ./-o.pyc
+py_installed ./-o.pyo
+py_installed ./--foo.pyc
+py_installed ./--foo.pyo
rm -f ./-*.py[co]
: > x.py
./py-compile x.py -o.py --foo.py
-test -f ./x.pyc
-test -f ./x.pyo
-test -f ./-o.pyc
-test -f ./-o.pyo
-test -f ./--foo.pyc
-test -f ./--foo.pyo
+py_installed ./x.pyc
+py_installed ./x.pyo
+py_installed ./-o.pyc
+py_installed ./-o.pyo
+py_installed ./--foo.pyc
+py_installed ./--foo.pyo
:
diff --git a/t/python-pr10995.sh b/t/python-pr10995.sh
index 4075a37e2..60ebd6716 100755
--- a/t/python-pr10995.sh
+++ b/t/python-pr10995.sh
@@ -46,10 +46,10 @@ test -f py-compile
./configure --prefix="$(pwd)/inst"
$MAKE install
-test -f inst/py/yes.py
-test -f inst/py/yes.pyc
-test ! -e inst/py/no.py
-test ! -e inst/py/no.pyc
+test -f inst/py/yes.py
+test ! -e inst/py/no.py
+py_installed inst/py/yes.pyc
+py_installed --not inst/py/no.pyc
$MAKE disttest
diff --git a/t/python-too-old.sh b/t/python-too-old.sh
index 24ee5842f..e7d923464 100755
--- a/t/python-too-old.sh
+++ b/t/python-too-old.sh
@@ -34,6 +34,7 @@ py_too_old ()
grep '[Pp]ython interpreter is too old' stderr
}
+saved_PYTHON=$PYTHON; export saved_PYTHON
PYTHON=; unset PYTHON
cat > configure.ac <<END
@@ -50,7 +51,7 @@ py_too_old python
mkdir bin
cat > bin/my-python << 'END'
#! /bin/sh
-exec python ${1+"$@"}
+exec $saved_PYTHON ${1+"$@"}
END
chmod a+x bin/my-python
PATH=$(pwd)/bin$PATH_SEPARATOR$PATH
diff --git a/t/python-vars.sh b/t/python-vars.sh
index eec07ae01..24d274d53 100755
--- a/t/python-vars.sh
+++ b/t/python-vars.sh
@@ -23,8 +23,6 @@ required=python
# In case the user's config.site defines pythondir or pyexecdir.
CONFIG_SITE=/dev/null; export CONFIG_SITE
-PYTHON=python
-
# Update the definition below if the documentation changes.
# Note that the value of the 'pythondir' and 'pyexecdir' variables can
# vary among different python installations, so we need more relaxed
diff --git a/t/python-virtualenv.sh b/t/python-virtualenv.sh
index cf3ae378d..9c0ffcc00 100755
--- a/t/python-virtualenv.sh
+++ b/t/python-virtualenv.sh
@@ -23,9 +23,11 @@ required='cc python virtualenv'
# In case the user's config.site defines pythondir or pyexecdir.
CONFIG_SITE=/dev/null; export CONFIG_SITE
+py_version_pre=$($PYTHON -V)
+
# Skip the test if a proper virtualenv cannot be created.
-virtualenv --verbose virtenv && test -f virtenv/bin/activate \
- || skip_ "coulnd't create python virtual environment"
+virtualenv -p"$PYTHON" --verbose virtenv && py_installed virtenv/bin/activate \
+ || skip_ "couldn't create python virtual environment"
# Activate the virtualenv.
. ./virtenv/bin/activate
@@ -34,16 +36,29 @@ if test -z "$VIRTUAL_ENV"; then
framework_failure_ "can't activate python virtual environment"
fi
+py_version_post=$(python -V)
+
+# Sanity check.
+test "$py_version_pre" = "$py_version_post"
+
cwd=$(pwd) || fatal_ "getting current working directory"
py_version=$(python -c 'import sys; print("%u.%u" % tuple(sys.version_info[:2]))')
py_site=$VIRTUAL_ENV/lib/python$py_version/site-packages
+# We need to do do this early, just to set some cache variables properly,
+# since because we're going to unset $PYTHON next.
+if python_has_pep3147; then
+ : PEP 3147 will be used in installation of ".pyc" files
+fi
+# We don't want our original python to be picked up by configure
+# invocations.
+unset PYTHON
+
# We need control over the package name.
cat > configure.ac << END
AC_INIT([am_virtenv], [1.0])
AM_INIT_AUTOMAKE
AC_CONFIG_FILES([Makefile])
-AC_SUBST([MY_VIRTENV], ['$cwd/virtenv'])
AC_PROG_CC
AM_PROG_AR
AC_PROG_RANLIB
@@ -59,9 +74,7 @@ libquux_a_SOURCES = foo.c
pkgpyexec_LIBRARIES = libzardoz.a
libzardoz_a_SOURCES = foo.c
-py_site = $(MY_VIRTENV)/lib/python$(PYTHON_VERSION)/site-packages
-
-.PYTHON: debug test-run test-install test-uninstall
+.PYTHON: debug test-run
debug:
@echo PYTHON: $(PYTHON)
@echo PYTHON_VERSION: $(PYTHON_VERSION)
@@ -85,24 +98,6 @@ test-run:
## available.
python -c 'from am_foo import foo_func; assert (foo_func () == 12345)'
python -c 'from am_virtenv import old_am; assert (old_am () == "AutoMake")'
-test-install:
- test -f $(py_site)/am_foo.py
- test -f $(py_site)/am_foo.pyc
- test -f $(py_site)/am_foo.pyo
- test -f $(py_site)/am_virtenv/__init__.py
- test -f $(py_site)/am_virtenv/__init__.pyc
- test -f $(py_site)/am_virtenv/__init__.pyo
- test -f $(py_site)/libquux.a
- test -f $(py_site)/am_virtenv/libzardoz.a
-test-uninstall:
- test ! -f $(py_site)/am_foo.py
- test ! -f $(py_site)/am_foo.pyc
- test ! -f $(py_site)/am_foo.pyo
- test ! -f $(py_site)/am_virtenv/__init__.py
- test ! -f $(py_site)/am_virtenv/__init__.pyc
- test ! -f $(py_site)/am_virtenv/__init__.pyo
- test ! -f $(py_site)/libquux.a
- test ! -f $(py_site)/am_virtenv/libzardoz.a
all-local: debug
END
@@ -123,6 +118,34 @@ int foo (void)
}
END
+check_install ()
+{
+ $MAKE install ${1+"$@"}
+
+ test -f "$py_site"/am_foo.py
+ py_installed "$py_site"/am_foo.pyc
+ py_installed "$py_site"/am_foo.pyo
+ py_installed "$py_site"/am_virtenv/__init__.py
+ py_installed "$py_site"/am_virtenv/__init__.pyc
+ py_installed "$py_site"/am_virtenv/__init__.pyo
+ test -f "$py_site"/libquux.a
+ test -f "$py_site"/am_virtenv/libzardoz.a
+}
+
+check_uninstall ()
+{
+ $MAKE uninstall ${1+"$@"}
+
+ test ! -e "$py_site"/am_foo.py
+ py_installed --not "$py_site"/am_foo.pyc
+ py_installed --not "$py_site"/am_foo.pyo
+ test ! -e "$py_site"/am_virtenv/__init__.py
+ py_installed --not "$py_site"/am_virtenv/__init__.pyc
+ py_installed --not "$py_site"/am_virtenv/__init__.pyo
+ test ! -e "$py_site"/libquux.a
+ test ! -e "$py_site"/am_virtenv/libzardoz.a
+}
+
$ACLOCAL
$AUTOCONF
$AUTOMAKE --add-missing
@@ -131,31 +154,25 @@ $AUTOMAKE --add-missing
mkdir build
cd build
../configure --prefix="$VIRTUAL_ENV"
-$MAKE install
-$MAKE test-install
+check_install
$MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_uninstall
cd ..
# Try an in-tree build.
./configure --prefix="$VIRTUAL_ENV"
-$MAKE install
-$MAKE test-install
+check_install
$MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_uninstall
$MAKE distclean
# Overriding pythondir and pyexecdir with cache variables should work.
./configure am_cv_python_pythondir="$py_site" \
am_cv_python_pyexecdir="$py_site"
-$MAKE install
-$MAKE test-install
+check_install
$MAKE test-run
-$MAKE uninstall
-$MAKE test-uninstall
+check_uninstall
$MAKE distclean
@@ -163,12 +180,10 @@ $MAKE distclean
./configure --prefix="$cwd/bad-prefix"
pythondir=$py_site pyexecdir=$py_site
export pythondir pyexecdir
-$MAKE -e install
+check_install -e
test ! -e bad-prefix
-$MAKE -e test-install
$MAKE test-run
-$MAKE -e uninstall
-$MAKE -e test-uninstall
+check_uninstall -e
unset pythondir pyexecdir
# Also check that the distribution is self-contained, for completeness.
diff --git a/t/python10.sh b/t/python10.sh
index c4a0ab460..9ee8cada7 100755
--- a/t/python10.sh
+++ b/t/python10.sh
@@ -58,29 +58,29 @@ cwd=$(pwd) || fatal_ "getting current working directory"
../configure --prefix="$cwd/$inst" one=0
$MAKE install
-test -f "$inst/your/two.py"
-test -f "$inst/your/two.pyc"
-test -f "$inst/your/two.pyo"
-test ! -e "$inst/my/one.py"
-test ! -e "$inst/my/one.pyc"
-test ! -e "$inst/my/one.pyo"
+test -f "$inst/your/two.py"
+py_installed "$inst/your/two.pyc"
+py_installed "$inst/your/two.pyo"
+py_installed --not "$inst/my/one.py"
+py_installed --not "$inst/my/one.pyc"
+py_installed --not "$inst/my/one.pyo"
$MAKE uninstall
-test ! -e "$inst/your/two.py"
-test ! -e "$inst/your/two.pyc"
-test ! -e "$inst/your/two.pyo"
+py_installed --not "$inst/your/two.py"
+py_installed --not "$inst/your/two.pyc"
+py_installed --not "$inst/your/two.pyo"
../configure --prefix=$cwd/"$inst" one=1
$MAKE install
-test ! -e "$inst/your/two.py"
-test ! -e "$inst/your/two.pyc"
-test ! -e "$inst/your/two.pyo"
-test -f "$inst/my/one.py"
-test -f "$inst/my/one.pyc"
-test -f "$inst/my/one.pyo"
+py_installed --not "$inst/your/two.py"
+py_installed --not "$inst/your/two.pyc"
+py_installed --not "$inst/your/two.pyo"
+test -f "$inst/my/one.py"
+py_installed "$inst/my/one.pyc"
+py_installed "$inst/my/one.pyo"
$MAKE uninstall
-test ! -e "$inst/my/one.py"
-test ! -e "$inst/my/one.pyc"
-test ! -e "$inst/my/one.pyo"
+py_installed --not "$inst/my/one.py"
+py_installed --not "$inst/my/one.pyc"
+py_installed --not "$inst/my/one.pyo"
$MAKE disttest
diff --git a/t/python11.sh b/t/python11.sh
index e3e29e5f7..a648c7b33 100755
--- a/t/python11.sh
+++ b/t/python11.sh
@@ -19,6 +19,9 @@
# Python is not required for this test.
. test-init.sh
+# We don't want to allow user overrides in this test.
+PYTHON=; unset PYTHON
+
cat >>configure.ac <<'EOF'
m4_define([_AM_PYTHON_INTERPRETER_LIST], [IShouldNotExist1 IShouldNotExist2])
AM_PATH_PYTHON
diff --git a/t/python12.sh b/t/python12.sh
index 3fd40308a..19398337c 100755
--- a/t/python12.sh
+++ b/t/python12.sh
@@ -36,19 +36,19 @@ $ACLOCAL
$AUTOCONF
$AUTOMAKE --add-missing
-instdir=$(pwd)/inst
+destdir=$(pwd)/inst
mkdir inst build
cd build
../configure --prefix="/usr"
-$MAKE install DESTDIR=$instdir
+$MAKE install DESTDIR=$destdir
# Perfunctory test that the files were created.
-test -f "$instdir/usr/share/my/my.py"
-test -f "$instdir/usr/share/my/my.pyc"
-test -f "$instdir/usr/share/my/my.pyo"
+test -f "$destdir/usr/share/my/my.py"
+pyo=$(pyc_location -p "$destdir/usr/share/my/my.pyo")
+pyc=$(pyc_location -p "$destdir/usr/share/my/my.pyc")
# If DESTDIR has made it into the byte compiled files, fail the test.
-$FGREP "$instdir" "$instdir/usr/share/my/my.pyo" \
- "$instdir/usr/share/my/my.pyc" && exit 1
+st=0; $FGREP "$destdir" "$pyc" "$pyo" || st=$?
+test $st -eq 1
:
diff --git a/t/python3.sh b/t/python3.sh
index f749f9f1d..e57868b9b 100755
--- a/t/python3.sh
+++ b/t/python3.sh
@@ -40,8 +40,8 @@ mkdir build
cd build
../configure --prefix="$(pwd)/inst"
$MAKE install
-test -f inst/my/one.py
-test -f inst/my/one.pyc
-test -f inst/my/one.pyo
+py_installed inst/my/one.py
+py_installed inst/my/one.pyc
+py_installed inst/my/one.pyo
: