Re: [Mesa-dev] [PATCH v3] isl: Replace bash generator with python generator
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
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. + +""