Hello,
I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
Any hints and pointers as to were to look at are very well appreciated.
Thanks.
Armando Hernandez
|
|
Hi, On Wed, Feb 19, 2020 at 01:37:19AM -0800, Armando Hernandez wrote: Hello,
I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
Any hints and pointers as to were to look at are very well appreciated. Thanks. Make the systemd dependency for target only, e.g. DEPENDS_class-target += "systemd" etc. There may be relevant use cases to build some of systemd components or tools to native or nativesdk targets too. In that case add BBCLASSEXTEND += "nativesdk" etc in a bbappend to systemd. Hope this helps, -Mikko
|
|
> DEPENDS_class-target += "systemd"
You surely meant DEPENDS_append_class-target = " systemd" here
toggle quoted messageShow quoted text
Hi,
On Wed, Feb 19, 2020 at 01:37:19AM -0800, Armando Hernandez wrote:
> Hello,
>
> I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
>
> Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
>
> Any hints and pointers as to were to look at are very well appreciated.
> Thanks.
Make the systemd dependency for target only, e.g. DEPENDS_class-target += "systemd"
etc.
There may be relevant use cases to build some of systemd components or tools
to native or nativesdk targets too. In that case add BBCLASSEXTEND += "nativesdk" etc
in a bbappend to systemd.
Hope this helps,
-Mikko
|
|
Hi, (lets keep this on the list too) On Wed, Feb 19, 2020 at 04:51:18PM +0100, Armando Hernandez wrote: Hi Mikko,
Thanks for your reply. I checked your suggestion but does not work for me. I did included a .bbappend file in which I:
- re-set EXTRA_OECMAKE to an empty string (i.e. ""). - my intention was to pass no arguments when building the nativesdk. Now I know that this accion overwrites the value of EXTRA_OECMAKE in the original .bb file - added the line BBCLASSEXTEND = "nativesdk" to this new .bbappend file - added the line DEPENDS_class-target += "systemd" to the original .bb file
I found out that this configures both the target and the nativesdk libraries without systemd - which later on causes a failure when bitbake attempts to pull up everything to create the final image.
Basically, I'd like to find a way to unset or overwrite the following variables when building the nativesdk package:
- SYSTEMD_PACKAGES - SYSTEMD_SERVICE_${PN} - SYSTEMD_AUTO_ENABLE_${PN} - SYSTEMD_SERVICE_${PN}-systemd - SYSTEMD_AUTO_ENABLE_${PN}-systemd - EXTRA_OECMAKE You can add _class-[target|native|nativesdk] to all variables to override defaults. Verify with "bitbake -e". Hope this helps, -Mikko Is it possible to do so? Or do I come up with another recipe of the sama package exclusively for the nativesdk?
Thanks again.
Armando Hernandez
On Wed, Feb 19, 2020 at 10:44 AM <Mikko.Rapeli@bmw.de> wrote:
Hi,
On Wed, Feb 19, 2020 at 01:37:19AM -0800, Armando Hernandez wrote:
Hello,
I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
Any hints and pointers as to were to look at are very well appreciated. Thanks. Make the systemd dependency for target only, e.g. DEPENDS_class-target += "systemd" etc.
There may be relevant use cases to build some of systemd components or tools to native or nativesdk targets too. In that case add BBCLASSEXTEND += "nativesdk" etc in a bbappend to systemd.
Hope this helps,
-Mikko
|
|
On Wed, Feb 19, 2020 at 10:57:41PM +0100, Martin Jansa wrote: DEPENDS_class-target += "systemd" You surely meant DEPENDS_append_class-target = " systemd" here
Yes, quite likely. Tough reason why += doesn't work is a mystery to me :) I hack things until "bitbake -e" shows the right things for the recipes. -Mikko On Wed, Feb 19, 2020 at 10:48 PM Mikko Rapeli <mikko.rapeli@bmw.de> wrote:
Hi,
On Wed, Feb 19, 2020 at 01:37:19AM -0800, Armando Hernandez wrote:
Hello,
I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
Any hints and pointers as to were to look at are very well appreciated. Thanks. Make the systemd dependency for target only, e.g. DEPENDS_class-target += "systemd" etc.
There may be relevant use cases to build some of systemd components or tools to native or nativesdk targets too. In that case add BBCLASSEXTEND += "nativesdk" etc in a bbappend to systemd.
Hope this helps,
-Mikko
|
|
On Thu, Feb 20, 2020 at 08:14:04AM +0000, Mikko.Rapeli@bmw.de wrote: On Wed, Feb 19, 2020 at 10:57:41PM +0100, Martin Jansa wrote:
DEPENDS_class-target += "systemd" You surely meant DEPENDS_append_class-target = " systemd" here Yes, quite likely. Tough reason why += doesn't work is a mystery to me :)
I hack things until "bitbake -e" shows the right things for the recipes. I agree it's a bit confusing at first (I was doing the same long time ago, before bitbake -e was even showing the history of evaluation), but everybody who uses bitbake often should learn this simple difference: FOO_append_override = " bar" is "conditional" append, so it will append "bar" only when "override" is being used FOO_override += "bar" always appends to "FOO_override" and then it overrides whole "FOO" variable There are other more subtle differences like "+=" adds leading space, _append doesn't and _append is processed later (which is important when appending to variable set with ?=), but the above difference is a must to know. Also FOO_append += "bar" is just silly way how to add leading space to the value, one should always use FOO_append = " bar" when appending to space separated list (like DEPENDS). Cheers, -Mikko
On Wed, Feb 19, 2020 at 10:48 PM Mikko Rapeli <mikko.rapeli@bmw.de> wrote:
Hi,
On Wed, Feb 19, 2020 at 01:37:19AM -0800, Armando Hernandez wrote:
Hello,
I have a recipe that builds a library. The recipe specifies an additional package "${PN}-systemd" along with other systemd related variables and finally it instructs that the package should be built with "-DWITH_SYSTEMD=ON" being passed to cmake. So far so good. But, I extended this recipe to nativesdk because I need this library on it. When trying to build the corresponding nativesdk package, the build fails at the configuration step (i.e. "do_configure") claiming it cannot find the package systemd.
Is there a way I can install the -already-generated libraries into my SDK (potentially via the corresponding nativesdk recipe) without having to rebuild the package? Or do I need to somehow include such systemd package in my sdk (which I don't think I need at all)?
Any hints and pointers as to were to look at are very well appreciated. Thanks. Make the systemd dependency for target only, e.g. DEPENDS_class-target += "systemd" etc.
There may be relevant use cases to build some of systemd components or tools to native or nativesdk targets too. In that case add BBCLASSEXTEND += "nativesdk" etc in a bbappend to systemd.
Hope this helps,
-Mikko
|
|
Hi, On Thu, Feb 20, 2020 at 12:55:43PM +0100, Martin Jansa wrote: On Thu, Feb 20, 2020 at 08:14:04AM +0000, Mikko.Rapeli@bmw.de wrote:
On Wed, Feb 19, 2020 at 10:57:41PM +0100, Martin Jansa wrote:
DEPENDS_class-target += "systemd" You surely meant DEPENDS_append_class-target = " systemd" here Yes, quite likely. Tough reason why += doesn't work is a mystery to me :)
I hack things until "bitbake -e" shows the right things for the recipes. I agree it's a bit confusing at first (I was doing the same long time ago, before bitbake -e was even showing the history of evaluation), but everybody who uses bitbake often should learn this simple difference:
FOO_append_override = " bar" is "conditional" append, so it will append "bar" only when "override" is being used
FOO_override += "bar" always appends to "FOO_override" and then it overrides whole "FOO" variable Thanks for this explanation! There are other more subtle differences like "+=" adds leading space, _append doesn't and _append is processed later (which is important when appending to variable set with ?=), but the above difference is a must to know.
Also FOO_append += "bar" is just silly way how to add leading space to the value, one should always use FOO_append = " bar" when appending to space separated list (like DEPENDS). Hmm. I would rather see FOO_append += "bar" being used every time when spaces are expected. It's way too easy to forget the extra space which causes annoying and hard to debug issues, and is often missed in reviews too. Cheers, -Mikko
|
|