diff mbox series

[1/1] package/apr: fix musl build

Message ID 20240722104859.1092677-1-fontaine.fabrice@gmail.com
State Accepted
Headers show
Series [1/1] package/apr: fix musl build | expand

Commit Message

Fabrice Fontaine July 22, 2024, 10:48 a.m. UTC
strerror_r on musl always returns an int since its addition back in 2011
with
https://git.musl-libc.org/cgit/musl/commit/src/string/strerror_r.c?id=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01

As a result, setting ac_cv_strerror_r_rc_int to no results in the
following build failure since bump to version 1.7.2 in commit
783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1:

misc/unix/errorcodes.c: In function 'native_strerror':
misc/unix/errorcodes.c:385:9: error: assignment to 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
  385 |     msg = strerror_r(statcode, buf, bufsize);
      |         ^

Fixes: 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1
 - http://autobuild.buildroot.org/results/9a42a4427ff64d47da61c731abb99d7585781cdd

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/apr/apr.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Petazzoni July 22, 2024, 12:02 p.m. UTC | #1
On Mon, 22 Jul 2024 12:48:59 +0200
Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> strerror_r on musl always returns an int since its addition back in 2011
> with
> https://git.musl-libc.org/cgit/musl/commit/src/string/strerror_r.c?id=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01
> 
> As a result, setting ac_cv_strerror_r_rc_int to no results in the
> following build failure since bump to version 1.7.2 in commit
> 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1:
> 
> misc/unix/errorcodes.c: In function 'native_strerror':
> misc/unix/errorcodes.c:385:9: error: assignment to 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
>   385 |     msg = strerror_r(statcode, buf, bufsize);
>       |         ^
> 
> Fixes: 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1
>  - http://autobuild.buildroot.org/results/9a42a4427ff64d47da61c731abb99d7585781cdd
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> ---
>  package/apr/apr.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied to master, thanks.

Thomas
Thomas Petazzoni July 22, 2024, 12:05 p.m. UTC | #2
On Mon, 22 Jul 2024 12:48:59 +0200
Fabrice Fontaine <fontaine.fabrice@gmail.com> wrote:

> strerror_r on musl always returns an int since its addition back in 2011
> with
> https://git.musl-libc.org/cgit/musl/commit/src/string/strerror_r.c?id=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01
> 
> As a result, setting ac_cv_strerror_r_rc_int to no results in the
> following build failure since bump to version 1.7.2 in commit
> 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1:
> 
> misc/unix/errorcodes.c: In function 'native_strerror':
> misc/unix/errorcodes.c:385:9: error: assignment to 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
>   385 |     msg = strerror_r(statcode, buf, bufsize);
>       |         ^
> 
> Fixes: 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1
>  - http://autobuild.buildroot.org/results/9a42a4427ff64d47da61c731abb99d7585781cdd
> 
> Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Actually, wouldn't it make sense to modify the APR_CHECK_STRERROR_R_RC
test so that it doesn't need AC_TRY_RUN() ? I guess by building a
program that expects strerror_r() to return an int and see if it
compiles without errors (with -Werror), it should allow finding out if
strerror_r() returns an int or a char* without AC_TRY_RUN. This would
allow the test to work for cross-compilation, without having to
explicitly feed a ac_cv_strerror_r_rc_int value.

Thomas
Peter Korsgaard Aug. 30, 2024, 1:59 p.m. UTC | #3
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > strerror_r on musl always returns an int since its addition back in 2011
 > with
 > https://git.musl-libc.org/cgit/musl/commit/src/string/strerror_r.c?id=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01

 > As a result, setting ac_cv_strerror_r_rc_int to no results in the
 > following build failure since bump to version 1.7.2 in commit
 > 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1:

 > misc/unix/errorcodes.c: In function 'native_strerror':
 > misc/unix/errorcodes.c:385:9: error: assignment to 'const char *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
 >   385 |     msg = strerror_r(statcode, buf, bufsize);
 >       |         ^

 > Fixes: 783cd8d90d37b5e0b59d6f0bfca6667855b2b9e1
 >  - http://autobuild.buildroot.org/results/9a42a4427ff64d47da61c731abb99d7585781cdd

 > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

Committed to 2024.02.x and 2024.05.x, thanks.
diff mbox series

Patch

diff --git a/package/apr/apr.mk b/package/apr/apr.mk
index cb8c12dd65..d4526a4172 100644
--- a/package/apr/apr.mk
+++ b/package/apr/apr.mk
@@ -39,7 +39,7 @@  APR_CONF_ENV = \
 	ac_cv_sizeof_struct_iovec=8 \
 	ac_cv_sizeof_pid_t=4 \
 	ac_cv_struct_rlimit=yes \
-	ac_cv_strerror_r_rc_int=no \
+	ac_cv_strerror_r_rc_int=$(if $(BR2_TOOLCHAIN_USES_MUSL),yes,no) \
 	ac_cv_o_nonblock_inherited=no \
 	apr_cv_mutex_recursive=yes \
 	apr_cv_epoll=yes \