image-account-extenstion: rebuild on varflag changes

Message ID 20240417071515.3582973-1-benedikt.niedermayr@siemens.com
State Superseded, archived
Headers show
Series image-account-extenstion: rebuild on varflag changes | expand

Commit Message

Benedikt Niedermayr April 17, 2024, 7:15 a.m. UTC
From: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>

When adding items (e.g. foo) to the USER or GROUP variables, the
buildsystem automatically creates new variables (USER_foo).
One can then set these variables, or more precise, the variable
flags (e.g. USER_foo[password]) to control differents aspects
of the user creation.
Isar does not trigger a rebuild when applying changes to these
variable flags since they are not recognized by the
tasks signature generation.

Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
---
 meta/classes/image-account-extension.bbclass | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Benedikt Niedermayr April 17, 2024, 8:01 a.m. UTC | #1
On Wed, 2024-04-17 at 09:15 +0200, 'B. Niedermayr' via isar-users wrote:
> From: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> 
> When adding items (e.g. foo) to the USER or GROUP variables, the
> buildsystem automatically creates new variables (USER_foo).
> One can then set these variables, or more precise, the variable
> flags (e.g. USER_foo[password]) to control differents aspects
> of the user creation.
> Isar does not trigger a rebuild when applying changes to these
> variable flags since they are not recognized by the
> tasks signature generation.
> 
> Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> ---
>  meta/classes/image-account-extension.bbclass | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/image-account-extension.bbclass b/meta/classes/image-account-
> extension.bbclass
> index 3d4e1d1dd175..7cfd5a6b9de5 100644
> --- a/meta/classes/image-account-extension.bbclass
> +++ b/meta/classes/image-account-extension.bbclass
> @@ -8,6 +8,16 @@
>  USERS ??= ""
>  GROUPS ??= ""
>  
> +python() {
> +    for entry in (d.getVar("GROUPS") or "").split():
> +        group_entry = "GROUP_{}".format(entry)
> +        d.appendVarFlag("image_postprocess_accounts", "vardeps", " {}".format(group_entry))
> +
> +    for entry in (d.getVar("USERS") or "").split():
> +        user_entry = "USER_{}".format(entry)
> +        d.appendVarFlag("image_postprocess_accounts", "vardeps", " {}".format(user_entry))
> +}
> +
>  def image_create_groups(d: "DataSmart") -> None:
>      """Creates the groups defined in the ``GROUPS`` bitbake variable.
>  
> @@ -134,7 +144,7 @@ python image_postprocess_accounts() {
>      import os
>      if d.getVar("SOURCE_DATE_EPOCH") != None:
>          os.environ["SOURCE_DATE_EPOCH"] = d.getVar("SOURCE_DATE_EPOCH")
> - 
> +
>      image_create_groups(d)
>      image_create_users(d)
>  }
> -- 
> 2.34.1
> 
Sorry for tripple posting!
Mails got stuck in the smpt server...


regards,
Benedikt
Baurzhan Ismagulov April 17, 2024, 8:30 a.m. UTC | #2
On 2024-04-17 08:01, 'Niedermayr, BENEDIKT' via isar-users wrote:
> Sorry for tripple posting!
> Mails got stuck in the smpt server...

No problem. We moderate mails from new addresses to keep the list open (no
subscription required) and avoid spam.

With kind regards,
Baurzhan
MOESSBAUER, Felix April 17, 2024, 9:27 p.m. UTC | #3
On Wed, 2024-04-17 at 09:15 +0200, 'B. Niedermayr' via isar-users
wrote:
> From: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> 
> When adding items (e.g. foo) to the USER or GROUP variables, the
> buildsystem automatically creates new variables (USER_foo).
> One can then set these variables, or more precise, the variable
> flags (e.g. USER_foo[password]) to control differents aspects
> of the user creation.
> Isar does not trigger a rebuild when applying changes to these
> variable flags since they are not recognized by the
> tasks signature generation.
> 
> Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> ---
>  meta/classes/image-account-extension.bbclass | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/image-account-extension.bbclass
> b/meta/classes/image-account-extension.bbclass
> index 3d4e1d1dd175..7cfd5a6b9de5 100644
> --- a/meta/classes/image-account-extension.bbclass
> +++ b/meta/classes/image-account-extension.bbclass
> @@ -8,6 +8,16 @@
>  USERS ??= ""
>  GROUPS ??= ""
>  
> +python() {
> +    for entry in (d.getVar("GROUPS") or "").split():
> +        group_entry = "GROUP_{}".format(entry)
> +        d.appendVarFlag("image_postprocess_accounts", "vardeps", "
> {}".format(group_entry))
> +
> +    for entry in (d.getVar("USERS") or "").split():
> +        user_entry = "USER_{}".format(entry)
> +        d.appendVarFlag("image_postprocess_accounts", "vardeps", "
> {}".format(user_entry))
> +}
> +
>  def image_create_groups(d: "DataSmart") -> None:
>      """Creates the groups defined in the ``GROUPS`` bitbake
> variable.
>  

