Skip to contentSkip to conversation

package/libbsd: needs an (e)glibc toolchain

PATCH New Yann E. MORIN 2 participants 4 messages Jun 9, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/libbsd: needs an (e)glibc toolchain

From: "Yann E. MORIN" <[email protected]>

libbsd needs support for .init_array and checks for a glibc >= 2.4 since .init_array was introduced at around that time.

uClibc claims to be a glibc-compatible toolchain, but it only impersonates a glibc-2.2.

Just disable libbsd on uClibc.

Fixes:

    http://autobuild.buildroot.net/results/e94/e949d8fabeeecc74bd1c324c516e0b4938c99dbc/
    http://autobuild.buildroot.net/results/d3e/d3e1b70fb91571efacbe32af2cd12d055508f5ac/
    http://autobuild.buildroot.net/results/b19/b19d24dbf9d05d86d839349695da45d548705b25/
    [...]

---
Note: I initially introduced libbsd as an Nth-level dependency of qemu to be able to run qemu on the target. So I'll have to revisit this when I am ready to push my qemu-on-target series. For now, just disable libbsd on uClibc.

---
 package/libbsd/Config.in | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
package/libbsd/Config.in +3 -2
index 8c90aa1..e22226a 100644
@@ -4,6 +4,7 @@ config BR2_PACKAGE_LIBBSD
 	# architectures: arm, m68k, x86 (and alpha, but we don't care.)
 	depends on ( BR2_i386 || BR2_x86_64 )
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_USES_GLIBC
 	help
 	  This library provides useful functions commonly found on BSD
 	  systems, and lacking on others like GNU systems, thus making
@@ -13,6 +14,6 @@ config BR2_PACKAGE_LIBBSD
 
 	  http://libbsd.freedesktop.org/
 
-comment "libbsd needs a toolchain w/ threads"
+comment "libbsd needs an (e)glibc toolchain w/ threads"
 	depends on ( BR2_i386 || BR2_x86_64 )
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC
Signature · 1 line
1.8.3.2
#1 lore raw

PATCH 1/1 package/libbsd: needs an (e)glibc toolchain

Dear Yann E. MORIN,

package/libbsd/Config.in config BR2_PACKAGE_LIBBSD · line 19

Quoted 5 lines · Yann E. MORIN
package/libbsd/Config.in +2 -2
-comment "libbsd needs a toolchain w/ threads"
+comment "libbsd needs an (e)glibc toolchain w/ threads"
 	depends on ( BR2_i386 || BR2_x86_64 )
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC

Is it possible to have a glibc toolchain without threads? I think no. In this case, what is our policy? Should we keep both the glibc and thread dependencies?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 package/libbsd: needs an (e)glibc toolchain

Thomas, All,

On 2014-06-09 14:23 +0200, Thomas Petazzoni spake thusly:

Quoted 11 lines · Yann E. MORIN

package/libbsd/Config.in config BR2_PACKAGE_LIBBSD · line 19

Quoted 6 lines
package/libbsd/Config.in +2 -2
-comment "libbsd needs a toolchain w/ threads"
+comment "libbsd needs an (e)glibc toolchain w/ threads"
 	depends on ( BR2_i386 || BR2_x86_64 )
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC

Is it possible to have a glibc toolchain without threads? I think no. In this case, what is our policy? Should we keep both the glibc and thread dependencies?

Indeed, Buildroot considers glibc toolchains have threads.

Just for this commit, I would not care we remove the threads dependency, since it is implicit with glibc.

However, as I said, libbsd is an Nth-level dependency of QEMU, which I am still p[lanning on submitting. Having static qemu-user programs is very usefull to run foreign chroots, and is only possible with uClibc, so I will have to fix that issue at some point in time. And keeping the threads dependency will just be a warning to me at that point.

But for now, do as you prefer. It should be pretty easy to pinpoint build failures at that time. ;-)

Do you want me to respin?

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  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.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH 1/1 package/libbsd: needs an (e)glibc toolchain

Dear Yann E. MORIN,

Quoted 6 lines · Yann E. MORIN
Quoted 3 lines

Is it possible to have a glibc toolchain without threads? I think no. In this case, what is our policy? Should we keep both the glibc and thread dependencies?

Indeed, Buildroot considers glibc toolchains have threads.

Quoted 8 lines

Just for this commit, I would not care we remove the threads dependency, since it is implicit with glibc.

However, as I said, libbsd is an Nth-level dependency of QEMU, which I am still p[lanning on submitting. Having static qemu-user programs is very usefull to run foreign chroots, and is only possible with uClibc, so I will have to fix that issue at some point in time. And keeping the threads dependency will just be a warning to me at that point.

Ok, makes sense.

Quoted 1 line

Do you want me to respin?

Nah, that's fine.

Remember that we now have musl support, and musl supports static linking, so it could be an alternative to uClibc for some of these use cases :-)

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com