[yocto] Best practice for files copied directly into sysroot?
Michael Habibi
mikehabibi at gmail.com
Fri Dec 4 07:11:59 PST 2015
This is perfect, thanks Bryan.
On Fri, Dec 4, 2015 at 8:03 AM, Bryan Evenson <bevenson at melinkcorp.com>
wrote:
> Michael,
>
> > -----Original Message-----
> > From: Michael Habibi [mailto:mikehabibi at gmail.com]
> > Sent: Thursday, December 03, 2015 5:54 PM
> > To: Bryan Evenson <bevenson at melinkcorp.com>
> > Cc: yocto at yoctoproject.org
> > Subject: Re: [yocto] Best practice for files copied directly into
> sysroot?
> >
> > Bryan,
> >
> > I looked through the documentation and I'm a bit unclear on how to use
> > bin_package, and haven't been able to find a good example. Where do I
> > actually place my rootfs files/binaries to get copied to my image rootfs?
> > Under ${THISDIR}/${PN} like other recipe artifacts? How does it copy
> them to
> > ${S}? Or is this something I need to do?
> >
>
> I just modified one of my recipes yesterday to use bin_package yesterday
> and found out a few nuances that make it easier to use. Proper setup of
> the files to copy is key. The manual states " The bin_package class works
> well when the files extracted into ${S} are already laid out in the way
> they should be laid out on the target." By default, any files listed as
> "file://" in SRC_URI are copied to ${WORKDIR}, and if they are a compressed
> archive (.tar.gz, .zip) they are uncompressed under ${WORKDIR}. If you
> create a tarball with the files in the locations (and permissions!) that
> you want on the final image, then the bin_package class will do the rest of
> the work. However, you need the files in the tarball to be one directory
> level down so that they are installed on the image properly.
>
> Let's assume you have a recipe under meta-mylayer/recipes-mine/my-app/
> called my-app_1.0.0.bb. You have an executable called my-app that you
> want to install in /usr/bin/, a configuration file called my-app.conf that
> you want to install at /usr/share/my-app/ and documentation called
> my-app.pdf you want to install at /usr/share/info/. You want all this to
> be under a directory so that when the tarball gets unpacked under
> ${WORKDIR} the files and directories you want on the final image are under
> ${S}. ${S} defaults to ${WORKDIR}/${BP}, which in this case would be
> ${WORKDIR}/my-app-1.0.0. So if you created the following directory
> structure:
>
> my-app-1.0.0/
> usr/
> bin/
> my-app
> info/
> my-app.pdf
> my-app/
> my-app.conf
>
> Again, remember to set the directory and file permissions as you want on
> the final image. Then create a tarball from the directory you laid out
> called my-app-1.0.0.tar.gz and place it under
> meta-mylayer/recipes-mine/my-app/files/. Then create your recipe as:
>
> SUMMARY = "summary here"
> SECTION = "proper section name here"
> LICENSE = "license name here"
> LIC_FILES_CHKSUM = "license path and MD5sum here"
>
> SRC_URI = "file://${BP}.tar.gz"
> inherit bin_package
>
> The system will then package your files and install them onto the image
> where they belong. These are the only lines you need in your recipe other
> than the standard header variables. In the future, if you have a new
> version then just recreate the tarball with the updated files and rename
> the tarball to match the new version. Although I am having issues with the
> license; I haven't figured out where to put it and what to set
> LIC_FILES_CHKSUM to in the recipe so that bitbake can find the license. If
> anyone has a good answer for that, let me know.
>
> Regards,
> Bryan
>
> > Thanks,
> > Michael
> >
> > On Tue, Dec 1, 2015 at 2:03 PM, Michael Habibi <mikehabibi at gmail.com
> > <mailto:mikehabibi at gmail.com> > wrote:
> >
> >
> > Thanks Bryan!
> >
> > On Tue, Dec 1, 2015 at 1:50 PM, Bryan Evenson
> > <bevenson at melinkcorp.com <mailto:bevenson at melinkcorp.com> > wrote:
> >
> >
> > Michael,
> >
> >
> > > -----Original Message-----
> > > From: yocto-bounces at yoctoproject.org <mailto:yocto-
> > bounces at yoctoproject.org> [mailto:yocto- <mailto:yocto->
> > > bounces at yoctoproject.org
> > <mailto:bounces at yoctoproject.org> ] On Behalf Of Michael Habibi
> > > Sent: Tuesday, December 01, 2015 10:26 AM
> > > To: yocto at yoctoproject.org
> > <mailto:yocto at yoctoproject.org>
> > > Subject: [yocto] Best practice for files copied directly
> into
> > sysroot?
> > >
> > > I am working on potentially migrating our distribution to
> > Yocto (will be a long,
> > > long process). We have an area of our filesystem where
> > any file placed will go
> > > directly into the rootfs of the target. This works well
> with
> > our product, as we
> > > have certain binaries and scripts that need to be copied
> > directly, and there's
> > > no other real step involved (no compilation, etc). Is
> there a
> > best practice or
> > > existing class that handles this? I saw mention of a
> binary/
> > directory but I
> > > wasn't sure if that was for this or something else.
> > >
> > > Thanks,
> > > Michael
> >
> >
> > I'm glad I decided to answer your question because I think
> I
> > found an easier way to do it than I have been doing this in the past.
> If you
> > want to be able to update the files on your system at a later date, you
> will
> > want to make your own recipe which installs the binaries and scripts
> onto the
> > rootfs. In general you create a recipe which does not have do_configure
> or
> > do_compile tasks. There is a class that does this already called
> "bin_package"
> > that does this for you. See the "Packaging Externally Produced Binaries"
> > section of the manual here: http://www.yoctoproject.org/docs/2.0/mega-
> > manual/mega-manual.html#new-recipe-testing-examples. So if you include
> > the line "inherit bin_package" and follow the instructions in that
> section of
> > the manual, it should install all the files to the rootfs that are
> included in the
> > recipe.
> >
> > Regards,
> > Bryan
> >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20151204/6c46bbdc/attachment.html>
More information about the yocto
mailing list