Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Bruce Ashfield
On Mon, Aug 23, 2021 at 9:31 AM Böszörményi Zoltán  wrote:
>
> 2021. 08. 23. 15:27 keltezéssel, Bruce Ashfield írta:
> > On Mon, Aug 23, 2021 at 9:18 AM Böszörményi Zoltán  wrote:
> >>
> >> 2021. 08. 23. 14:55 keltezéssel, Bruce Ashfield írta:
> >>> On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
> >>> lists.openembedded.org  wrote:
> 
>  From: Zoltán Böszörményi 
> 
>  For some use cases, a monolithic kernel-modules package containing
>  all modules built from the kernel sources may be preferred.
>  For one, download time is shorter and installation time is faster.
> 
> >>>
> >>> There's still an outstanding issue though. Unless you generate the
> >>> provides/rdepends along with the monolithic package, any existing
> >>> rdepends on kernel modules break.
> >>
> >> The next patch in the thread does it.
> >
> > That's what my follow up said ;)
> >
> > See my second reply though, this gap in functionality created by this
> > commit, should be documented in the commit that it will be restored in
> > future ones.
>
> I can squash the two commits so there's no gap.

That's my preference (others may disagree), since they are related and
anyone that has poked around in this area may notice the issue (like I
did).

I don't normally bisect through oe-core, but it is nice to know that
if you were on this intermediate commit, that the dependencies would
stay valid/consistent.

Cheers,

Bruce

