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

Ioan-Adrian Ratiu adrian.ratiu at ni.com
Thu Oct 1 13:10:37 UTC 2015


On 01.10.2015 14:21, Martin Jansa wrote:
> 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
>

Thank you very much for clarifying this. I will rewrite and resubmit.




More information about the Openembedded-devel mailing list