Bug 80424

Summary: ImportError: No module named argparse
Product: piglit Reporter: Vinson Lee <vlee>
Component: infrastructureAssignee: Eric Anholt <eric>
Status: RESOLVED WONTFIX QA Contact: Eric Anholt <eric>
Severity: normal    
Priority: medium CC: airlied, chadversary
Version: unspecifiedKeywords: regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Vinson Lee 2014-06-23 19:49:50 UTC
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>
Comment 1 Felix Schwarz 2014-12-18 12:47:18 UTC
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.