>
> >
> > Cheers,
> >
> > Bruce
> >
> >>
> >>>
> >>> While that likely isn't something you hit in your use case, it would
> >>> be something that would have to be covered to make this part of core.
> >>>
> >>> About 7 years ago, I was most of the way through a similar change,
> >>> that created on large package with all the rprovides generated (I'm
> >>> not sure I can track it down now, but I could have a look), since
> >>> doing an on target update with thousands of kernel module package is
> >>> very painful.
> >>
> >> Well, yes. In our defconfig, about 1500 kernel-module-* subpackages
> >> were created and had to be upgraded at once. It was *very* painful
> >> with over 50 minutes to download and upgrade the kernel.
> >>
> >>>
> >>> Cheers,
> >>>
> >>> Bruce
> >>>
>  Set KERNEL_SPLIT_MODULES="0" for this.
> 
>  The default is one subpackage per module.
> 
>  Signed-off-by: Zoltán Böszörményi 
>  ---
> meta/classes/kernel-module-split.bbclass | 17 +
> 1 file changed, 13 insertions(+), 4 deletions(-)
> 
>  diff --git a/meta/classes/kernel-module-split.bbclass 
>  b/meta/classes/kernel-module-split.bbclass
>  index 6c1de4c992..a29c294810 100644
>  --- a/meta/classes/kernel-module-split.bbclass
>  +++ b/meta/classes/kernel-module-split.bbclass
>  @@ -28,6 +28,7 @@ do_install:append() {
>    install -d ${D}${sysconfdir}/modules-load.d/ 
>  ${D}${sysconfdir}/modprobe.d/
> }
> 
>  +KERNEL_SPLIT_MODULES ?= "1"
> PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "
> 
> KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") 
>  or "kernel" }-modules"
>  @@ -156,18 +157,26 @@ python split_kernel_module_packages () {
> kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
> kernel_version = d.getVar("KERNEL_VERSION")
> 
>  +metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
>  +splitmods = d.getVar('KERNEL_SPLIT_MODULES')
>  +postinst = d.getVar('pkg_postinst:modules')
>  +postrm = d.getVar('pkg_postrm:modules')
>  +
>  +if splitmods != '1':
>  +etcdir = d.getVar('sysconfdir')
>  +d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ 
>  %s/modprobe.d/ %s/modules/' % (etcdir, etcdir, 
>  d.getVar("nonarch_base_libdir")))
>  +d.appendVar('pkg_postinst:%s' % metapkg, postinst)
>  +d.prependVar('pkg_postrm:%s' % metapkg, postrm);
>  +return
>  +
> module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'
> 
> module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
> module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
> module_pattern = module_pattern_prefix + kernel_package_name + 
>  '-module-%s' + module_pattern_suffix
> 
>  -postinst = d.getVar('pkg_postinst:modules')
>  -postrm = d.getVar('pkg_postrm:modules')
>  -
> modules = do_split_packages(d, 
>  root='${nonarch_base_libdir}/modules', file_regex=module_regex, 
>  output_pattern=module_pattern, description='%s kernel module', 
>  postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, 
>  extra_depends='%s-%s' % (kernel_package_name, kernel_version))
> if modules:
>  -metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> d.appendVar('RDEPENDS:' + metapkg, ' '+' '.jo

Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Zoltan Boszormenyi via lists.openembedded.org

2021. 08. 23. 15:27 keltezéssel, Bruce Ashfield írta:

On Mon, Aug 23, 2021 at 9:18 AM Böszörményi Zoltán  wrote:


2021. 08. 23. 14:55 keltezéssel, Bruce Ashfield írta:

On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
lists.openembedded.org  wrote:


From: Zoltán Böszörményi 

For some use cases, a monolithic kernel-modules package containing
all modules built from the kernel sources may be preferred.
For one, download time is shorter and installation time is faster.



There's still an outstanding issue though. Unless you generate the
provides/rdepends along with the monolithic package, any existing
rdepends on kernel modules break.


The next patch in the thread does it.


That's what my follow up said ;)

See my second reply though, this gap in functionality created by this
commit, should be documented in the commit that it will be restored in
future ones.


I can squash the two commits so there's no gap.



Cheers,

Bruce





While that likely isn't something you hit in your use case, it would
be something that would have to be covered to make this part of core.

About 7 years ago, I was most of the way through a similar change,
that created on large package with all the rprovides generated (I'm
not sure I can track it down now, but I could have a look), since
doing an on target update with thousands of kernel module package is
very painful.


Well, yes. In our defconfig, about 1500 kernel-module-* subpackages
were created and had to be upgraded at once. It was *very* painful
with over 50 minutes to download and upgrade the kernel.



Cheers,

Bruce


Set KERNEL_SPLIT_MODULES="0" for this.

The default is one subpackage per module.

Signed-off-by: Zoltán Böszörményi 
---
   meta/classes/kernel-module-split.bbclass | 17 +
   1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/meta/classes/kernel-module-split.bbclass 
b/meta/classes/kernel-module-split.bbclass
index 6c1de4c992..a29c294810 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -28,6 +28,7 @@ do_install:append() {
  install -d ${D}${sysconfdir}/modules-load.d/ 
${D}${sysconfdir}/modprobe.d/
   }

+KERNEL_SPLIT_MODULES ?= "1"
   PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "

   KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or "kernel" 
}-modules"
@@ -156,18 +157,26 @@ python split_kernel_module_packages () {
   kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
   kernel_version = d.getVar("KERNEL_VERSION")

+metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
+splitmods = d.getVar('KERNEL_SPLIT_MODULES')
+postinst = d.getVar('pkg_postinst:modules')
+postrm = d.getVar('pkg_postrm:modules')
+
+if splitmods != '1':
+etcdir = d.getVar('sysconfdir')
+d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ %s/modules/' 
% (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
+d.appendVar('pkg_postinst:%s' % metapkg, postinst)
+d.prependVar('pkg_postrm:%s' % metapkg, postrm);
+return
+
   module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'

   module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
   module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
   module_pattern = module_pattern_prefix + kernel_package_name + 
'-module-%s' + module_pattern_suffix

-postinst = d.getVar('pkg_postinst:modules')
-postrm = d.getVar('pkg_postrm:modules')
-
   modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', 
file_regex=module_regex, output_pattern=module_pattern, description='%s kernel 
module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, 
extra_depends='%s-%s' % (kernel_package_name, kernel_version))
   if modules:
-metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
   d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))

   # If modules-load.d and modprobe.d are empty at this point, remove them 
to
--
2.31.1























-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155160): 
https://lists.openembedded.org/g/openembedded-core/message/155160
Mute This Topic: https://lists.openembedded.org/mt/85083968/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Bruce Ashfield
On Mon, Aug 23, 2021 at 9:18 AM Böszörményi Zoltán  wrote:
>
> 2021. 08. 23. 14:55 keltezéssel, Bruce Ashfield írta:
> > On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
> > lists.openembedded.org  wrote:
> >>
> >> From: Zoltán Böszörményi 
> >>
> >> For some use cases, a monolithic kernel-modules package containing
> >> all modules built from the kernel sources may be preferred.
> >> For one, download time is shorter and installation time is faster.
> >>
> >
> > There's still an outstanding issue though. Unless you generate the
> > provides/rdepends along with the monolithic package, any existing
> > rdepends on kernel modules break.
>
> The next patch in the thread does it.

That's what my follow up said ;)

See my second reply though, this gap in functionality created by this
commit, should be documented in the commit that it will be restored in
future ones.

Cheers,

Bruce

