Re: [Mesa-dev] [PATCH v3] isl: Replace bash generator with python generator

2016-06-13 Thread Jason Ekstrand
On Mon, Jun 13, 2016 at 11:19 AM, Dylan Baker  wrote:

> This replaces the current bash generator with a python based generator
> using mako. It's quite fast and works with both python 2.7 and python
> 3.5, and should work with 3.3+ and maybe even 3.2.
>
> It produces an almost identical file except for a minor layout changes,
> and the addition of a "generated file, do not edit" warning.
>
> Cc: "12.0" 
> Signed-off-by: Dylan Baker 
> Reviewed-by: Jason Ekstrand 
> Reviewed-by: Emil Velikov 
> ---
>
> I don't have commit access to Mesa, so it would be great if someone
> could commit this for me.
>
> v2: - Provide the python file with the csvfile and output location as
>   arguments (Jason, Emil)
> - Put the mako template in the python file (Jason)
> - Merge Emil's Android.mk changes
> v3: - use builddir for the output of isl_format_layout.c (Jason, Emil)
>
>  src/intel/isl/Android.mk |   6 +-
>  src/intel/isl/Makefile.am|  13 +-
>  src/intel/isl/gen_format_layout.py   | 207
> +++
>  src/intel/isl/isl_format_layout_gen.bash | 129 ---
>  4 files changed, 218 insertions(+), 137 deletions(-)
>  create mode 100644 src/intel/isl/gen_format_layout.py
>  delete mode 100755 src/intel/isl/isl_format_layout_gen.bash
>
> diff --git a/src/intel/isl/Android.mk b/src/intel/isl/Android.mk
> index 3134981..ec3c656 100644
> --- a/src/intel/isl/Android.mk
> +++ b/src/intel/isl/Android.mk
> @@ -139,14 +139,14 @@ LOCAL_GENERATED_SOURCES += $(addprefix
> $(intermediates)/, $(ISL_GENERATED_FILES)
>  define bash-gen
> @mkdir -p $(dir $@)
> @echo "Gen Bash: $(PRIVATE_MODULE) <= $(notdir $(@))"
> -   $(hide) $(PRIVATE_SCRIPT) < $(PRIVATE_CSV) > $@
> +   $(hide) $(PRIVATE_SCRIPT) --csv $(PRIVATE_CSV) --out
> $(ISL_GENERATED_FILES)
>

I just pushed this with one quick tweak to use $@ here instead of
$(ISL_GENERATED_FILES) and one other place below.

--Jason


>  endef
>
>  isl_format_layout_deps := \
> -   $(LOCAL_PATH)/isl_format_layout_gen.bash \
> +   $(LOCAL_PATH)/gen_format_layout.py \
> $(LOCAL_PATH)/isl_format_layout.csv
>
> -$(intermediates)/isl_format_layout.c: PRIVATE_SCRIPT := bash -c
> $(LOCAL_PATH)/isl_format_layout_gen.bash
> +$(intermediates)/isl_format_layout.c: PRIVATE_SCRIPT := $(MESA_PYTHON2)
> $(LOCAL_PATH)/gen_format_layout.py
>  $(intermediates)/isl_format_layout.c: PRIVATE_CSV :=
> $(LOCAL_PATH)/isl_format_layout.csv
>  $(intermediates)/isl_format_layout.c: $(isl_format_layout_deps)
> $(call bash-gen)
> diff --git a/src/intel/isl/Makefile.am b/src/intel/isl/Makefile.am
> index 74f863a..812 100644
> --- a/src/intel/isl/Makefile.am
> +++ b/src/intel/isl/Makefile.am
> @@ -1,4 +1,4 @@
> -# Copyright 2015 Intel Corporation
> +# Copyright 2015-2016 Intel Corporation
>  #
>  # Permission is hereby granted, free of charge, to any person obtaining a
>  # copy of this software and associated documentation files (the
> "Software"),
> @@ -66,10 +66,13 @@ libisl_gen9_la_CFLAGS = $(libisl_la_CFLAGS)
> -DGEN_VERSIONx10=90
>
>  BUILT_SOURCES = $(ISL_GENERATED_FILES)
>
> -isl_format_layout.c: isl_format_layout_gen.bash \
> +PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
> +
> +isl_format_layout.c: gen_format_layout.py \
>   isl_format_layout.csv
> -   $(AM_V_GEN)$(srcdir)/isl_format_layout_gen.bash \
> -   <$(srcdir)/isl_format_layout.csv >$@
> +   $(PYTHON_GEN) $(srcdir)/gen_format_layout.py \
> +   --csv $(srcdir)/isl_format_layout.csv \
> +   --out $(builddir)/isl_format_layout.c
>
>  #
> 
>  #  Tests
> @@ -87,6 +90,6 @@ tests_isl_surf_get_image_offset_test_LDADD = \
>  #
> 
>
>  EXTRA_DIST = \
> -   isl_format_layout_gen.bash \
> +   gen_format_layout.py \
> isl_format_layout.csv \
> README
> diff --git a/src/intel/isl/gen_format_layout.py
> b/src/intel/isl/gen_format_layout.py
> new file mode 100644
> index 000..d7f3900
> --- /dev/null
> +++ b/src/intel/isl/gen_format_layout.py
> @@ -0,0 +1,207 @@
> +# encoding=utf-8
> +# Copyright © 2016 Intel Corporation
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a
> copy
> +# of this software and associated documentation files (the "Software"),
> to deal
> +# in the Software without restriction, including without limitation the
> rights
> +# to use, copy, modify, merge, publish, distribute, sublicense, and/or
> sell
> +# copies of the Software, and to permit persons to whom the Software is
> +# furnished to do so, subject to the following conditions:
> +
> +# The above copyright notice and this permission notice shall be included
> in
> +# all copies or substantial portions of the Software.
> +
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> 

