Re: [PATCH] selinux: explicitly clean generated av_permissions.h
From: Masahiro Yamada
Date: Wed Nov 20 2024 - 07:16:49 EST
On Wed, Nov 20, 2024 at 6:15 PM Thomas Weißschuh
<thomas.weissschuh@xxxxxxxxxxxxx> wrote:
>
> av_permissions.h is not declared as a target and therefore won't be
> added to clean-files automatically by kbuild.
> For details why it is not a target see the Makefile itself.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
> ---
> security/selinux/Makefile | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/security/selinux/Makefile b/security/selinux/Makefile
> index 86f0575f670da66a9dc57e13a236d6a5551af38e..58129a7c8cfa08f9caf5444f7df776f41056b77a 100644
> --- a/security/selinux/Makefile
> +++ b/security/selinux/Makefile
> @@ -41,5 +41,8 @@ targets += flask.h
> $(obj)/flask.h: $(obj)/genheaders FORCE
> $(call if_changed,genhdrs)
>
> +# see the note above, remove this line
> +clean-files += av_permissions.h
> +
> hostprogs := genheaders
> HOST_EXTRACFLAGS += -I$(srctree)/security/selinux/include
Presumably, the attached fixup.diff (comment in 'targets' assignment)
would align with the intention of the maintainer of this Makefile
because you can do
targets += $(genhdrs)
without the need of the grouped target feature.
'make clean' removes files listed in 'targets'.
BTW, the NOTE in this Makefile is not true.
https://github.com/torvalds/linux/blob/v6.12/security/selinux/Makefile#L7
Even if you use GNU Make 4.3, the grouped target does not work with
the if_changed macro.
With GNU Make 4.4, it will work as a side-effect of commit
fabb03eac412b5ea19f1a97be31dc8c6fa7fc047
I asked about this behavior some time ago in GNU Make ML.
https://lists.gnu.org/archive/html/help-make/2024-08/msg00001.html
or
https://savannah.gnu.org/bugs/index.php?66073
The combination of the grouped target and if_changed
is working with GNU Make 4.4+, but I do not know if
it is future promising.
IMHO, I do not see much benefits for using the group target in this case
because you can still generate flask.h and av_permissions.h
separately.
>
> ---
> base-commit: bf9aa14fc523d2763fc9a10672a709224e8fcaf4
> change-id: 20241120-selinux-clean-dfcd0e7a344b
>
> Best regards,
> --
> Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>
>
--
Best Regards
Masahiro Yamada
diff --git a/security/selinux/Makefile b/security/selinux/Makefile
index 86f0575f670d..bedef0373ef9 100644
--- a/security/selinux/Makefile
+++ b/security/selinux/Makefile
@@ -33,11 +33,10 @@ $(addprefix $(obj)/,$(selinux-y)): $(obj)/flask.h
quiet_cmd_genhdrs = GEN $(addprefix $(obj)/,$(genhdrs))
cmd_genhdrs = $< $(addprefix $(obj)/,$(genhdrs))
-# see the note above, replace the $targets and 'flask.h' rule with the lines
+targets += $(genhdrs)
+# see the note above, replace the 'flask.h' rule with the lines
# below:
-# targets += $(genhdrs)
# $(addprefix $(obj)/,$(genhdrs)) &: $(obj)/genheaders FORCE
-targets += flask.h
$(obj)/flask.h: $(obj)/genheaders FORCE
$(call if_changed,genhdrs)