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 |
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"
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
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
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] > -=-=-=-=-=-=-=-=-=-=-=- > >
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] > -=-=-=-=-=-=-=-=-=-=-=- > >
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] >> -=-=-=-=-=-=-=-=-=-=-=- >> >> >
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.
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
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...
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
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
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...
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 --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"