[yocto] recipe fails to load local files

Bryan Evenson bevenson at melinkcorp.com
Mon Nov 17 05:49:35 PST 2014


Lachlan,

> -----Original Message-----
> From: peterengcomau001 at adam.com.au
> [mailto:peterengcomau001 at adam.com.au]
> Sent: Sunday, November 16, 2014 8:55 AM
> To: Alexandru Vaduva; peterengcomau001 at adam.com.au; Anders
> Darander; Bryan Evenson
> Cc: yocto at yoctoproject.org
> Subject: Re: [yocto] recipe fails to load local files
> 
> There is no package called zd1211 that I can identify. If I run
> $ bitbake atmel-qt5-demo-image -g -u depexp
> It does not list a package that has zd1211 in it. Having said that, if I run
> $ find -name zd1211*
> It shows that zd1211rw and zd1211rw.ko files are in the rootfs in the
> tmp/work directory under kernel/drivers/net/wirless.
> 
> Is that what you are referring to?
> 
> Lachlan
> 
> 
> 	----- Original Message -----
> 
> 	From:
> 	"Alexandru Vaduva" <vaduvajanalexandru at yahoo.com>
> 
> 	To:
> 	"peterengcomau001 at adam.com.au"
> <peterengcomau001 at adam.com.au>, "Anders Darander"
> <anders at chargestorm.se>, "Bryan Evenson" <bevenson at melinkcorp.com>
> 
> 	Cc:
> 	"yocto at yoctoproject.org" <yocto at yoctoproject.org>
> 
> 	Sent:
> 	Sat, 15 Nov 2014 19:53:14 +0000 (UTC)
> 
> 	Subject:
> 	Re: [yocto] recipe fails to load local files
> 
> 
> 
> 	Is "zd1211" available in packages and package-split/zd1211-
> firmware*?

To expand on Alexandru's question, the first step is to verify that the library files are now being added to the zd1211-firmware package.  Assuming you are using opkg for package management search in tmp/deploy/ipk/ for any files named "zd1211-firmware.*ipk".  You should find one named something like zd1211-firmware_1.5-r0_ sama5d3xek.ipk.  Open the package up with file-roller and verify that the lib/firmware directory contains the libraries that you intended to add to the package.  If so, then the package is being built correctly.

Once the package is being built correctly, the package needs to be added to your image.  Packages are only added to an image when they are specifically listed in the image recipe or if it is a required dependency of a package that has been added to the image.  If you don't already have a .bbappend for the image, you need to create one in your layer and add the zd1211-firmware package.  The .bbappend needs to follow the same directory structure as the image recipe in the meta-atmel layer.  So for your specific case:

1. Create the file ~/poky/meta-atmel-lsp/recipes-qt/images/atmel-qt5-demo-image.bbappend, adding directories as needed for the full path.
2. Add the following contents to the atmel-qt5-demo-image.bbappend:

IMAGE_INSTALL += " \
	zd1211-firmware \
"

The extra lines and the \ at the end of the line is there to make sure two package names don't get merged together when IMAGE_INSTALL gets built.

3. If you are not using the PR service (http://www.yoctoproject.org/docs/1.7/mega-manual/mega-manual.html#working-with-a-pr-service), also add the following to your .bbappend:

PR = "r1"

otherwise you may not see your change in the final image.

4. Re-build atmel-qt5-demo-image.  You should now see your library files in the final image.

Regards,
Bryan

After you make that change and rebuild 
> 
> 
> 	On Saturday, November 15, 2014 9:09 PM,
> "peterengcomau001 at adam.com.au" <peterengcomau001 at adam.com.au>
> wrote:
> 
> 
> 
> 	Thanks, I have done the changes and no longer get the error.
> However, the firmware files still do not get generated when I build the
> image.
> 	The current recipe I am using is:
> 	______________________________________
> 	DESCRIPTION = "Belkin Wifi Firmware"
> 	LICENSE = "GPL"
> 	PR = "r0"
> 
> 	FILESPATH = "${THISDIR}/${PN}"
> 	FILES_${PN} += "/lib/firmware/zd1211"
> 
> 	SRC_URI = "\
> 	  file://zd1211_ub \
> 	  file://zd1211_uph \
> 	  file://zd1211_uphm \
> 	  file://zd1211_uphr \
> 	  file://zd1211_ur \
> 	"
> 
> 	S = "${WORKDIR}"
> 
> 	do_install() {
> 	        install -d ${D}/lib/firmware/zd1211
> 	    install -m 0555 ${WORKDIR}/zd1211_*    ${D}/lib/firmware/zd1211/
> 	}
> 	________________________________________
> 
> 	No errors result when building the image. However, there is no
> directory or files in:
> 	~/poky/build-atmel/tmp/work/sama5d3xek-poky-linux-
> gnueabi/atmel-qt5-demo-image/1.0-r0/rootfs/lib/firmware
> 
> 	The recipes are in file:
> 	~/poky/meta-atmel-lsp/recipes-lsp/zd1211-firmware
> 	There are other recipes in ~/poky/meta-atmel-lsp/recipes-lsp that
> work, so bitbake can see these ok (but these are bbappend, not bb files)
> 
> 	In ideas why the
> 
> 
> 
> 		----- Original Message -----
> 
> 		From:
> 		"Anders Darander" <anders at chargestorm.se>
> 
> 		To:
> 		"Bryan Evenson" <bevenson at melinkcorp.com>
> 
> 		Cc:
> 		"peterengcomau001 at adam.com.au"
> <peterengcomau001 at adam.com.au>, "yocto at yoctoproject.org"
> <yocto at yoctoproject.org>
> 
> 		Sent:
> 		Fri, 14 Nov 2014 15:44:24 +0100
> 
> 		Subject:
> 		Re: [yocto] recipe fails to load local files
> 
> 
> 		Just a few nitpick's..
> 
> 		* Bryan Evenson <bevenson at melinkcorp.com> [141114
> 15:21]:
> 
> 		> > LICENSE = "CLOSED"
> 		> > FILES_${PN} += "~/poky/meta-atmel-lsp/recipes-
> lsp/zd1211-
> 		> > firmware/zd1211-firmware"
> 
> 		> FILES doesn't specify where to find the files on the build
> machine, it
> 		> specifies where the installed files exist on the target
> filesystem.
> 		> This is what the error you are seeing is telling you; the files
> were
> 		> installed in the do_install step but they did not get placed in
> the
> 		> final package. In your case I believe:
> 
> 		> FILES_${PN} += "${libdir}/zd1211_*"
> 
> 		FILES_${PN} += "/lib/firmware/zd1211"
> 
> 		> would work.
> 
> 		> > SRC_URI = "\
> 		> > file://zd1211_ub \
> 		> > file://zd1211_uph \
> 		> > file://zd1211_uphm \
> 		> > file://zd1211_uphr \
> 		> > file://zd1211_ur \
> 		> > "
> 
> 		> > do_install() {
> 		> > install -d ${D}/lib/firmware/zd1211
> 		> > install -m 0555 ${WORKDIR}/zd1211_*
> ${D}/lib/firmware/zd1211/
> 		> > }
> 
> 		> As mentioned in the FILES variable description in the Yocto
> manual,
> 		> you should use the standard path variables whenever
> possible. The
> 		> list of available path variables are near the top of
> 		> meta/conf/bitbake.conf. That means in your case the
> following would
> 		> be better:
> 
> 		Well, in general that's true. Though, in this specific case, it
> should
> 		actually be a hardcoded /lib/firmware. ${libdir} could be lib64
> or
> 		something else, especially in a multilib-build. However, the
> firmware
> 		files are always searched for in /lib/firmware.
> 
> 		Cheers,
> 		Anders
> 
> 		> do_install() {
> 		> install -d ${D}/${libdir}/firmware/zd1211
> 		> install -m 0555 ${WORKDIR}/zd1211_*
> ${D}/${libdir}/firmware/zd1211/
> 
> 		--
> 		Anders Darander
> 		ChargeStorm AB / eStorm AB
> 
> 
> 	---- Message sent via Adam Internet WebMail -
> http://www.adam.com.au/
> 
> 	--
> 	_______________________________________________
> 	yocto mailing list
> 	yocto at yoctoproject.org <mailto:yocto at yoctoproject.org>
> 	https://lists.yoctoprojectorg/listinfo/yocto
> <https://lists.yoctoproject.org/listinfo/yocto>
> 
> 
> 



More information about the yocto mailing list