X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=t%2Fax%2Fam-test-lib.sh;h=f35ccd5def230b2e864edcc062923943cf885448;hb=60bfe0b9af62baae3498fe8688703570ecb1a93e;hp=d3351d2d0f75aeecc7b18499f9bebb790b4b27c8;hpb=076e8fa284c2453099286876684be913512af381;p=platform%2Fupstream%2Fautomake.git diff --git a/t/ax/am-test-lib.sh b/t/ax/am-test-lib.sh index d3351d2..f35ccd5 100644 --- a/t/ax/am-test-lib.sh +++ b/t/ax/am-test-lib.sh @@ -1,6 +1,6 @@ # -*- shell-script -*- # -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 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 @@ -34,11 +34,6 @@ distdir=$me-1.0 ## Environment cleanup. ## ## ---------------------- ## -# Temporarily disable this, since some shells (e.g., older version -# of Bash) can return a non-zero exit status upon the when a non-set -# variable is unset. -set +e - # Unset some make-related variables that may cause $MAKE to act like # a recursively invoked sub-make. Any $MAKE invocation in a test is # conceptually an independent invocation, not part of the main @@ -85,9 +80,6 @@ for pfx in TEST_ SH_ TAP_ ''; do done unset pfx -# Re-enable, it had been temporarily disabled above. -set -e - # cross_compiling # --------------- # Tell whether we are cross-compiling. This is especially useful to skip @@ -439,10 +431,67 @@ fetch_tap_driver () || framework_failure_ "couldn't fetch $am_tap_implementation TAP driver" sed 10q tap-driver # For debugging. } -# The shell/awk implementation of the TAP driver is still mostly dummy, so -# 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 +703,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 @@ -707,6 +757,19 @@ require_tool () echo "$me: running bison --version" bison --version || skip_all_ "required program 'bison' not available" ;; + valac) + echo "$me: running valac --version" + if ! valac --version; then + skip_all_ "required program 'valac' not available" + elif cross_compiling; then + skip_all_ "cross-compiling valac-generated C files is brittle" + fi + # TODO: We also know we need GNU make, the C compiler, and pkg-config + # here, but there is no easy way to express this with the current + # code organization. We should improve the situation, sooner or + # later. At which point the tests requiring 'valac' can drop the + # explicit requirements for those tools. + ;; *) # Generic case: the tool must support --version. echo "$me: running $1 --version" @@ -727,14 +790,14 @@ process_requirements () for am_tool in $*; do require_tool $am_tool done - am_tool=; unset am_tool - # We might need extra macros, e.g., from Libtool or Gettext. - case " $required " in - *\ libtool*) . ./t/libtool-macros.dir/get.sh;; - esac - case " $required " in - *\ gettext*) . ./t/gettext-macros.dir/get.sh;; - esac + # We might need extra m4 macros, e.g., for Libtool or Gettext. + for am_tool in gettext libtool pkg-config; do + case " $required " in + # The lack of whitespace after $am_tool is intended. + *" $am_tool"*) . ./t/$am_tool-macros.dir/get.sh;; + esac + done + unset am_tool } ## ---------------------------------------------------------------- ## @@ -760,7 +823,7 @@ am_setup_testdir () || framework_failure_ "cannot chdir into test subdirectory" if test x"$am_create_testdir" != x"empty"; then cp "$am_scriptdir"/install-sh "$am_scriptdir"/missing \ - "$am_scriptdir"/depcomp . \ + "$am_scriptdir"/compile "$am_scriptdir"/depcomp . \ || framework_failure_ "fetching common files from $am_scriptdir" # Build appropriate environment in test directory. E.g., create # configure.ac, touch all necessary files, etc. Don't use AC_OUTPUT,