On Wed, Jun 25, 2014 at 08:47:24PM -0700, Chad Versace wrote: > Piglit began requiring Mako 0.7 as of commit ac1f382 "dispatch: > Generate piglit-dispatch from Khronos XML". > > Piglit has required Mako for a long time, and CMake did check for Mako. > But CMake didn't check the version. This patch fixes CMake to require > Mako >= 0.7 and to provide the below hint on failure: > > Hint: Try installing Mako with `pip install --user --upgrade Mako`
You may need to bump the required version up to mako 0.7.3. This version works for me, but with mako 0.7.0 I get the following error: Traceback (most recent call last): File "./piglit", line 111, in <module> main() File "./piglit", line 106, in main returncode = parsed.func(args) File "/home/tstellar/piglit/framework/programs/summary.py", line 98, in html output.generate_html(args.summaryDir, args.exclude_details) File "/home/tstellar/piglit/framework/summary.py", line 445, in generate_html module_directory=self.TEMP_DIR) File "/usr/lib64/python2.7/site-packages/mako/template.py", line 276, in __init__ module = self._compile_from_file(path, filename) File "/usr/lib64/python2.7/site-packages/mako/template.py", line 332, in _compile_from_file self.module_writer) File "/usr/lib64/python2.7/site-packages/mako/template.py", line 613, in _compile_module_file generate_magic_comment=True) File "/usr/lib64/python2.7/site-packages/mako/template.py", line 582, in _compile node = lexer.parse() File "/usr/lib64/python2.7/site-packages/mako/lexer.py", line 220, in parse if self.match_control_line(): File "/usr/lib64/python2.7/site-packages/mako/lexer.py", line 414, in match_control_line self.append_node(parsetree.ControlLine, keyword, isend, text) File "/usr/lib64/python2.7/site-packages/mako/lexer.py", line 130, in append_node node = nodecls(*args, **kwargs) File "/usr/lib64/python2.7/site-packages/mako/parsetree.py", line 77, in __init__ code = ast.PythonFragment(text, **self.exception_kwargs) File "/usr/lib64/python2.7/site-packages/mako/ast.py", line 96, in __init__ super(PythonFragment, self).__init__(code, **exception_kwargs) File "/usr/lib64/python2.7/site-packages/mako/ast.py", line 42, in __init__ f.visit(expr) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 279, in visit return self.generic_visit(node) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 287, in generic_visit self.visit(item) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 278, in visit return f(node) File "/usr/lib64/python2.7/site-packages/mako/pyparser.py", line 143, in visit_For self.visit(node.iter) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 279, in visit return self.generic_visit(node) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 287, in generic_visit self.visit(item) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 279, in visit return self.generic_visit(node) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 289, in generic_visit self.visit(value) File "/usr/lib64/python2.7/site-packages/mako/_ast_util.py", line 278, in visit return f(node) File "/usr/lib64/python2.7/site-packages/mako/pyparser.py", line 107, in visit_Lambda self._visit_function(node, True) File "/usr/lib64/python2.7/site-packages/mako/pyparser.py", line 125, in _visit_function if arg_id(arg) in self.local_ident_stack: AttributeError: 'Tuple' object has no attribute 'id' -Tom > > Reported-by: Tom Stellard <thomas.stell...@amd.com> > Signed-off-by: Chad Versace <chad.vers...@linux.intel.com> > --- > CMakeLists.txt | 13 ++---- > cmake/Modules/PiglitFindMako.cmake | 93 > ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 96 insertions(+), 10 deletions(-) > create mode 100644 cmake/Modules/PiglitFindMako.cmake > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index f875f5b..0b20084 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -183,8 +183,9 @@ if(NOT DEFINED python) > message(FATAL_ERROR "python version 2.x (where x >= 6) required") > endif(NOT DEFINED python) > > -# Check for the presence of several python packages, which are needed to > build > -# generated tests. > +include(PiglitFindMako) > + > +# Require numpy > execute_process( > COMMAND ${python} -c "import numpy" > OUTPUT_QUIET > @@ -193,14 +194,6 @@ execute_process( > if(NOT import_numpy_error_code EQUAL 0) > message(FATAL_ERROR "numpy python module not found") > endif(NOT import_numpy_error_code EQUAL 0) > -execute_process( > - COMMAND ${python} -c "from mako.template import Template" > - OUTPUT_QUIET > - ERROR_QUIET > - RESULT_VARIABLE import_mako_error_code) > -if(NOT import_mako_error_code EQUAL 0) > - message(FATAL_ERROR "mako.template python module not found") > -endif(NOT import_mako_error_code EQUAL 0) > > # Default to compiling with debug information (`gcc -g`): > if(NOT CMAKE_BUILD_TYPE) > diff --git a/cmake/Modules/PiglitFindMako.cmake > b/cmake/Modules/PiglitFindMako.cmake > new file mode 100644 > index 0000000..4b1fcf9 > --- /dev/null > +++ b/cmake/Modules/PiglitFindMako.cmake > @@ -0,0 +1,93 @@ > +# Copyright 2014 Intel Corporation > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > +# copy of this software and associated documentation files (the "Software"), > +# to deal in the Software without restriction, including without limitation > +# the rights to use, copy, modify, merge, publish, distribute, sublicense, > +# and/or sell copies of the Software, and to permit persons to whom the > +# Software is furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > DEALINGS > +# IN THE SOFTWARE. > + > +# This module sets the following variables: > +# > +# MAKO_REQUIRED_VERSION > +# > +# MAKO_FOUND (CACHE) > +# True if and only if the installed Mako version is at least > +# MAKO_REQUIRED_VERSION. > +# > +# MAKO_VERSION (CACHE) > +# If MAKO_FOUND, then this is the installed Mako's full version string, > +# given by the Python value ``mako.__version__``. Otherwise, > +# "MAKO_VERSION-NOTFOUND". > +# > +# This module avoids checking the installed Mako version when not needed, by > +# performing the check the check only if the cached MAKO_VERSION does not > +# satisfy the current value of MAKO_REQUIRED_VERSION. > + > +set(MAKO_REQUIRED_VERSION "0.7") > + > +set(__MAKO_CHECK_VERSION_PY " > +try: > + import mako > +except ImportError as err: > + import sys > + sys.exit(err) > +else: > + print(mako.__version__) > +") > + > +set(__MAKO_INSTALL_HINT "Hint: Try installing Mako with `pip install --user > --upgrade Mako`") > + > +if(MAKO_VERSION VERSION_LESS MAKO_REQUIRED_VERSION) > + message(STATUS "Looking for Mako >= ${MAKO_REQUIRED_VERSION}") > + > + set(MAKO_FOUND false) > + set(MAKO_VERSION "MAKO_VERSION-NOTFOUND") > + > + execute_process( > + COMMAND ${python} -c "${__MAKO_CHECK_VERSION_PY}" > + OUTPUT_VARIABLE __MAKO_ACTUAL_VERSION > + OUTPUT_STRIP_TRAILING_WHITESPACE > + ERROR_VARIABLE __MAKO_STDERR > + ERROR_STRIP_TRAILING_WHITESPACE > + RESULT_VARIABLE __MAKO_EXIT_STATUS > + ) > + > + if(NOT __MAKO_EXIT_STATUS EQUAL 0) > + message(SEND_ERROR > + " Failed to find Mako\n" > + " ${__MAKO_INSTALL_HINT}\n") > + elseif(__MAKO_ACTUAL_VERSION VERSION_LESS MAKO_REQUIRED_VERSION) > + message(SEND_ERROR > + " Found Mako ${__MAKO_ACTUAL_VERSION}, but Mako >= > ${MAKO_REQUIRED_VERSION} is required\n" > + " ${__MAKO_INSTALL_HINT}\n") > + else() > + message(STATUS "Found Mako ${__MAKO_ACTUAL_VERSION}") > + set(MAKO_FOUND true) > + set(MAKO_VERSION "${__MAKO_ACTUAL_VERSION}") > + endif() > +endif() > + > +if(NOT MAKO_FOUND) > +endif() > + > +set(MAKO_FOUND "${MAKO_FOUND}" > + CACHE INTERNAL "Was Mako >= ${MAKO_REQUIRED_VERSION} found?" > + FORCE > +) > +set(MAKO_VERSION "${MAKO_VERSION}" > + CACHE INTERNAL "Full version string of installed Mako, if MAKO_FOUND." > + FORCE > +) > -- > 2.0.0.rc1 > _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit