diff mbox series

[meta-arago,master/kirkstone] arago.conf: make things more readable and fix the virtuals

Message ID 20230606191019.702649-1-rs@ti.com
State Superseded
Delegated to: Ryan Eatmon
Headers show
Series [meta-arago,master/kirkstone] arago.conf: make things more readable and fix the virtuals | expand

Commit Message

Randolph Sapp June 6, 2023, 7:10 p.m. UTC
From: Randolph Sapp <rs@ti.com>

Make things more readable and reliable by useing the built in boolean
check instead of python's type casting. Drop the array indexing in favor
of a more direct if else statememnt.

Also fix the virtual provider for login manager. There should only be 1
login provider and it should be shadow-base for systemd *or* busybox for
sysVinit systemd.

Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
isn't set, because whatever arago inherits expects sysvinit for some
reason. This should fix the duplicate init.d and systemd service files
we've been seeing.

Signed-off-by: Randolph Sapp <rs@ti.com>
---
 meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Comments

Andrew Davis June 6, 2023, 9:15 p.m. UTC | #1
On 6/6/23 2:10 PM, rs@ti.com wrote:
> From: Randolph Sapp <rs@ti.com>
> 
> Make things more readable and reliable by useing the built in boolean
> check instead of python's type casting. Drop the array indexing in favor
> of a more direct if else statememnt.
> 
> Also fix the virtual provider for login manager. There should only be 1
> login provider and it should be shadow-base for systemd *or* busybox for
> sysVinit systemd.
> 
> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
> isn't set, because whatever arago inherits expects sysvinit for some
> reason. This should fix the duplicate init.d and systemd service files
> we've been seeing.
> 

Probably could have been two patches.. both look like good fixes though,

Reviewed-by: Andrew Davis <afd@ti.com>

> Signed-off-by: Randolph Sapp <rs@ti.com>
> ---
>   meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>   1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
> index 9164657c..6390a916 100644
> --- a/meta-arago-distro/conf/distro/arago.conf
> +++ b/meta-arago-distro/conf/distro/arago.conf
> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " opencl opencv openmp"
>   
>   # Set global runtime providers for major components
>   ARAGO_SYSVINIT ?= "0"
> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
> -
> -DISTRO_FEATURES:append = "${@[""," systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-compat-units'}"
> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
> +
> +DISTRO_FEATURES:append = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
> +DISTRO_FEATURES:remove = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>   
>   # Distro-specific package configuration
>   PACKAGECONFIG:append:pn-systemd = " coredump"
Denys Dmytriyenko June 6, 2023, 10:15 p.m. UTC | #2
On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
> From: Randolph Sapp <rs@ti.com>
> 
> Make things more readable and reliable by useing the built in boolean
> check instead of python's type casting. Drop the array indexing in favor
> of a more direct if else statememnt.

Heh, it's just a matter of personal preference :) Array indexing conditionals 
is how OE used to do things from the early days and I'm well used to that. But 
these days using Python if/else directly gained lots of traction, so why not?


> Also fix the virtual provider for login manager. There should only be 1
> login provider and it should be shadow-base for systemd *or* busybox for
> sysVinit systemd.
> 
> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
> isn't set, because whatever arago inherits expects sysvinit for some
> reason. This should fix the duplicate init.d and systemd service files
> we've been seeing.

How much testing have you done with this change?

The reason it was done this way is because many packages only provided 
sysvinit rc scripts and not systemd unit files and we were relying on 
systemd-sysv-generator to handle those, which has dependency on "sysvinit" 
PACKAGECONFIG and DISTRO_FEATURES. There were fixes to handle duplications 
when both sysvinit rc script and systemd unit file are provided by a package 
and install only one of them. It was better than not having any startup script 
for a package at all.


> Signed-off-by: Randolph Sapp <rs@ti.com>
> ---
>  meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
> index 9164657c..6390a916 100644
> --- a/meta-arago-distro/conf/distro/arago.conf
> +++ b/meta-arago-distro/conf/distro/arago.conf
> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " opencl opencv openmp"
>  
>  # Set global runtime providers for major components
>  ARAGO_SYSVINIT ?= "0"
> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
> -
> -DISTRO_FEATURES:append = "${@[""," systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-compat-units'}"
> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
> +
> +DISTRO_FEATURES:append = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
> +DISTRO_FEATURES:remove = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>  
>  # Distro-specific package configuration
>  PACKAGECONFIG:append:pn-systemd = " coredump"
> -- 
> 2.40.1
Randolph Sapp June 6, 2023, 11:15 p.m. UTC | #3
On 6/6/23 17:15, Denys Dmytriyenko wrote:
> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>> From: Randolph Sapp <rs@ti.com>
>>
>> Make things more readable and reliable by useing the built in boolean
>> check instead of python's type casting. Drop the array indexing in favor
>> of a more direct if else statememnt.
> 
> Heh, it's just a matter of personal preference :) Array indexing conditionals
> is how OE used to do things from the early days and I'm well used to that. But
> these days using Python if/else directly gained lots of traction, so why not?
> 
> 
>> Also fix the virtual provider for login manager. There should only be 1
>> login provider and it should be shadow-base for systemd *or* busybox for
>> sysVinit systemd.
>>
>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>> isn't set, because whatever arago inherits expects sysvinit for some
>> reason. This should fix the duplicate init.d and systemd service files
>> we've been seeing.
> 
> How much testing have you done with this change?
> 
> The reason it was done this way is because many packages only provided
> sysvinit rc scripts and not systemd unit files and we were relying on
> systemd-sysv-generator to handle those, which has dependency on "sysvinit"
> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to handle duplications
> when both sysvinit rc script and systemd unit file are provided by a package
> and install only one of them. It was better than not having any startup script
> for a package at all.
> 

Everything in the layers below us provides both from everything I've 
seen. The only incompliant layers are meta-arago and maybe something in 
meta-ti still expecting sysVinit scripts.

If you set both sysVinit and systemd as a distro feature it actually 
*confuses* core packages and they end up shipping both, which clash. 
Systemd typically just resolves this by forcing everything with a 
sysvinit script into the sysvinit compatibility stage leading to 
increased boot time because that's all still serialized.

> 
>> Signed-off-by: Randolph Sapp <rs@ti.com>
>> ---
>>   meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>>   1 file changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
>> index 9164657c..6390a916 100644
>> --- a/meta-arago-distro/conf/distro/arago.conf
>> +++ b/meta-arago-distro/conf/distro/arago.conf
>> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " opencl opencv openmp"
>>   
>>   # Set global runtime providers for major components
>>   ARAGO_SYSVINIT ?= "0"
>> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
>> -
>> -DISTRO_FEATURES:append = "${@[""," systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-compat-units'}"
>> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
>> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
>> +
>> +DISTRO_FEATURES:append = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
>> +DISTRO_FEATURES:remove = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>>   
>>   # Distro-specific package configuration
>>   PACKAGECONFIG:append:pn-systemd = " coredump"
>> -- 
>> 2.40.1
Randolph Sapp June 6, 2023, 11:18 p.m. UTC | #4
On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>> From: Randolph Sapp <rs@ti.com>
>>>
>>> Make things more readable and reliable by useing the built in boolean
>>> check instead of python's type casting. Drop the array indexing in favor
>>> of a more direct if else statememnt.
>>
>> Heh, it's just a matter of personal preference :) Array indexing 
>> conditionals
>> is how OE used to do things from the early days and I'm well used to 
>> that. But
>> these days using Python if/else directly gained lots of traction, so 
>> why not?
>>
>>
>>> Also fix the virtual provider for login manager. There should only be 1
>>> login provider and it should be shadow-base for systemd *or* busybox for
>>> sysVinit systemd.
>>>
>>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>>> isn't set, because whatever arago inherits expects sysvinit for some
>>> reason. This should fix the duplicate init.d and systemd service files
>>> we've been seeing.
>>
>> How much testing have you done with this change?
>>
>> The reason it was done this way is because many packages only provided
>> sysvinit rc scripts and not systemd unit files and we were relying on
>> systemd-sysv-generator to handle those, which has dependency on 
>> "sysvinit"
>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to handle 
>> duplications
>> when both sysvinit rc script and systemd unit file are provided by a 
>> package
>> and install only one of them. It was better than not having any 
>> startup script
>> for a package at all.
>>
> 
> Everything in the layers below us provides both from everything I've 
> seen. The only incompliant layers are meta-arago and maybe something in 
> meta-ti still expecting sysVinit scripts.
> 
> If you set both sysVinit and systemd as a distro feature it actually 
> *confuses* core packages and they end up shipping both, which clash. 
> Systemd typically just resolves this by forcing everything with a 
> sysvinit script into the sysvinit compatibility stage leading to 
> increased boot time because that's all still serialized.
> 

If there are any packages still not compliant that you can find, tell me 
and I will fix them myself. Seeing mix-matched sysVinit and systemd 
scripts in the same target makes me irrationally angry.

>>
>>> Signed-off-by: Randolph Sapp <rs@ti.com>
>>> ---
>>>   meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>>>   1 file changed, 8 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/meta-arago-distro/conf/distro/arago.conf 
>>> b/meta-arago-distro/conf/distro/arago.conf
>>> index 9164657c..6390a916 100644
>>> --- a/meta-arago-distro/conf/distro/arago.conf
>>> +++ b/meta-arago-distro/conf/distro/arago.conf
>>> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " 
>>> opencl opencv openmp"
>>>   # Set global runtime providers for major components
>>>   ARAGO_SYSVINIT ?= "0"
>>> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", 
>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", 
>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", 
>>> "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", 
>>> "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
>>> -
>>> -DISTRO_FEATURES:append = "${@[""," 
>>> systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 
>>> 'systemd-compat-units'}"
>>> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
>>> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
>>> +
>>> +DISTRO_FEATURES:append = "${@ '' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
>>> +DISTRO_FEATURES:remove = "${@ '' if 
>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>>>   # Distro-specific package configuration
>>>   PACKAGECONFIG:append:pn-systemd = " coredump"
>>> -- 
>>> 2.40.1
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#14510): 
> https://lists.yoctoproject.org/g/meta-arago/message/14510
> Mute This Topic: https://lists.yoctoproject.org/mt/99370291/7094281
> Group Owner: meta-arago+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub [rs@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
>
Ryan Eatmon June 9, 2023, 6:32 p.m. UTC | #5
On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>> From: Randolph Sapp <rs@ti.com>
>>>>
>>>> Make things more readable and reliable by useing the built in boolean
>>>> check instead of python's type casting. Drop the array indexing in 
>>>> favor
>>>> of a more direct if else statememnt.
>>>
>>> Heh, it's just a matter of personal preference :) Array indexing 
>>> conditionals
>>> is how OE used to do things from the early days and I'm well used to 
>>> that. But
>>> these days using Python if/else directly gained lots of traction, so 
>>> why not?
>>>
>>>
>>>> Also fix the virtual provider for login manager. There should only be 1
>>>> login provider and it should be shadow-base for systemd *or* busybox 
>>>> for
>>>> sysVinit systemd.
>>>>
>>>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>>>> isn't set, because whatever arago inherits expects sysvinit for some
>>>> reason. This should fix the duplicate init.d and systemd service files
>>>> we've been seeing.
>>>
>>> How much testing have you done with this change?
>>>
>>> The reason it was done this way is because many packages only provided
>>> sysvinit rc scripts and not systemd unit files and we were relying on
>>> systemd-sysv-generator to handle those, which has dependency on 
>>> "sysvinit"
>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to handle 
>>> duplications
>>> when both sysvinit rc script and systemd unit file are provided by a 
>>> package
>>> and install only one of them. It was better than not having any 
>>> startup script
>>> for a package at all.
>>>
>>
>> Everything in the layers below us provides both from everything I've 
>> seen. The only incompliant layers are meta-arago and maybe something 
>> in meta-ti still expecting sysVinit scripts.
>>
>> If you set both sysVinit and systemd as a distro feature it actually 
>> *confuses* core packages and they end up shipping both, which clash. 
>> Systemd typically just resolves this by forcing everything with a 
>> sysvinit script into the sysvinit compatibility stage leading to 
>> increased boot time because that's all still serialized.
>>
> 
> If there are any packages still not compliant that you can find, tell me 
> and I will fix them myself. Seeing mix-matched sysVinit and systemd 
> scripts in the same target makes me irrationally angry.

Uh oh...  This patch causes tisdk-tiny-image.bb and 
tisdk-bootstrap-image.bb to fail:

ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'

I think, if I remember correctly, sysvinit was chosen because of a 
requirement on the size of the image.  systemd made the rootfs too big 
to fit within the constraints.

Nishanth might have more details if you want to debate it.  But there is 
an internal Confluence page that lists all of the Ease of Use 
requirement JIRAs.

No one is opposed to moving away from sysvinit, but we need to make sure 
that we are meeting that requirement.


>>>
>>>> Signed-off-by: Randolph Sapp <rs@ti.com>
>>>> ---
>>>>   meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>>>>   1 file changed, 8 insertions(+), 7 deletions(-)
>>>>
>>>> diff --git a/meta-arago-distro/conf/distro/arago.conf 
>>>> b/meta-arago-distro/conf/distro/arago.conf
>>>> index 9164657c..6390a916 100644
>>>> --- a/meta-arago-distro/conf/distro/arago.conf
>>>> +++ b/meta-arago-distro/conf/distro/arago.conf
>>>> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " 
>>>> opencl opencv openmp"
>>>>   # Set global runtime providers for major components
>>>>   ARAGO_SYSVINIT ?= "0"
>>>> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", 
>>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", 
>>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", 
>>>> "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", 
>>>> "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
>>>> -
>>>> -DISTRO_FEATURES:append = "${@[""," 
>>>> systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>>> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>>> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 
>>>> 'systemd-compat-units'}"
>>>> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
>>>> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
>>>> +
>>>> +DISTRO_FEATURES:append = "${@ '' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
>>>> +DISTRO_FEATURES:remove = "${@ '' if 
>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>>>>   # Distro-specific package configuration
>>>>   PACKAGECONFIG:append:pn-systemd = " coredump"
>>>> -- 
>>>> 2.40.1
>>
>>
>>
>>
>>
>>
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#14511): 
> https://lists.yoctoproject.org/g/meta-arago/message/14511
> Mute This Topic: https://lists.yoctoproject.org/mt/99370291/6551054
> Group Owner: meta-arago+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub 
> [reatmon@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
>
Randolph Sapp June 9, 2023, 7:13 p.m. UTC | #6
On 6/9/23 13:32, Ryan Eatmon wrote:
> 
> 
> On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
>> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>>> From: Randolph Sapp <rs@ti.com>
>>>>>
>>>>> Make things more readable and reliable by useing the built in boolean
>>>>> check instead of python's type casting. Drop the array indexing in 
>>>>> favor
>>>>> of a more direct if else statememnt.
>>>>
>>>> Heh, it's just a matter of personal preference :) Array indexing 
>>>> conditionals
>>>> is how OE used to do things from the early days and I'm well used to 
>>>> that. But
>>>> these days using Python if/else directly gained lots of traction, so 
>>>> why not?
>>>>
>>>>
>>>>> Also fix the virtual provider for login manager. There should only 
>>>>> be 1
>>>>> login provider and it should be shadow-base for systemd *or* 
>>>>> busybox for
>>>>> sysVinit systemd.
>>>>>
>>>>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>>>>> isn't set, because whatever arago inherits expects sysvinit for some
>>>>> reason. This should fix the duplicate init.d and systemd service files
>>>>> we've been seeing.
>>>>
>>>> How much testing have you done with this change?
>>>>
>>>> The reason it was done this way is because many packages only provided
>>>> sysvinit rc scripts and not systemd unit files and we were relying on
>>>> systemd-sysv-generator to handle those, which has dependency on 
>>>> "sysvinit"
>>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to handle 
>>>> duplications
>>>> when both sysvinit rc script and systemd unit file are provided by a 
>>>> package
>>>> and install only one of them. It was better than not having any 
>>>> startup script
>>>> for a package at all.
>>>>
>>>
>>> Everything in the layers below us provides both from everything I've 
>>> seen. The only incompliant layers are meta-arago and maybe something 
>>> in meta-ti still expecting sysVinit scripts.
>>>
>>> If you set both sysVinit and systemd as a distro feature it actually 
>>> *confuses* core packages and they end up shipping both, which clash. 
>>> Systemd typically just resolves this by forcing everything with a 
>>> sysvinit script into the sysvinit compatibility stage leading to 
>>> increased boot time because that's all still serialized.
>>>
>>
>> If there are any packages still not compliant that you can find, tell 
>> me and I will fix them myself. Seeing mix-matched sysVinit and systemd 
>> scripts in the same target makes me irrationally angry.
> 
> Uh oh...  This patch causes tisdk-tiny-image.bb and 
> tisdk-bootstrap-image.bb to fail:
> 
> ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
> 
> I think, if I remember correctly, sysvinit was chosen because of a 
> requirement on the size of the image.  systemd made the rootfs too big 
> to fit within the constraints.
> 
> Nishanth might have more details if you want to debate it.  But there is 
> an internal Confluence page that lists all of the Ease of Use 
> requirement JIRAs.
> 
> No one is opposed to moving away from sysvinit, but we need to make sure 
> that we are meeting that requirement.
> 

That's fair. I assumed our sysvinit build images were setting the 
ARAGO_SYSVINIT variable as part of their base config (or at least 
something similar). Got a proposal I need to submit about this anyway.

> 
>>>>
>>>>> Signed-off-by: Randolph Sapp <rs@ti.com>
>>>>> ---
>>>>>   meta-arago-distro/conf/distro/arago.conf | 15 ++++++++-------
>>>>>   1 file changed, 8 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/meta-arago-distro/conf/distro/arago.conf 
>>>>> b/meta-arago-distro/conf/distro/arago.conf
>>>>> index 9164657c..6390a916 100644
>>>>> --- a/meta-arago-distro/conf/distro/arago.conf
>>>>> +++ b/meta-arago-distro/conf/distro/arago.conf
>>>>> @@ -59,13 +59,14 @@ DISTRO_FEATURES_FILTER_NATIVESDK:append = " 
>>>>> opencl opencv openmp"
>>>>>   # Set global runtime providers for major components
>>>>>   ARAGO_SYSVINIT ?= "0"
>>>>> -VIRTUAL-RUNTIME_dev_manager = "${@["udev", 
>>>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>>> -VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", 
>>>>> "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>>> -VIRTUAL-RUNTIME_initscripts = "${@["initscripts", 
>>>>> "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>>> -VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", 
>>>>> "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>>> -VIRTUAL-RUNTIME_login_manager = "busybox shadow"
>>>>> -
>>>>> -DISTRO_FEATURES:append = "${@[""," 
>>>>> systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
>>>>> +VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>>>> +VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
>>>>> +VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 
>>>>> 'systemd-compat-units'}"
>>>>> +VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 
>>>>> 'systemd-initramfs'}"
>>>>> +VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
>>>>> +
>>>>> +DISTRO_FEATURES:append = "${@ '' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
>>>>> +DISTRO_FEATURES:remove = "${@ '' if 
>>>>> oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
>>>>>   # Distro-specific package configuration
>>>>>   PACKAGECONFIG:append:pn-systemd = " coredump"
>>>>> -- 
>>>>> 2.40.1
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#14511): 
>> https://lists.yoctoproject.org/g/meta-arago/message/14511
>> Mute This Topic: https://lists.yoctoproject.org/mt/99370291/6551054
>> Group Owner: meta-arago+owner@lists.yoctoproject.org
>> Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub 
>> [reatmon@ti.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>>
>
Denys Dmytriyenko June 9, 2023, 8:39 p.m. UTC | #7
On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via lists.yoctoproject.org wrote:
> On 6/9/23 13:32, Ryan Eatmon wrote:
> >
> >
> >On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
> >>On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>On 6/6/23 17:15, Denys Dmytriyenko wrote:
> >>>>On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
> >>>>>From: Randolph Sapp <rs@ti.com>
> >>>>>
> >>>>>Make things more readable and reliable by useing the built in boolean
> >>>>>check instead of python's type casting. Drop the array
> >>>>>indexing in favor
> >>>>>of a more direct if else statememnt.
> >>>>
> >>>>Heh, it's just a matter of personal preference :) Array
> >>>>indexing conditionals
> >>>>is how OE used to do things from the early days and I'm well
> >>>>used to that. But
> >>>>these days using Python if/else directly gained lots of
> >>>>traction, so why not?
> >>>>
> >>>>
> >>>>>Also fix the virtual provider for login manager. There
> >>>>>should only be 1
> >>>>>login provider and it should be shadow-base for systemd
> >>>>>*or* busybox for
> >>>>>sysVinit systemd.
> >>>>>
> >>>>>Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
> >>>>>isn't set, because whatever arago inherits expects sysvinit for some
> >>>>>reason. This should fix the duplicate init.d and systemd service files
> >>>>>we've been seeing.
> >>>>
> >>>>How much testing have you done with this change?
> >>>>
> >>>>The reason it was done this way is because many packages only provided
> >>>>sysvinit rc scripts and not systemd unit files and we were relying on
> >>>>systemd-sysv-generator to handle those, which has dependency
> >>>>on "sysvinit"
> >>>>PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
> >>>>handle duplications
> >>>>when both sysvinit rc script and systemd unit file are
> >>>>provided by a package
> >>>>and install only one of them. It was better than not having
> >>>>any startup script
> >>>>for a package at all.
> >>>>
> >>>
> >>>Everything in the layers below us provides both from
> >>>everything I've seen. The only incompliant layers are
> >>>meta-arago and maybe something in meta-ti still expecting
> >>>sysVinit scripts.
> >>>
> >>>If you set both sysVinit and systemd as a distro feature it
> >>>actually *confuses* core packages and they end up shipping
> >>>both, which clash. Systemd typically just resolves this by
> >>>forcing everything with a sysvinit script into the sysvinit
> >>>compatibility stage leading to increased boot time because
> >>>that's all still serialized.
> >>>
> >>
> >>If there are any packages still not compliant that you can find,
> >>tell me and I will fix them myself. Seeing mix-matched sysVinit
> >>and systemd scripts in the same target makes me irrationally
> >>angry.
> >
> >Uh oh...  This patch causes tisdk-tiny-image.bb and
> >tisdk-bootstrap-image.bb to fail:
> >
> >ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
> >
> >I think, if I remember correctly, sysvinit was chosen because of a
> >requirement on the size of the image.  systemd made the rootfs too
> >big to fit within the constraints.

Ah, indeed, that was another reason systemd and sysvinit had to be both 
enabled in the DISTRO_FEATURES...


> >Nishanth might have more details if you want to debate it.  But
> >there is an internal Confluence page that lists all of the Ease of
> >Use requirement JIRAs.
> >
> >No one is opposed to moving away from sysvinit, but we need to
> >make sure that we are meeting that requirement.
> >
> 
> That's fair. I assumed our sysvinit build images were setting the
> ARAGO_SYSVINIT variable as part of their base config (or at least
> something similar).

ARAGO_SYSVINIT flag controls init selection for the main images (default, 
base, thinlinux...), but tiny and bootstrap images ignore it and directly 
pull in SysVinit regardless of the selection.


> Got a proposal I need to submit about this anyway.
Andrew Davis June 12, 2023, 3:24 p.m. UTC | #8
On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
> On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via lists.yoctoproject.org wrote:
>> On 6/9/23 13:32, Ryan Eatmon wrote:
>>>
>>>
>>> On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
>>>> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>>>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>>>>> From: Randolph Sapp <rs@ti.com>
>>>>>>>
>>>>>>> Make things more readable and reliable by useing the built in boolean
>>>>>>> check instead of python's type casting. Drop the array
>>>>>>> indexing in favor
>>>>>>> of a more direct if else statememnt.
>>>>>>
>>>>>> Heh, it's just a matter of personal preference :) Array
>>>>>> indexing conditionals
>>>>>> is how OE used to do things from the early days and I'm well
>>>>>> used to that. But
>>>>>> these days using Python if/else directly gained lots of
>>>>>> traction, so why not?
>>>>>>
>>>>>>
>>>>>>> Also fix the virtual provider for login manager. There
>>>>>>> should only be 1
>>>>>>> login provider and it should be shadow-base for systemd
>>>>>>> *or* busybox for
>>>>>>> sysVinit systemd.
>>>>>>>
>>>>>>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>>>>>>> isn't set, because whatever arago inherits expects sysvinit for some
>>>>>>> reason. This should fix the duplicate init.d and systemd service files
>>>>>>> we've been seeing.
>>>>>>
>>>>>> How much testing have you done with this change?
>>>>>>
>>>>>> The reason it was done this way is because many packages only provided
>>>>>> sysvinit rc scripts and not systemd unit files and we were relying on
>>>>>> systemd-sysv-generator to handle those, which has dependency
>>>>>> on "sysvinit"
>>>>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
>>>>>> handle duplications
>>>>>> when both sysvinit rc script and systemd unit file are
>>>>>> provided by a package
>>>>>> and install only one of them. It was better than not having
>>>>>> any startup script
>>>>>> for a package at all.
>>>>>>
>>>>>
>>>>> Everything in the layers below us provides both from
>>>>> everything I've seen. The only incompliant layers are
>>>>> meta-arago and maybe something in meta-ti still expecting
>>>>> sysVinit scripts.
>>>>>
>>>>> If you set both sysVinit and systemd as a distro feature it
>>>>> actually *confuses* core packages and they end up shipping
>>>>> both, which clash. Systemd typically just resolves this by
>>>>> forcing everything with a sysvinit script into the sysvinit
>>>>> compatibility stage leading to increased boot time because
>>>>> that's all still serialized.
>>>>>
>>>>
>>>> If there are any packages still not compliant that you can find,
>>>> tell me and I will fix them myself. Seeing mix-matched sysVinit
>>>> and systemd scripts in the same target makes me irrationally
>>>> angry.
>>>
>>> Uh oh...  This patch causes tisdk-tiny-image.bb and
>>> tisdk-bootstrap-image.bb to fail:
>>>
>>> ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
>>>
>>> I think, if I remember correctly, sysvinit was chosen because of a
>>> requirement on the size of the image.  systemd made the rootfs too
>>> big to fit within the constraints.
> 
> Ah, indeed, that was another reason systemd and sysvinit had to be both
> enabled in the DISTRO_FEATURES...
> 
> 
>>> Nishanth might have more details if you want to debate it.  But
>>> there is an internal Confluence page that lists all of the Ease of
>>> Use requirement JIRAs.
>>>
>>> No one is opposed to moving away from sysvinit, but we need to
>>> make sure that we are meeting that requirement.
>>>
>>
>> That's fair. I assumed our sysvinit build images were setting the
>> ARAGO_SYSVINIT variable as part of their base config (or at least
>> something similar).
> 
> ARAGO_SYSVINIT flag controls init selection for the main images (default,
> base, thinlinux...), but tiny and bootstrap images ignore it and directly
> pull in SysVinit regardless of the selection.
> 

Default, base, thinlinux, etc.. are rather large images, not sure what
is gained from SysVinit. And for the super small bring-up images like
bootstrap, we use very little from meta-arago. Would it make more sense
to move those bring-up images out of Arago? Maybe have a small bring-up-
distro layer. Having a distro be both systemd and sysvinit is odd..

Andrew
Denys Dmytriyenko June 12, 2023, 4:16 p.m. UTC | #9
On Mon, Jun 12, 2023 at 10:24:27AM -0500, Andrew Davis via lists.yoctoproject.org wrote:
> On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
> >On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via lists.yoctoproject.org wrote:
> >>On 6/9/23 13:32, Ryan Eatmon wrote:
> >>>
> >>>
> >>>On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>>On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>>>On 6/6/23 17:15, Denys Dmytriyenko wrote:
> >>>>>>On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
> >>>>>>>From: Randolph Sapp <rs@ti.com>
> >>>>>>>
> >>>>>>>Make things more readable and reliable by useing the built in boolean
> >>>>>>>check instead of python's type casting. Drop the array
> >>>>>>>indexing in favor
> >>>>>>>of a more direct if else statememnt.
> >>>>>>
> >>>>>>Heh, it's just a matter of personal preference :) Array
> >>>>>>indexing conditionals
> >>>>>>is how OE used to do things from the early days and I'm well
> >>>>>>used to that. But
> >>>>>>these days using Python if/else directly gained lots of
> >>>>>>traction, so why not?
> >>>>>>
> >>>>>>
> >>>>>>>Also fix the virtual provider for login manager. There
> >>>>>>>should only be 1
> >>>>>>>login provider and it should be shadow-base for systemd
> >>>>>>>*or* busybox for
> >>>>>>>sysVinit systemd.
> >>>>>>>
> >>>>>>>Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
> >>>>>>>isn't set, because whatever arago inherits expects sysvinit for some
> >>>>>>>reason. This should fix the duplicate init.d and systemd service files
> >>>>>>>we've been seeing.
> >>>>>>
> >>>>>>How much testing have you done with this change?
> >>>>>>
> >>>>>>The reason it was done this way is because many packages only provided
> >>>>>>sysvinit rc scripts and not systemd unit files and we were relying on
> >>>>>>systemd-sysv-generator to handle those, which has dependency
> >>>>>>on "sysvinit"
> >>>>>>PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
> >>>>>>handle duplications
> >>>>>>when both sysvinit rc script and systemd unit file are
> >>>>>>provided by a package
> >>>>>>and install only one of them. It was better than not having
> >>>>>>any startup script
> >>>>>>for a package at all.
> >>>>>>
> >>>>>
> >>>>>Everything in the layers below us provides both from
> >>>>>everything I've seen. The only incompliant layers are
> >>>>>meta-arago and maybe something in meta-ti still expecting
> >>>>>sysVinit scripts.
> >>>>>
> >>>>>If you set both sysVinit and systemd as a distro feature it
> >>>>>actually *confuses* core packages and they end up shipping
> >>>>>both, which clash. Systemd typically just resolves this by
> >>>>>forcing everything with a sysvinit script into the sysvinit
> >>>>>compatibility stage leading to increased boot time because
> >>>>>that's all still serialized.
> >>>>>
> >>>>
> >>>>If there are any packages still not compliant that you can find,
> >>>>tell me and I will fix them myself. Seeing mix-matched sysVinit
> >>>>and systemd scripts in the same target makes me irrationally
> >>>>angry.
> >>>
> >>>Uh oh...  This patch causes tisdk-tiny-image.bb and
> >>>tisdk-bootstrap-image.bb to fail:
> >>>
> >>>ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
> >>>
> >>>I think, if I remember correctly, sysvinit was chosen because of a
> >>>requirement on the size of the image.  systemd made the rootfs too
> >>>big to fit within the constraints.
> >
> >Ah, indeed, that was another reason systemd and sysvinit had to be both
> >enabled in the DISTRO_FEATURES...
> >
> >
> >>>Nishanth might have more details if you want to debate it.  But
> >>>there is an internal Confluence page that lists all of the Ease of
> >>>Use requirement JIRAs.
> >>>
> >>>No one is opposed to moving away from sysvinit, but we need to
> >>>make sure that we are meeting that requirement.
> >>>
> >>
> >>That's fair. I assumed our sysvinit build images were setting the
> >>ARAGO_SYSVINIT variable as part of their base config (or at least
> >>something similar).
> >
> >ARAGO_SYSVINIT flag controls init selection for the main images (default,
> >base, thinlinux...), but tiny and bootstrap images ignore it and directly
> >pull in SysVinit regardless of the selection.
> >
> 
> Default, base, thinlinux, etc.. are rather large images, not sure what
> is gained from SysVinit.

What is gained is flexibility. When switching to systemd, some customers still 
wanted to be able to use SysVinit. Not sure if that's still the case though.


> And for the super small bring-up images like
> bootstrap, we use very little from meta-arago. Would it make more sense
> to move those bring-up images out of Arago? Maybe have a small bring-up-
> distro layer. Having a distro be both systemd and sysvinit is odd..

That would require to build those images separately from the rest of the 
images and from bundling everything into a single TI SDK tarball. I.e. a 
multi-step process - build one set of images with one distro, then the 
rest with a different distro, plus package a bundle tarball. And that will 
result in a very poor package re-use between the images and 2 flows, since 
distro-level config changes pretty much invalidate most of shared state...
Andrew Davis June 12, 2023, 4:30 p.m. UTC | #10
On 6/12/23 11:16 AM, Denys Dmytriyenko wrote:
> On Mon, Jun 12, 2023 at 10:24:27AM -0500, Andrew Davis via lists.yoctoproject.org wrote:
>> On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
>>> On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via lists.yoctoproject.org wrote:
>>>> On 6/9/23 13:32, Ryan Eatmon wrote:
>>>>>
>>>>>
>>>>> On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>>>>>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>>>>>>> From: Randolph Sapp <rs@ti.com>
>>>>>>>>>
>>>>>>>>> Make things more readable and reliable by useing the built in boolean
>>>>>>>>> check instead of python's type casting. Drop the array
>>>>>>>>> indexing in favor
>>>>>>>>> of a more direct if else statememnt.
>>>>>>>>
>>>>>>>> Heh, it's just a matter of personal preference :) Array
>>>>>>>> indexing conditionals
>>>>>>>> is how OE used to do things from the early days and I'm well
>>>>>>>> used to that. But
>>>>>>>> these days using Python if/else directly gained lots of
>>>>>>>> traction, so why not?
>>>>>>>>
>>>>>>>>
>>>>>>>>> Also fix the virtual provider for login manager. There
>>>>>>>>> should only be 1
>>>>>>>>> login provider and it should be shadow-base for systemd
>>>>>>>>> *or* busybox for
>>>>>>>>> sysVinit systemd.
>>>>>>>>>
>>>>>>>>> Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
>>>>>>>>> isn't set, because whatever arago inherits expects sysvinit for some
>>>>>>>>> reason. This should fix the duplicate init.d and systemd service files
>>>>>>>>> we've been seeing.
>>>>>>>>
>>>>>>>> How much testing have you done with this change?
>>>>>>>>
>>>>>>>> The reason it was done this way is because many packages only provided
>>>>>>>> sysvinit rc scripts and not systemd unit files and we were relying on
>>>>>>>> systemd-sysv-generator to handle those, which has dependency
>>>>>>>> on "sysvinit"
>>>>>>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
>>>>>>>> handle duplications
>>>>>>>> when both sysvinit rc script and systemd unit file are
>>>>>>>> provided by a package
>>>>>>>> and install only one of them. It was better than not having
>>>>>>>> any startup script
>>>>>>>> for a package at all.
>>>>>>>>
>>>>>>>
>>>>>>> Everything in the layers below us provides both from
>>>>>>> everything I've seen. The only incompliant layers are
>>>>>>> meta-arago and maybe something in meta-ti still expecting
>>>>>>> sysVinit scripts.
>>>>>>>
>>>>>>> If you set both sysVinit and systemd as a distro feature it
>>>>>>> actually *confuses* core packages and they end up shipping
>>>>>>> both, which clash. Systemd typically just resolves this by
>>>>>>> forcing everything with a sysvinit script into the sysvinit
>>>>>>> compatibility stage leading to increased boot time because
>>>>>>> that's all still serialized.
>>>>>>>
>>>>>>
>>>>>> If there are any packages still not compliant that you can find,
>>>>>> tell me and I will fix them myself. Seeing mix-matched sysVinit
>>>>>> and systemd scripts in the same target makes me irrationally
>>>>>> angry.
>>>>>
>>>>> Uh oh...  This patch causes tisdk-tiny-image.bb and
>>>>> tisdk-bootstrap-image.bb to fail:
>>>>>
>>>>> ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
>>>>>
>>>>> I think, if I remember correctly, sysvinit was chosen because of a
>>>>> requirement on the size of the image.  systemd made the rootfs too
>>>>> big to fit within the constraints.
>>>
>>> Ah, indeed, that was another reason systemd and sysvinit had to be both
>>> enabled in the DISTRO_FEATURES...
>>>
>>>
>>>>> Nishanth might have more details if you want to debate it.  But
>>>>> there is an internal Confluence page that lists all of the Ease of
>>>>> Use requirement JIRAs.
>>>>>
>>>>> No one is opposed to moving away from sysvinit, but we need to
>>>>> make sure that we are meeting that requirement.
>>>>>
>>>>
>>>> That's fair. I assumed our sysvinit build images were setting the
>>>> ARAGO_SYSVINIT variable as part of their base config (or at least
>>>> something similar).
>>>
>>> ARAGO_SYSVINIT flag controls init selection for the main images (default,
>>> base, thinlinux...), but tiny and bootstrap images ignore it and directly
>>> pull in SysVinit regardless of the selection.
>>>
>>
>> Default, base, thinlinux, etc.. are rather large images, not sure what
>> is gained from SysVinit.
> 
> What is gained is flexibility. When switching to systemd, some customers still
> wanted to be able to use SysVinit. Not sure if that's still the case though.
> 

If they want to use sysvinit, then they can modify the distro configs.

> 
>> And for the super small bring-up images like
>> bootstrap, we use very little from meta-arago. Would it make more sense
>> to move those bring-up images out of Arago? Maybe have a small bring-up-
>> distro layer. Having a distro be both systemd and sysvinit is odd..
> 
> That would require to build those images separately from the rest of the
> images and from bundling everything into a single TI SDK tarball. I.e. a
> multi-step process - build one set of images with one distro, then the
> rest with a different distro, plus package a bundle tarball. And that will
> result in a very poor package re-use between the images and 2 flows, since
> distro-level config changes pretty much invalidate most of shared state...
> 

Then lets not ship those bring-up images with the SDK tarball then. Those
are development images, so we should assume folks using them know how to
build OE.

I feel like I've suggested this before, I cant figure out what half
our images are for as is, maybe we try to cut down the number. We could
also name them to match Ubuntu as the 3 we need have similar uses:

  * tisdk-default   -> Desktop
  * tisdk-base      -> Server
  * tisdk-thinlinux -> IoT

Andrew
Ryan Eatmon June 12, 2023, 5:04 p.m. UTC | #11
On 6/12/2023 11:30 AM, Andrew Davis wrote:
> On 6/12/23 11:16 AM, Denys Dmytriyenko wrote:
>> On Mon, Jun 12, 2023 at 10:24:27AM -0500, Andrew Davis via 
>> lists.yoctoproject.org wrote:
>>> On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
>>>> On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via 
>>>> lists.yoctoproject.org wrote:
>>>>> On 6/9/23 13:32, Ryan Eatmon wrote:
>>>>>>
>>>>>>
>>>>>> On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>>> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>>>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>>>>>>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>>>>>>>> From: Randolph Sapp <rs@ti.com>
>>>>>>>>>>
>>>>>>>>>> Make things more readable and reliable by useing the built in 
>>>>>>>>>> boolean
>>>>>>>>>> check instead of python's type casting. Drop the array
>>>>>>>>>> indexing in favor
>>>>>>>>>> of a more direct if else statememnt.
>>>>>>>>>
>>>>>>>>> Heh, it's just a matter of personal preference :) Array
>>>>>>>>> indexing conditionals
>>>>>>>>> is how OE used to do things from the early days and I'm well
>>>>>>>>> used to that. But
>>>>>>>>> these days using Python if/else directly gained lots of
>>>>>>>>> traction, so why not?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Also fix the virtual provider for login manager. There
>>>>>>>>>> should only be 1
>>>>>>>>>> login provider and it should be shadow-base for systemd
>>>>>>>>>> *or* busybox for
>>>>>>>>>> sysVinit systemd.
>>>>>>>>>>
>>>>>>>>>> Also explicitly remove the sysvinit distro feature if 
>>>>>>>>>> ARAGO_SYSVINIT
>>>>>>>>>> isn't set, because whatever arago inherits expects sysvinit 
>>>>>>>>>> for some
>>>>>>>>>> reason. This should fix the duplicate init.d and systemd 
>>>>>>>>>> service files
>>>>>>>>>> we've been seeing.
>>>>>>>>>
>>>>>>>>> How much testing have you done with this change?
>>>>>>>>>
>>>>>>>>> The reason it was done this way is because many packages only 
>>>>>>>>> provided
>>>>>>>>> sysvinit rc scripts and not systemd unit files and we were 
>>>>>>>>> relying on
>>>>>>>>> systemd-sysv-generator to handle those, which has dependency
>>>>>>>>> on "sysvinit"
>>>>>>>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
>>>>>>>>> handle duplications
>>>>>>>>> when both sysvinit rc script and systemd unit file are
>>>>>>>>> provided by a package
>>>>>>>>> and install only one of them. It was better than not having
>>>>>>>>> any startup script
>>>>>>>>> for a package at all.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Everything in the layers below us provides both from
>>>>>>>> everything I've seen. The only incompliant layers are
>>>>>>>> meta-arago and maybe something in meta-ti still expecting
>>>>>>>> sysVinit scripts.
>>>>>>>>
>>>>>>>> If you set both sysVinit and systemd as a distro feature it
>>>>>>>> actually *confuses* core packages and they end up shipping
>>>>>>>> both, which clash. Systemd typically just resolves this by
>>>>>>>> forcing everything with a sysvinit script into the sysvinit
>>>>>>>> compatibility stage leading to increased boot time because
>>>>>>>> that's all still serialized.
>>>>>>>>
>>>>>>>
>>>>>>> If there are any packages still not compliant that you can find,
>>>>>>> tell me and I will fix them myself. Seeing mix-matched sysVinit
>>>>>>> and systemd scripts in the same target makes me irrationally
>>>>>>> angry.
>>>>>>
>>>>>> Uh oh...  This patch causes tisdk-tiny-image.bb and
>>>>>> tisdk-bootstrap-image.bb to fail:
>>>>>>
>>>>>> ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
>>>>>>
>>>>>> I think, if I remember correctly, sysvinit was chosen because of a
>>>>>> requirement on the size of the image.  systemd made the rootfs too
>>>>>> big to fit within the constraints.
>>>>
>>>> Ah, indeed, that was another reason systemd and sysvinit had to be both
>>>> enabled in the DISTRO_FEATURES...
>>>>
>>>>
>>>>>> Nishanth might have more details if you want to debate it.  But
>>>>>> there is an internal Confluence page that lists all of the Ease of
>>>>>> Use requirement JIRAs.
>>>>>>
>>>>>> No one is opposed to moving away from sysvinit, but we need to
>>>>>> make sure that we are meeting that requirement.
>>>>>>
>>>>>
>>>>> That's fair. I assumed our sysvinit build images were setting the
>>>>> ARAGO_SYSVINIT variable as part of their base config (or at least
>>>>> something similar).
>>>>
>>>> ARAGO_SYSVINIT flag controls init selection for the main images 
>>>> (default,
>>>> base, thinlinux...), but tiny and bootstrap images ignore it and 
>>>> directly
>>>> pull in SysVinit regardless of the selection.
>>>>
>>>
>>> Default, base, thinlinux, etc.. are rather large images, not sure what
>>> is gained from SysVinit.
>>
>> What is gained is flexibility. When switching to systemd, some 
>> customers still
>> wanted to be able to use SysVinit. Not sure if that's still the case 
>> though.
>>
> 
> If they want to use sysvinit, then they can modify the distro configs.
> 
>>
>>> And for the super small bring-up images like
>>> bootstrap, we use very little from meta-arago. Would it make more sense
>>> to move those bring-up images out of Arago? Maybe have a small bring-up-
>>> distro layer. Having a distro be both systemd and sysvinit is odd..
>>
>> That would require to build those images separately from the rest of the
>> images and from bundling everything into a single TI SDK tarball. I.e. a
>> multi-step process - build one set of images with one distro, then the
>> rest with a different distro, plus package a bundle tarball. And that 
>> will
>> result in a very poor package re-use between the images and 2 flows, 
>> since
>> distro-level config changes pretty much invalidate most of shared 
>> state...
>>
> 
> Then lets not ship those bring-up images with the SDK tarball then. Those
> are development images, so we should assume folks using them know how to
> build OE.

These were requirements from the Ease of Use initiative.  You can talk 
to Nishanth if you do not like the requirements from that project.


> I feel like I've suggested this before, I cant figure out what half
> our images are for as is, maybe we try to cut down the number. We could
> also name them to match Ubuntu as the 3 we need have similar uses:
> 
>   * tisdk-default   -> Desktop
>   * tisdk-base      -> Server
>   * tisdk-thinlinux -> IoT
> 
> Andrew
Denys Dmytriyenko June 12, 2023, 5:05 p.m. UTC | #12
On Mon, Jun 12, 2023 at 11:30:43AM -0500, Andrew Davis wrote:
> On 6/12/23 11:16 AM, Denys Dmytriyenko wrote:
> >On Mon, Jun 12, 2023 at 10:24:27AM -0500, Andrew Davis via lists.yoctoproject.org wrote:
> >>On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
> >>>On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>>On 6/9/23 13:32, Ryan Eatmon wrote:
> >>>>>
> >>>>>
> >>>>>On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>>>>On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
> >>>>>>>On 6/6/23 17:15, Denys Dmytriyenko wrote:
> >>>>>>>>On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
> >>>>>>>>>From: Randolph Sapp <rs@ti.com>
> >>>>>>>>>
> >>>>>>>>>Make things more readable and reliable by useing the built in boolean
> >>>>>>>>>check instead of python's type casting. Drop the array
> >>>>>>>>>indexing in favor
> >>>>>>>>>of a more direct if else statememnt.
> >>>>>>>>
> >>>>>>>>Heh, it's just a matter of personal preference :) Array
> >>>>>>>>indexing conditionals
> >>>>>>>>is how OE used to do things from the early days and I'm well
> >>>>>>>>used to that. But
> >>>>>>>>these days using Python if/else directly gained lots of
> >>>>>>>>traction, so why not?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>>Also fix the virtual provider for login manager. There
> >>>>>>>>>should only be 1
> >>>>>>>>>login provider and it should be shadow-base for systemd
> >>>>>>>>>*or* busybox for
> >>>>>>>>>sysVinit systemd.
> >>>>>>>>>
> >>>>>>>>>Also explicitly remove the sysvinit distro feature if ARAGO_SYSVINIT
> >>>>>>>>>isn't set, because whatever arago inherits expects sysvinit for some
> >>>>>>>>>reason. This should fix the duplicate init.d and systemd service files
> >>>>>>>>>we've been seeing.
> >>>>>>>>
> >>>>>>>>How much testing have you done with this change?
> >>>>>>>>
> >>>>>>>>The reason it was done this way is because many packages only provided
> >>>>>>>>sysvinit rc scripts and not systemd unit files and we were relying on
> >>>>>>>>systemd-sysv-generator to handle those, which has dependency
> >>>>>>>>on "sysvinit"
> >>>>>>>>PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
> >>>>>>>>handle duplications
> >>>>>>>>when both sysvinit rc script and systemd unit file are
> >>>>>>>>provided by a package
> >>>>>>>>and install only one of them. It was better than not having
> >>>>>>>>any startup script
> >>>>>>>>for a package at all.
> >>>>>>>>
> >>>>>>>
> >>>>>>>Everything in the layers below us provides both from
> >>>>>>>everything I've seen. The only incompliant layers are
> >>>>>>>meta-arago and maybe something in meta-ti still expecting
> >>>>>>>sysVinit scripts.
> >>>>>>>
> >>>>>>>If you set both sysVinit and systemd as a distro feature it
> >>>>>>>actually *confuses* core packages and they end up shipping
> >>>>>>>both, which clash. Systemd typically just resolves this by
> >>>>>>>forcing everything with a sysvinit script into the sysvinit
> >>>>>>>compatibility stage leading to increased boot time because
> >>>>>>>that's all still serialized.
> >>>>>>>
> >>>>>>
> >>>>>>If there are any packages still not compliant that you can find,
> >>>>>>tell me and I will fix them myself. Seeing mix-matched sysVinit
> >>>>>>and systemd scripts in the same target makes me irrationally
> >>>>>>angry.
> >>>>>
> >>>>>Uh oh...  This patch causes tisdk-tiny-image.bb and
> >>>>>tisdk-bootstrap-image.bb to fail:
> >>>>>
> >>>>>ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
> >>>>>
> >>>>>I think, if I remember correctly, sysvinit was chosen because of a
> >>>>>requirement on the size of the image.  systemd made the rootfs too
> >>>>>big to fit within the constraints.
> >>>
> >>>Ah, indeed, that was another reason systemd and sysvinit had to be both
> >>>enabled in the DISTRO_FEATURES...
> >>>
> >>>
> >>>>>Nishanth might have more details if you want to debate it.  But
> >>>>>there is an internal Confluence page that lists all of the Ease of
> >>>>>Use requirement JIRAs.
> >>>>>
> >>>>>No one is opposed to moving away from sysvinit, but we need to
> >>>>>make sure that we are meeting that requirement.
> >>>>>
> >>>>
> >>>>That's fair. I assumed our sysvinit build images were setting the
> >>>>ARAGO_SYSVINIT variable as part of their base config (or at least
> >>>>something similar).
> >>>
> >>>ARAGO_SYSVINIT flag controls init selection for the main images (default,
> >>>base, thinlinux...), but tiny and bootstrap images ignore it and directly
> >>>pull in SysVinit regardless of the selection.
> >>>
> >>
> >>Default, base, thinlinux, etc.. are rather large images, not sure what
> >>is gained from SysVinit.
> >
> >What is gained is flexibility. When switching to systemd, some customers still
> >wanted to be able to use SysVinit. Not sure if that's still the case though.
> >
> 
> If they want to use sysvinit, then they can modify the distro configs.
> 
> >
> >>And for the super small bring-up images like
> >>bootstrap, we use very little from meta-arago. Would it make more sense
> >>to move those bring-up images out of Arago? Maybe have a small bring-up-
> >>distro layer. Having a distro be both systemd and sysvinit is odd..
> >
> >That would require to build those images separately from the rest of the
> >images and from bundling everything into a single TI SDK tarball. I.e. a
> >multi-step process - build one set of images with one distro, then the
> >rest with a different distro, plus package a bundle tarball. And that will
> >result in a very poor package re-use between the images and 2 flows, since
> >distro-level config changes pretty much invalidate most of shared state...
> >
> 
> Then lets not ship those bring-up images with the SDK tarball then. Those
> are development images, so we should assume folks using them know how to
> build OE.
> 
> I feel like I've suggested this before, I cant figure out what half
> our images are for as is, maybe we try to cut down the number. We could
> also name them to match Ubuntu as the 3 we need have similar uses:
> 
>  * tisdk-default   -> Desktop
>  * tisdk-base      -> Server
>  * tisdk-thinlinux -> IoT

We've been back and forth on this - the number of images grew over time, so 
several years ago we simplified and renamed them and got down to 3 (and there 
should still be internal Confluence pages with that effort, justification and 
reasoning):

tisdk-default
tisdk-base
tisdk-tiny

Then later few more were added - thinlinux, bootstrap and bootstrap-base, and 
there's jailhouse one in the works. I agree there should be better re-use...
Randolph Sapp June 12, 2023, 9:06 p.m. UTC | #13
On 6/12/23 11:30, Andrew Davis wrote:
> On 6/12/23 11:16 AM, Denys Dmytriyenko wrote:
>> On Mon, Jun 12, 2023 at 10:24:27AM -0500, Andrew Davis via 
>> lists.yoctoproject.org wrote:
>>> On 6/9/23 3:39 PM, Denys Dmytriyenko wrote:
>>>> On Fri, Jun 09, 2023 at 02:13:23PM -0500, Randolph Sapp via 
>>>> lists.yoctoproject.org wrote:
>>>>> On 6/9/23 13:32, Ryan Eatmon wrote:
>>>>>>
>>>>>>
>>>>>> On 6/6/2023 6:18 PM, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>>> On 6/6/23 18:15, Randolph Sapp via lists.yoctoproject.org wrote:
>>>>>>>> On 6/6/23 17:15, Denys Dmytriyenko wrote:
>>>>>>>>> On Tue, Jun 06, 2023 at 02:10:19PM -0500, rs@ti.com wrote:
>>>>>>>>>> From: Randolph Sapp <rs@ti.com>
>>>>>>>>>>
>>>>>>>>>> Make things more readable and reliable by useing the built in 
>>>>>>>>>> boolean
>>>>>>>>>> check instead of python's type casting. Drop the array
>>>>>>>>>> indexing in favor
>>>>>>>>>> of a more direct if else statememnt.
>>>>>>>>>
>>>>>>>>> Heh, it's just a matter of personal preference :) Array
>>>>>>>>> indexing conditionals
>>>>>>>>> is how OE used to do things from the early days and I'm well
>>>>>>>>> used to that. But
>>>>>>>>> these days using Python if/else directly gained lots of
>>>>>>>>> traction, so why not?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Also fix the virtual provider for login manager. There
>>>>>>>>>> should only be 1
>>>>>>>>>> login provider and it should be shadow-base for systemd
>>>>>>>>>> *or* busybox for
>>>>>>>>>> sysVinit systemd.
>>>>>>>>>>
>>>>>>>>>> Also explicitly remove the sysvinit distro feature if 
>>>>>>>>>> ARAGO_SYSVINIT
>>>>>>>>>> isn't set, because whatever arago inherits expects sysvinit 
>>>>>>>>>> for some
>>>>>>>>>> reason. This should fix the duplicate init.d and systemd 
>>>>>>>>>> service files
>>>>>>>>>> we've been seeing.
>>>>>>>>>
>>>>>>>>> How much testing have you done with this change?
>>>>>>>>>
>>>>>>>>> The reason it was done this way is because many packages only 
>>>>>>>>> provided
>>>>>>>>> sysvinit rc scripts and not systemd unit files and we were 
>>>>>>>>> relying on
>>>>>>>>> systemd-sysv-generator to handle those, which has dependency
>>>>>>>>> on "sysvinit"
>>>>>>>>> PACKAGECONFIG and DISTRO_FEATURES. There were fixes to
>>>>>>>>> handle duplications
>>>>>>>>> when both sysvinit rc script and systemd unit file are
>>>>>>>>> provided by a package
>>>>>>>>> and install only one of them. It was better than not having
>>>>>>>>> any startup script
>>>>>>>>> for a package at all.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Everything in the layers below us provides both from
>>>>>>>> everything I've seen. The only incompliant layers are
>>>>>>>> meta-arago and maybe something in meta-ti still expecting
>>>>>>>> sysVinit scripts.
>>>>>>>>
>>>>>>>> If you set both sysVinit and systemd as a distro feature it
>>>>>>>> actually *confuses* core packages and they end up shipping
>>>>>>>> both, which clash. Systemd typically just resolves this by
>>>>>>>> forcing everything with a sysvinit script into the sysvinit
>>>>>>>> compatibility stage leading to increased boot time because
>>>>>>>> that's all still serialized.
>>>>>>>>
>>>>>>>
>>>>>>> If there are any packages still not compliant that you can find,
>>>>>>> tell me and I will fix them myself. Seeing mix-matched sysVinit
>>>>>>> and systemd scripts in the same target makes me irrationally
>>>>>>> angry.
>>>>>>
>>>>>> Uh oh...  This patch causes tisdk-tiny-image.bb and
>>>>>> tisdk-bootstrap-image.bb to fail:
>>>>>>
>>>>>> ERROR: Nothing RPROVIDES 'packagegroup-arago-sysvinit-boot'
>>>>>>
>>>>>> I think, if I remember correctly, sysvinit was chosen because of a
>>>>>> requirement on the size of the image.  systemd made the rootfs too
>>>>>> big to fit within the constraints.
>>>>
>>>> Ah, indeed, that was another reason systemd and sysvinit had to be both
>>>> enabled in the DISTRO_FEATURES...
>>>>
>>>>
>>>>>> Nishanth might have more details if you want to debate it.  But
>>>>>> there is an internal Confluence page that lists all of the Ease of
>>>>>> Use requirement JIRAs.
>>>>>>
>>>>>> No one is opposed to moving away from sysvinit, but we need to
>>>>>> make sure that we are meeting that requirement.
>>>>>>
>>>>>
>>>>> That's fair. I assumed our sysvinit build images were setting the
>>>>> ARAGO_SYSVINIT variable as part of their base config (or at least
>>>>> something similar).
>>>>
>>>> ARAGO_SYSVINIT flag controls init selection for the main images 
>>>> (default,
>>>> base, thinlinux...), but tiny and bootstrap images ignore it and 
>>>> directly
>>>> pull in SysVinit regardless of the selection.
>>>>
>>>
>>> Default, base, thinlinux, etc.. are rather large images, not sure what
>>> is gained from SysVinit.
>>
>> What is gained is flexibility. When switching to systemd, some 
>> customers still
>> wanted to be able to use SysVinit. Not sure if that's still the case 
>> though.
>>
> 
> If they want to use sysvinit, then they can modify the distro configs.
> 
>>
>>> And for the super small bring-up images like
>>> bootstrap, we use very little from meta-arago. Would it make more sense
>>> to move those bring-up images out of Arago? Maybe have a small bring-up-
>>> distro layer. Having a distro be both systemd and sysvinit is odd..
>>
>> That would require to build those images separately from the rest of the
>> images and from bundling everything into a single TI SDK tarball. I.e. a
>> multi-step process - build one set of images with one distro, then the
>> rest with a different distro, plus package a bundle tarball. And that 
>> will
>> result in a very poor package re-use between the images and 2 flows, 
>> since
>> distro-level config changes pretty much invalidate most of shared 
>> state...
>>
> 
> Then lets not ship those bring-up images with the SDK tarball then. Those
> are development images, so we should assume folks using them know how to
> build OE.
> 
> I feel like I've suggested this before, I cant figure out what half
> our images are for as is, maybe we try to cut down the number. We could
> also name them to match Ubuntu as the 3 we need have similar uses:
> 
>   * tisdk-default   -> Desktop
>   * tisdk-base      -> Server
>   * tisdk-thinlinux -> IoT
> 
> Andrew

I agree with Andrew here. For example: having opengl as a distro feature 
for an image that's not using graphics because they have been 
conditionally switched off based on the machine or the use case kinda 
kills the compile time optimizations we're supposed to be getting with 
yocto and the distro features in general. Those should be conditionally 
set based on the image being built, and the image should be crafted to 
cater to that particular use case.

I'm in support of the 3 main targets above, with the additional argument 
that the rt-kernel should only be available as an option on the iot 
image as otherwise system processes will be competing with useless 
userspace tools and demos, racking up latency. Not a good look for our 
out-of-box rt performance.

Nishanth, any input here?
diff mbox series

Patch

diff --git a/meta-arago-distro/conf/distro/arago.conf b/meta-arago-distro/conf/distro/arago.conf
index 9164657c..6390a916 100644
--- a/meta-arago-distro/conf/distro/arago.conf
+++ b/meta-arago-distro/conf/distro/arago.conf
@@ -59,13 +59,14 @@  DISTRO_FEATURES_FILTER_NATIVESDK:append = " opencl opencv openmp"
 
 # Set global runtime providers for major components
 ARAGO_SYSVINIT ?= "0"
-VIRTUAL-RUNTIME_dev_manager = "${@["udev", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
-VIRTUAL-RUNTIME_init_manager = "${@["sysvinit", "systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
-VIRTUAL-RUNTIME_initscripts = "${@["initscripts", "systemd-compat-units"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
-VIRTUAL-RUNTIME_initramfs = "${@["sysvinit-initramfs", "systemd-initramfs"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
-VIRTUAL-RUNTIME_login_manager = "busybox shadow"
-
-DISTRO_FEATURES:append = "${@[""," systemd"][bool(d.getVar("ARAGO_SYSVINIT"))]}"
+VIRTUAL-RUNTIME_dev_manager = "${@ 'udev' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
+VIRTUAL-RUNTIME_init_manager = "${@ 'sysvinit' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd'}"
+VIRTUAL-RUNTIME_initscripts = "${@ 'initscripts' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-compat-units'}"
+VIRTUAL-RUNTIME_initramfs = "${@ 'sysvinit-initramfs' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'systemd-initramfs'}"
+VIRTUAL-RUNTIME_login_manager = "${@ 'busybox' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else 'shadow-base'}"
+
+DISTRO_FEATURES:append = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' systemd'}"
+DISTRO_FEATURES:remove = "${@ '' if oe.types.boolean(d.getVar('ARAGO_SYSVINIT')) else ' sysvinit'}"
 
 # Distro-specific package configuration
 PACKAGECONFIG:append:pn-systemd = " coredump"