Hi Benedikt,

while fixing this please also add a dependency to the USERS, GROUPS and
SDE variable as well. It looks like all that was missed in the initial
implementation.

Best regards,
Felix

> @@ -134,7 +144,7 @@ python image_postprocess_accounts() {
>      import os
>      if d.getVar("SOURCE_DATE_EPOCH") != None:
>          os.environ["SOURCE_DATE_EPOCH"] =
> d.getVar("SOURCE_DATE_EPOCH")
> - 
> +
>      image_create_groups(d)
>      image_create_users(d)
>  }
> -- 
> 2.34.1
>
Benedikt Niedermayr April 18, 2024, 7:13 a.m. UTC | #4
On Wed, 2024-04-17 at 21:27 +0000, Moessbauer, Felix (T CED OES-DE) wrote:
> On Wed, 2024-04-17 at 09:15 +0200, 'B. Niedermayr' via isar-users
> wrote:
> > From: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> > 
> > When adding items (e.g. foo) to the USER or GROUP variables, the
> > buildsystem automatically creates new variables (USER_foo).
> > One can then set these variables, or more precise, the variable
> > flags (e.g. USER_foo[password]) to control differents aspects
> > of the user creation.
> > Isar does not trigger a rebuild when applying changes to these
> > variable flags since they are not recognized by the
> > tasks signature generation.
> > 
> > Signed-off-by: Benedikt Niedermayr <benedikt.niedermayr@siemens.com>
> > ---
> >  meta/classes/image-account-extension.bbclass | 12 +++++++++++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> > 
> > diff --git a/meta/classes/image-account-extension.bbclass
> > b/meta/classes/image-account-extension.bbclass
> > index 3d4e1d1dd175..7cfd5a6b9de5 100644
> > --- a/meta/classes/image-account-extension.bbclass
> > +++ b/meta/classes/image-account-extension.bbclass
> > @@ -8,6 +8,16 @@
> >  USERS ??= ""
> >  GROUPS ??= ""
> >  
> > +python() {
> > +    for entry in (d.getVar("GROUPS") or "").split():
> > +        group_entry = "GROUP_{}".format(entry)
> > +        d.appendVarFlag("image_postprocess_accounts", "vardeps", "
> > {}".format(group_entry))
> > +
> > +    for entry in (d.getVar("USERS") or "").split():
> > +        user_entry = "USER_{}".format(entry)
> > +        d.appendVarFlag("image_postprocess_accounts", "vardeps", "
> > {}".format(user_entry))
> > +}
> > +
> >  def image_create_groups(d: "DataSmart") -> None:
> >      """Creates the groups defined in the ``GROUPS`` bitbake
> > variable.
> >  
> 
> Hi Benedikt,
> 
> while fixing this please also add a dependency to the USERS, GROUPS and
> SDE variable as well. It looks like all that was missed in the initial
> implementation.
> 
> Best regards,
> Felix
> 
> > @@ -134,7 +144,7 @@ python image_postprocess_accounts() {
> >      import os
> >      if d.getVar("SOURCE_DATE_EPOCH") != None:
> >          os.environ["SOURCE_DATE_EPOCH"] =
> > d.getVar("SOURCE_DATE_EPOCH")
> > - 
> > +
> >      image_create_groups(d)
> >      image_create_users(d)
> >  }
> > -- 
> > 2.34.1
> > 
> 
> -- 
> Siemens AG, Technology
> Linux Expert Center
> 
> 
Hi Felix,

yes makes sense. Thanks for the input. I'll send a v2.


Regards,
Benedikt

Patch

diff --git a/meta/classes/image-account-extension.bbclass b/meta/classes/image-account-extension.bbclass
index 3d4e1d1dd175..7cfd5a6b9de5 100644
--- a/meta/classes/image-account-extension.bbclass
+++ b/meta/classes/image-account-extension.bbclass
@@ -8,6 +8,16 @@ 
 USERS ??= ""
 GROUPS ??= ""
 
+python() {
+    for entry in (d.getVar("GROUPS") or "").split():
+        group_entry = "GROUP_{}".format(entry)
+        d.appendVarFlag("image_postprocess_accounts", "vardeps", " {}".format(group_entry))
+
+    for entry in (d.getVar("USERS") or "").split():
+        user_entry = "USER_{}".format(entry)
+        d.appendVarFlag("image_postprocess_accounts", "vardeps", " {}".format(user_entry))
+}
+
 def image_create_groups(d: "DataSmart") -> None:
     """Creates the groups defined in the ``GROUPS`` bitbake variable.
 
@@ -134,7 +144,7 @@  python image_postprocess_accounts() {
     import os
     if d.getVar("SOURCE_DATE_EPOCH") != None:
         os.environ["SOURCE_DATE_EPOCH"] = d.getVar("SOURCE_DATE_EPOCH")
- 
+
     image_create_groups(d)
     image_create_users(d)
 }