All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe][PATCH v2] libeigen: allow empty packages
@ 2018-10-03  6:24 Vyacheslav Yurkov
  2018-10-03  6:35 ` Martin Jansa
  0 siblings, 1 reply; 5+ messages in thread
From: Vyacheslav Yurkov @ 2018-10-03  6:24 UTC (permalink / raw)
  To: openembedded-devel

libeigen is header-only library.
All headers go into dev package, therefore the main package is empty.
Dependency on the dev package doesn't work, so you have to allow
empty package for build to succeed for recipes that depend on libeigen
(e.g. ceres-solver). Otherwise an error occurs that empty packages
are not allowed.

Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
---
 meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
index 31a42a9d6..a59320655 100644
--- a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
+++ b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
@@ -18,3 +18,4 @@ FILES_${PN}-dev = "${includedir} ${datadir}/eigen3/cmake ${datadir}/cmake/Module
 # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
 RDEPENDS_${PN}-dev = ""
 RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+ALLOW_EMPTY_${PN} = "1"
-- 
2.17.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [meta-oe][PATCH v2] libeigen: allow empty packages
  2018-10-03  6:24 [meta-oe][PATCH v2] libeigen: allow empty packages Vyacheslav Yurkov
@ 2018-10-03  6:35 ` Martin Jansa
  2018-10-04  7:04   ` Vyacheslav Yurkov
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Jansa @ 2018-10-03  6:35 UTC (permalink / raw)
  To: Vyacheslav Yurkov; +Cc: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 1705 bytes --]

On Wed, Oct 03, 2018 at 08:24:22AM +0200, Vyacheslav Yurkov wrote:
> libeigen is header-only library.
> All headers go into dev package, therefore the main package is empty.
> Dependency on the dev package doesn't work, so you have to allow
> empty package for build to succeed for recipes that depend on libeigen
> (e.g. ceres-solver). Otherwise an error occurs that empty packages
> are not allowed.

I still don't understand what the issue is, there is already
RDEPENDS_${PN}-dev = "" and similar for ${PN}-dbg.

Creating empty libeigen package to satisfy dependency from ceres-solver
doesn't really fix anything (just installs useless empty package on
target).

> Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
> ---
>  meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> index 31a42a9d6..a59320655 100644
> --- a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> +++ b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> @@ -18,3 +18,4 @@ FILES_${PN}-dev = "${includedir} ${datadir}/eigen3/cmake ${datadir}/cmake/Module
>  # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
>  RDEPENDS_${PN}-dev = ""
>  RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
> +ALLOW_EMPTY_${PN} = "1"
> -- 
> 2.17.0
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 201 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [meta-oe][PATCH v2] libeigen: allow empty packages
  2018-10-03  6:35 ` Martin Jansa
@ 2018-10-04  7:04   ` Vyacheslav Yurkov
  2018-10-04  8:33     ` Martin Jansa
  0 siblings, 1 reply; 5+ messages in thread
From: Vyacheslav Yurkov @ 2018-10-04  7:04 UTC (permalink / raw)
  To: martin.jansa; +Cc: openembedded-devel

 Hi Martin,
Thanks for your comment. I did see discussion in the mailing list that
RDEPENDS_${PN}-dev is supposed to solve it, but it doesn't. To be fare, I
tried it again now:
- bitbake libeigen -c cleanall
- bitbake ceres-solver -c cleanall
- reverted my ALLOW_EMPTY_${PN} = "1" change
- bitbake my-image

After last step I got:
ERROR: my-image-dev-1.0-r0 do_rootfs: libeigen not found in the feeds (x86
corei7-64 core2-64 x86_64 noarch any all) in
/home/uvv/projects/yocto-x86/build/tmp/deploy/rpm.
ERROR: my-image-dev-1.0-r0 do_rootfs: This is often caused by an empty
package declared in a recipe's PACKAGES variable. (Empty packages are not
constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)
ERROR: my-image-dev-1.0-r0 do_rootfs: Function failed: do_rootfs

