Message ID | ZNOMtm7TTVd12BQ3@waldemar-brodkorb.de |
---|---|
State | Rejected |
Headers | show |
Series | package/perl: threads support needs locales | expand |
On Wed, 9 Aug 2023 14:55:18 +0200 Waldemar Brodkorb <wbx@openadk.org> wrote: > The thread support in perl needs locales enabled in the C library. > Otherwise it fails with: > POSIX.xs:3386:13: error: 'MBLEN_LOCK' undeclared (first use in this function); did you mean 'MUTEX_LOCK'? Doesn't that seem really really weird, that thread support would depend on locale support? If we look at perl.h, which defines MBLEN_LOCK, we see something like this: /* Locale/thread synchronization macros. */ #if ! ( defined(USE_LOCALE) \ && defined(USE_ITHREADS) \ && ( ! defined(USE_THREAD_SAFE_LOCALE) \ || ( defined(HAS_LOCALECONV) \ && ( ! defined(HAS_LOCALECONV_L) \ || defined(TS_W32_BROKEN_LOCALECONV))) \ || ( defined(HAS_NL_LANGINFO) \ && ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L)) \ || (defined(HAS_MBLEN) && ! defined(HAS_MBRLEN)) \ || (defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC)) \ || (defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB)))) [...] # define MBLEN_LOCK NOOP [...] #else [...] # if defined(HAS_MBLEN) && ! defined(HAS_MBRLEN) # define MBLEN_LOCK LOCALE_LOCK_ # define MBLEN_UNLOCK LOCALE_UNLOCK_ [...] Shouldn't the first #define MBLEN_LOCK NOOP correspond to our case where no locale support is available? There was a massive rework of this stuff in upstream commit https://github.com/Perl/perl5/commit/d9e22c6a8a05aab7fffdbf810f74ddfcb4efd752, which perhaps broke things. I think I'll apply your patch anyway. I don't care very much about !locale configs, and debugging the internals of Perl is beyond my motivation. Thomas
Waldemar, All, On 2023-08-09 14:55 +0200, Waldemar Brodkorb spake thusly: > The thread support in perl needs locales enabled in the C library. > Otherwise it fails with: > POSIX.xs:3386:13: error: 'MBLEN_LOCK' undeclared (first use in this function); did you mean 'MUTEX_LOCK'? > > This failure was introduced in commit 7c1ef8129f37200b046750c6405ecd304fd4f1bf which upgraded > perl to 5.34.0. > > Fixes: > - http://autobuild.buildroot.net/results/13d/13d66e281cb4778f7498f909f5f7c65d4b28bcbb/ > > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> It's been a little while, but I can't reproduce that build failure on the newer perl versions we have in the tree now. Besides, as Thomas spotted, it is dubious that locales has anything to do with threads. Myabe that was an oversight from upstream that was fixed in later versions. Anyway, not reproducible, so I marked this patch as rejected. Thanks, and sorry for the long delay in replying... Regards, Yann E. MORIN. > --- > package/perl/Config.in | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/package/perl/Config.in b/package/perl/Config.in > index 0ead1c4a46..9eb6334b9e 100644 > --- a/package/perl/Config.in > +++ b/package/perl/Config.in > @@ -27,6 +27,7 @@ config BR2_PACKAGE_PERL_MODULES > config BR2_PACKAGE_PERL_THREADS > bool "thread support" > depends on BR2_TOOLCHAIN_HAS_THREADS > + depends on BR2_ENABLE_LOCALE > help > Enable use of threads in Perl scripts > > @@ -34,4 +35,7 @@ config BR2_PACKAGE_PERL_THREADS > is officially discouraged. > See https://perldoc.perl.org/threads.html#WARNING > > +comment "Threads support needs locales" > + depends on !BR2_ENABLE_LOCALE > + > endif > -- > 2.39.2 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/package/perl/Config.in b/package/perl/Config.in index 0ead1c4a46..9eb6334b9e 100644 --- a/package/perl/Config.in +++ b/package/perl/Config.in @@ -27,6 +27,7 @@ config BR2_PACKAGE_PERL_MODULES config BR2_PACKAGE_PERL_THREADS bool "thread support" depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_ENABLE_LOCALE help Enable use of threads in Perl scripts @@ -34,4 +35,7 @@ config BR2_PACKAGE_PERL_THREADS is officially discouraged. See https://perldoc.perl.org/threads.html#WARNING +comment "Threads support needs locales" + depends on !BR2_ENABLE_LOCALE + endif
The thread support in perl needs locales enabled in the C library. Otherwise it fails with: POSIX.xs:3386:13: error: 'MBLEN_LOCK' undeclared (first use in this function); did you mean 'MUTEX_LOCK'? This failure was introduced in commit 7c1ef8129f37200b046750c6405ecd304fd4f1bf which upgraded perl to 5.34.0. Fixes: - http://autobuild.buildroot.net/results/13d/13d66e281cb4778f7498f909f5f7c65d4b28bcbb/ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> --- package/perl/Config.in | 4 ++++ 1 file changed, 4 insertions(+)