[oe] [meta-oe][PATCH V2] meta-oe: recipes-devtools: add libubox recipe

Martin Jansa martin.jansa at gmail.com
Thu Oct 1 11:21:38 UTC 2015


On Thu, Oct 01, 2015 at 12:18:32PM +0300, Ioan-Adrian Ratiu wrote:
> On 30.09.2015 18:24, Khem Raj wrote:
> >
> >> On Sep 30, 2015, at 4:15 AM, Ioan-Adrian Ratiu <adrian.ratiu at ni.com> wrote:
> >>
> >> libubox contains C utility functions used by OpenWrt projects
> >>
> >> Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu at ni.com>
> >> ---
> >> meta-oe/recipes-devtools/libubox/libubox_git.bb | 32 +++++++++++++++++++++++++
> >> 1 file changed, 32 insertions(+)
> >> create mode 100644 meta-oe/recipes-devtools/libubox/libubox_git.bb
> >>
> >> diff --git a/meta-oe/recipes-devtools/libubox/libubox_git.bb b/meta-oe/recipes-devtools/libubox/libubox_git.bb
> >> new file mode 100644
> >> index 0000000..4be3ac1
> >> --- /dev/null
> >> +++ b/meta-oe/recipes-devtools/libubox/libubox_git.bb
> >> @@ -0,0 +1,32 @@
> >> +DESCRIPTION = "C utility functions for OpenWrt"
> >> +SECTION = "libs"
> >> +LICENSE = "libubox-custom-license”
> >
> > where is the license file ?
> >
> 
> There is no global license file, only the license headers specified per 
> files, of which I tried to list all the unique ones in the 
> LIC_FILES_CHKSUM. I'm still at a loss what to put in the LICENSE 
> variable. Any suggestions?
> 
> >> +LIC_FILES_CHKSUM = "\
> >> +    file://avl.c;endline=39;md5=00810155fed3d604816ec5814523d60a \
> >> +    file://avl-cmp.c;endline=15;md5=1603e6094b432a5f3f320877a06f41b5 \
> >> +    file://base64.c;endline=61;md5=51fdff010d45b0086ac0a6e035693dc0 \
> >> +    file://blobmsg.c;endline=15;md5=7ed64c1570e8c9b46c4fc6fbd16c489e \
> >> +    file://list.h;endline=28;md5=2d5f5475fbd0f08741354c5a99c2e983 \
> >> +    file://md5.h;endline=39;md5=048bf9f68963c207a0c2b3a94c9d2aaa \
> >> +    file://md5.c;endline=51;md5=0a448eea0bcbc89e3c7e6608f2d119a0 \
> >> +    file://usock.h;endline=18;md5=f0dfdc8de858e66d66d74036611bba14 \
> >> +"
> >> +
> >> +PACKAGES = "${PN} ${PN}-dbg ${PN}-dev ${PN}-staticdev”
> >
> > why override default PACKAGES ?
> >
> 
> This is related with the issue below, please see my explanation there.
> 
> >> +
> >> +DEPENDS = "json-c"
> >> +
> >> +SRC_URI = "git://git.openwrt.org/project/libubox.git"
> >> +
> >> +SRCREV = "136a5196266d03d537f822c4e67d2fde2ed59505"
> >> +
> >> +S = "${WORKDIR}/git"
> >> +
> >> +inherit cmake
> >> +
> >> +EXTRA_OECMAKE = "-DBUILD_EXAMPLES=OFF -DBUILD_LUA=OFF"
> >> +
> >> +FILES_${PN} += "\
> >> +    ${libdir}/libubox.so \
> >> +    ${libdir}/libblobmsg_json.so \
> >
> > can they be versioned ?
> >
> 
> My initial problem in patch v1 was that I was getting this dev-deps 
> error (I used INSANE_SKIP to suppress it):
> 
> ERROR: QA Issue: libubox rdepends on libubox-dev [dev-deps]
> ERROR: QA run found fatal errors. Please consider fixing them.
> ERROR: Function failed: do_package_qa
> 
> Martin J. told me to fix the issue properly for these recipes.
> 
> Now, in v2, I've made it go away by reordering ${PN} in front of 
> ${PN}-dev in PACKAGES and explicitly adding these files to FILES_${PN}. 
> If I use the default PACKAGES variable, or do not add the libraries to 
> FILES_${PN}, that error reappears.
> 
> I don't have a level of knowledge-depth of the OE packaging mechanism to 
> fully understand what is happening here and I couldn't find more info in 
> the docs... So any help on this is very much appreciated :)

I'm surprised that there are still many people confused by this and that
the docs aren't clear enough.

I'm not tech. writer, but I would explain it like this:

Packaging rules:

1) Each installed file (in ${D} directory), should be packaged in exactly
one package. If it matches in multiple FILES_<pkg> patterns, then first
package wins (see bellow), if it isn't matched in any FILES_<pkg>
variable, then it's not packaged at all and QA warning
installed-not-packaged is shown.
2) Files are "moved" to packages in order of PACKAGES variable, so if
FILES_<pkg1> has more generic pattern than FILES_<pkg2> then pkg1 needs
to be _after_ pkg2 in PACKAGES variable or pkg1 will get all files and
pkg2 none.

To apply this on your problem, if you really want to move all .so files
to PN (normally they are symlinks to versioned .so.X.Y.Z and really
belong to PN-dev). Typical exception to this rule are some .so modules
loaded by the application itself instead of normal shlib loader.

You have 2 options (first one is better)

1) restrict FILES_${PN}-dev to prevent it from "eating" these .so. I
prefer to set FILES_SOLIBSDEV instead of redefinition of whole
FILES_${PN}-dev

2) change order of PACKAGES by re-defining it in the recipe - harder to
introduce new global PACKAGES

Regards,

> 
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20151001/1b6cda07/attachment-0002.sig>


More information about the Openembedded-devel mailing list