>
> >
> > While that likely isn't something you hit in your use case, it would
> > be something that would have to be covered to make this part of core.
> >
> > About 7 years ago, I was most of the way through a similar change,
> > that created on large package with all the rprovides generated (I'm
> > not sure I can track it down now, but I could have a look), since
> > doing an on target update with thousands of kernel module package is
> > very painful.
>
> Well, yes. In our defconfig, about 1500 kernel-module-* subpackages
> were created and had to be upgraded at once. It was *very* painful
> with over 50 minutes to download and upgrade the kernel.
>
> >
> > Cheers,
> >
> > Bruce
> >
> >> Set KERNEL_SPLIT_MODULES="0" for this.
> >>
> >> The default is one subpackage per module.
> >>
> >> Signed-off-by: Zoltán Böszörményi 
> >> ---
> >>   meta/classes/kernel-module-split.bbclass | 17 +
> >>   1 file changed, 13 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/meta/classes/kernel-module-split.bbclass 
> >> b/meta/classes/kernel-module-split.bbclass
> >> index 6c1de4c992..a29c294810 100644
> >> --- a/meta/classes/kernel-module-split.bbclass
> >> +++ b/meta/classes/kernel-module-split.bbclass
> >> @@ -28,6 +28,7 @@ do_install:append() {
> >>  install -d ${D}${sysconfdir}/modules-load.d/ 
> >> ${D}${sysconfdir}/modprobe.d/
> >>   }
> >>
> >> +KERNEL_SPLIT_MODULES ?= "1"
> >>   PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "
> >>
> >>   KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or 
> >> "kernel" }-modules"
> >> @@ -156,18 +157,26 @@ python split_kernel_module_packages () {
> >>   kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
> >>   kernel_version = d.getVar("KERNEL_VERSION")
> >>
> >> +metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> >> +splitmods = d.getVar('KERNEL_SPLIT_MODULES')
> >> +postinst = d.getVar('pkg_postinst:modules')
> >> +postrm = d.getVar('pkg_postrm:modules')
> >> +
> >> +if splitmods != '1':
> >> +etcdir = d.getVar('sysconfdir')
> >> +d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ 
> >> %s/modprobe.d/ %s/modules/' % (etcdir, etcdir, 
> >> d.getVar("nonarch_base_libdir")))
> >> +d.appendVar('pkg_postinst:%s' % metapkg, postinst)
> >> +d.prependVar('pkg_postrm:%s' % metapkg, postrm);
> >> +return
> >> +
> >>   module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'
> >>
> >>   module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
> >>   module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
> >>   module_pattern = module_pattern_prefix + kernel_package_name + 
> >> '-module-%s' + module_pattern_suffix
> >>
> >> -postinst = d.getVar('pkg_postinst:modules')
> >> -postrm = d.getVar('pkg_postrm:modules')
> >> -
> >>   modules = do_split_packages(d, 
> >> root='${nonarch_base_libdir}/modules', file_regex=module_regex, 
> >> output_pattern=module_pattern, description='%s kernel module', 
> >> postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, 
> >> extra_depends='%s-%s' % (kernel_package_name, kernel_version))
> >>   if modules:
> >> -metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> >>   d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))
> >>
> >>   # If modules-load.d and modprobe.d are empty at this point, remove 
> >> them to
> >> --
> >> 2.31.1
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> > 
> >
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155158): 
https://lists.openembedded.org/g/openembedded-core/message/155158
Mute This Topic: https://lists.openembedded.org/mt/85083968/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Zoltan Boszormenyi via lists.openembedded.org

2021. 08. 23. 14:55 keltezéssel, Bruce Ashfield írta:

On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
lists.openembedded.org  wrote:


From: Zoltán Böszörményi 

For some use cases, a monolithic kernel-modules package containing
all modules built from the kernel sources may be preferred.
For one, download time is shorter and installation time is faster.



There's still an outstanding issue though. Unless you generate the
provides/rdepends along with the monolithic package, any existing
rdepends on kernel modules break.


The next patch in the thread does it.



While that likely isn't something you hit in your use case, it would
be something that would have to be covered to make this part of core.

About 7 years ago, I was most of the way through a similar change,
that created on large package with all the rprovides generated (I'm
not sure I can track it down now, but I could have a look), since
doing an on target update with thousands of kernel module package is
very painful.


Well, yes. In our defconfig, about 1500 kernel-module-* subpackages
were created and had to be upgraded at once. It was *very* painful
with over 50 minutes to download and upgrade the kernel.



Cheers,

Bruce


Set KERNEL_SPLIT_MODULES="0" for this.

The default is one subpackage per module.

Signed-off-by: Zoltán Böszörményi 
---
  meta/classes/kernel-module-split.bbclass | 17 +
  1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/meta/classes/kernel-module-split.bbclass 
b/meta/classes/kernel-module-split.bbclass
index 6c1de4c992..a29c294810 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -28,6 +28,7 @@ do_install:append() {
 install -d ${D}${sysconfdir}/modules-load.d/ 
${D}${sysconfdir}/modprobe.d/
  }

+KERNEL_SPLIT_MODULES ?= "1"
  PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "

  KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or "kernel" 
}-modules"
@@ -156,18 +157,26 @@ python split_kernel_module_packages () {
  kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
  kernel_version = d.getVar("KERNEL_VERSION")

+metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
+splitmods = d.getVar('KERNEL_SPLIT_MODULES')
+postinst = d.getVar('pkg_postinst:modules')
+postrm = d.getVar('pkg_postrm:modules')
+
+if splitmods != '1':
+etcdir = d.getVar('sysconfdir')
+d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ %s/modules/' 
% (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
+d.appendVar('pkg_postinst:%s' % metapkg, postinst)
+d.prependVar('pkg_postrm:%s' % metapkg, postrm);
+return
+
  module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'

  module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
  module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
  module_pattern = module_pattern_prefix + kernel_package_name + 
'-module-%s' + module_pattern_suffix

-postinst = d.getVar('pkg_postinst:modules')
-postrm = d.getVar('pkg_postrm:modules')
-
  modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', 
file_regex=module_regex, output_pattern=module_pattern, description='%s kernel 
module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, 
extra_depends='%s-%s' % (kernel_package_name, kernel_version))
  if modules:
-metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
  d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))

  # If modules-load.d and modprobe.d are empty at this point, remove them to
--
2.31.1














-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155156): 
https://lists.openembedded.org/g/openembedded-core/message/155156
Mute This Topic: https://lists.openembedded.org/mt/85083968/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Bruce Ashfield
On Mon, Aug 23, 2021 at 8:55 AM Bruce Ashfield via
lists.openembedded.org
 wrote:
>
> On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
> lists.openembedded.org  wrote:
> >
> > From: Zoltán Böszörményi 
> >
> > For some use cases, a monolithic kernel-modules package containing
> > all modules built from the kernel sources may be preferred.
> > For one, download time is shorter and installation time is faster.
> >
>
> There's still an outstanding issue though. Unless you generate the
> provides/rdepends along with the monolithic package, any existing
> rdepends on kernel modules break.

Ha.

Never mind, I see the next patch in the series.

It would be worthwhile to document that other changes handle that
detail in the commit log, that way if we are looking for issues in the
future, we know there is hope :D

Bruce

>
> While that likely isn't something you hit in your use case, it would
> be something that would have to be covered to make this part of core.
>
> About 7 years ago, I was most of the way through a similar change,
> that created on large package with all the rprovides generated (I'm
> not sure I can track it down now, but I could have a look), since
> doing an on target update with thousands of kernel module package is
> very painful.
>
> Cheers,
>
> Bruce
>
> > Set KERNEL_SPLIT_MODULES="0" for this.
> >
> > The default is one subpackage per module.
> >
> > Signed-off-by: Zoltán Böszörményi 
> > ---
> >  meta/classes/kernel-module-split.bbclass | 17 +
> >  1 file changed, 13 insertions(+), 4 deletions(-)
> >
> > diff --git a/meta/classes/kernel-module-split.bbclass 
> > b/meta/classes/kernel-module-split.bbclass
> > index 6c1de4c992..a29c294810 100644
> > --- a/meta/classes/kernel-module-split.bbclass
> > +++ b/meta/classes/kernel-module-split.bbclass
> > @@ -28,6 +28,7 @@ do_install:append() {
> > install -d ${D}${sysconfdir}/modules-load.d/ 
> > ${D}${sysconfdir}/modprobe.d/
> >  }
> >
> > +KERNEL_SPLIT_MODULES ?= "1"
> >  PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "
> >
> >  KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or 
> > "kernel" }-modules"
> > @@ -156,18 +157,26 @@ python split_kernel_module_packages () {
> >  kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
> >  kernel_version = d.getVar("KERNEL_VERSION")
> >
> > +metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> > +splitmods = d.getVar('KERNEL_SPLIT_MODULES')
> > +postinst = d.getVar('pkg_postinst:modules')
> > +postrm = d.getVar('pkg_postrm:modules')
> > +
> > +if splitmods != '1':
> > +etcdir = d.getVar('sysconfdir')
> > +d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ 
> > %s/modules/' % (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
> > +d.appendVar('pkg_postinst:%s' % metapkg, postinst)
> > +d.prependVar('pkg_postrm:%s' % metapkg, postrm);
> > +return
> > +
> >  module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'
> >
> >  module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
> >  module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
> >  module_pattern = module_pattern_prefix + kernel_package_name + 
> > '-module-%s' + module_pattern_suffix
> >
> > -postinst = d.getVar('pkg_postinst:modules')
> > -postrm = d.getVar('pkg_postrm:modules')
> > -
> >  modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', 
> > file_regex=module_regex, output_pattern=module_pattern, description='%s 
> > kernel module', postinst=postinst, postrm=postrm, recursive=True, 
> > hook=frob_metadata, extra_depends='%s-%s' % (kernel_package_name, 
> > kernel_version))
> >  if modules:
> > -metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> >  d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))
> >
> >  # If modules-load.d and modprobe.d are empty at this point, remove 
> > them to
> > --
> > 2.31.1
> >
> >
> >
> >
>
>
> --
> - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end
> - "Use the force Harry" - Gandalf, Star Trek II
>
> 
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155153): 
https://lists.openembedded.org/g/openembedded-core/message/155153
Mute This Topic: https://lists.openembedded.org/mt/85083968/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [OE-core] [PATCH 3/6] kernel-module-split.bbclass: Allow opt-out of split kernel modules

