On Thu, Jun 8, 2023 at 1:45 AM Yu, Mingli <[email protected]> wrote:
>
> From: Mingli Yu <[email protected]>
>
> Currently all files as below packaged into one package such as
> qemu-7.2.0-*.rpm. After the qemu package installed on the target,
> it will take up about 464M which includes not only the one matches
> the arch of the target but aslo all available built qemu targets
> which set by QEMU_TARGETS.
>
>  # ls tmp-glibc/work/core2-64-wrs-linux/qemu/7.2.0-r0/image/usr/bin/
>  qemu-aarch64  qemu-img          qemu-mips64el   qemu-ppc64
>  qemu-sh4    qemu-system-loongarch64  qemu-system-ppc      qemu-system-x86_64
>  qemu-arm      qemu-io           qemu-mipsel     qemu-ppc64le
>  qemu-storage-daemon  qemu-system-mips         qemu-system-ppc64
>  qemu-x86_64 qemu-edid     qemu-loongarch64  qemu-mips.real
>  qemu-pr-helper  qemu-system-aarch64  qemu-system-mips64
>  qemu-system-riscv32 qemu-ga       qemu-mips         qemu-nbd
>  qemu-riscv32    qemu-system-arm      qemu-system-mips64el
>  qemu-system-riscv64 qemu-i386     qemu-mips64       qemu-ppc
>  qemu-riscv64    qemu-system-i386     qemu-system-mipsel qemu-system-sh4
>
> Split the qemu package into qemu-7.2.0-*.rpm, qemu-system-*.rpm,
> qemu-user-*.rpm and etc. And let user can only choose the corresponding
> qemu arch package they want to install should ease the concerns who
> cares much about the size in embedded device as it decreases the qemu rpm
> (qemu-7.2.0*.rpm) size from about 65M to about 13M and the size of the
> extracted qemu RPM decreased from about 464M to about 230M.
>
> For the users who want to install all arch packages, they can install
> qemu-system-all and qemu-user-all to meet their need.
>
> Signed-off-by: Mingli Yu <[email protected]>
> ---
>  meta/recipes-devtools/qemu/qemu.inc | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
>
> diff --git a/meta/recipes-devtools/qemu/qemu.inc 
> b/meta/recipes-devtools/qemu/qemu.inc
> index a87dee5c99..367b924f9c 100644
> --- a/meta/recipes-devtools/qemu/qemu.inc
> +++ b/meta/recipes-devtools/qemu/qemu.inc
> @@ -230,6 +230,26 @@ INSANE_SKIP:${PN} = "arch"
>
>  FILES:${PN} += "${datadir}/icons"
>
> +# For user who want to install all arch packages
> +PACKAGES =+ "${PN}-system-all ${PN}-user-all"
> +
> +ALLOW_EMPTY:${PN}-system-all = "1"
> +ALLOW_EMPTY:${PN}-user-all = "1"
> +
> +python populate_packages:prepend() {
> +    archdir = d.expand('${bindir}/')
> +    syspackages = do_split_packages(d, archdir, r'^qemu-system-(.*)$', 
> '${PN}-system-%s', 'QEMU full system emulation binaries(%s)' , prepend=True)
> +    if syspackages:
> +        d.setVar('RDEPENDS:' + d.getVar('PN') + '-system-all', ' 
> '.join(syspackages))
> +
> +    userpackages = do_split_packages(d, archdir, 
> r'^qemu-((?!system|edid|ga|img|io|nbd|pr-helper|storage-daemon).*)$', 
> '${PN}-user-%s', 'QEMU full user emulation binaries(%s)' , prepend=True)
> +    if userpackages:
> +        d.setVar('RDEPENDS:' + d.getVar('PN') + '-user-all', ' 
> '.join(userpackages))
> +    mipspackage = d.getVar('PN') + "-user-mips"
> +    if mipspackage in ' '.join(userpackages):
> +        d.appendVar('RDEPENDS:' + mipspackage, ' ' + d.getVar("MLPREFIX") + 
> 'bash')
> +}

At this point, you can probably see why I ended up using the explicit
variables and overrides versus python when doing the
meta-virtualization splits. :)

I have a few more comments that I made in v1, that I haven't seen
directly handled or replied to.

My only remaining concern (and it may just be my own concern), is that
there's no way to change this packaging split. Either you take the
programatic split, or you take the -all packages.

Other packages (glibc, kernel-modules) have a variable that controls
whether the split happens or not, I'd like to see something similar
here .. but I do realize that it makes test complexity more, and that
Richard normally doesn't like conditionals like that.

Alternatively, did we rule out using PACKAGESPLITFUNCS to add the
splitting routine ? With that, we could remove the processing in
places we don't want it, in particular for the native/sdk builds, as I
found that we really don't want the splitting of qemu in those
scenarios.

Bruce

> +
>  # Put the guest agent in a separate package
>  PACKAGES =+ "${PN}-guest-agent"
>  SUMMARY:${PN}-guest-agent = "QEMU guest agent"
> --
> 2.25.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 (#182509): 
https://lists.openembedded.org/g/openembedded-core/message/182509
Mute This Topic: https://lists.openembedded.org/mt/99401176/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to