Hi Eddy,

as I have already told you in the issue you’ve created, there error when 
building comes from the configure step. The way you mangle LIBUV_CFLAGS and 
LIBUV_LDFLAGS is wrong. You need to set correct PKG_CONFIG_PATH (to patch that 
contains libuv.pc), so configure finds libuv.

To fix the runtime problem you need to configure dynamic linker to find the 
libuv library. (Or use rpath linker option.)

Actually both problems stems from the fact that you installed libuv into 
nonstandard location. I would suggest to use homebrew or macports to install 
the dependencies.

Ondrej
--
Ondřej Surý — ISC

> On 28 Apr 2020, at 19:37, Eddy Hahn <eddyh...@hotmail.com> wrote:
> 
>  Hi,
> 
> I got the latest source and build tools. 
> 
> 1) autorecon -If. WORKED!
> 
> 2) configure WORKED!
> 
>       LIBUV_LIBS="-L$/dependencies/libuv/lib" 
> LIBUV_CFLAGS="-I$/dependencies/libuv/include" 
> CPPFLAGS=“-I$/dependencies/libuv/include" LDFLAGS='-flat_namespace 
> -force_flat_namespace' ./configure --prefix=“/opt/target" 
> --with-openssl="/dependencies/openssl" --disable-pthread-rwlock 
> --with-libxml2=no --enable-full-report
> 
> 
> There are two issues
> 
> 1) make - FAILS
> 
>       it fails because the declaration of the uv_handle_get_data and 
> uv_handle_set_data does not match the declaration between uv-compat.h and  
> uv.h
> 
> In file included from netmgr/netmgr.c:33:
> In file included from netmgr/netmgr-int.h:34:
> netmgr/uv-compat.h:24:1: error: static declaration of 'uv_handle_get_data' 
> follows non-static declaration
> uv_handle_get_data(const uv_handle_t *handle) {
> ^
> /opt/serverplus/dependencies/libuv/include/uv.h:448:17: note: previous 
> declaration is here
> UV_EXTERN void* uv_handle_get_data(const uv_handle_t* handle);
>                 ^
> In file included from netmgr/netmgr.c:33:
> In file included from netmgr/netmgr-int.h:34:
> netmgr/uv-compat.h:31:1: error: static declaration of 'uv_handle_set_data' 
> follows non-static declaration
> uv_handle_set_data(uv_handle_t *handle, void *data) {
> ^
> /opt/serverplus/dependencies/libuv/include/uv.h:450:16: note: previous 
> declaration is here
> UV_EXTERN void uv_handle_set_data(uv_handle_t* handle, void* data);
>                ^
> 2 errors generated.
> make[4]: *** [netmgr/libisc_la-netmgr.lo] Error 1
> make[3]: *** [all-recursive] Error 1
> make[2]: *** [all-recursive] Error 1
> make[1]: *** [all-recursive] Error 1
> make: *** [all] Error 2
> 
> 
> If I move the declaration from uv-compat.h to uv-compat.c then it compile and 
> we removed the inlining.
> 
> Comment out these:
> 
> #ifndef HAVE_UV_HANDLE_GET_DATA
> static inline void *
> uv_handle_get_data(const uv_handle_t *handle) {
>         return (handle->data);
> }
> #endif /* ifndef HAVE_UV_HANDLE_GET_DATA */
> 
> #ifndef HAVE_UV_HANDLE_SET_DATA
> static inline void
> uv_handle_set_data(uv_handle_t *handle, void *data) {
>         handle->data = data;
> }
> #endif /* ifndef HAVE_UV_HANDLE_SET_DATA */
> 
> Add to uv-compat.c
> 
> #ifndef HAVE_UV_HANDLE_GET_DATA
> UV_EXTERN void *
> uv_handle_get_data(const uv_handle_t *handle) {
>         return (handle->data);
> }
> #endif /* ifndef HAVE_UV_HANDLE_GET_DATA */
> 
> #ifndef HAVE_UV_HANDLE_SET_DATA
> UV_EXTERN void
> uv_handle_set_data(uv_handle_t *handle, void *data) {
>         handle->data = data;
> }
> #endif /* ifndef HAVE_UV_HANDLE_SET_DATA */
> 
> 
> 
> 2) deployed executable fails to load lib (deployed using make install)
> 
> Once the binaries are built and try to start the named up receive the 
> following error
> 
> ./named -c /named.conf -f -d4
> 
> 
> dyld: lazy symbol binding failed: Symbol not found: _uv_loop_init
>   Referenced from: <full path herer>lib/libisc.1701.dylib
>   Expected in: flat namespace
> 
> dyld: Symbol not found: _uv_loop_init
>   Referenced from: <full path here>lib/libisc.1701.dylib
>   Expected in: flat namespace
> 
> 
> So, it has something to do with flat namespaces vs. two level namespaces. I 
> have tried to add the linker option per macOS documentation as 
> LDFLAGS='-flat_namespace -force_flat_namespace’ but the executables and 
> libraries still have to level namespaces
> 
> Tried to force lib to have flat level as well
> 
> otool -hV  <full path here>/lib/libuv.dylib                                   
>           
> 
> Mach header
>       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
> MH_MAGIC_64  X86_64        ALL  0x00       DYLIB    14       1640   NOUNDEFS 
> DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS
> 
> 
> otool -hV <full path here>/lib/libisc.1701.dylib
> Mach header
>       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
> MH_MAGIC_64  X86_64        ALL  0x00       DYLIB    15       1952   NOUNDEFS 
> DYLDLINK TWOLEVEL NO_REEXPORTED_DYLIBS MH_HAS_TLV_DESCRIPTORS
> 
> 
> Can problem #1 fixed in source?
> Does anyone have any idea how fix #2?
> 
> 
> Thanks,
> 
> 
> Eddy
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
> from this list
> 
> bind-users mailing list
> bind-users@lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind-users
_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
from this list

bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to