Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf
@ 2016-08-28 18:19 Yann E. MORIN
  2016-08-28 18:19 ` [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain Yann E. MORIN
  2016-08-28 22:05 ` [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Peter Korsgaard
  0 siblings, 2 replies; 7+ messages in thread
From: Yann E. MORIN @ 2016-08-28 18:19 UTC (permalink / raw)
  To: buildroot

sconeserver uses pkg-config macros, so it needs host-pkgconf.

Reported-by: Matthew Weber <matt@thewebers.ws>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/sconeserver/sconeserver.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/sconeserver/sconeserver.mk b/package/sconeserver/sconeserver.mk
index e02c1a6..42901c6 100644
--- a/package/sconeserver/sconeserver.mk
+++ b/package/sconeserver/sconeserver.mk
@@ -10,7 +10,7 @@ SCONESERVER_LICENSE = GPLv2+
 SCONESERVER_LICENSE_FILES = COPYING
 # fetching from Git, we need to generate the configure script
 SCONESERVER_AUTORECONF = YES
-SCONESERVER_DEPENDENCIES += pcre
+SCONESERVER_DEPENDENCIES = host-pkgconf pcre
 # disable markdown module because its git submodule cmark
 # https://github.com/sconemad/sconeserver/tree/master/markdown
 # has no cross-compile support provided by the sconeserver build system
-- 
2.7.4

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

* [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain
  2016-08-28 18:19 [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Yann E. MORIN
@ 2016-08-28 18:19 ` Yann E. MORIN
  2016-08-28 22:09   ` Peter Korsgaard
  2016-08-28 22:20   ` Matthew Weber
  2016-08-28 22:05 ` [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Peter Korsgaard
  1 sibling, 2 replies; 7+ messages in thread
From: Yann E. MORIN @ 2016-08-28 18:19 UTC (permalink / raw)
  To: buildroot

sconeserver wants to use dlopen(), unconditionally: it does not try to
detect it, and it can't work without it (the code is not conditional).

So, when the toolchain uses uClibc, and that uClibc has been configured
with only static support, the dlopen() functions are not available at
all, and the corresponding headers are not present:

    ModuleLoader.cpp:29:19: fatal error: dlfcn.h: No such file or directory
     #include <dlfcn.h>
                       ^

However, we can't know if uClibc has shared support or is static-only,
especially for external toolchains.

The only way is to forbid the combination {uClibc,static}. So we may
indeed forbid working combinations, for example if the external
toolchain is uClibc-based and has support for shared libs...

Fixes:
    http://autobuild.buildroot.org/results/e92/e929799366e6f574c7b08d8635b18623afd3e3e1/

Reported-by: Matthew Weber <matt@thewebers.ws>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 package/sconeserver/Config.in | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/package/sconeserver/Config.in b/package/sconeserver/Config.in
index 4083aa7..5059570 100644
--- a/package/sconeserver/Config.in
+++ b/package/sconeserver/Config.in
@@ -2,6 +2,7 @@ menuconfig BR2_PACKAGE_SCONESERVER
 	bool "sconeserver"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC || !BR2_STATIC_LIBS # dlopen()
 	select BR2_PACKAGE_PCRE
 	help
 	  Sconeserver is a modular, object-orientated and extremely versatile
@@ -103,4 +104,9 @@ comment "ui module requires X.org"
 endif # BR2_PACKAGE_SCONESERVER
 
 comment "sconeserver needs a toolchain w/ C++, NPTL"
-	depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL)
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC || !BR2_STATIC_LIBS
+
+comment "sconeserver needs a toolchain with dynamic library, C++, NPTL"
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on BR2_TOOLCHAIN_USES_UCLIBC && BR2_STATIC_LIBS
-- 
2.7.4

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

* [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf
  2016-08-28 18:19 [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Yann E. MORIN
  2016-08-28 18:19 ` [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain Yann E. MORIN
@ 2016-08-28 22:05 ` Peter Korsgaard
  1 sibling, 0 replies; 7+ messages in thread
From: Peter Korsgaard @ 2016-08-28 22:05 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > sconeserver uses pkg-config macros, so it needs host-pkgconf.
 > Reported-by: Matthew Weber <matt@thewebers.ws>
 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > ---
 >  package/sconeserver/sconeserver.mk | 2 +-
 >  1 file changed, 1 insertion(+), 1 deletion(-)

 > diff --git a/package/sconeserver/sconeserver.mk b/package/sconeserver/sconeserver.mk
 > index e02c1a6..42901c6 100644
 > --- a/package/sconeserver/sconeserver.mk
 > +++ b/package/sconeserver/sconeserver.mk
 > @@ -10,7 +10,7 @@ SCONESERVER_LICENSE = GPLv2+
 >  SCONESERVER_LICENSE_FILES = COPYING
 >  # fetching from Git, we need to generate the configure script
 >  SCONESERVER_AUTORECONF = YES
 > -SCONESERVER_DEPENDENCIES += pcre
 > +SCONESERVER_DEPENDENCIES = host-pkgconf pcre

It already pulled in host-pkgconf for the image and location suboption,
so I've dropped those, updated the commit message and committed, thanks.

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain
  2016-08-28 18:19 ` [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain Yann E. MORIN
@ 2016-08-28 22:09   ` Peter Korsgaard
  2016-08-28 22:15     ` Yann E. MORIN
  2016-08-28 22:20   ` Matthew Weber
  1 sibling, 1 reply; 7+ messages in thread
From: Peter Korsgaard @ 2016-08-28 22:09 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > sconeserver wants to use dlopen(), unconditionally: it does not try to
 > detect it, and it can't work without it (the code is not conditional).

 > So, when the toolchain uses uClibc, and that uClibc has been configured
 > with only static support, the dlopen() functions are not available at
 > all, and the corresponding headers are not present:

 >     ModuleLoader.cpp:29:19: fatal error: dlfcn.h: No such file or directory
 >      #include <dlfcn.h>
 >                        ^

 > However, we can't know if uClibc has shared support or is static-only,
 > especially for external toolchains.

 > The only way is to forbid the combination {uClibc,static}. So we may
 > indeed forbid working combinations, for example if the external
 > toolchain is uClibc-based and has support for shared libs...

Ehh, this I don't get. Why not simply depend on !BR2_STATIC_LIBS like we
do for other users of dlfcn.h?

If BR2_STATIC_LIBS is enabled then there won't be any .so files in the
target rootfs, so even if the C library has dlopen support it won't
work.

If an external (uClibc-based) toolchain has no shared library support
then it can only be used in BR2_STATIC_LIBS configurations.

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain
  2016-08-28 22:09   ` Peter Korsgaard
@ 2016-08-28 22:15     ` Yann E. MORIN
  2016-08-29  7:03       ` Peter Korsgaard
  0 siblings, 1 reply; 7+ messages in thread
From: Yann E. MORIN @ 2016-08-28 22:15 UTC (permalink / raw)
  To: buildroot

Peter, All,

On 2016-08-29 00:09 +0200, Peter Korsgaard spake thusly:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
> 
>  > sconeserver wants to use dlopen(), unconditionally: it does not try to
>  > detect it, and it can't work without it (the code is not conditional).
> 
>  > So, when the toolchain uses uClibc, and that uClibc has been configured
>  > with only static support, the dlopen() functions are not available at
>  > all, and the corresponding headers are not present:
> 
>  >     ModuleLoader.cpp:29:19: fatal error: dlfcn.h: No such file or directory
>  >      #include <dlfcn.h>
>  >                        ^
> 
>  > However, we can't know if uClibc has shared support or is static-only,
>  > especially for external toolchains.
> 
>  > The only way is to forbid the combination {uClibc,static}. So we may
>  > indeed forbid working combinations, for example if the external
>  > toolchain is uClibc-based and has support for shared libs...
> 
> Ehh, this I don't get. Why not simply depend on !BR2_STATIC_LIBS like we
> do for other users of dlfcn.h?
> 
> If BR2_STATIC_LIBS is enabled then there won't be any .so files in the
> target rootfs, so even if the C library has dlopen support it won't
> work.

Not necessarily true.

One can use dlopen() to load "addons" even from a staticaly linked
executable.

However, I don't care about sconeserver; I was just looking at build
failures and trying to make it the least broken as possible.

If you're fine with making it depend on non static-only and drop the
uclibc condition, that's fine with me. ;-)

Regards,
Yann E. MORIN.

> If an external (uClibc-based) toolchain has no shared library support
> then it can only be used in BR2_STATIC_LIBS configurations.
> 
> -- 
> Bye, Peter Korsgaard

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

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

* [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain
  2016-08-28 18:19 ` [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain Yann E. MORIN
  2016-08-28 22:09   ` Peter Korsgaard
@ 2016-08-28 22:20   ` Matthew Weber
  1 sibling, 0 replies; 7+ messages in thread
From: Matthew Weber @ 2016-08-28 22:20 UTC (permalink / raw)
  To: buildroot

Yann,

On Sun, Aug 28, 2016 at 1:19 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> sconeserver wants to use dlopen(), unconditionally: it does not try to
> detect it, and it can't work without it (the code is not conditional).
>
> So, when the toolchain uses uClibc, and that uClibc has been configured
> with only static support, the dlopen() functions are not available at
> all, and the corresponding headers are not present:
>
>     ModuleLoader.cpp:29:19: fatal error: dlfcn.h: No such file or directory
>      #include <dlfcn.h>
>                        ^
>
> However, we can't know if uClibc has shared support or is static-only,
> especially for external toolchains.
>
> The only way is to forbid the combination {uClibc,static}. So we may
> indeed forbid working combinations, for example if the external
> toolchain is uClibc-based and has support for shared libs...
>
> Fixes:
>     http://autobuild.buildroot.org/results/e92/e929799366e6f574c7b08d8635b18623afd3e3e1/
>
> Reported-by: Matthew Weber <matt@thewebers.ws>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
>  package/sconeserver/Config.in | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/package/sconeserver/Config.in b/package/sconeserver/Config.in
> index 4083aa7..5059570 100644
> --- a/package/sconeserver/Config.in
> +++ b/package/sconeserver/Config.in
> @@ -2,6 +2,7 @@ menuconfig BR2_PACKAGE_SCONESERVER
>         bool "sconeserver"
>         depends on BR2_INSTALL_LIBSTDCPP
>         depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
> +       depends on !BR2_TOOLCHAIN_USES_UCLIBC || !BR2_STATIC_LIBS # dlopen()
>         select BR2_PACKAGE_PCRE
>         help
>           Sconeserver is a modular, object-orientated and extremely versatile
> @@ -103,4 +104,9 @@ comment "ui module requires X.org"
>  endif # BR2_PACKAGE_SCONESERVER

Should a comment be added for the toolchain C++ and NPTL are good but
dyn lib support is not?

comment "sconeserver needs a toolchain w/ dynamic library"
        depends on BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL
        depends on BR2_TOOLCHAIN_USES_UCLIBC && BR2_STATIC_LIBS

I'd also be good with just disabling static build per follow on parts
of this thread.

Thanks,
Matt

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

* [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain
  2016-08-28 22:15     ` Yann E. MORIN
@ 2016-08-29  7:03       ` Peter Korsgaard
  0 siblings, 0 replies; 7+ messages in thread
From: Peter Korsgaard @ 2016-08-29  7:03 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 >> Ehh, this I don't get. Why not simply depend on !BR2_STATIC_LIBS like we
 >> do for other users of dlfcn.h?
 >> 
 >> If BR2_STATIC_LIBS is enabled then there won't be any .so files in the
 >> target rootfs, so even if the C library has dlopen support it won't
 >> work.

 > Not necessarily true.

 > One can use dlopen() to load "addons" even from a staticaly linked
 > executable.

Generally speaking, yes - But not in Buildroot. We have a single global
BR2_STATIC_LIBS setting, so it is all or nothing.

 > However, I don't care about sconeserver; I was just looking at build
 > failures and trying to make it the least broken as possible.

 > If you're fine with making it depend on non static-only and drop the
 > uclibc condition, that's fine with me. ;-)

Ok, I'll adjust the patch and commit message and apply, thanks.

-- 
Venlig hilsen,
Peter Korsgaard 

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

end of thread, other threads:[~2016-08-29  7:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-28 18:19 [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Yann E. MORIN
2016-08-28 18:19 ` [Buildroot] [PATCH 2/2] package/sconeserver: needs shared libs or non uClibc toolchain Yann E. MORIN
2016-08-28 22:09   ` Peter Korsgaard
2016-08-28 22:15     ` Yann E. MORIN
2016-08-29  7:03       ` Peter Korsgaard
2016-08-28 22:20   ` Matthew Weber
2016-08-28 22:05 ` [Buildroot] [PATCH 1/2] package/sconeserver: needs host-pkgconf Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox