[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