* [PATCH 0/3] CArray improvements
@ 2024-04-01 21:34 Ivan Orlov
2024-04-01 21:34 ` [PATCH 1/3] Makefile: clean auto-generated *.c files properly Ivan Orlov
` (3 more replies)
0 siblings, 4 replies; 21+ messages in thread
From: Ivan Orlov @ 2024-04-01 21:34 UTC (permalink / raw)
To: opensbi
Currently, there are a few inconveniences the developer may face when
using CArrays, including:
- Unability to regenerate the carray-related .c files reliably without
removing the `build/` directory
- Confusion caused by source (.c) files in the `build/` directory (the
fact that some file was generated by carray.sh is not obvious)
This patch series fixes them.
Ivan Orlov (3):
Makefile: clean auto-generated *.c files properly
scripts/carray.sh: Add comment to generated files
docs: writing tests: update cleaning instructions
Makefile | 2 ++
docs/writing_tests.md | 4 +---
scripts/carray.sh | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-01 21:34 [PATCH 0/3] CArray improvements Ivan Orlov
@ 2024-04-01 21:34 ` Ivan Orlov
2024-04-22 15:19 ` Andrew Jones
2024-04-01 21:34 ` [PATCH 2/3] scripts/carray.sh: Add comment to generated files Ivan Orlov
` (2 subsequent siblings)
3 siblings, 1 reply; 21+ messages in thread
From: Ivan Orlov @ 2024-04-01 21:34 UTC (permalink / raw)
To: opensbi
Currently, `make clean` doesn't remove auto-generated .c files in the
`build/` directory. It means that we don't have a reliable way of
regenerating these files except from removing the `build/` directory
manually.
Update the `clean` target in order to remove these files as well.
In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
placing the auto-generated .c files into the `build/generated/` folder.
However, I believe it may not be necessary as in fact all of the files
in `build/` are auto-generated.
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
---
Makefile | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Makefile b/Makefile
index 680c19a..4519277 100644
--- a/Makefile
+++ b/Makefile
@@ -684,6 +684,8 @@ clean:
$(CMD_PREFIX)find $(build_dir) -type f -name "*.bin" -exec rm -rf {} +
$(if $(V), @echo " RM $(build_dir)/*.dtb")
$(CMD_PREFIX)find $(build_dir) -type f -name "*.dtb" -exec rm -rf {} +
+ $(if $(V), @echo " RM $(build_dir)/*.c")
+ $(CMD_PREFIX)find $(build_dir) -type f -name "*.c" -exec rm -rf {} +
# Rule for "make distclean"
.PHONY: distclean
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 2/3] scripts/carray.sh: Add comment to generated files
2024-04-01 21:34 [PATCH 0/3] CArray improvements Ivan Orlov
2024-04-01 21:34 ` [PATCH 1/3] Makefile: clean auto-generated *.c files properly Ivan Orlov
@ 2024-04-01 21:34 ` Ivan Orlov
2024-04-22 15:21 ` Andrew Jones
2024-04-23 15:25 ` Ben Dooks
2024-04-01 21:34 ` [PATCH 3/3] docs: writing tests: update cleaning instructions Ivan Orlov
2024-05-07 6:06 ` [PATCH 0/3] CArray improvements Anup Patel
3 siblings, 2 replies; 21+ messages in thread
From: Ivan Orlov @ 2024-04-01 21:34 UTC (permalink / raw)
To: opensbi
Add a comment about where auto-generated file came from to the carray.sh
output. This should help avoiding confusion for the developers looking
at the build artifacts and finding .c files there.
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
---
scripts/carray.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/carray.sh b/scripts/carray.sh
index 13f9d36..1fa2366 100755
--- a/scripts/carray.sh
+++ b/scripts/carray.sh
@@ -61,6 +61,7 @@ if [ -z "${ARRAY_NAME}" ]; then
usage
fi
+printf "// Generated with $(basename $0) from $(basename ${CONFIG_FILE})\n"
printf "#include <%s>\n\n" "${TYPE_HEADER}"
for VAR in ${VAR_LIST}; do
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 3/3] docs: writing tests: update cleaning instructions
2024-04-01 21:34 [PATCH 0/3] CArray improvements Ivan Orlov
2024-04-01 21:34 ` [PATCH 1/3] Makefile: clean auto-generated *.c files properly Ivan Orlov
2024-04-01 21:34 ` [PATCH 2/3] scripts/carray.sh: Add comment to generated files Ivan Orlov
@ 2024-04-01 21:34 ` Ivan Orlov
2024-04-22 15:22 ` Andrew Jones
2024-05-07 6:06 ` [PATCH 0/3] CArray improvements Anup Patel
3 siblings, 1 reply; 21+ messages in thread
From: Ivan Orlov @ 2024-04-01 21:34 UTC (permalink / raw)
To: opensbi
After the changes introduced by the previous patches are applied, there
is no need of the manual removal of the `build/` directory every time
new test is added. Running `make clean` should be enough to regenerate
the carray-related files.
Update the documentation correspondingly.
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
---
docs/writing_tests.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/docs/writing_tests.md b/docs/writing_tests.md
index 0fd15d6..cee4c4d 100644
--- a/docs/writing_tests.md
+++ b/docs/writing_tests.md
@@ -57,9 +57,7 @@ carray-sbi_unit_tests-$(CONFIG_SBIUNIT) += string_test_suite
libsbi-objs-$(CONFIG_SBIUNIT) += tests/sbi_string_test.o
```
-If you compiled OpenSBI with CONFIG_SBIUNIT enabled before, you may need to
-manually remove the build folder in order to regenerate the carray files:
-`rm -rf build/`.
+Now, run `make clean` in order to regenerate the carray-related files.
Recompile OpenSBI with the CONFIG_SBIUNIT option enabled and run it in QEMU.
You will see something like this:
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-01 21:34 ` [PATCH 1/3] Makefile: clean auto-generated *.c files properly Ivan Orlov
@ 2024-04-22 15:19 ` Andrew Jones
2024-04-23 14:58 ` Ivan Orlov
0 siblings, 1 reply; 21+ messages in thread
From: Andrew Jones @ 2024-04-22 15:19 UTC (permalink / raw)
To: opensbi
On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
> Currently, `make clean` doesn't remove auto-generated .c files in the
> `build/` directory. It means that we don't have a reliable way of
> regenerating these files except from removing the `build/` directory
> manually.
>
> Update the `clean` target in order to remove these files as well.
>
> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
> placing the auto-generated .c files into the `build/generated/` folder.
> However, I believe it may not be necessary as in fact all of the files
> in `build/` are auto-generated.
Since the Makefile enforces that the build dir is not the same as the
source dir and the only C files we currently generate are carray files,
then OK. I still think it would be nice to be more specific about what
we clean, though.
>
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
> Makefile | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 680c19a..4519277 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -684,6 +684,8 @@ clean:
> $(CMD_PREFIX)find $(build_dir) -type f -name "*.bin" -exec rm -rf {} +
> $(if $(V), @echo " RM $(build_dir)/*.dtb")
> $(CMD_PREFIX)find $(build_dir) -type f -name "*.dtb" -exec rm -rf {} +
> + $(if $(V), @echo " RM $(build_dir)/*.c")
> + $(CMD_PREFIX)find $(build_dir) -type f -name "*.c" -exec rm -rf {} +
>
> # Rule for "make distclean"
> .PHONY: distclean
> --
> 2.34.1
>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 2/3] scripts/carray.sh: Add comment to generated files
2024-04-01 21:34 ` [PATCH 2/3] scripts/carray.sh: Add comment to generated files Ivan Orlov
@ 2024-04-22 15:21 ` Andrew Jones
2024-04-23 15:25 ` Ben Dooks
1 sibling, 0 replies; 21+ messages in thread
From: Andrew Jones @ 2024-04-22 15:21 UTC (permalink / raw)
To: opensbi
On Mon, Apr 01, 2024 at 10:34:37PM +0100, Ivan Orlov wrote:
> Add a comment about where auto-generated file came from to the carray.sh
> output. This should help avoiding confusion for the developers looking
> at the build artifacts and finding .c files there.
>
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
> scripts/carray.sh | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/scripts/carray.sh b/scripts/carray.sh
> index 13f9d36..1fa2366 100755
> --- a/scripts/carray.sh
> +++ b/scripts/carray.sh
> @@ -61,6 +61,7 @@ if [ -z "${ARRAY_NAME}" ]; then
> usage
> fi
>
> +printf "// Generated with $(basename $0) from $(basename ${CONFIG_FILE})\n"
> printf "#include <%s>\n\n" "${TYPE_HEADER}"
>
> for VAR in ${VAR_LIST}; do
> --
> 2.34.1
>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 3/3] docs: writing tests: update cleaning instructions
2024-04-01 21:34 ` [PATCH 3/3] docs: writing tests: update cleaning instructions Ivan Orlov
@ 2024-04-22 15:22 ` Andrew Jones
0 siblings, 0 replies; 21+ messages in thread
From: Andrew Jones @ 2024-04-22 15:22 UTC (permalink / raw)
To: opensbi
On Mon, Apr 01, 2024 at 10:34:38PM +0100, Ivan Orlov wrote:
> After the changes introduced by the previous patches are applied, there
> is no need of the manual removal of the `build/` directory every time
> new test is added. Running `make clean` should be enough to regenerate
> the carray-related files.
>
> Update the documentation correspondingly.
>
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
> docs/writing_tests.md | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/docs/writing_tests.md b/docs/writing_tests.md
> index 0fd15d6..cee4c4d 100644
> --- a/docs/writing_tests.md
> +++ b/docs/writing_tests.md
> @@ -57,9 +57,7 @@ carray-sbi_unit_tests-$(CONFIG_SBIUNIT) += string_test_suite
> libsbi-objs-$(CONFIG_SBIUNIT) += tests/sbi_string_test.o
> ```
>
> -If you compiled OpenSBI with CONFIG_SBIUNIT enabled before, you may need to
> -manually remove the build folder in order to regenerate the carray files:
> -`rm -rf build/`.
> +Now, run `make clean` in order to regenerate the carray-related files.
>
> Recompile OpenSBI with the CONFIG_SBIUNIT option enabled and run it in QEMU.
> You will see something like this:
> --
> 2.34.1
>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-22 15:19 ` Andrew Jones
@ 2024-04-23 14:58 ` Ivan Orlov
2024-04-23 15:15 ` Ben Dooks
` (2 more replies)
0 siblings, 3 replies; 21+ messages in thread
From: Ivan Orlov @ 2024-04-23 14:58 UTC (permalink / raw)
To: opensbi
On 4/22/24 16:19, Andrew Jones wrote:
> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>> Currently, `make clean` doesn't remove auto-generated .c files in the
>> `build/` directory. It means that we don't have a reliable way of
>> regenerating these files except from removing the `build/` directory
>> manually.
>>
>> Update the `clean` target in order to remove these files as well.
>>
>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>> placing the auto-generated .c files into the `build/generated/` folder.
>> However, I believe it may not be necessary as in fact all of the files
>> in `build/` are auto-generated.
>
> Since the Makefile enforces that the build dir is not the same as the
> source dir and the only C files we currently generate are carray files,
> then OK. I still think it would be nice to be more specific about what
> we clean, though.
>
Hi Andrew,
Thank you very much for the review!
I see a few approaches how we could make the CArray-generated files
cleaning more clear. I believe we could either put all of the
CArray-generated files into a subdirectory of `build/` (as you
suggested) or add a suffix to a filename of an auto-generated .c file
(for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
pattern for `make clean` would be like "rm -rf build/*_carray.c").
The former would probably need significant update of the Makefile. The
latter, on the other hand, seems more flaky... What do you think of that?
--
Kind regards,
Ivan Orlov
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 14:58 ` Ivan Orlov
@ 2024-04-23 15:15 ` Ben Dooks
2024-04-23 15:18 ` Andrew Jones
2024-04-23 15:20 ` Ben Dooks
2 siblings, 0 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-23 15:15 UTC (permalink / raw)
To: opensbi
On 23/04/2024 15:58, Ivan Orlov wrote:
> On 4/22/24 16:19, Andrew Jones wrote:
>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>> `build/` directory. It means that we don't have a reliable way of
>>> regenerating these files except from removing the `build/` directory
>>> manually.
>>>
>>> Update the `clean` target in order to remove these files as well.
>>>
>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>>> placing the auto-generated .c files into the `build/generated/` folder.
>>> However, I believe it may not be necessary as in fact all of the files
>>> in `build/` are auto-generated.
>>
>> Since the Makefile enforces that the build dir is not the same as the
>> source dir and the only C files we currently generate are carray files,
>> then OK. I still think it would be nice to be more specific about what
>> we clean, though.
>>
>
> Hi Andrew,
>
> Thank you very much for the review!
>
> I see a few approaches how we could make the CArray-generated files
> cleaning more clear. I believe we could either put all of the
> CArray-generated files into a subdirectory of `build/` (as you
> suggested) or add a suffix to a filename of an auto-generated .c file
> (for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
> pattern for `make clean` would be like "rm -rf build/*_carray.c").
>
> The former would probably need significant update of the Makefile. The
> latter, on the other hand, seems more flaky... What do you think of that?
How about using find to look for any .carray files and then work out
what the build filename to clean is from them?
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 14:58 ` Ivan Orlov
2024-04-23 15:15 ` Ben Dooks
@ 2024-04-23 15:18 ` Andrew Jones
2024-04-23 15:20 ` Ben Dooks
2 siblings, 0 replies; 21+ messages in thread
From: Andrew Jones @ 2024-04-23 15:18 UTC (permalink / raw)
To: opensbi
On Tue, Apr 23, 2024 at 03:58:26PM +0100, Ivan Orlov wrote:
> On 4/22/24 16:19, Andrew Jones wrote:
> > On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
> > > Currently, `make clean` doesn't remove auto-generated .c files in the
> > > `build/` directory. It means that we don't have a reliable way of
> > > regenerating these files except from removing the `build/` directory
> > > manually.
> > >
> > > Update the `clean` target in order to remove these files as well.
> > >
> > > In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
> > > generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
> > > placing the auto-generated .c files into the `build/generated/` folder.
> > > However, I believe it may not be necessary as in fact all of the files
> > > in `build/` are auto-generated.
> >
> > Since the Makefile enforces that the build dir is not the same as the
> > source dir and the only C files we currently generate are carray files,
> > then OK. I still think it would be nice to be more specific about what
> > we clean, though.
> >
>
> Hi Andrew,
>
> Thank you very much for the review!
>
> I see a few approaches how we could make the CArray-generated files cleaning
> more clear. I believe we could either put all of the CArray-generated files
> into a subdirectory of `build/` (as you suggested) or add a suffix to a
> filename of an auto-generated .c file (for instance, sbi_unit_tests.carray
> -> sbi_unit_tests_carray.c, and the pattern for `make clean` would be like
> "rm -rf build/*_carray.c").
>
> The former would probably need significant update of the Makefile. The
> latter, on the other hand, seems more flaky... What do you think of that?
The filename change idea crossed my mind, but, when I saw we currently
don't generate any other types of C files, I didn't think it'd be worth
the churn [yet].
Thanks,
drew
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 14:58 ` Ivan Orlov
2024-04-23 15:15 ` Ben Dooks
2024-04-23 15:18 ` Andrew Jones
@ 2024-04-23 15:20 ` Ben Dooks
2024-04-23 15:24 ` Ben Dooks
2024-04-23 15:26 ` Ben Dooks
2 siblings, 2 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-23 15:20 UTC (permalink / raw)
To: opensbi
On 23/04/2024 15:58, Ivan Orlov wrote:
> On 4/22/24 16:19, Andrew Jones wrote:
>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>> `build/` directory. It means that we don't have a reliable way of
>>> regenerating these files except from removing the `build/` directory
>>> manually.
>>>
>>> Update the `clean` target in order to remove these files as well.
>>>
>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>>> placing the auto-generated .c files into the `build/generated/` folder.
>>> However, I believe it may not be necessary as in fact all of the files
>>> in `build/` are auto-generated.
>>
>> Since the Makefile enforces that the build dir is not the same as the
>> source dir and the only C files we currently generate are carray files,
>> then OK. I still think it would be nice to be more specific about what
>> we clean, though.
>>
>
> Hi Andrew,
>
> Thank you very much for the review!
>
> I see a few approaches how we could make the CArray-generated files
> cleaning more clear. I believe we could either put all of the
> CArray-generated files into a subdirectory of `build/` (as you
> suggested) or add a suffix to a filename of an auto-generated .c file
> (for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
> pattern for `make clean` would be like "rm -rf build/*_carray.c").
>
> The former would probably need significant update of the Makefile. The
> latter, on the other hand, seems more flaky... What do you think of that?
I did a quick shell command to find all the object basenames, via:
$ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
sbi_unit_tests
sbi_ecall_exts
fdt_irqchip_drivers
fdt_timer_drivers
fdt_serial_drivers
fdt_i2c_adapter_drivers
fdt_ipi_drivers
fdt_gpio_drivers
fdt_regmap_drivers
fdt_reset_drivers
platform_override_modules
so doing:
$ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2 |
sed 's/$/.o/g' | xargs -n1 find build -name
build/lib/sbi/sbi_ecall_exts.o
build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
build/platform/generic/platform_override_modules.o
finds all the carray build files
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 15:20 ` Ben Dooks
@ 2024-04-23 15:24 ` Ben Dooks
2024-04-23 15:26 ` Ben Dooks
1 sibling, 0 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-23 15:24 UTC (permalink / raw)
To: opensbi
On 23/04/2024 16:20, Ben Dooks wrote:
> On 23/04/2024 15:58, Ivan Orlov wrote:
>> On 4/22/24 16:19, Andrew Jones wrote:
>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>> `build/` directory. It means that we don't have a reliable way of
>>>> regenerating these files except from removing the `build/` directory
>>>> manually.
>>>>
>>>> Update the `clean` target in order to remove these files as well.
>>>>
>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>>>> placing the auto-generated .c files into the `build/generated/` folder.
>>>> However, I believe it may not be necessary as in fact all of the files
>>>> in `build/` are auto-generated.
>>>
>>> Since the Makefile enforces that the build dir is not the same as the
>>> source dir and the only C files we currently generate are carray files,
>>> then OK. I still think it would be nice to be more specific about what
>>> we clean, though.
>>>
>>
>> Hi Andrew,
>>
>> Thank you very much for the review!
>>
>> I see a few approaches how we could make the CArray-generated files
>> cleaning more clear. I believe we could either put all of the
>> CArray-generated files into a subdirectory of `build/` (as you
>> suggested) or add a suffix to a filename of an auto-generated .c file
>> (for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and
>> the pattern for `make clean` would be like "rm -rf build/*_carray.c").
>>
>> The former would probably need significant update of the Makefile. The
>> latter, on the other hand, seems more flaky... What do you think of that?
>
> I did a quick shell command to find all the object basenames, via:
>
> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
> sbi_unit_tests
> sbi_ecall_exts
> fdt_irqchip_drivers
> fdt_timer_drivers
> fdt_serial_drivers
> fdt_i2c_adapter_drivers
> fdt_ipi_drivers
> fdt_gpio_drivers
> fdt_regmap_drivers
> fdt_reset_drivers
> platform_override_modules
>
> so doing:
>
> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2 |
> sed? 's/$/.o/g'? | xargs -n1 find build -name
> build/lib/sbi/sbi_ecall_exts.o
> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
> build/platform/generic/platform_override_modules.o
>
> finds all the carray build files
of course, it would probably be easier to look through build
for any .c files that contain the word Generated if the change
to add a comment to the header is added...
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 2/3] scripts/carray.sh: Add comment to generated files
2024-04-01 21:34 ` [PATCH 2/3] scripts/carray.sh: Add comment to generated files Ivan Orlov
2024-04-22 15:21 ` Andrew Jones
@ 2024-04-23 15:25 ` Ben Dooks
1 sibling, 0 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-23 15:25 UTC (permalink / raw)
To: opensbi
On 01/04/2024 22:34, Ivan Orlov wrote:
> Add a comment about where auto-generated file came from to the carray.sh
> output. This should help avoiding confusion for the developers looking
> at the build artifacts and finding .c files there.
>
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
> scripts/carray.sh | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/scripts/carray.sh b/scripts/carray.sh
> index 13f9d36..1fa2366 100755
> --- a/scripts/carray.sh
> +++ b/scripts/carray.sh
> @@ -61,6 +61,7 @@ if [ -z "${ARRAY_NAME}" ]; then
> usage
> fi
>
> +printf "// Generated with $(basename $0) from $(basename ${CONFIG_FILE})\n"
> printf "#include <%s>\n\n" "${TYPE_HEADER}"
>
> for VAR in ${VAR_LIST}; do
minor nit, "Auto generated" might be a better comment start.
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 15:20 ` Ben Dooks
2024-04-23 15:24 ` Ben Dooks
@ 2024-04-23 15:26 ` Ben Dooks
2024-04-23 15:41 ` Ivan Orlov
1 sibling, 1 reply; 21+ messages in thread
From: Ben Dooks @ 2024-04-23 15:26 UTC (permalink / raw)
To: opensbi
On 23/04/2024 16:20, Ben Dooks wrote:
> On 23/04/2024 15:58, Ivan Orlov wrote:
>> On 4/22/24 16:19, Andrew Jones wrote:
>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>> `build/` directory. It means that we don't have a reliable way of
>>>> regenerating these files except from removing the `build/` directory
>>>> manually.
>>>>
>>>> Update the `clean` target in order to remove these files as well.
>>>>
>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>>>> placing the auto-generated .c files into the `build/generated/` folder.
>>>> However, I believe it may not be necessary as in fact all of the files
>>>> in `build/` are auto-generated.
>>>
>>> Since the Makefile enforces that the build dir is not the same as the
>>> source dir and the only C files we currently generate are carray files,
>>> then OK. I still think it would be nice to be more specific about what
>>> we clean, though.
>>>
>>
>> Hi Andrew,
>>
>> Thank you very much for the review!
>>
>> I see a few approaches how we could make the CArray-generated files
>> cleaning more clear. I believe we could either put all of the
>> CArray-generated files into a subdirectory of `build/` (as you
>> suggested) or add a suffix to a filename of an auto-generated .c file
>> (for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and
>> the pattern for `make clean` would be like "rm -rf build/*_carray.c").
>>
>> The former would probably need significant update of the Makefile. The
>> latter, on the other hand, seems more flaky... What do you think of that?
>
> I did a quick shell command to find all the object basenames, via:
>
> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
> sbi_unit_tests
> sbi_ecall_exts
> fdt_irqchip_drivers
> fdt_timer_drivers
> fdt_serial_drivers
> fdt_i2c_adapter_drivers
> fdt_ipi_drivers
> fdt_gpio_drivers
> fdt_regmap_drivers
> fdt_reset_drivers
> platform_override_modules
>
> so doing:
>
> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2 |
> sed? 's/$/.o/g'? | xargs -n1 find build -name
> build/lib/sbi/sbi_ecall_exts.o
> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
> build/platform/generic/platform_override_modules.o
>
> finds all the carray build files
of course, i meant sed -e 's/$/.c/g' to find the .c files not their
outputs which would have been removed anyway
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 15:26 ` Ben Dooks
@ 2024-04-23 15:41 ` Ivan Orlov
2024-04-26 16:25 ` Ben Dooks
0 siblings, 1 reply; 21+ messages in thread
From: Ivan Orlov @ 2024-04-23 15:41 UTC (permalink / raw)
To: opensbi
On 4/23/24 16:26, Ben Dooks wrote:
> On 23/04/2024 16:20, Ben Dooks wrote:
>> On 23/04/2024 15:58, Ivan Orlov wrote:
>>> On 4/22/24 16:19, Andrew Jones wrote:
>>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>>> `build/` directory. It means that we don't have a reliable way of
>>>>> regenerating these files except from removing the `build/` directory
>>>>> manually.
>>>>>
>>>>> Update the `clean` target in order to remove these files as well.
>>>>>
>>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>>> generated by carray", Andrew Jones <ajones@ventanamicro.com> suggested
>>>>> placing the auto-generated .c files into the `build/generated/`
>>>>> folder.
>>>>> However, I believe it may not be necessary as in fact all of the files
>>>>> in `build/` are auto-generated.
>>>>
>>>> Since the Makefile enforces that the build dir is not the same as the
>>>> source dir and the only C files we currently generate are carray files,
>>>> then OK. I still think it would be nice to be more specific about what
>>>> we clean, though.
>>>>
>>>
>>> Hi Andrew,
>>>
>>> Thank you very much for the review!
>>>
>>> I see a few approaches how we could make the CArray-generated files
>>> cleaning more clear. I believe we could either put all of the
>>> CArray-generated files into a subdirectory of `build/` (as you
>>> suggested) or add a suffix to a filename of an auto-generated .c file
>>> (for instance, sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and
>>> the pattern for `make clean` would be like "rm -rf build/*_carray.c").
>>>
>>> The former would probably need significant update of the Makefile.
>>> The latter, on the other hand, seems more flaky... What do you think
>>> of that?
>>
>> I did a quick shell command to find all the object basenames, via:
>>
>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>> sbi_unit_tests
>> sbi_ecall_exts
>> fdt_irqchip_drivers
>> fdt_timer_drivers
>> fdt_serial_drivers
>> fdt_i2c_adapter_drivers
>> fdt_ipi_drivers
>> fdt_gpio_drivers
>> fdt_regmap_drivers
>> fdt_reset_drivers
>> platform_override_modules
>>
>> so doing:
>>
>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>> | sed? 's/$/.o/g'? | xargs -n1 find build -name
>> build/lib/sbi/sbi_ecall_exts.o
>> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
>> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
>> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
>> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
>> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
>> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
>> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
>> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
>> build/platform/generic/platform_override_modules.o
>>
>> finds all the carray build files
>
> of course, i meant? sed -e 's/$/.c/g' to find the .c files not their
> outputs which would have been removed anyway
>
Sounds like an another solution, thanks! I'm not sure if it should be
done now, though... There is a chance that it could make the Makefile
less readable. But it is definitely more clean than removing the
entirety of build/.c files
--
Kind regards,
Ivan Orlov
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-23 15:41 ` Ivan Orlov
@ 2024-04-26 16:25 ` Ben Dooks
2024-04-29 8:52 ` Andrew Jones
0 siblings, 1 reply; 21+ messages in thread
From: Ben Dooks @ 2024-04-26 16:25 UTC (permalink / raw)
To: opensbi
On 23/04/2024 16:41, Ivan Orlov wrote:
> On 4/23/24 16:26, Ben Dooks wrote:
>> On 23/04/2024 16:20, Ben Dooks wrote:
>>> On 23/04/2024 15:58, Ivan Orlov wrote:
>>>> On 4/22/24 16:19, Andrew Jones wrote:
>>>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>>>> `build/` directory. It means that we don't have a reliable way of
>>>>>> regenerating these files except from removing the `build/` directory
>>>>>> manually.
>>>>>>
>>>>>> Update the `clean` target in order to remove these files as well.
>>>>>>
>>>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>>>> generated by carray", Andrew Jones <ajones@ventanamicro.com>
>>>>>> suggested
>>>>>> placing the auto-generated .c files into the `build/generated/`
>>>>>> folder.
>>>>>> However, I believe it may not be necessary as in fact all of the
>>>>>> files
>>>>>> in `build/` are auto-generated.
>>>>>
>>>>> Since the Makefile enforces that the build dir is not the same as the
>>>>> source dir and the only C files we currently generate are carray
>>>>> files,
>>>>> then OK. I still think it would be nice to be more specific about what
>>>>> we clean, though.
>>>>>
>>>>
>>>> Hi Andrew,
>>>>
>>>> Thank you very much for the review!
>>>>
>>>> I see a few approaches how we could make the CArray-generated files
>>>> cleaning more clear. I believe we could either put all of the
>>>> CArray-generated files into a subdirectory of `build/` (as you
>>>> suggested) or add a suffix to a filename of an auto-generated .c
>>>> file (for instance, sbi_unit_tests.carray ->
>>>> sbi_unit_tests_carray.c, and the pattern for `make clean` would be
>>>> like "rm -rf build/*_carray.c").
>>>>
>>>> The former would probably need significant update of the Makefile.
>>>> The latter, on the other hand, seems more flaky... What do you think
>>>> of that?
>>>
>>> I did a quick shell command to find all the object basenames, via:
>>>
>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>>> sbi_unit_tests
>>> sbi_ecall_exts
>>> fdt_irqchip_drivers
>>> fdt_timer_drivers
>>> fdt_serial_drivers
>>> fdt_i2c_adapter_drivers
>>> fdt_ipi_drivers
>>> fdt_gpio_drivers
>>> fdt_regmap_drivers
>>> fdt_reset_drivers
>>> platform_override_modules
>>>
>>> so doing:
>>>
>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>>> | sed? 's/$/.o/g'? | xargs -n1 find build -name
>>> build/lib/sbi/sbi_ecall_exts.o
>>> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
>>> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
>>> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
>>> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
>>> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
>>> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
>>> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
>>> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
>>> build/platform/generic/platform_override_modules.o
>>>
>>> finds all the carray build files
>>
>> of course, i meant? sed -e 's/$/.c/g' to find the .c files not their
>> outputs which would have been removed anyway
>>
>
> Sounds like an another solution, thanks! I'm not sure if it should be
> done now, though... There is a chance that it could make the Makefile
> less readable. But it is definitely more clean than removing the
> entirety of build/.c files
I made this patch to try and go through all the .carray generated
files in build and remove them. I'll submit it if people agree that
it is a reasonable idea:
From 7e1f02ebdd168a329a9a393f3a25c74d6b5f837d Mon Sep 17 00:00:00 2001
From: Ben Dooks <ben.dooks@codethink.co.uk>
Date: Tue, 23 Apr 2024 17:57:42 +0100
Subject: [PATCH] make: remove carray generated files via new script
Create a script to find the .carray generated files and allow them to
be removed during make clean.
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
---
Makefile | 3 +++
scripts/rm_carray.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
create mode 100755 scripts/rm_carray.sh
diff --git a/Makefile b/Makefile
index 7df39b4..7f70934 100644
--- a/Makefile
+++ b/Makefile
@@ -687,6 +687,9 @@ clean:
$(CMD_PREFIX)mkdir -p $(build_dir)
$(if $(V), @echo " RM $(build_dir)/*.o")
$(CMD_PREFIX)find $(build_dir) -type f -name "*.o" -exec rm -rf {} +
+ $(if $(V), @echo " RM $(build_dir)/*.o (carray)")
+ $(CMD_PREFIX)find $(src_dir) -type f -name "*.carray" -exec
$(src_dir)/scripts/rm_carray.sh $(src_dir) $(platform_build_dir) {} +
+ $(CMD_PREFIX)find $(platform_src_dir) -type f -name "*.carray" -exec
$(src_dir)/scripts/rm_carray.sh $(platform_src_dir)
$(platform_build_dir) {} +
$(if $(V), @echo " RM $(build_dir)/*.a")
$(CMD_PREFIX)find $(build_dir) -type f -name "*.a" -exec rm -rf {} +
$(if $(V), @echo " RM $(build_dir)/*.elf")
diff --git a/scripts/rm_carray.sh b/scripts/rm_carray.sh
new file mode 100755
index 0000000..4648115
--- /dev/null
+++ b/scripts/rm_carray.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+function usage()
+{
+ echo "Usage:"
+ echo "$0 [src-dir] [build-dir] <carray files>"
+ exit 1;
+}
+
+for i in "$*"; do echo $i; echo "..."; done
+
+SRC_DIR=$1
+shift
+BUILD_DIR=$1
+shift
+
+if [ -z "${SRC_DIR}" ]; then
+ echo "No source directory specified"
+ usage
+fi
+
+if [ -z "${BUILD_DIR}" ]; then
+ echo "No build directory specified"
+ usage
+fi
+
+if [ "$#" -lt 1 ]; then
+ echo "No carray files to process"
+ usage
+fi
+
+while [ "$#" -ge 1 ]; do
+ FILE=$1
+ shift
+
+ DIR_NAME=$(dirname $FILE | sed -e "s@{BUILD_DIR}/@@g")
+ FILE_NAME=`grep NAME $FILE | cut -d " " -f 2 | sed -e "s/$$/.c/g"`
+ NAME=${BUILD_DIR}/${DIR_NAME}/${FILE_NAME}
+
+ echo ${NAME}
+ if [ -e ${NAME} ]; then
+ rm ${NAME}
+ if [ $? -ne 0 ]; then
+ echo "Failed to remove ${NAME}"
+ exit 1
+ fi
+ fi
+done
--
2.37.2.352.g3c44437643
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-26 16:25 ` Ben Dooks
@ 2024-04-29 8:52 ` Andrew Jones
2024-04-29 12:16 ` Ben Dooks
2024-04-29 13:11 ` Ben Dooks
0 siblings, 2 replies; 21+ messages in thread
From: Andrew Jones @ 2024-04-29 8:52 UTC (permalink / raw)
To: opensbi
On Fri, Apr 26, 2024 at 05:25:12PM GMT, Ben Dooks wrote:
> On 23/04/2024 16:41, Ivan Orlov wrote:
> > On 4/23/24 16:26, Ben Dooks wrote:
> > > On 23/04/2024 16:20, Ben Dooks wrote:
> > > > On 23/04/2024 15:58, Ivan Orlov wrote:
> > > > > On 4/22/24 16:19, Andrew Jones wrote:
> > > > > > On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
> > > > > > > Currently, `make clean` doesn't remove auto-generated .c files in the
> > > > > > > `build/` directory. It means that we don't have a reliable way of
> > > > > > > regenerating these files except from removing the `build/` directory
> > > > > > > manually.
> > > > > > >
> > > > > > > Update the `clean` target in order to remove these files as well.
> > > > > > >
> > > > > > > In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
> > > > > > > generated by carray", Andrew Jones
> > > > > > > <ajones@ventanamicro.com> suggested
> > > > > > > placing the auto-generated .c files into the
> > > > > > > `build/generated/` folder.
> > > > > > > However, I believe it may not be necessary as in
> > > > > > > fact all of the files
> > > > > > > in `build/` are auto-generated.
> > > > > >
> > > > > > Since the Makefile enforces that the build dir is not the same as the
> > > > > > source dir and the only C files we currently generate
> > > > > > are carray files,
> > > > > > then OK. I still think it would be nice to be more specific about what
> > > > > > we clean, though.
> > > > > >
> > > > >
> > > > > Hi Andrew,
> > > > >
> > > > > Thank you very much for the review!
> > > > >
> > > > > I see a few approaches how we could make the
> > > > > CArray-generated files cleaning more clear. I believe we
> > > > > could either put all of the CArray-generated files into a
> > > > > subdirectory of `build/` (as you suggested) or add a suffix
> > > > > to a filename of an auto-generated .c file (for instance,
> > > > > sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
> > > > > pattern for `make clean` would be like "rm -rf
> > > > > build/*_carray.c").
> > > > >
> > > > > The former would probably need significant update of the
> > > > > Makefile. The latter, on the other hand, seems more flaky...
> > > > > What do you think of that?
> > > >
> > > > I did a quick shell command to find all the object basenames, via:
> > > >
> > > > $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
> > > > sbi_unit_tests
> > > > sbi_ecall_exts
> > > > fdt_irqchip_drivers
> > > > fdt_timer_drivers
> > > > fdt_serial_drivers
> > > > fdt_i2c_adapter_drivers
> > > > fdt_ipi_drivers
> > > > fdt_gpio_drivers
> > > > fdt_regmap_drivers
> > > > fdt_reset_drivers
> > > > platform_override_modules
> > > >
> > > > so doing:
> > > >
> > > > $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' '
> > > > -f 2 | sed? 's/$/.o/g'? | xargs -n1 find build -name
> > > > build/lib/sbi/sbi_ecall_exts.o
> > > > build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
> > > > build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
> > > > build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
> > > > build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
> > > > build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
> > > > build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
> > > > build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
> > > > build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
> > > > build/platform/generic/platform_override_modules.o
> > > >
> > > > finds all the carray build files
> > >
> > > of course, i meant? sed -e 's/$/.c/g' to find the .c files not their
> > > outputs which would have been removed anyway
> > >
> >
> > Sounds like an another solution, thanks! I'm not sure if it should be
> > done now, though... There is a chance that it could make the Makefile
> > less readable. But it is definitely more clean than removing the
> > entirety of build/.c files
>
> I made this patch to try and go through all the .carray generated
> files in build and remove them. I'll submit it if people agree that
> it is a reasonable idea:
I prefer changing the name of the generated C file to include 'carray'
and then just using RM *.carray.c
>
> From 7e1f02ebdd168a329a9a393f3a25c74d6b5f837d Mon Sep 17 00:00:00 2001
> From: Ben Dooks <ben.dooks@codethink.co.uk>
> Date: Tue, 23 Apr 2024 17:57:42 +0100
> Subject: [PATCH] make: remove carray generated files via new script
>
> Create a script to find the .carray generated files and allow them to
> be removed during make clean.
>
> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
> ---
> Makefile | 3 +++
> scripts/rm_carray.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 51 insertions(+)
> create mode 100755 scripts/rm_carray.sh
>
> diff --git a/Makefile b/Makefile
> index 7df39b4..7f70934 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -687,6 +687,9 @@ clean:
> $(CMD_PREFIX)mkdir -p $(build_dir)
> $(if $(V), @echo " RM $(build_dir)/*.o")
> $(CMD_PREFIX)find $(build_dir) -type f -name "*.o" -exec rm -rf {} +
> + $(if $(V), @echo " RM $(build_dir)/*.o (carray)")
> + $(CMD_PREFIX)find $(src_dir) -type f -name "*.carray" -exec
> $(src_dir)/scripts/rm_carray.sh $(src_dir) $(platform_build_dir) {} +
> + $(CMD_PREFIX)find $(platform_src_dir) -type f -name "*.carray" -exec
> $(src_dir)/scripts/rm_carray.sh $(platform_src_dir) $(platform_build_dir)
The script could have the find embedded in it, allowing it to be run
standalone.
Thanks,
drew
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-29 8:52 ` Andrew Jones
@ 2024-04-29 12:16 ` Ben Dooks
2024-04-29 13:11 ` Ben Dooks
1 sibling, 0 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-29 12:16 UTC (permalink / raw)
To: opensbi
On 29/04/2024 09:52, Andrew Jones wrote:
> On Fri, Apr 26, 2024 at 05:25:12PM GMT, Ben Dooks wrote:
>> On 23/04/2024 16:41, Ivan Orlov wrote:
>>> On 4/23/24 16:26, Ben Dooks wrote:
>>>> On 23/04/2024 16:20, Ben Dooks wrote:
>>>>> On 23/04/2024 15:58, Ivan Orlov wrote:
>>>>>> On 4/22/24 16:19, Andrew Jones wrote:
>>>>>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>>>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>>>>>> `build/` directory. It means that we don't have a reliable way of
>>>>>>>> regenerating these files except from removing the `build/` directory
>>>>>>>> manually.
>>>>>>>>
>>>>>>>> Update the `clean` target in order to remove these files as well.
>>>>>>>>
>>>>>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>>>>>> generated by carray", Andrew Jones
>>>>>>>> <ajones@ventanamicro.com> suggested
>>>>>>>> placing the auto-generated .c files into the
>>>>>>>> `build/generated/` folder.
>>>>>>>> However, I believe it may not be necessary as in
>>>>>>>> fact all of the files
>>>>>>>> in `build/` are auto-generated.
>>>>>>>
>>>>>>> Since the Makefile enforces that the build dir is not the same as the
>>>>>>> source dir and the only C files we currently generate
>>>>>>> are carray files,
>>>>>>> then OK. I still think it would be nice to be more specific about what
>>>>>>> we clean, though.
>>>>>>>
>>>>>>
>>>>>> Hi Andrew,
>>>>>>
>>>>>> Thank you very much for the review!
>>>>>>
>>>>>> I see a few approaches how we could make the
>>>>>> CArray-generated files cleaning more clear. I believe we
>>>>>> could either put all of the CArray-generated files into a
>>>>>> subdirectory of `build/` (as you suggested) or add a suffix
>>>>>> to a filename of an auto-generated .c file (for instance,
>>>>>> sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
>>>>>> pattern for `make clean` would be like "rm -rf
>>>>>> build/*_carray.c").
>>>>>>
>>>>>> The former would probably need significant update of the
>>>>>> Makefile. The latter, on the other hand, seems more flaky...
>>>>>> What do you think of that?
>>>>>
>>>>> I did a quick shell command to find all the object basenames, via:
>>>>>
>>>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>>>>> sbi_unit_tests
>>>>> sbi_ecall_exts
>>>>> fdt_irqchip_drivers
>>>>> fdt_timer_drivers
>>>>> fdt_serial_drivers
>>>>> fdt_i2c_adapter_drivers
>>>>> fdt_ipi_drivers
>>>>> fdt_gpio_drivers
>>>>> fdt_regmap_drivers
>>>>> fdt_reset_drivers
>>>>> platform_override_modules
>>>>>
>>>>> so doing:
>>>>>
>>>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' '
>>>>> -f 2 | sed? 's/$/.o/g'? | xargs -n1 find build -name
>>>>> build/lib/sbi/sbi_ecall_exts.o
>>>>> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
>>>>> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
>>>>> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
>>>>> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
>>>>> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
>>>>> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
>>>>> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
>>>>> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
>>>>> build/platform/generic/platform_override_modules.o
>>>>>
>>>>> finds all the carray build files
>>>>
>>>> of course, i meant? sed -e 's/$/.c/g' to find the .c files not their
>>>> outputs which would have been removed anyway
>>>>
>>>
>>> Sounds like an another solution, thanks! I'm not sure if it should be
>>> done now, though... There is a chance that it could make the Makefile
>>> less readable. But it is definitely more clean than removing the
>>> entirety of build/.c files
>>
>> I made this patch to try and go through all the .carray generated
>> files in build and remove them. I'll submit it if people agree that
>> it is a reasonable idea:
>
> I prefer changing the name of the generated C file to include 'carray'
> and then just using RM *.carray.c
>
>>
>> From 7e1f02ebdd168a329a9a393f3a25c74d6b5f837d Mon Sep 17 00:00:00 2001
>> From: Ben Dooks <ben.dooks@codethink.co.uk>
>> Date: Tue, 23 Apr 2024 17:57:42 +0100
>> Subject: [PATCH] make: remove carray generated files via new script
>>
>> Create a script to find the .carray generated files and allow them to
>> be removed during make clean.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
>> ---
>> Makefile | 3 +++
>> scripts/rm_carray.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 51 insertions(+)
>> create mode 100755 scripts/rm_carray.sh
>>
>> diff --git a/Makefile b/Makefile
>> index 7df39b4..7f70934 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -687,6 +687,9 @@ clean:
>> $(CMD_PREFIX)mkdir -p $(build_dir)
>> $(if $(V), @echo " RM $(build_dir)/*.o")
>> $(CMD_PREFIX)find $(build_dir) -type f -name "*.o" -exec rm -rf {} +
>> + $(if $(V), @echo " RM $(build_dir)/*.o (carray)")
>> + $(CMD_PREFIX)find $(src_dir) -type f -name "*.carray" -exec
>> $(src_dir)/scripts/rm_carray.sh $(src_dir) $(platform_build_dir) {} +
>> + $(CMD_PREFIX)find $(platform_src_dir) -type f -name "*.carray" -exec
>> $(src_dir)/scripts/rm_carray.sh $(platform_src_dir) $(platform_build_dir)
>
> The script could have the find embedded in it, allowing it to be run
> standalone.
>
> Thanks,
> drew
At this point should we just get the patch for "scripts/carray.sh: Add
comment to generated files" merged and debate the best way to deal with
the cleaning?
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/3] Makefile: clean auto-generated *.c files properly
2024-04-29 8:52 ` Andrew Jones
2024-04-29 12:16 ` Ben Dooks
@ 2024-04-29 13:11 ` Ben Dooks
1 sibling, 0 replies; 21+ messages in thread
From: Ben Dooks @ 2024-04-29 13:11 UTC (permalink / raw)
To: opensbi
On 29/04/2024 09:52, Andrew Jones wrote:
> On Fri, Apr 26, 2024 at 05:25:12PM GMT, Ben Dooks wrote:
>> On 23/04/2024 16:41, Ivan Orlov wrote:
>>> On 4/23/24 16:26, Ben Dooks wrote:
>>>> On 23/04/2024 16:20, Ben Dooks wrote:
>>>>> On 23/04/2024 15:58, Ivan Orlov wrote:
>>>>>> On 4/22/24 16:19, Andrew Jones wrote:
>>>>>>> On Mon, Apr 01, 2024 at 10:34:36PM +0100, Ivan Orlov wrote:
>>>>>>>> Currently, `make clean` doesn't remove auto-generated .c files in the
>>>>>>>> `build/` directory. It means that we don't have a reliable way of
>>>>>>>> regenerating these files except from removing the `build/` directory
>>>>>>>> manually.
>>>>>>>>
>>>>>>>> Update the `clean` target in order to remove these files as well.
>>>>>>>>
>>>>>>>> In the discussion of the "[PATCH v2 3/5] Makefile: clean '.c' files
>>>>>>>> generated by carray", Andrew Jones
>>>>>>>> <ajones@ventanamicro.com> suggested
>>>>>>>> placing the auto-generated .c files into the
>>>>>>>> `build/generated/` folder.
>>>>>>>> However, I believe it may not be necessary as in
>>>>>>>> fact all of the files
>>>>>>>> in `build/` are auto-generated.
>>>>>>>
>>>>>>> Since the Makefile enforces that the build dir is not the same as the
>>>>>>> source dir and the only C files we currently generate
>>>>>>> are carray files,
>>>>>>> then OK. I still think it would be nice to be more specific about what
>>>>>>> we clean, though.
>>>>>>>
>>>>>>
>>>>>> Hi Andrew,
>>>>>>
>>>>>> Thank you very much for the review!
>>>>>>
>>>>>> I see a few approaches how we could make the
>>>>>> CArray-generated files cleaning more clear. I believe we
>>>>>> could either put all of the CArray-generated files into a
>>>>>> subdirectory of `build/` (as you suggested) or add a suffix
>>>>>> to a filename of an auto-generated .c file (for instance,
>>>>>> sbi_unit_tests.carray -> sbi_unit_tests_carray.c, and the
>>>>>> pattern for `make clean` would be like "rm -rf
>>>>>> build/*_carray.c").
>>>>>>
>>>>>> The former would probably need significant update of the
>>>>>> Makefile. The latter, on the other hand, seems more flaky...
>>>>>> What do you think of that?
>>>>>
>>>>> I did a quick shell command to find all the object basenames, via:
>>>>>
>>>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' ' -f 2
>>>>> sbi_unit_tests
>>>>> sbi_ecall_exts
>>>>> fdt_irqchip_drivers
>>>>> fdt_timer_drivers
>>>>> fdt_serial_drivers
>>>>> fdt_i2c_adapter_drivers
>>>>> fdt_ipi_drivers
>>>>> fdt_gpio_drivers
>>>>> fdt_regmap_drivers
>>>>> fdt_reset_drivers
>>>>> platform_override_modules
>>>>>
>>>>> so doing:
>>>>>
>>>>> $ find . -type f -name "*.carray" | xargs grep NAME | cut -d ' '
>>>>> -f 2 | sed? 's/$/.o/g'? | xargs -n1 find build -name
>>>>> build/lib/sbi/sbi_ecall_exts.o
>>>>> build/platform/generic/lib/utils/irqchip/fdt_irqchip_drivers.o
>>>>> build/platform/generic/lib/utils/timer/fdt_timer_drivers.o
>>>>> build/platform/generic/lib/utils/serial/fdt_serial_drivers.o
>>>>> build/platform/generic/lib/utils/i2c/fdt_i2c_adapter_drivers.o
>>>>> build/platform/generic/lib/utils/ipi/fdt_ipi_drivers.o
>>>>> build/platform/generic/lib/utils/gpio/fdt_gpio_drivers.o
>>>>> build/platform/generic/lib/utils/regmap/fdt_regmap_drivers.o
>>>>> build/platform/generic/lib/utils/reset/fdt_reset_drivers.o
>>>>> build/platform/generic/platform_override_modules.o
>>>>>
>>>>> finds all the carray build files
>>>>
>>>> of course, i meant? sed -e 's/$/.c/g' to find the .c files not their
>>>> outputs which would have been removed anyway
>>>>
>>>
>>> Sounds like an another solution, thanks! I'm not sure if it should be
>>> done now, though... There is a chance that it could make the Makefile
>>> less readable. But it is definitely more clean than removing the
>>> entirety of build/.c files
>>
>> I made this patch to try and go through all the .carray generated
>> files in build and remove them. I'll submit it if people agree that
>> it is a reasonable idea:
>
> I prefer changing the name of the generated C file to include 'carray'
> and then just using RM *.carray.c
Either Ivan or I will try and get a look at this, not sure how much
will end up getting changed?
>
>>
>> From 7e1f02ebdd168a329a9a393f3a25c74d6b5f837d Mon Sep 17 00:00:00 2001
>> From: Ben Dooks <ben.dooks@codethink.co.uk>
>> Date: Tue, 23 Apr 2024 17:57:42 +0100
>> Subject: [PATCH] make: remove carray generated files via new script
>>
>> Create a script to find the .carray generated files and allow them to
>> be removed during make clean.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
>> ---
>> Makefile | 3 +++
>> scripts/rm_carray.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 51 insertions(+)
>> create mode 100755 scripts/rm_carray.sh
>>
>> diff --git a/Makefile b/Makefile
>> index 7df39b4..7f70934 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -687,6 +687,9 @@ clean:
>> $(CMD_PREFIX)mkdir -p $(build_dir)
>> $(if $(V), @echo " RM $(build_dir)/*.o")
>> $(CMD_PREFIX)find $(build_dir) -type f -name "*.o" -exec rm -rf {} +
>> + $(if $(V), @echo " RM $(build_dir)/*.o (carray)")
>> + $(CMD_PREFIX)find $(src_dir) -type f -name "*.carray" -exec
>> $(src_dir)/scripts/rm_carray.sh $(src_dir) $(platform_build_dir) {} +
>> + $(CMD_PREFIX)find $(platform_src_dir) -type f -name "*.carray" -exec
>> $(src_dir)/scripts/rm_carray.sh $(platform_src_dir) $(platform_build_dir)
>
> The script could have the find embedded in it, allowing it to be run
> standalone.
>
> Thanks,
> drew
>
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 0/3] CArray improvements
2024-04-01 21:34 [PATCH 0/3] CArray improvements Ivan Orlov
` (2 preceding siblings ...)
2024-04-01 21:34 ` [PATCH 3/3] docs: writing tests: update cleaning instructions Ivan Orlov
@ 2024-05-07 6:06 ` Anup Patel
2024-05-10 15:56 ` Ivan Orlov
3 siblings, 1 reply; 21+ messages in thread
From: Anup Patel @ 2024-05-07 6:06 UTC (permalink / raw)
To: opensbi
Hi Ivan,
On Tue, Apr 2, 2024 at 3:04?AM Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
>
> Currently, there are a few inconveniences the developer may face when
> using CArrays, including:
>
> - Unability to regenerate the carray-related .c files reliably without
> removing the `build/` directory
> - Confusion caused by source (.c) files in the `build/` directory (the
> fact that some file was generated by carray.sh is not obvious)
>
> This patch series fixes them.
>
> Ivan Orlov (3):
> Makefile: clean auto-generated *.c files properly
> scripts/carray.sh: Add comment to generated files
> docs: writing tests: update cleaning instructions
I assume you (or someone else) will be sending v2 of this series ?
Regards,
Anup
>
> Makefile | 2 ++
> docs/writing_tests.md | 4 +---
> scripts/carray.sh | 1 +
> 3 files changed, 4 insertions(+), 3 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 0/3] CArray improvements
2024-05-07 6:06 ` [PATCH 0/3] CArray improvements Anup Patel
@ 2024-05-10 15:56 ` Ivan Orlov
0 siblings, 0 replies; 21+ messages in thread
From: Ivan Orlov @ 2024-05-10 15:56 UTC (permalink / raw)
To: opensbi
On 5/7/24 07:06, Anup Patel wrote:
> Hi Ivan,
>
> On Tue, Apr 2, 2024 at 3:04?AM Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
>>
>> Currently, there are a few inconveniences the developer may face when
>> using CArrays, including:
>>
>> - Unability to regenerate the carray-related .c files reliably without
>> removing the `build/` directory
>> - Confusion caused by source (.c) files in the `build/` directory (the
>> fact that some file was generated by carray.sh is not obvious)
>>
>> This patch series fixes them.
>>
>> Ivan Orlov (3):
>> Makefile: clean auto-generated *.c files properly
>> scripts/carray.sh: Add comment to generated files
>> docs: writing tests: update cleaning instructions
>
> I assume you (or someone else) will be sending v2 of this series ?
>
Hi Anup,
Sorry for the late reply. I believe Ben Dooks
<ben.dooks@codethink.co.uk> is going to send the V2 with the updated
carray cleanup :)
Thank you!
--
Kind regards,
Ivan Orlov
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2024-05-10 15:56 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-01 21:34 [PATCH 0/3] CArray improvements Ivan Orlov
2024-04-01 21:34 ` [PATCH 1/3] Makefile: clean auto-generated *.c files properly Ivan Orlov
2024-04-22 15:19 ` Andrew Jones
2024-04-23 14:58 ` Ivan Orlov
2024-04-23 15:15 ` Ben Dooks
2024-04-23 15:18 ` Andrew Jones
2024-04-23 15:20 ` Ben Dooks
2024-04-23 15:24 ` Ben Dooks
2024-04-23 15:26 ` Ben Dooks
2024-04-23 15:41 ` Ivan Orlov
2024-04-26 16:25 ` Ben Dooks
2024-04-29 8:52 ` Andrew Jones
2024-04-29 12:16 ` Ben Dooks
2024-04-29 13:11 ` Ben Dooks
2024-04-01 21:34 ` [PATCH 2/3] scripts/carray.sh: Add comment to generated files Ivan Orlov
2024-04-22 15:21 ` Andrew Jones
2024-04-23 15:25 ` Ben Dooks
2024-04-01 21:34 ` [PATCH 3/3] docs: writing tests: update cleaning instructions Ivan Orlov
2024-04-22 15:22 ` Andrew Jones
2024-05-07 6:06 ` [PATCH 0/3] CArray improvements Anup Patel
2024-05-10 15:56 ` Ivan Orlov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox