Hi Anders,
Thanks for your help, pls see updates below,

> Message: 2
> Date: Tue, 24 Nov 2015 14:25:14 +0100
> From: Anders Darander <and...@chargestorm.se>
> To: yocto@yoctoproject.org
> Subject: Re: [yocto] Header files in /usr/include of rootfs
> Message-ID: <20151124132514.gb2...@ad.chargestorm.se>
> Content-Type: text/plain; charset=utf-8

> * Andy Hung(???_Pegatron) <andy_h...@pegatroncorp.com> [151124 11:35]:
> > I was trying to add some pre-built binaries and files by using a recipe.
> > The recipe has something like this:

> > SRC_URI = file://files<file:///\\files> ?
> > do_install() {
> >     install ?d ${D}
> > }

>       > What files are you installing? How does those look like?
>       The content of the folder has those sub-folders, sbin, root, lib, etc.
>       Those sub-folders contains files such as executable binaries, config 
> files, kernel modules, .so files ...
>       All these files are actually built from the source code of a specific 
> WiFi driver,
>       what I want to do is installing all pre-built binaries/files into 
> corresponding locations in rootfs.

>There's no way to build this using OE?...

>Though, sure, it's should work as long as the binaries and kernel modules 
>actually loads and runs.

> > FILES_${PN} = ?/*?

>       > Here you add say that anything that has been installed, but not put 
> into any other package, should be added to ${PN}. Is that what you want?
>       Yes, all files are installed in a package.

> > ALLOW_EMPTY_${PN} = ?1?

>       > Remove this one unless ${PN} is going to be empty.
>       This line is removed.

> > INSANE_SKIP_${PN} = ?debug-files dev-so?

>       > These might be needed if you get certain QA-warnings/error without 
> them.
>       Yes, got some QA-warnings when building so I keep this.

> > The result was all the binaries and files installed and packages are 
> > created, But I also found kernel header files are also built in under 
> > /usr/include in rootfs image.
> > For my understanding those header files should be used if I want to 
> > develop/debug applications on the target device but it is not the case.

>Could you check if any -dev packages gets installed into the image? If so 
>which one? Do anything like kernel-src or something similar gets installed?

> > Also I noticed the use of INSANE_SKIP_${PN} so I check the usage of 
> > debug-files and dev-so, And it turned out there are .debug folders in the 
> > WORKDIR/package folder so I thought that is why debug-files was used.

>       > See answer below.

> > The questions are,
> > Why are those kernel header files installed in rootfs? How do I prevent 
> > thisa?

>       > I assume that they aren't in the package you just created? Do you 
> have anything in your package that might have a dependency on the kernel 
> headers? Do you have anything in your IMAGE_FEATURES?
>       No, header files aren't in the package.
>       I checked the driver source code and many files include kernel headers 
> like this  "#include <linux/xxx.h>" , is this what you meant by dependency on 
> kernel headers?

Are the source code packaged installed and packaged?

Can you inspect the generated package ${PN}, and see what it's depencies are?

>       IMAGE_FEATURES was not used in the recipe file.

That would rather be in either local.conf, distro, or in your image.

> > Why are there .debug in the package folder, it should only be in package 
> > ?dbg folder, right?

>       > Where are the .debug directories located? You should add them to:
>       > FILES_${PN}-dbg += "<location>/.debug"
>       I add this line and rebuild but the result seems unchanged.
>       the .debug folders are located in 
>       ${WORKDIR}/package
>       ${WORKDIR}/package-split/<package name> - dbg

>I don't understand. Were the .debug directories located in 
>packages-split/<package-name>-dbg? If so, that's where we want them.

>Which package do you add to your image? 
>If you remove that package, do you still get the kernel headers installed?

>Cheers,
>Anders

The kernel headers wouldn't get installed if I removed my package.
I looked at the packages-split folder again and I found besides the -dbg 
folder, .so libraries are in <package-name>-dev folder,
I searched on the Yocto site and learned that packages are split by the 
variable PACKAGES defined in bitbake.conf
and it turns out ${PN}-dbg , ${PN}-dev are processed before ${PN}, so I 
modified my bb file by adding FILE_${PN}-dev = ""
I rebuild the rootfs and I found the kernel headers are not installed then.

Here are the extra packages get installed before I add FILE_${PN}-dev = "" to 
the recipe,
eglibc-extra-nss
libc6-dev
libthread-db1
linux-libc-headers-dev
merge-files-dev

(merge-files is the name of my package)

I think maybe I don't understand Yocto quite well,
What is the rule for OE to install those dev packages?
How do I decide which packages ( dbg, dev, doc, locale...) to get installed?

Many thanks,
Andy
-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to