piglit: 6a07d372d12bec8f57fd1b1922aef0fffa8ae08f (master) Build error on CentOS 6. [ 0%] Generating tests/util/piglit-dispatch-gen.c, tests/util/piglit-dispatch-gen.h, tests/util/piglit-util-gl-enum-gen.c Traceback (most recent call last): File "tests/util/gen_dispatch.py", line 29, in <module> import argparse ImportError: No module named argparse commit ac1f382db9d3ea5c69870a2bcd62a24bdb81ec5b Author: Chad Versace <chad.versace@linux.intel.com> Date: Tue Jun 10 17:21:59 2014 -0700 dispatch: Generate piglit-dispatch from Khronos XML Khronos now generates its headers from XML and no longer maintains the old, crufty *.spec files. Piglit should do the same. Otherwise, piglit-dispatch won't be able to pick up new extension functions. As a really really big bonus, after Piglit starts generating its GL dispatch code from gl.xml, it will be a small step to start generating EGL and GLX dispatch from egl.xml and glx.xml. This patch imports 'gl.xml' into a new toplevel "registry" directory, to follow the precedent of libepoxy. This patch follows the precedent of libepoxy by importing "gl.xml" into a new toplevel "registry" directory. I did *not* try to redesign piglit-dispatch in this patch. To the contrary, I attempted to keep the newly generated dispatch code to be as similar as possible as the old generated code. Despite wanting to clean up piglit-dispatch's design, I refrained because "a patch should do one thing, and do it well". I strove to keep separate concerns in separate files. File "registry/gl.py" parses "registry/gl.xml". File "tests/util/gen_dispatch.py" generates code from the that parsed result. This decision kept gen_dispatch.py small and focused. I hope everyone finds the rewritten gen_dispatch.py more maintainable and easy to read. The generated code has changed as following: - It now contains the GLES1 API, because gl.xml contains information on all OpenGL APIs. - The comment block for each function alias set now contains more information. For each function in the set, it now lists the complete set of providers. For example: /* glActiveTexture (GL_VERSION_1_3) (GL_VERSION_ES_CM_1_0) (GL_ES_VERSION_2_0) */ /* glActiveTextureARB (GL_ARB_multitexture) */ extern PFNGLACTIVETEXTUREPROC piglit_dispatch_glActiveTexture; #define glActiveTexture piglit_dispatch_glActiveTexture #define glActiveTextureARB piglit_dispatch_glActiveTexture - Enums are sorted by group then by value. Old dispatch sorted only by value. For example: /* Enum Group MapBufferUsageMask */ #define GL_MAP_READ_BIT 0x0001 #define GL_MAP_READ_BIT_EXT 0x0001 #define GL_MAP_WRITE_BIT 0x0002 #define GL_MAP_WRITE_BIT_EXT 0x0002 ... Tested for regressions with: piglit run -p x11_egl -x glx -x glean Mesa 10.2.1 Intel Ivybridge Fedora 20 v3, for Dylan: - Replace ElementTree with cElementTree, for speed. - Each method $foo in KeyedOrderedSet that returns a generator, rename it to iter${foo} to follow Python2 (not 3) naming conventions. - Python 2.6 lacks OrderedDict, so don't use it. - Remove unused import 'dedent'. - Python 2.6 does not recognize the syntax for set literals, so replace each set literal with a list literal or generator literal. - Replace sys.stderr.write with print(file=sys.stderr). - Remove hand-coded OrderedKeyedSet.copy and instead use copy module. - Prefer the 'lxml' module (it uses libxml2) over Python's builtin 'xml' module. - Replace methods ``def foo(x, y):`` with ``def foo(self, other):``. - Replace lists with generators in methods Command.c_*_param_list. - PEP8: Separate all toplevel items with 2 newlines. - PEP8: Fix minor whitespace issues. - PEP8: Replace some ``== None`` with ``is None``. - Replace None-check for --out-dir with add_argument(..., required=True) - Remove 'prog' assignment when calling ArgumentParser(prog=PROG_NAME). Instead, use default value Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
I think this bug can be closed as Python 2.7 is a requirement for piglit since 2baa07a1f0d95789bf7f215670ff530c71230b81 (2014-06-25) .
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.