[Mesa-dev] [PATCH v2 i-g-t] igt/list-workarounds: Extend the script to Mesa

Damien Lespiau damien.lespiau at intel.com
Fri Feb 5 23:46:51 UTC 2016


On Fri, Feb 05, 2016 at 01:55:19PM -0800, Sameer Kibey wrote:
> Updated the list-workarounds script so that it
> can parse Mesa directory if provided. Moved the
> common code to a separate function to allow
> reuse for both kernel and mesa.
> 
> The new command line is:
> Usage: list-workarounds [options] path-to-kernel
>        -k path-to-kernel -m path-to-mesa
> 
> The legacy usage is retained to avoid breaking
> backwards compatibility. New parameters -k and
> -m are added for the new behavior.
> 
> Either kernel or mesa or both paths can be specified.
> If path-to-mesa is invalid, error is reported.
> 
> Signed-off-by: Sameer Kibey <sameer.kibey at intel.com>

Pushed thanks for the patch.

-- 
Damien

> ---
>  scripts/list-workarounds | 74 ++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 53 insertions(+), 21 deletions(-)
> 
> diff --git a/scripts/list-workarounds b/scripts/list-workarounds
> index d11b6a9..8b41ae5 100755
> --- a/scripts/list-workarounds
> +++ b/scripts/list-workarounds
> @@ -18,7 +18,7 @@ def find_nth(haystack, needle, n):
>  	return start
>  
>  valid_platforms = ('ctg', 'elk', 'ilk', 'snb', 'ivb', 'vlv', 'hsw', 'bdw',
> -		   'chv', 'skl', 'bxt')
> +		   'chv', 'skl', 'bxt', 'kbl')
>  def parse_platforms(line, p):
>  	l =  p.split(',')
>  	for p in l:
> @@ -65,9 +65,15 @@ def execute(cmd):
>  	return out, err
>  
>  def parse_options(args):
> -	usage = "Usage: list-workarounds [options] path-to-kernel"
> +	usage = "Usage: list-workarounds [options] path-to-kernel -k path-to-kernel -m path-to-mesa"
>  	parser = optparse.OptionParser(usage, version=1.0)
>  
> +	parser.add_option("-k", "--kernel-path", dest="kernel_path", default=None,
> +			  help="path to kernel")
> +
> +	parser.add_option("-m", "--mesa-path", dest="mesa_path", default=None,
> +			  help="path to mesa")
> +
>  	parser.add_option("-v", "--verbose", action="store_true",
>  			  dest="verbose", default=False,
>  			  help="be more verbose")
> @@ -76,38 +82,64 @@ def parse_options(args):
>  			  help="List workarounds for the specified platform")
>  
>  	(options, args) = parser.parse_args()
> -
>  	return (options, args)
>  
> -if __name__ == '__main__':
> -	(options, args) = parse_options(sys.argv[1:])
> -	verbose = options.verbose
> -
> -	if not len(args):
> -		sys.stderr.write("error: A path to a kernel tree is required\n")
> -		sys.exit(1)
> -
> -	kernel_path = args[0]
> -	kconfig = os.path.join(kernel_path, 'Kconfig')
> -	if not os.path.isfile(kconfig):
> -		sys.stderr.write("error: %s does not point to a kernel tree \n"
> -				 % kernel_path)
> -		sys.exit(1)
> -
> -	i915_dir = os.path.join('drivers', 'gpu', 'drm', 'i915')
> +def print_workarounds(project_root, driver_dir, project):
>  	olddir = os.getcwd()
> -	os.chdir(kernel_path)
> +	os.chdir(project_root)
>  	work_arounds, err = execute(['git', 'grep', '-n',
>  				     '-e', 'W[aA][A-Z0-9][a-zA-Z0-9_]\+',
> -				     i915_dir])
> +				     driver_dir])
>  	os.chdir(olddir)
>  	if err:
>  		print(err)
>  		sys.exit(1)
>  
>  	parse(work_arounds)
> +	print "\nList of workarounds found in %s:" % project
>  	for wa in sorted(workarounds.keys()):
>  		if not options.platform:
>  			print("%s: %s" % (wa, ', '.join(workarounds[wa])))
>  		elif options.platform in workarounds[wa]:
>  			print(wa)
> +
> +
> +if __name__ == '__main__':
> +	(options, args) = parse_options(sys.argv)
> +	verbose = options.verbose
> +	kernel_path = None
> +
> +	if not len(args) and options.kernel_path == None and options.mesa_path == None:
> +		sys.stderr.write("error: A path to either a kernel tree or Mesa is required\n")
> +		sys.exit(1)
> +
> +	if len(args):
> +		kernel_path = args[0]
> +	elif options.kernel_path != None:
> +		kernel_path = options.kernel_path
> +
> +	if kernel_path != None:
> +	# --- list Kernel workarounds if path is provided ---
> +		kconfig = os.path.join(kernel_path, 'Kconfig')
> +		if not os.path.isfile(kconfig):
> +			sys.stderr.write("error: %s does not point to a kernel tree \n"
> +							% kernel_path)
> +			sys.exit(1)
> +
> +		i915_dir = os.path.join('drivers', 'gpu', 'drm', 'i915')
> +		print_workarounds(kernel_path, i915_dir, "kernel")
> +
> +	# --- list mesa workarounds if path is provided ---
> +	if options.mesa_path != None:
> +		# reset workarounds array
> +		workarounds = {}
> +
> +		mesa_path = options.mesa_path
> +		i965_dir = os.path.join('src', 'mesa', 'drivers', 'dri', 'i965')
> +		mesa_dir = os.path.join(mesa_path, i965_dir)
> +		if not os.path.exists(mesa_dir):
> +			sys.stderr.write("error: %s does not point to a valid mesa path \n"
> +							% mesa_path)
> +			sys.exit(1)
> +
> +		print_workarounds(mesa_path, i965_dir, "Mesa")
> -- 
> 1.9.1
> 


More information about the mesa-dev mailing list