[Mesa-dev] [PATCH v3] isl: Replace bash generator with python generator

2016-06-13 Thread Dylan Baker
This replaces the current bash generator with a python based generator
using mako. It's quite fast and works with both python 2.7 and python
3.5, and should work with 3.3+ and maybe even 3.2.

It produces an almost identical file except for a minor layout changes,
and the addition of a "generated file, do not edit" warning.

Cc: "12.0" 
Signed-off-by: Dylan Baker 
Reviewed-by: Jason Ekstrand 
Reviewed-by: Emil Velikov 
---

I don't have commit access to Mesa, so it would be great if someone
could commit this for me.

v2: - Provide the python file with the csvfile and output location as
  arguments (Jason, Emil)
- Put the mako template in the python file (Jason)
- Merge Emil's Android.mk changes
v3: - use builddir for the output of isl_format_layout.c (Jason, Emil)

 src/intel/isl/Android.mk |   6 +-
 src/intel/isl/Makefile.am|  13 +-
 src/intel/isl/gen_format_layout.py   | 207 +++
 src/intel/isl/isl_format_layout_gen.bash | 129 ---
 4 files changed, 218 insertions(+), 137 deletions(-)
 create mode 100644 src/intel/isl/gen_format_layout.py
 delete mode 100755 src/intel/isl/isl_format_layout_gen.bash

diff --git a/src/intel/isl/Android.mk b/src/intel/isl/Android.mk
index 3134981..ec3c656 100644
--- a/src/intel/isl/Android.mk
+++ b/src/intel/isl/Android.mk
@@ -139,14 +139,14 @@ LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, 
$(ISL_GENERATED_FILES)
 define bash-gen
@mkdir -p $(dir $@)
@echo "Gen Bash: $(PRIVATE_MODULE) <= $(notdir $(@))"
-   $(hide) $(PRIVATE_SCRIPT) < $(PRIVATE_CSV) > $@
+   $(hide) $(PRIVATE_SCRIPT) --csv $(PRIVATE_CSV) --out 
$(ISL_GENERATED_FILES)
 endef
 
 isl_format_layout_deps := \
-   $(LOCAL_PATH)/isl_format_layout_gen.bash \
+   $(LOCAL_PATH)/gen_format_layout.py \
$(LOCAL_PATH)/isl_format_layout.csv
 
-$(intermediates)/isl_format_layout.c: PRIVATE_SCRIPT := bash -c 
$(LOCAL_PATH)/isl_format_layout_gen.bash
+$(intermediates)/isl_format_layout.c: PRIVATE_SCRIPT := $(MESA_PYTHON2) 
$(LOCAL_PATH)/gen_format_layout.py
 $(intermediates)/isl_format_layout.c: PRIVATE_CSV := 
$(LOCAL_PATH)/isl_format_layout.csv
 $(intermediates)/isl_format_layout.c: $(isl_format_layout_deps)
$(call bash-gen)
diff --git a/src/intel/isl/Makefile.am b/src/intel/isl/Makefile.am
index 74f863a..812 100644
--- a/src/intel/isl/Makefile.am
+++ b/src/intel/isl/Makefile.am
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation
+# Copyright 2015-2016 Intel Corporation
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -66,10 +66,13 @@ libisl_gen9_la_CFLAGS = $(libisl_la_CFLAGS) 
-DGEN_VERSIONx10=90
 
 BUILT_SOURCES = $(ISL_GENERATED_FILES)
 
-isl_format_layout.c: isl_format_layout_gen.bash \
+PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
+
+isl_format_layout.c: gen_format_layout.py \
  isl_format_layout.csv
-   $(AM_V_GEN)$(srcdir)/isl_format_layout_gen.bash \
-   <$(srcdir)/isl_format_layout.csv >$@
+   $(PYTHON_GEN) $(srcdir)/gen_format_layout.py \
+   --csv $(srcdir)/isl_format_layout.csv \
+   --out $(builddir)/isl_format_layout.c
 
 # 
 #  Tests
@@ -87,6 +90,6 @@ tests_isl_surf_get_image_offset_test_LDADD = \
 # 
 
 EXTRA_DIST = \
-   isl_format_layout_gen.bash \
+   gen_format_layout.py \
isl_format_layout.csv \
README
diff --git a/src/intel/isl/gen_format_layout.py 
b/src/intel/isl/gen_format_layout.py
new file mode 100644
index 000..d7f3900
--- /dev/null
+++ b/src/intel/isl/gen_format_layout.py
@@ -0,0 +1,207 @@
+# encoding=utf-8
+# Copyright ?? 2016 Intel Corporation
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+""