[Piglit] [PATCH] cmake: Require Mako >= 0.7

Dylan Baker baker.dylan.c at gmail.com
Wed Jun 25 22:24:42 PDT 2014


On Wednesday, June 25, 2014 08:47:24 PM 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`
> 
> Reported-by: Tom Stellard <thomas.stellard at amd.com>
> Signed-off-by: Chad Versace <chad.versace at 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)

I'm pretty sure that this isn't going to do what you want. sys.exit() takes an 
interger argument as an exit code, but I'm pretty sure that in this case err 
is going to be a string 'no module named mako'

> +else:
> +	print(mako.__version__)
> +")

This is a just a nit, but I don't think print needs to be in an else here.

> +
> +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
> +)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20140625/be56e941/attachment.sig>


More information about the Piglit mailing list