If there's another way to solve this, I'm all ears. BTW, ceres-solver
recipe itself has ALLOW_EMPTY_${PN} = "1" already. I believe the reason is
the same as here.

Regards,
Vyacheslav

On Wed, Oct 3, 2018 at 8:35 AM Martin Jansa <martin.jansa@gmail.com> wrote:

> On Wed, Oct 03, 2018 at 08:24:22AM +0200, Vyacheslav Yurkov wrote:
> > libeigen is header-only library.
> > All headers go into dev package, therefore the main package is empty.
> > Dependency on the dev package doesn't work, so you have to allow
> > empty package for build to succeed for recipes that depend on libeigen
> > (e.g. ceres-solver). Otherwise an error occurs that empty packages
> > are not allowed.
>
> I still don't understand what the issue is, there is already
> RDEPENDS_${PN}-dev = "" and similar for ${PN}-dbg.
>
> Creating empty libeigen package to satisfy dependency from ceres-solver
> doesn't really fix anything (just installs useless empty package on
> target).
>
> > Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
> > ---
> >  meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> > index 31a42a9d6..a59320655 100644
> > --- a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> > +++ b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
> > @@ -18,3 +18,4 @@ FILES_${PN}-dev = "${includedir}
> ${datadir}/eigen3/cmake ${datadir}/cmake/Module
> >  # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
> >  RDEPENDS_${PN}-dev = ""
> >  RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
> > +ALLOW_EMPTY_${PN} = "1"
> > --
> > 2.17.0
> >
> > --
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
> --
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [meta-oe][PATCH v2] libeigen: allow empty packages
  2018-10-04  7:04   ` Vyacheslav Yurkov
@ 2018-10-04  8:33     ` Martin Jansa
  2018-10-04 10:25       ` Vyacheslav Yurkov
  0 siblings, 1 reply; 5+ messages in thread
From: Martin Jansa @ 2018-10-04  8:33 UTC (permalink / raw)
  To: Vyacheslav Yurkov; +Cc: openembedded-devel

> If there's another way to solve this, I'm all ears. BTW, ceres-solver
recipe itself has ALLOW_EMPTY_${PN} = "1" already. I believe the reason is
the same as here.

Use bitbake -g my-image-dev to find out what package is depending on
libeigen package and fix it there. Are you sure it's (only) from
ceres-solver? Isn't libeigen listed in my-image-dev as well?

Adding ALLOW_EMPTY here is just hiding the issue somewhere else. It makes
sense when the package might be empty based on some configuration (e.g.
PACKAGECONFIGs), but in general ALLOW_EMPTY is bad idea. It also allows end
user to do "opkg install libeigen" and assuming he got something useful
when it installs something, which isn't true he just wasted few bytes of
storage for completely empty package.

And when you're there you can remove ALLOW_EMPTY from ceres-solver as well
:).

Cheers,

On Thu, Oct 4, 2018 at 9:04 AM Vyacheslav Yurkov <uvv.mail@gmail.com> wrote:

> Hi Martin,
> Thanks for your comment. I did see discussion in the mailing list that
> RDEPENDS_${PN}-dev is supposed to solve it, but it doesn't. To be fare, I
> tried it again now:
> - bitbake libeigen -c cleanall
> - bitbake ceres-solver -c cleanall
> - reverted my ALLOW_EMPTY_${PN} = "1" change
> - bitbake my-image
>
> After last step I got:
> ERROR: my-image-dev-1.0-r0 do_rootfs: libeigen not found in the feeds (x86
> corei7-64 core2-64 x86_64 noarch any all) in
> /home/uvv/projects/yocto-x86/build/tmp/deploy/rpm.
> ERROR: my-image-dev-1.0-r0 do_rootfs: This is often caused by an empty
> package declared in a recipe's PACKAGES variable. (Empty packages are not
> constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)
> ERROR: my-image-dev-1.0-r0 do_rootfs: Function failed: do_rootfs
>
> If there's another way to solve this, I'm all ears. BTW, ceres-solver
> recipe itself has ALLOW_EMPTY_${PN} = "1" already. I believe the reason is
> the same as here.
>
> Regards,
> Vyacheslav
>
> On Wed, Oct 3, 2018 at 8:35 AM Martin Jansa <martin.jansa@gmail.com>
> wrote:
>
>> On Wed, Oct 03, 2018 at 08:24:22AM +0200, Vyacheslav Yurkov wrote:
>> > libeigen is header-only library.
>> > All headers go into dev package, therefore the main package is empty.
>> > Dependency on the dev package doesn't work, so you have to allow
>> > empty package for build to succeed for recipes that depend on libeigen
>> > (e.g. ceres-solver). Otherwise an error occurs that empty packages
>> > are not allowed.
>>
>> I still don't understand what the issue is, there is already
>> RDEPENDS_${PN}-dev = "" and similar for ${PN}-dbg.
>>
>> Creating empty libeigen package to satisfy dependency from ceres-solver
>> doesn't really fix anything (just installs useless empty package on
>> target).
>>
>> > Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
>> > ---
>> >  meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb | 1 +
>> >  1 file changed, 1 insertion(+)
>> >
>> > diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>> b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>> > index 31a42a9d6..a59320655 100644
>> > --- a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>> > +++ b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>> > @@ -18,3 +18,4 @@ FILES_${PN}-dev = "${includedir}
>> ${datadir}/eigen3/cmake ${datadir}/cmake/Module
>> >  # ${PN} is empty so we need to tweak -dev and -dbg package dependencies
>> >  RDEPENDS_${PN}-dev = ""
>> >  RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
>> > +ALLOW_EMPTY_${PN} = "1"
>> > --
>> > 2.17.0
>> >
>> > --
>> > _______________________________________________
>> > Openembedded-devel mailing list
>> > Openembedded-devel@lists.openembedded.org
>> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>>
>> --
>> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
>>
>
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [meta-oe][PATCH v2] libeigen: allow empty packages
  2018-10-04  8:33     ` Martin Jansa
@ 2018-10-04 10:25       ` Vyacheslav Yurkov
  0 siblings, 0 replies; 5+ messages in thread
From: Vyacheslav Yurkov @ 2018-10-04 10:25 UTC (permalink / raw)
  To: martin.jansa; +Cc: openembedded-devel

On Thu, Oct 4, 2018 at 10:34 AM Martin Jansa <martin.jansa@gmail.com> wrote:

> > If there's another way to solve this, I'm all ears. BTW, ceres-solver
> recipe itself has ALLOW_EMPTY_${PN} = "1" already. I believe the reason is
> the same as here.
>
> Use bitbake -g my-image-dev to find out what package is depending on
> libeigen package and fix it there. Are you sure it's (only) from
> ceres-solver? Isn't libeigen listed in my-image-dev as well?
>

That makes sense. Indeed it was. I removed it from the image and it worked
well! Thanks for the hint. Now the only dependency on libeigen is
ceres-solver.

Adding ALLOW_EMPTY here is just hiding the issue somewhere else. It makes
> sense when the package might be empty based on some configuration (e.g.
> PACKAGECONFIGs), but in general ALLOW_EMPTY is bad idea. It also allows end
> user to do "opkg install libeigen" and assuming he got something useful
> when it installs something, which isn't true he just wasted few bytes of
> storage for completely empty package.
>

I have a bit different use case. I don't use package manager :)
But the point of having it in the image was to automatically put libeigen
into generated SDK. I checked it again, and SDK still generates properly
with libeigen-dev included.


> And when you're there you can remove ALLOW_EMPTY from ceres-solver as well
> :).
>

I will check if RDEPENDS_${PN}-dev works with ceres-solver as well. If it
does, then the patch from me will come ;)

Thanks again,
Vyacheslav


>
> Cheers,
>
> On Thu, Oct 4, 2018 at 9:04 AM Vyacheslav Yurkov <uvv.mail@gmail.com>
> wrote:
>
>> Hi Martin,
>> Thanks for your comment. I did see discussion in the mailing list that
>> RDEPENDS_${PN}-dev is supposed to solve it, but it doesn't. To be fare, I
>> tried it again now:
>> - bitbake libeigen -c cleanall
>> - bitbake ceres-solver -c cleanall
>> - reverted my ALLOW_EMPTY_${PN} = "1" change
>> - bitbake my-image
>>
>> After last step I got:
>> ERROR: my-image-dev-1.0-r0 do_rootfs: libeigen not found in the feeds
>> (x86 corei7-64 core2-64 x86_64 noarch any all) in
>> /home/uvv/projects/yocto-x86/build/tmp/deploy/rpm.
>> ERROR: my-image-dev-1.0-r0 do_rootfs: This is often caused by an empty
>> package declared in a recipe's PACKAGES variable. (Empty packages are not
>> constructed unless ALLOW_EMPTY_<pkg> = '1' is used.)
>> ERROR: my-image-dev-1.0-r0 do_rootfs: Function failed: do_rootfs
>>
>> If there's another way to solve this, I'm all ears. BTW, ceres-solver
>> recipe itself has ALLOW_EMPTY_${PN} = "1" already. I believe the reason is
>> the same as here.
>>
>> Regards,
>> Vyacheslav
>>
>> On Wed, Oct 3, 2018 at 8:35 AM Martin Jansa <martin.jansa@gmail.com>
>> wrote:
>>
>>> On Wed, Oct 03, 2018 at 08:24:22AM +0200, Vyacheslav Yurkov wrote:
>>> > libeigen is header-only library.
>>> > All headers go into dev package, therefore the main package is empty.
>>> > Dependency on the dev package doesn't work, so you have to allow
>>> > empty package for build to succeed for recipes that depend on libeigen
>>> > (e.g. ceres-solver). Otherwise an error occurs that empty packages
>>> > are not allowed.
>>>
>>> I still don't understand what the issue is, there is already
>>> RDEPENDS_${PN}-dev = "" and similar for ${PN}-dbg.
>>>
>>> Creating empty libeigen package to satisfy dependency from ceres-solver
>>> doesn't really fix anything (just installs useless empty package on
>>> target).
>>>
>>> > Signed-off-by: Vyacheslav Yurkov <uvv.mail@gmail.com>
>>> > ---
>>> >  meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb | 1 +
>>> >  1 file changed, 1 insertion(+)
>>> >
>>> > diff --git a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>>> b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>>> > index 31a42a9d6..a59320655 100644
>>> > --- a/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>>> > +++ b/meta-oe/recipes-support/libeigen/libeigen_3.3.4.bb
>>> > @@ -18,3 +18,4 @@ FILES_${PN}-dev = "${includedir}
>>> ${datadir}/eigen3/cmake ${datadir}/cmake/Module
>>> >  # ${PN} is empty so we need to tweak -dev and -dbg package
>>> dependencies
>>> >  RDEPENDS_${PN}-dev = ""
>>> >  RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
>>> > +ALLOW_EMPTY_${PN} = "1"
>>> > --
>>> > 2.17.0
>>> >
>>> > --
>>> > _______________________________________________
>>> > Openembedded-devel mailing list
>>> > Openembedded-devel@lists.openembedded.org
>>> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>>>
>>> --
>>> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com
>>>
>>
>>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-10-04 10:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-03  6:24 [meta-oe][PATCH v2] libeigen: allow empty packages Vyacheslav Yurkov
2018-10-03  6:35 ` Martin Jansa
2018-10-04  7:04   ` Vyacheslav Yurkov
2018-10-04  8:33     ` Martin Jansa
2018-10-04 10:25       ` Vyacheslav Yurkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.