[Piglit] [PATCH 1/2] framework: fix wflinfo issues in opengl module

Brian Paul brianp at vmware.com
Thu Nov 9 23:16:32 UTC 2017


1. If the PIGLIT_PLATFORM string is 'mixed_glx_egl' we need to convert
it to 'glx' so that wflinfo understands it.

2. Look in the piglit bin/ directory for the wflinfo.exe program.
When we build piglit, we copy wflinfo.exe into the bin/ directory for
packaging to avoid having to install waffle on target machines.  If
it's not found there, assume it's in our PATH just like before.

v2: Pass env argument to subprocess.check_output() instead of using
the find_wflinfo() function, per Dylan.
---
 framework/wflinfo.py | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/framework/wflinfo.py b/framework/wflinfo.py
index b9a05f8..3849838 100644
--- a/framework/wflinfo.py
+++ b/framework/wflinfo.py
@@ -24,11 +24,13 @@ from __future__ import (
 import errno
 import os
 import subprocess
+import sys
 
 import six
 
 from framework import exceptions, core
 from framework.options import OPTIONS
+from framework.test import piglit_test
 
 
 class StopWflinfo(exceptions.PiglitException):
@@ -77,16 +79,34 @@ class WflInfo(object):
         """
         with open(os.devnull, 'w') as d:
             try:
-                raw = subprocess.check_output(
-                    ['wflinfo',
-                     '--platform', OPTIONS.env['PIGLIT_PLATFORM']] + opts,
-                    stderr=d)
+                # Get the piglit platform string and, if needed, convert it
+                # to something that wflinfo understands.
+                platform = OPTIONS.env['PIGLIT_PLATFORM']
+                if platform == "mixed_glx_egl":
+                    platform = "glx"
+
+                if sys.platform in ['windows', 'cygwin']:
+                    bin = 'wflinfo.exe'
+                else:
+                    bin = 'wflinfo'
+
+                cmd = [bin, '--platform', platform] + opts
+
+                # setup execution environment where we extend the PATH env var
+                # to include the piglit TEST_BIN_DIR
+                new_env = os.environ
+                new_env['PATH'] = ':'.join([piglit_test.TEST_BIN_DIR,
+                                            os.environ['PATH']])
+
+                raw = subprocess.check_output(cmd, env=new_env, stderr=d)
+
             except subprocess.CalledProcessError:
                 # When we hit this error it usually going to be because we have
                 # an incompatible platform/profile combination
                 raise StopWflinfo('Called')
             except OSError as e:
                 # If we get a 'no wflinfo' warning then just return
+                print("wflinfo utility not found.")
                 if e.errno == errno.ENOENT:
                     raise StopWflinfo('OSError')
                 raise
@@ -122,8 +142,7 @@ class WflInfo(object):
                 try:
                     ret = self.__call_wflinfo(const + [var])
                 except StopWflinfo as e:
-                    # This means tat the particular api or profile is
-                    # unsupported
+                    # This means the particular api or profile is unsupported
                     if e.reason == 'Called':
                         continue
                     else:
-- 
1.9.1



More information about the Piglit mailing list