2021-08-23 Thread Bruce Ashfield
On Mon, Aug 23, 2021 at 8:23 AM Zoltan Boszormenyi via
lists.openembedded.org  wrote:
>
> From: Zoltán Böszörményi 
>
> For some use cases, a monolithic kernel-modules package containing
> all modules built from the kernel sources may be preferred.
> For one, download time is shorter and installation time is faster.
>

There's still an outstanding issue though. Unless you generate the
provides/rdepends along with the monolithic package, any existing
rdepends on kernel modules break.

While that likely isn't something you hit in your use case, it would
be something that would have to be covered to make this part of core.

About 7 years ago, I was most of the way through a similar change,
that created on large package with all the rprovides generated (I'm
not sure I can track it down now, but I could have a look), since
doing an on target update with thousands of kernel module package is
very painful.

Cheers,

Bruce

> Set KERNEL_SPLIT_MODULES="0" for this.
>
> The default is one subpackage per module.
>
> Signed-off-by: Zoltán Böszörményi 
> ---
>  meta/classes/kernel-module-split.bbclass | 17 +
>  1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/meta/classes/kernel-module-split.bbclass 
> b/meta/classes/kernel-module-split.bbclass
> index 6c1de4c992..a29c294810 100644
> --- a/meta/classes/kernel-module-split.bbclass
> +++ b/meta/classes/kernel-module-split.bbclass
> @@ -28,6 +28,7 @@ do_install:append() {
> install -d ${D}${sysconfdir}/modules-load.d/ 
> ${D}${sysconfdir}/modprobe.d/
>  }
>
> +KERNEL_SPLIT_MODULES ?= "1"
>  PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "
>
>  KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or 
> "kernel" }-modules"
> @@ -156,18 +157,26 @@ python split_kernel_module_packages () {
>  kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
>  kernel_version = d.getVar("KERNEL_VERSION")
>
> +metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> +splitmods = d.getVar('KERNEL_SPLIT_MODULES')
> +postinst = d.getVar('pkg_postinst:modules')
> +postrm = d.getVar('pkg_postrm:modules')
> +
> +if splitmods != '1':
> +etcdir = d.getVar('sysconfdir')
> +d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ 
> %s/modules/' % (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
> +d.appendVar('pkg_postinst:%s' % metapkg, postinst)
> +d.prependVar('pkg_postrm:%s' % metapkg, postrm);
> +return
> +
>  module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'
>
>  module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
>  module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
>  module_pattern = module_pattern_prefix + kernel_package_name + 
> '-module-%s' + module_pattern_suffix
>
> -postinst = d.getVar('pkg_postinst:modules')
> -postrm = d.getVar('pkg_postrm:modules')
> -
>  modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', 
> file_regex=module_regex, output_pattern=module_pattern, description='%s 
> kernel module', postinst=postinst, postrm=postrm, recursive=True, 
> hook=frob_metadata, extra_depends='%s-%s' % (kernel_package_name, 
> kernel_version))
>  if modules:
> -metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
>  d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))
>
>  # If modules-load.d and modprobe.d are empty at this point, remove them 
> to
> --
> 2.31.1
>
>
> 
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#155152): 
https://lists.openembedded.org/g/openembedded-core/message/155152
Mute This Topic: https://lists.openembedded.org/mt/85083968/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-