[Mesa-dev] [PATCH v3 13/24] configure: require python mako module

Ilia Mirkin imirkin at alum.mit.edu
Thu Dec 11 11:35:00 PST 2014


On Tue, Dec 9, 2014 at 7:06 AM, Iago Toral Quiroga <itoral at igalia.com> wrote:
> From: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
>
> It is now a hard dependency because of the autogeneration of
> format pack and unpack functions.
>
> Update the documentation to reflect this change.
>
> v2:
> - Inline python script in m4 file and use PYTHON2
>
> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
> ---
>  configure.ac                      |  2 +
>  docs/install.html                 |  6 ++-
>  m4/ax_check_python_mako_module.m4 | 77 +++++++++++++++++++++++++++++++++++++++
>  3 files changed, 84 insertions(+), 1 deletion(-)
>  create mode 100644 m4/ax_check_python_mako_module.m4
>
> diff --git a/configure.ac b/configure.ac
> index 1d9d015..f38acfd 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -76,6 +76,8 @@ if test "x$INDENT" != "xcat"; then
>      AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
>  fi
>
> +AC_CHECK_PYTHON_MAKO_MODULE(0.7.3)
> +
>  AC_PROG_INSTALL
>
>  dnl We need a POSIX shell for parts of the build. Assume we have one
> diff --git a/docs/install.html b/docs/install.html
> index f12425f..b12e1cb 100644
> --- a/docs/install.html
> +++ b/docs/install.html
> @@ -38,6 +38,10 @@
>  Version 2.6.4 or later should work.
>  </li>
>  <br>
> +<li><a href="http://www.makotemplates.org/">Python Mako module</a> -
> +Python Mako module is required. Version 0.7.3 or later should work.
> +</li>
> +</br>
>  <li><a href="http://www.scons.org/">SCons</a> is required for building on
>  Windows and optional for Linux (it's an alternative to autoconf/automake.)
>  </li>
> @@ -78,7 +82,7 @@ the needed dependencies:
>  <pre>
>    sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \
>    gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \
> -  expat-devel llvm-devel
> +  expat-devel llvm-devel python-mako
>  </pre>
>
>
> diff --git a/m4/ax_check_python_mako_module.m4 b/m4/ax_check_python_mako_module.m4
> new file mode 100644
> index 0000000..f289f26
> --- /dev/null
> +++ b/m4/ax_check_python_mako_module.m4
> @@ -0,0 +1,77 @@
> +# ===========================================================================
> +#
> +# SYNOPSIS
> +#
> +#   AX_CHECK_PYTHON_MAKO_MODULE(MIN_VERSION_NUMBER)
> +#
> +# DESCRIPTION
> +#
> +#   Check whether Python mako module is installed and its version higher than
> +#   minimum requested.
> +#
> +#   Example of its use:
> +#
> +#   For example, the minimum mako version would be 0.7.3. Then configure.ac
> +#   would contain:
> +#
> +#   AC_CHECK_PYTHON_MAKO_MODULE(0.7.3)
> +#
> +# LICENSE
> +#
> +#   Copyright (c) 2014 Intel Corporation.
> +#
> +#   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 of the License, 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/>.
> +#
> +#   As a special exception, the respective Autoconf Macro's copyright owner
> +#   gives unlimited permission to copy, distribute and modify the configure
> +#   scripts that are the output of Autoconf when processing the Macro. You
> +#   need not follow the terms of the GNU General Public License when using
> +#   or distributing such scripts, even though portions of the text of the
> +#   Macro appear in them. The GNU General Public License (GPL) does govern
> +#   all other use of the material that constitutes the Autoconf Macro.
> +#
> +#   This special exception to the GPL applies to versions of the Autoconf
> +#   Macro released by the Autoconf Archive. When you make and distribute a
> +#   modified version of the Autoconf Macro, you may extend this special
> +#   exception to the GPL to apply to your modified version as well.
> +
> +dnl macro that checks for mako module in python
> +AC_DEFUN([AC_CHECK_PYTHON_MAKO_MODULE],
> +[AC_MSG_CHECKING(if module mako in python is installed)
> +    echo "
> +try:
> +    import sys
> +    import mako
> +except ImportError as err:
> +    sys.exit(err)
> +else:
> +    ver_min_req_str = str('$1');
> +    ver_min_req = ver_min_req_str.split('.');
> +    ver_str = mako.__version__
> +    ver = ver_str.split('.')
> +
> +    for i in range(len(ver)):
> +        ver_int = int(ver[[i]])
> +        ver_min_req_int = int(ver_min_req[[i]]);
> +        if ver_int < ver_min_req_int:
> +            sys.exit(1);
> +        if ver_int > ver_min_req_int:
> +            sys.exit(0);

Is this something that you wrote, or is it a "standard" thing you
copied from somewhere? Seems like it'd be a lot simpler as

  ver_req = map(int, '$1'.split('.'))
  ver_act = map(int, mako.__version__.split('.'))
  sys.exit(int(ver_req > ver_act))

[This assumes that there is an equal number of .'s in the requested
and actual versions, but so did your old code.]

> +    sys.exit(0);" | $PYTHON2 -
> +    if test $? -ne 0 ; then
> +       AC_MSG_ERROR(mako $1 or later is required.)
> +    else
> +        AC_MSG_RESULT(yes)
> +    fi
> +])
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list