I’ve had success with this. Thanks to all of you for providing information.
Here is the solution that worked for me (I’m using ‘honister’):

On my Ubuntu-18.04-LTS host I have the following in /usr/bin:

qemu-aarch64-static       qemu-mips64el-static    qemu-ppc64-static
qemu-alpha-static         qemu-mips64-static      qemu-ppc-static
qemu-armeb-static         qemu-mipsel-static      qemu-s390x-static
qemu-arm-static           qemu-mipsn32el-static   qemu-sh4eb-static
qemu-cris-static          qemu-mipsn32-static     qemu-sh4-static
qemu-hppa-static          qemu-mips-static        qemu-sparc32plus-static
qemu-i386-static          qemu-nios2-static       qemu-sparc64-static
qemu-m68k-static          qemu-or1k-static        qemu-sparc-static
qemu-microblazeel-static  qemu-ppc64abi32-static  qemu-tilegx-static
qemu-microblaze-static    qemu-ppc64le-static     qemu-x86_64-static

In my distro ‘local.conf’, I added the following:

ASSUME_PROVIDED += " \
    qemu-native \
    qemu-helper-native \
    qemu-system-native \
    qemu-xilinx \
    qemu-xilinx-multiarch-helper-native \
    qemu-xilinx-native \
    qemu-xilinx-system-native \
    "

INHERIT+="blacklist"
PNBLACKLIST[qemu]="blacklist"
PNBLACKLIST[qemu-xilinx]="blacklist"
PNBLACKLIST[qemu-xilinx-multiarch-helper-native]="blacklist"
PNBLACKLIST[qemu-xilinx-native]="blacklist"
PNBLACKLIST[qemu-xilinx-system-native]="blacklist"

NOTE: I had to add the ‘qemu-xilinx-*’ to the ASSUME_PROVIDED to prevent
yocto from trying to build them. Without those the build would complain
that they were dependencies and that they were skipped due to ‘blacklist’.

In my 'image-common.inc' which is required by all 4 of the image variants
that I am building, I added this line:

IMAGE_FSTYPES:remove = " wic.qemu-sd"

This prevents the meta-xilinx layer from attempting to generate a qemu-sd
image during the regular image packaging step; it still produces the
regular SD image. After that it all works nicely. I think that I can use
this same technique for some of the other slow-build dependencies such as
‘binutils-native’.

Anyway for me this is a valuable technique for a somewhat unique use-case.
FYI, the issues that I have with sstate-cache and/or needing to start from
scratch are really more related to the fact that sometimes I need to force
the yocto flow to go back to the earlier stages of the build/parsing
process or it will miss some changes in the parsing process. It is not
related directly to issues with meta-xilinx other than meta-xilinx’s
default behavior. Also, this build flow is eventually going into CI/CD so I
often want to check to see how it builds from scratch. I’ve seen numerous
times where I get a successful build after developing for a while but if I
do a clean build from scratch (no sstate, downloads or tmp) I get build
failures. This is usually due to a previously built or old dependency that
is cached but has been removed from the recipes. It yields ‘false
successes’. I think all of what I’m trying to achieve here is useful when
you are specifically developing distro, image, or machine features, or
getting a build-flow ready for CI/CD.

Thank you all again for the help!

-David

On Mon, Jan 23, 2023 at 10:55 AM Philip Balister <[email protected]>
wrote:

> On 1/23/23 11:34, David Babich wrote:
> > Yes that works for me much of the time, however I still often need to
> > delete everything to start from scratch.  I won't be in this mode of
> > development forever, but for now it's been very painful.
>
> Any idea what the failure mode is? I realize you are trying to get stuff
> done, but we really are interested in failure modes people find. (Of
> course if you are on an older release, the issue may already be fixed)
>
> Philip
>
> > Thanks
> >
> > On Mon, Jan 23, 2023 at 8:28 AM Philip Balister <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >     Removing the tmp directory and keeping the shared state directory
> might
> >     help recover from build issues without requiring a complete rebuild
> of
> >     qemu and other packages.
> >
> >     Philip
> >
> >     On 1/23/23 10:54, David Babich wrote:
> >      > I had a similar reply from Ulf.  Here is my response:
> >      >
> >      > "Yes, I'm in a heavy development flow where I am designing the
> build
> >      > system to support 4 images and 3 machines (2 dev-kits and custom
> >      > hardware).  There are a lot of common features shared between all
> >     of the
> >      > configurations, but there are also numerous differences.  As I'm
> >      > developing it often the state of my build system gets messed up
> >     to the
> >      > point where I need to completely clean and build from scratch.  I
> >     also
> >      > often have to build from scratch to test that changes I made work
> >     from
> >      > start to finish on the various configurations.  The qemu
> components
> >      > extend the build time significantly, and I have no need for
> >     them.  So it
> >      > would help me greatly in meeting the design schedule if I can
> remove
> >      > them from the build."
> >      >
> >      > So I basically don't want qemu /now/ because it is severely
> >     slowing down
> >      > my development cycles.  We should have replied to the whole list,
> >     Ulf
> >      > has provided me the following information which I will try today:
> >      >
> >      > "Here is a discussion on how to do this in Gentoo:
> >      >
> >      > https://wiki.gentoo.org/wiki/Yocto
> >     <https://wiki.gentoo.org/wiki/Yocto>
> >     <https://wiki.gentoo.org/wiki/Yocto
> >     <https://wiki.gentoo.org/wiki/Yocto>>
> >      >
> >      > They use the native qemu installation provied by Gentoo, so they
> >     don't
> >      > even use the Yocto build.
> >      >
> >      > They simply add
> >      >
> >      > ASSUME_PROVIDED += "qemu-native libsdl-native"
> >      >
> >      > to local.conf and are done.
> >      >
> >      > According to this Wiki, qemu-native is used when generating the
> >     rootfs,
> >      > so *removing* qemu-native is not possible.
> >      >
> >      > =========================
> >      > On my Ubuntu-18.04 system, I have /usr/bin/qemu-* files, so it
> >     might be
> >      > possible in my system as well.
> >      >
> >      > =========================
> >      >
> >      > If You want to use the Yocto builts stuff:
> >      >
> >      > After you bitbaked qemu-native you will have a
> >      >
> >      > TOPDIR/build/tmp/work/x86_64-linux/qemu-native/6.2.0-r0/image/
> >     directory.
> >      >
> >      > Step down in this until you reach recipe-sysroot-native/
> >      >
> >      > In this directory, you find what Yocto will run.
> >      >
> >      > .
> >      > └── usr
> >      >      ├── bin
> >      >      │   ├── qemu-aarch64
> >      >      │   ├── qemu-arm
> >      >      │   ├── qemu-i386
> >      >      │   ├── qemu-mips
> >      >      │   ├── qemu-mips64
> >      >      │   ├── qemu-mips64el
> >      >      │   ├── qemu-mipsel
> >      >      │   ├── qemu-mips.real
> >      >      │   ├── qemu-ppc
> >      >      │   ├── qemu-ppc64
> >      >      │   ├── qemu-ppc64le
> >      >      │   ├── qemu-riscv32
> >      >      │   ├── qemu-riscv64
> >      >      │   ├── qemu-sh4
> >      >      │   └── qemu-x86_64
> >      >      ├── include
> >      >      │   └── qemu-plugin.h
> >      >      └── share
> >      >          └── qemu
> >      >              ├── keymaps
> >      >              │   ├── ar
> >      >              │   ├── bepo
> >      >              │   ├── cz
> >      >              │   ├── da
> >      >              │   ├── de
> >      >              │   ├── de-ch
> >      >              │   ├── en-gb
> >      >              │   ├── en-us
> >      >              │   ├── es
> >      >              │   ├── et
> >      >              │   ├── fi
> >      >              │   ├── fo
> >      >              │   ├── fr
> >      >              │   ├── fr-be
> >      >              │   ├── fr-ca
> >      >              │   ├── fr-ch
> >      >              │   ├── hr
> >      >              │   ├── hu
> >      >              │   ├── is
> >      >              │   ├── it
> >      >              │   ├── ja
> >      >              │   ├── lt
> >      >              │   ├── lv
> >      >              │   ├── mk
> >      >              │   ├── nl
> >      >              │   ├── no
> >      >              │   ├── pl
> >      >              │   ├── pt
> >      >              │   ├── pt-br
> >      >              │   ├── ru
> >      >              │   ├── sl
> >      >              │   ├── sv
> >      >              │   ├── th
> >      >              │   └── tr
> >      >              └── trace-events-all
> >      >
> >      > One way would be to copy it all to your host.
> >      > Be careful, since if I check my own Ubuntu 18.04 I have:
> >      >
> >      > ls -1 /usr/bin/qemu*
> >      > /usr/bin/qemu-aarch64-static
> >      > /usr/bin/qemu-alpha-static
> >      > /usr/bin/qemu-armeb-static
> >      > /usr/bin/qemu-arm-static
> >      > /usr/bin/qemu-cris-static
> >      > /usr/bin/qemu-hppa-static
> >      > /usr/bin/qemu-i386-static
> >      > /usr/bin/qemu-img
> >      > /usr/bin/qemu-io
> >      > /usr/bin/qemu-m68k-static
> >      > /usr/bin/qemu-microblazeel-static
> >      > /usr/bin/qemu-microblaze-static
> >      > /usr/bin/qemu-mips64el-static
> >      > /usr/bin/qemu-mips64-static
> >      > /usr/bin/qemu-mipsel-static
> >      > /usr/bin/qemu-mipsn32el-static
> >      > /usr/bin/qemu-mipsn32-static
> >      > /usr/bin/qemu-mips-static
> >      > /usr/bin/qemu-nbd
> >      > /usr/bin/qemu-nios2-static
> >      > /usr/bin/qemu-or1k-static
> >      > /usr/bin/qemu-ppc64abi32-static
> >      > /usr/bin/qemu-ppc64le-static
> >      > /usr/bin/qemu-ppc64-static
> >      > /usr/bin/qemu-ppc-static
> >      > /usr/bin/qemu-s390x-static
> >      > /usr/bin/qemu-sh4eb-static
> >      > /usr/bin/qemu-sh4-static
> >      > /usr/bin/qemu-sparc32plus-static
> >      > /usr/bin/qemu-sparc64-static
> >      > /usr/bin/qemu-sparc-static
> >      > /usr/bin/qemu-system-i386
> >      > /usr/bin/qemu-system-x86_64
> >      > /usr/bin/qemu-system-x86_64-spice
> >      > /usr/bin/qemu-tilegx-static
> >      > /usr/bin/qemu-x86_64-static
> >      >
> >      > I do not have a name collision, but that is not necessary the
> >     case for
> >      > all systems.
> >      > You might overwrite something.
> >      >
> >      > You might also consider manually symlinking the QEMU applications
> >     if a
> >      > simple ASSUME_PROVIDED does not work.
> >      >
> >      > I.E:
> >      >
> >      > cd /usr/bin ; sudo ln -sf   qemu-aarch64-static  qemu-aarch64
> >      >
> >      >
> >      > I have not tested this, but it seems worth a try.
> >      >
> >      >
> >      > Best Regards
> >      >
> >      > Ulf Samuelsson"
> >      >
> >      > I'll post status on my success or failure.  Thanks
> >      > -David
> >      >
> >      > On Sun, Jan 22, 2023 at 10:08 AM Mark Hatle
> >      > <[email protected]
> >     <mailto:[email protected]>
> >     <mailto:[email protected]
> >     <mailto:[email protected]>>>
> >      > wrote:
> >      >
> >      >     What are you trying to accomplish, why are you trying to get
> >     rid of
> >      >     qemu and
> >      >     which version of the Yocto Project are you using?
> >      >
> >      >     You need some qemu support for parts of the system to function
> >      >     properly.  They
> >      >     expect on arm/aarch64 hardware to be able to run test scripts
> >     and/or
> >      >     post-install scripts as the target architecture during the
> root
> >      >     filesystem
> >      >     generation.
> >      >
> >      >     The dependencies for qemu based items are ingrained into the
> base
> >      >     system
> >      >     configuration.
> >      >
> >      >     For instance, if the filesystem type of 'qemu-sd' is enabled
> >     (and it
> >      >     is in most
> >      >     configurations), then a dependency on
> >     qemu-xilinx-system-native will
> >      >     be introduced.
> >      >
> >      >     On 1/19/23 2:56 PM, David Babich wrote:
> >      >      > I've been trying in vain to remove all qemu support from my
> >      >     custom build.  I've
> >      >      > add the following to my distro.conf file:
> >      >      >
> >      >      > PNBLACKLIST[qemu]="blacklist"
> >      >      > PNBLACKLIST[qemu-native]="blacklist"
> >      >      > PNBLACKLIST[qemu-helper-native]="blacklist"
> >      >      > PNBLACKLIST[qemu-helper-native-dev]="blacklist"
> >      >      > PNBLACKLIST[qemu-system-native]="blacklist"
> >      >      > #PNBLACKLIST[qemu-xilinx]="blacklist"
> >      >      > #PNBLACKLIST[qemu-xilinx-native]="blacklist"
> >      >      > #PNBLACKLIST[qemu-xilinx-system-native]="blacklist"
> >      >      > PNBLACKLIST[nativesdk-qemu]="blacklist"
> >      >      > PNBLACKLIST[nativesdk-qemu-helper]="blacklist"
> >      >      > PNBLACKLIST[nativesdk-packagegroup-sdk-host]="blacklist"
> >      >      > MACHINE_FEATURES_BACKFILL_CONSIDERED = " \
> >      >      >          qemu-usermode \
> >      >      >      "
> >      >      >
> >      >      > However when I uncomment the qemu-xilinx,
> >     qemu-xilinx-native and
> >      >      > qemu-xilinx-system-native I get errors indicating
> unbuildable
> >      >     dependencies for
> >      >      > those missing packages.  I've also tried adding them to
> >      >     PACKAGE_EXCLUDE,
> >      >      > IMAGE_FEATURES:remove, DISTRO_FEATURES:remove, and
> >      >     IMAGE_INSTALL:remove with no
> >      >      > luck. There must be some way to completely disable this
> >     without
> >      >     forking the
> >      >      > meta-xilinx layers and manually removing them.
> >      >
> >      >     If I could understand your use-case and reason to disable
> them, I
> >      >     might be able
> >      >     to suggest something.  But generally, no you can't just
> >     completely
> >      >     disable qemu
> >      >     without significantly changing aspects of the system as a
> whole.
> >      >
> >      >     At a minimum you will want to remove (and resolve dangling
> >      >     references to):
> >      >
> >      >     meta-xilinx-core/conf/machine/include/machine-xilinx-qemu.inc
> >      >     meta-xilinx-core/classes/image-types-xilinx-qemu.bbclass
> >      >
> >      >     PNBLACKLIST or SKIP_RECIPE
> >      >
> >      >     If you are simply trying to ensure that qemu never goes to the
> >      >     target image,
> >      >     then you only need to skip qemu/qemu-xilinx.
> >      >
> >      >     The qemu-*native and nativesdk-qemu* packages are helpers
> during
> >      >     compilation
> >      >     time and do not get deployed into the target image.
> >      >
> >      >     --Mark
> >      >
> >      >      > Thanks in advance for any help.
> >      >      > -David
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >      >
> >      >
> >      >
> >      >
> >      > --
> >      > *David Babich*
> >      > Principal Embedded Software Engineer/Founder
> >      > Bootseeds Engineering LLC.
> >      > 303-913-4863
> >      > [email protected] <mailto:[email protected]>
> >     <mailto:[email protected] <mailto:[email protected]>>
> >      > www.bootseeds.com <http://www.bootseeds.com>
> >     <http://www.bootseeds.com <http://www.bootseeds.com>>
> >      >
> >      >
> >      >
> >      >
> >
> >
> >
> > --
> > *David Babich*
> > Principal Embedded Software Engineer/Founder
> > Bootseeds Engineering LLC.
> > 303-913-4863
> > [email protected] <mailto:[email protected]>
> > www.bootseeds.com <http://www.bootseeds.com>
> >
> >
> > 
> >
>


-- 
*David Babich*
Principal Embedded Software Engineer/Founder
Bootseeds Engineering LLC.
303-913-4863
[email protected]
www.bootseeds.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#5139): 
https://lists.yoctoproject.org/g/meta-xilinx/message/5139
Mute This Topic: https://lists.yoctoproject.org/mt/96386630/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-xilinx/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to