I am trying to override the dropbear.default
The layer looks like this : meta/recipes-core/dropbear
├── dropbear
│ ├── 0001-urandom-xauth-changes-to-options.h.patch
│ ├── 0005-dropbear-enable-pam.patch
│ ├── 0006-dropbear-configuration-file.patch
│ ├── dropbear
│ ├── dropbear.default
│ ├── dropbear-disable-weak-ciphers.patch
│ ├── dropbearkey.service
│ ├── dropbear@.service
│ ├── dropbear.socket
│ └── init
├── dropbear_2020.81.bb
├── dropbear_%.bbappend
├── dropbear.inc
└── files
├── 0007-patch1.patch
└── 0008-patch2.patch
└──$MACHINE folder name
├──dropbear.default -------> this one I want to use to replace the old one from the /dropbear/dropbear.default above
I created a dropbear_%.bbappend
and in that dropbear_%.bbappend file I have
FILESEXTRAPATHS_prepend_myfolder := "${THISDIR}/${PN}:${THISDIR}/${MACHINE}:${THISDIR}/files:" -----> this should be
${THISDIR}/${MACHINE}:${THISDIR}/files:"
Still I got the same error
It is pretty unusual to have a bbappend in the same directory as the bb recipe it'll append to, but whatever floats your boat :) In that case, this unusual scenario is actually part of the issue.
I'm unsure what _myfolder
is representing in FILESEXTRAPATHS_prepend_myfolder
? If myfolder
is not part of the OVERRIDES
variable (or other implicit values, such as class-target
, virtclass-
, etc..) then it'll not work. I'm pretty sure you should actually just strip it from FILESEXTRAPATHS_prepend
. c.f. https://docs.yoctoproject.org/ref-manual/variables.html#term-OVERRIDES
Considering the current directory layout, the FILESEXTRAPATHS_prepend
in your bbappend will be expanded to:
./dropbear:./${MACHINE}:./files:
The paths that will be searched by Yocto for files in SRC_URI
will be searched from leftmost to rightmost, c.f. https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH (it is not phrased clearly though IMO I can give you that).
So technically, you're telling Yocto to search within the dropbear
directory for dropbear.default
first and then ${MACHINE}
directory and then files
. Which is already what's used by the original recipe, so all in all, your bbappend is a no-op for files you want to override.
To fix this, either:
dropbear.default
file will be taken from dropbear
, ${MACHINE}
or files
directory at the same level as your bbappend. (and since the paths in FILESEXTRAPATHS
(and FILESPATH
) are absolute, it'll find the file you want),${THISDIR}/${PN}
(which is ./dropbear
) from your FILESEXTRAPATHS_prepend
or put it after the directory in which you have placed the file you want to override,${MACHINE}
) directly in ./dropbear
since directories specified in FILESPATH
(and thus, FILESEXTRAPATHS
) are automatically extended with FILESOVERRIDES
which contains the machine name. Basically, let's say FILESPATH
is set to dirA:dirB
, dirA/poky
(if poky is your distro) will be searched first, then dirB/poky
, then dirA/machine
, dirB/machine
, dirA
and finally dirB
. So by having a subdirectory named after your machine in ./dropbear
it'll be searched before ./dropbear
by Yocto automatically. c.f. https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATHYou can check which directories are searched and in which order by reading the log.do_fetch
log file from ${WORKDIR}/temp
, with ${WORKDIR}
probably going to end with being something like tmp/work/<target_arch>/dropbear/2020.81-r0/
.
You can check the values of variables and the history of how the values were built by running bitbake dropbear -e
. Since it can output several millions of lines, you usually either pipe it to less
or more
, redirect it to a file or pipe it to grep -e "^VARTOCHECK="
.