[tlbuild] texlive 2011 build on aix 4.3 - strnlen(3) is used by lcdf-typetools but it is missing or broken on AIX

Eddie Kohler kohler at cs.ucla.edu
Mon Jun 13 21:27:33 CEST 2011


Thanks for this, I believe the next release will have a fix.

Best,
E


On 06/13/2011 11:37 AM, Vladimir Volovich wrote:
> Hi!
>
> on AIX 4.3, I had to apply the following (quick and dirty) patch to
> compile lcdf-typetools:
>
> ===============================
> --- texk/lcdf-typetools/liblcdf/error.cc.orig
> +++ texk/lcdf-typetools/liblcdf/error.cc
> @@ -34,6 +34,12 @@
>   # endif
>   #endif
>
> +		static size_t strnlen(const char *s, size_t n)
> +		{
> +			const char *p = (const char *)memchr(s, 0, n);
> +			return p ? p - s : n;
> +		}
> +
>   /** @file error.hh
>    * @brief Flexible error handling classes.
>    */
> ===============================
>
> Without the patch, i was getting compile error:
>
> source='../../../../texk/lcdf-typetools/liblcdf/error.cc' object='error.o' libtool=no \
>          DEPDIR=.deps depmode=aix /bin/bash ../../../../texk/lcdf-typetools/../../build-aux/depcomp \
>          xlC  -DHAVE_CONFIG_H -I. -I../../../../texk/lcdf-typetools/liblcdf -I.. -I../../../../texk/lcdf-typetools/include  -I/opt/freeware/include -DUSE_STDLIB_WORKAROUNDS  -O2 -qmaxmem=262144 -qarch=com -qlanglvl=extended -c -o error.o ../../../../texk/lcdf-typetools/liblcdf/error.cc
> "../../../../texk/lcdf-typetools/liblcdf/error.cc", line 491.23: 1540-0274 (S) The name lookup for "strnlen" did not find a declaration.
> gmake[5]: *** [error.o] Error 1
> gmake[5]: Leaving directory `/usr/local/vvv/src/source/Work/texk/lcdf-typetools/liblcdf'
>
> The following pages contain information that strnlen is missing or
> broken on AIX 4.3:
>
> https://bugzilla.samba.org/show_bug.cgi?id=1097
> https://attachments.samba.org/attachment.cgi?id=416
>
> and they provide some autoconf checks for this, and use the following
> replacement when it is missing or broken:
>
> #if !defined(HAVE_STRNLEN) || defined(HAVE_BROKEN_STRNLEN)
> 		static size_t strnlen(const char *s, size_t n)
> 		{
> 			const char *p = (const char *)memchr(s, 0, n);
> 			return p ? p - s : n;
> 		}
> #endif /* HAVE_STRNLEN */
>
> Best wishes,
> v.


More information about the tlbuild mailing list