Skip to contentSkip to conversation

package/protobuf: uses fork(), not available on no-MMU platforms

PATCH New Jörg Krause 2 participants 4 messages Aug 27, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/protobuf: uses fork(), not available on no-MMU platforms

Propagate the dependency to the packages mosh and ola.

Fixes:
http://autobuild.buildroot.net/results/2c1/2c151e84d7854a810465dc16869023e0ada2d586/

---
 package/mosh/Config.in     | 1 +
 package/ola/Config.in      | 1 +
 package/protobuf/Config.in | 1 +
 3 files changed, 3 insertions(+)
package/mosh/Config.in +1 -0
index b4189ee..e9f68ce 100644
@@ -8,6 +8,7 @@ config BR2_PACKAGE_MOSH
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
 	depends on BR2_INSTALL_LIBSTDCPP # protobuf
 	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf
+	depends on BR2_USE_MMU # protobuf
 	depends on !BR2_STATIC_LIBS # protobuf
 	depends on BR2_USE_WCHAR
 	select BR2_PACKAGE_PROTOBUF
package/ola/Config.in +1 -0
index 7b56f5c..9fbf22b 100644
@@ -9,6 +9,7 @@ menuconfig BR2_PACKAGE_OLA
 	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
 	select BR2_PACKAGE_UTIL_LINUX
 	depends on BR2_INSTALL_LIBSTDCPP # protobuf
+	depends on BR2_USE_MMU # protobuf
 	depends on !BR2_STATIC_LIBS # protobuf
 	depends on BR2_USE_WCHAR # util-linux
 	depends on BR2_TOOLCHAIN_HAS_THREADS
package/protobuf/Config.in +1 -0
index 3215a07..4a8d1ef 100644
@@ -33,6 +33,7 @@ config BR2_PACKAGE_PROTOBUF
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
+	depends on BR2_USE_MMU # fork()
 	depends on !BR2_STATIC_LIBS
 	help
 	  Protocol buffers are Google's language-neutral, platform-neutral,
Signature · 1 line
2.9.3
#1 lore raw

PATCH 1/1 package/protobuf: uses fork(), not available on no-MMU platforms

Hello,

Quoted 6 lines · J?rg Krause

Propagate the dependency to the packages mosh and ola.

Fixes:
http://autobuild.buildroot.net/results/2c1/2c151e84d7854a810465dc16869023e0ada2d586/

At first, I was a bit surprised as to why we're seeing this only now, so I investigated a bit, and came to the following conclusion, which I added to the commit log:

"""
This was not noticed until now because:

1/ The older Blackfin toolchain doesn't have libatomic, so it didn't
provide the atomic operations that protobuf needs, so protobuf was never built.

2/ The ARM Cortex-M toolchain is static-only, and protobuf requires
dynamic library support.

So it's only with the new Blackfin toolchain, which is based on gcc 6.x (and therefore provides libatomic) and is FDPIC-based (and therefore has dynamic library support) that this problem appeared.

"""

package/protobuf/Config.in config BR2_PACKAGE_PROTOBUF · line 39

Quoted 12 lines
package/protobuf/Config.in +1 -0
index 3215a07..4a8d1ef 100644
@@ -33,6 +33,7 @@ config BR2_PACKAGE_PROTOBUF
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
+	depends on BR2_USE_MMU # fork()
 	depends on !BR2_STATIC_LIBS
 	help
 	  Protocol buffers are Google's language-neutral, platform-neutral,

When you add a new dependency, you must also propagate it to the Config.in comment so that those comments don't appear on no-MMU platforms.

*However*, in this specific case, there was already a BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS, to which it makes a lot of sense to add the BR2_USE_MMU dependency: it's an architecture dependency, and by doing so, it's automatically propagated to the existing comments and reverse dependencies.

Applied with those changes. Thanks!

Thomas

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

PATCH 1/1 package/protobuf: uses fork(), not available on no-MMU platforms

Quoted 59 lines · Thomas Petazzoni

Hello,

Quoted 8 lines · J?rg Krause

Propagate the dependency to the packages mosh and ola.

Fixes:
http://autobuild.buildroot.net/results/2c1/2c151e84d7854a810465dc16
869023e0ada2d586/

At first, I was a bit surprised as to why we're seeing this only now, so I investigated a bit, and came to the following conclusion, which I
added to the commit log:

"""
????This was not noticed until now because:
????
?????1/ The older Blackfin toolchain doesn't have libatomic, so it didn't
????????provide the atomic operations that protobuf needs, so protobuf was
????????never built.
????
?????2/ The ARM Cortex-M toolchain is static-only, and protobuf requires
????????dynamic library support.
????
????So it's only with the new Blackfin toolchain, which is based on gcc
????6.x (and therefore provides libatomic) and is FDPIC-based (and therefore
????has dynamic library support) that this problem appeared.

"""

Quoted 11 lines
package/protobuf/Config.in +0 -0
index 3215a07..4a8d1ef 100644
@@ -33,6 +33,7 @@ config BR2_PACKAGE_PROTOBUF

? depends on BR2_INSTALL_LIBSTDCPP
? depends on BR2_TOOLCHAIN_HAS_THREADS
? depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS

package/protobuf/Config.in +1 -0
+	depends on BR2_USE_MMU # fork()
Quoted 4 lines

? depends on !BR2_STATIC_LIBS
? help
? ??Protocol buffers are Google's language-neutral,
platform-neutral,

When you add a new dependency, you must also propagate it to the Config.in comment so that those comments don't appear on no-MMU platforms.

Quoted 7 lines

*However*, in this specific case, there was already a BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS, to which it makes a lot of sense to
add the BR2_USE_MMU dependency: it's an architecture dependency, and by
doing so, it's automatically propagated to the existing comments and reverse dependencies.

Many thanks for improving the commit! However, there a some packages which have an architecture dependency where the no-MMU dependency is not added to the architecture dependency, e.g. gauche. Should those packages be revised, too?

J?rg

#3 lore raw

PATCH 1/1 package/protobuf: uses fork(), not available on no-MMU platforms

Hello,

Quoted 4 lines · J?rg Krause

Many thanks for improving the commit! However, there a some packages which have an architecture dependency where the no-MMU dependency is not added to the architecture dependency, e.g. gauche. Should those packages be revised, too?

Yes, I'd say so.

Thomas

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