[Buildroot] [PATCH 1/1] package/apr: needs threads

Arnout Vandecappelle arnout at mind.be
Sat Sep 21 21:11:30 UTC 2019



On 21/09/2019 22:03, Bernd Kuhls wrote:
> Upstream commit
> https://github.com/apache/apr/commit/815881ea01a13055a580756bb426d5f96daf14ff
> 
> added a check for int64_t which uses the APR_CHECK_TYPES_FMT_COMPATIBLE
> m4 macro:
> 
> https://github.com/apache/apr/commit/4d8039901cc7e0d645a7a20fc74c18d1781a3445
> 
> which in turn uses the m4 macro APR_TRY_COMPILE_NO_WARNING.
> This macro adds -Werror to CFLAGS:
> 
> https://github.com/apache/apr/blob/trunk/build/apr_common.m4#L504
> 
> and breaks the configure check for int64_t on toolchains lacking
> threads support:

 As I wrote in some other thread, the problem really is that apr wrongly adds
-D_REENTRANT unconditionally on Linux, while it should do that only if there are
threads.

 There are two ways to work around that:

- patch the m4 file to remove the -D_REENTRANT, and add it externally from apr.mk

- bypass this check entirely by setting apr_preload_done=yes in the environment
and set the complete CFLAGS from the .mk file.


 I think saying that it needs threads is a bit too big of a hammer.

 Regards,
 Arnout

> 
> http://autobuild.buildroot.net/results/69f/69f3a65ec3b43ff6124f83ea63c808a77dc180d9/apr-1.7.0/config.log
> 
> configure:24284: checking whether int64_t and long long use fmt %lld
> configure:24316: /data/buildroot/buildroot-test/instance-0/output/host/bin/arm-linux-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os    -Werror -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DLINUX -D_REENTRANT -D_GNU_SOURCE conftest.c >&5
> In file included from /data/buildroot/buildroot-test/instance-0/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include/sys/types.h:26:0,
>                  from conftest.c:147:
> /data/buildroot/buildroot-test/instance-0/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/include/features.h:218:5: error: #warning requested reentrant code, but thread support was disabled [-Werror=cpp]
>  #   warning requested reentrant code, but thread support was disabled
>      ^~~~~~~
> cc1: all warnings being treated as errors
> 
> Fixes:
> http://autobuild.buildroot.net/results/69f/69f3a65ec3b43ff6124f83ea63c808a77dc180d9/
> 
> Signed-off-by: Bernd Kuhls <bernd.kuhls at t-online.de>
> ---
>  package/apache/Config.in     | 2 +-
>  package/apr-util/Config.in   | 5 +++--
>  package/apr/Config.in        | 5 +++--
>  package/log4cxx/Config.in    | 2 +-
>  package/subversion/Config.in | 5 +++--
>  5 files changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/package/apache/Config.in b/package/apache/Config.in
> index 693ee20a1b..afe5632c8a 100644
> --- a/package/apache/Config.in
> +++ b/package/apache/Config.in
> @@ -1,7 +1,7 @@
>  config BR2_PACKAGE_APACHE
>  	bool "apache"
>  	depends on !BR2_STATIC_LIBS
> -	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # apr, apr-util
>  	depends on BR2_USE_MMU # apr
>  	select BR2_PACKAGE_APR_UTIL
>  	select BR2_PACKAGE_PCRE
> diff --git a/package/apr-util/Config.in b/package/apr-util/Config.in
> index 6c5e3bbdf5..90a28892ea 100644
> --- a/package/apr-util/Config.in
> +++ b/package/apr-util/Config.in
> @@ -2,6 +2,7 @@ config BR2_PACKAGE_APR_UTIL
>  	bool "apr-util"
>  	# apr really needs shared library support
>  	depends on !BR2_STATIC_LIBS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # apr
>  	depends on BR2_USE_MMU # apr
>  	select BR2_PACKAGE_APR
>  	select BR2_PACKAGE_EXPAT
> @@ -10,6 +11,6 @@ config BR2_PACKAGE_APR_UTIL
>  
>  	  http://apr.apache.org/
>  
> -comment "apr-util needs a toolchain w/ dynamic library"
> +comment "apr-util needs a toolchain w/ threads, dynamic library"
>  	depends on BR2_USE_MMU
> -	depends on BR2_STATIC_LIBS
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
> diff --git a/package/apr/Config.in b/package/apr/Config.in
> index 67de925474..5ce2f84bf3 100644
> --- a/package/apr/Config.in
> +++ b/package/apr/Config.in
> @@ -2,6 +2,7 @@ config BR2_PACKAGE_APR
>  	bool "apr"
>  	# apr really needs shared library support
>  	depends on !BR2_STATIC_LIBS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
>  	depends on BR2_USE_MMU # fork() in apr_proc_fork()
>  	help
>  	  The mission of the Apache Portable Runtime (APR) project is to
> @@ -11,6 +12,6 @@ config BR2_PACKAGE_APR
>  
>  	  http://apr.apache.org/
>  
> -comment "apr needs a toolchain w/ dynamic library"
> +comment "apr needs a toolchain w/ threads, dynamic library"
>  	depends on BR2_USE_MMU
> -	depends on BR2_STATIC_LIBS
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
> diff --git a/package/log4cxx/Config.in b/package/log4cxx/Config.in
> index bf739a43ca..f1c0d3cd56 100644
> --- a/package/log4cxx/Config.in
> +++ b/package/log4cxx/Config.in
> @@ -3,7 +3,7 @@ config BR2_PACKAGE_LOG4CXX
>  	# apr really needs shared library support
>  	depends on !BR2_STATIC_LIBS
>  	depends on BR2_INSTALL_LIBSTDCPP
> -	depends on BR2_TOOLCHAIN_HAS_THREADS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # apr, apr-util
>  	depends on BR2_USE_MMU # apr
>  	select BR2_PACKAGE_APR
>  	select BR2_PACKAGE_APR_UTIL
> diff --git a/package/subversion/Config.in b/package/subversion/Config.in
> index ecac51814e..c01a2f10d2 100644
> --- a/package/subversion/Config.in
> +++ b/package/subversion/Config.in
> @@ -2,6 +2,7 @@ config BR2_PACKAGE_SUBVERSION
>  	bool "subversion"
>  	# apr really needs shared library support
>  	depends on !BR2_STATIC_LIBS
> +	depends on BR2_TOOLCHAIN_HAS_THREADS # apr, apr-util
>  	depends on BR2_USE_MMU # apr
>  	select BR2_PACKAGE_APR
>  	select BR2_PACKAGE_APR_UTIL
> @@ -13,6 +14,6 @@ config BR2_PACKAGE_SUBVERSION
>  
>  	  http://subversion.apache.org/
>  
> -comment "subversion needs a toolchain w/ dynamic library"
> +comment "subversion needs a toolchain w/ threads, dynamic library"
>  	depends on BR2_USE_MMU
> -	depends on BR2_STATIC_LIBS
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
> 


More information about the buildroot mailing list