On (17/10/18 12:01), Mark Reynolds wrote:
On 10/17/18 11:27 AM, Brian Matheson wrote:
> Hi list,
>
> I'm attempting th build 389ds with gperftools under alpine linux, but
> have run into the following snag:
>
> /BUILD # make
> make all-am
> make[1]: Entering directory '/BUILD'
> /bin/bash ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I.
> -I../389-ds-base -DBUILD_NUM=\"2018.290.1518\"
> -DVENDOR="\"389 Project\"" -DBRAND="\"389\""
-DCAPBRAND="\"389\""
> -UPACKAGE_VERSION -UPACKAGE_TARNAME -UPACKAGE_STRING
> -UPACKAGE_BUGREPORT -I../389-ds-base/ldap/include
> -I../389-ds-base/ldap/servers/slapd -I../389-ds-base/include -I.
> -I../389-ds-base/src/nunc-stans/include/
-DLOCALSTATEDIR="\"/var\""
> -DSYSCONFDIR="\"/etc\""
-DLIBDIR="\"/usr/lib64\""
> -DBINDIR="\"/usr/bin\""
-DDATADIR="\"/usr/share\""
> -DDOCDIR="\"/usr/share/doc/389-ds-base\""
-DSBINDIR="\"/usr/sbin\""
> -DPLUGINDIR="\"/usr/lib64/dirsrv/plugins\""
> -DTEMPLATEDIR="\"/usr/share/dirsrv/data\""
> -DSYSTEMSCHEMADIR="\"/usr/share/dirsrv/schema\""
> -I../389-ds-base/src/nunc-stans/include/ -I/usr/include
> -I/usr/include/nss -I/usr/include/nspr -I/usr/include/nspr
> -I/usr/include/sasl -I/usr/include -I/usr/include
> -I../389-ds-base/src/libsds/include/
> -I../389-ds-base/src/libsds/external/ -I/usr/include/nspr
> -I../389-ds-base/src/svrcore/src/ -g -pipe -Wall -fexceptions
> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -MT
> ldap/servers/slapd/libslapd_la-libglobs.lo -MD -MP -MF
> ldap/servers/slapd/.deps/libslapd_la-libglobs.Tpo -c -o
> ldap/servers/slapd/libslapd_la-libglobs.lo `test -f
> 'ldap/servers/slapd/libglobs.c' || echo
> '../389-ds-base/'`ldap/servers/slapd/libglobs.c
> libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../389-ds-base
> -DBUILD_NUM=\"2018.290.1518\" "-DVENDOR=\"389
Project\""
> -DBRAND=\"389\" -DCAPBRAND=\"389\" -UPACKAGE_VERSION
-UPACKAGE_TARNAME
> -UPACKAGE_STRING -UPACKAGE_BUGREPORT -I../389-ds-base/ldap/include
> -I../389-ds-base/ldap/servers/slapd -I../389-ds-base/include -I.
> -I../389-ds-base/src/nunc-stans/include/ -DLOCALSTATEDIR=\"/var\"
> -DSYSCONFDIR=\"/etc\" -DLIBDIR=\"/usr/lib64\"
-DBINDIR=\"/usr/bin\"
> -DDATADIR=\"/usr/share\" -DDOCDIR=\"/usr/share/doc/389-ds-base\"
> -DSBINDIR=\"/usr/sbin\"
-DPLUGINDIR=\"/usr/lib64/dirsrv/plugins\"
> -DTEMPLATEDIR=\"/usr/share/dirsrv/data\"
> -DSYSTEMSCHEMADIR=\"/usr/share/dirsrv/schema\"
> -I../389-ds-base/src/nunc-stans/include/ -I/usr/include
> -I/usr/include/nss -I/usr/include/nspr -I/usr/include/nspr
> -I/usr/include/sasl -I/usr/include -I/usr/include
> -I../389-ds-base/src/libsds/include/
> -I../389-ds-base/src/libsds/external/ -I/usr/include/nspr
> -I../389-ds-base/src/svrcore/src/ -g -pipe -Wall -fexceptions
> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -MT
> ldap/servers/slapd/libslapd_la-libglobs.lo -MD -MP -MF
> ldap/servers/slapd/.deps/libslapd_la-libglobs.Tpo -c
> ../389-ds-base/ldap/servers/slapd/libglobs.c -fPIC -DPIC -o
> ldap/servers/slapd/.libs/libslapd_la-libglobs.o
> ../389-ds-base/ldap/servers/slapd/libglobs.c: In function
> 'config_set_malloc_mxfast':
> ../389-ds-base/ldap/servers/slapd/libglobs.c:8107:9: warning: implicit
> declaration of function 'mallopt' [-Wimplicit-function-declaration]
> mallopt(M_MXFAST, mxfast);
> ^~~~~~~
> ../389-ds-base/ldap/servers/slapd/libglobs.c:8107:17: error:
> 'M_MXFAST' undeclared (first use in this function)
> mallopt(M_MXFAST, mxfast);
> ^~~~~~~~
> ../389-ds-base/ldap/servers/slapd/libglobs.c:8107:17: note: each
> undeclared identifier is reported only once for each function it
> appears in
> ../389-ds-base/ldap/servers/slapd/libglobs.c: In function
> 'config_set_malloc_trim_threshold':
> ../389-ds-base/ldap/servers/slapd/libglobs.c:8147:17: error:
> 'M_TRIM_THRESHOLD' undeclared (first use in this function)
> mallopt(M_TRIM_THRESHOLD, trim_threshold);
> ^~~~~~~~~~~~~~~~
> ../389-ds-base/ldap/servers/slapd/libglobs.c: In function
> 'config_set_malloc_mmap_threshold':
> ../389-ds-base/ldap/servers/slapd/libglobs.c:8194:17: error:
> 'M_MMAP_THRESHOLD' undeclared (first use in this function)
> mallopt(M_MMAP_THRESHOLD, mmap_threshold);
> ^~~~~~~~~~~~~~~~
> make[1]: *** [Makefile:9925: ldap/servers/slapd/libslapd_la-libglobs.lo] Error 1
> make[1]: Leaving directory '/BUILD'
> make: *** [Makefile:4491: all] Error 2
>
> I'm using the attached Dockerfile to conduct the build. Not sure what
> other info you might find relevant, but please let me know if there's
> more I can provide, or if I should ask on a different list.
>
> Is there a way around this?
Hi Brian,
Is M_MMAP_THRESHOLD defined in /usr/include/malloc.h?
It is on Fedora/RHEL:
include/malloc.h:#define M_MMAP_THRESHOLD -3
The workaround would be to explicitly define M_MMAP_THRESHOLD in libglobs.c
I would say the biggest issue is that thefunction mallopt is implicitely
defined. I assume it is cause by different implementation onf libc in alpine
linux (uclibc instead of glibc)
https://wiki.alpinelinux.org/wiki/Running_glibc_programs
LS