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. --- framework/test/opengl.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/framework/test/opengl.py b/framework/test/opengl.py index 091aeb0..20e1c4f 100644 --- a/framework/test/opengl.py +++ b/framework/test/opengl.py @@ -33,6 +33,7 @@ import six from framework import exceptions, core from framework.options import OPTIONS from .base import TestIsSkip +from framework.test import piglit_test # pylint: disable=too-few-public-methods @@ -53,6 +54,17 @@ class StopWflinfo(exceptions.PiglitException): self.reason = reason +def find_wflinfo(): + """Find location of the wflinfo executable.""" + # First check if it's in our piglit bin/ directory + wflinfo = os.path.join(piglit_test.TEST_BIN_DIR, "wflinfo.exe") + if os.path.exists(wflinfo): + return wflinfo + else: + # Assume it's in $PATH + return "wflinfo" + + class WflInfo(object): """Class representing platform information as provided by wflinfo. @@ -92,16 +104,23 @@ class WflInfo(object): """ with open(os.devnull, 'w') as d: try: + # 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" + + wflinfo = find_wflinfo() + raw = subprocess.check_output( - ['wflinfo', - '--platform', OPTIONS.env['PIGLIT_PLATFORM']] + opts, - stderr=d) + [wflinfo, '--platform', platform] + opts, 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 -- 1.9.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit