Hi, 

Firstly, thanks for the reply & for fixing those warnings. 

In response to your question:
I have tried to use the lib (I mentioned this in the original post, but 
should've stated it more prominently) and not much is working. I've tried 
three things so far:

1. Running an idle loop that spams to the console

Result: I can run the idle loop & print stuff just fine.

 
2. The libuv socket example 
(http://nikhilm.github.io/uvbook/networking.html). I'm just creating a 
socket server then connecting to it via my mac's terminal & netcat (this is 
something we do for our development builds with a non-libuv socket server, 
so I'm fairly sure the connection/network configuration is correct when 
using nc).

Result: I can't connect. uv_listen returns -13 (*Listen error permission 
denied*). 

 
3. A libcurl / libuv test program (basically this: 
https://raw.githubusercontent.com/bagder/curl/master/docs/examples/multi-uv.c 
but 
using callbacks for the write -- I have the same example working on iOS) 

Result: Some of the plumbing appears to trigger. The curl socket callbacks 
don't trigger, but my requests come through as completing, but with no 
valid information (e.g. after I receive a CURLMSG_DONE message, 
curl_easy_getinfo(easy_handle, *....*) doesn't tell me anything, as the out 
pointers are left unchanged). I'll dig into debugging this a bit more 
tomorrow and let you know what is/isn't triggered.


Tomorrow, I will try to cut down my example programs to a bare minimum then 
attach them to this thread. Also, do you have any suggestions for simple 
scenarios that would aid in diagnosing the problem? If there's anything I 
can do to provide better information, I will get onto that tomorrow.

Thanks for the help -- I appreciate it.

-Mark

On Monday, March 23, 2015 at 4:32:52 PM UTC, Saúl Ibarra Corretgé wrote:
>
> Hi, 
>
> On 03/23/2015 01:56 PM, Mark Simpson wrote: 
> > Hi, 
> > 
> > I've got a few problems with Android, hopefully someone can give me some 
> > pointers. I've not done a huge amount of cross-compiling for android, 
> > but have built a few things successfully (libcurl with openSSL & 
> > C-ARES). Any help/pointers appreciated, cheers. 
> > 
> > *tl;dr summary* 
> > I can't get libuv compiled using gyp, and I can compile libuv using 
> > autotools, but make check fails and my test program doesn't function 
> > correctly if I use this binary. 
> > 
> > *Long version* 
> > I've been doing a bit of prototyping using libuv & libcurl. Thus far, I 
> > have my test program successfully running on iOS and I'm satisfied with 
> > it. I'm now trying to get it running on Android. I've run into problems, 
> > though. 
> > 
> > *Development environment* 
> > Firstly, my development / compile machine's env: 
> > Mac mini, x86_64, OS X Yosemite 10.10.2 
> > Android NDK r10d, with native platform version=9 
> > 
> > *Gyp:* 
> > if I try to go the documented route and use gyp, the make stage fails. 
> > 
> >     *$ source ./android-configure 
> >     /Users/mark.simpson/Development/android-ndk-r10d gyp* 
> >     Copying prebuilt binaries... 
> >     Copying sysroot headers and libraries... 
> >     Copying c++ runtime headers and libraries... 
> >     Copying files to: 
> >     /Users/mark.simpson/built_software/libuv/android-toolchain 
> >     Cleaning up... 
> >     Done. 
> >     ['-Dtarget_arch=arm', '-DOS=android', 
> >     '/Users/mark.simpson/built_software/libuv/uv.gyp', '-I', 
> >     '/Users/mark.simpson/built_software/libuv/common.gypi', '--depth=.', 
> >     '-f', 'make', 
> >     '-Goutput_dir=/Users/mark.simpson/built_software/libuv/out', 
> >     '--generator-output', 
> >     '/Users/mark.simpson/built_software/libuv/out', '-Dhost_arch=x64', 
> >     '-Duv_library=static_library', '-Dcomponent=static_library'] 
> > 
> > 
> > The only modification I've made to the android-configure script is 
> > adding --stl=gnustil, and this is just so that the toolchain mirrors 
> > what I've used to build my other android libs. I've already 
> > cross-compiled libcurl & its dependencies and that's working fine. 
> > 
> >     *$ echo $PATH 
> >     
> */Users/mark.simpson/built_software/libuv/android-toolchain/bin:*rest_of_my_path*
>  
>
> > 
> >   
> > 
> >     *$ make -C out 
> >     * CC(target) 
> >     
> /Users/mark.simpson/built_software/libuv/out/Debug/obj.target/libuv/src/fs-poll.o
>  
>
> >     arm-linux-androideabi-gcc: error: x86_64: No such file or directory 
> >     arm-linux-androideabi-gcc: error: unrecognized command line option 
> >     '-fasm-blocks' 
> >     arm-linux-androideabi-gcc: error: unrecognized command line option 
> >     '-mpascal-strings' 
> >     arm-linux-androideabi-gcc: error: unrecognized command line option 
> >     '-arch' 
> >     make: *** 
> >     
> [/Users/mark.simpson/built_software/libuv/out/Debug/obj.target/libuv/src/fs-poll.o]
>  
>
> >     Error 1 
> > 
> > 
> > After a brief chat on IRC, tjfontaine said it looks like gyp is getting 
> > confused and mixing in compile flags that aren't meant for this type of 
> > cross-compile. He also suggested that gyp sometimes struggles with 
> > cross-compile scenarios, and it would probably be a good bet to go the 
> > autotools route. Given that I know absolutely nothing about gyp, I went 
> > down the autotools route next. 
> > 
>
> There was a hack somewhere in joyent/libuv to make it work on OSX, but 
> IIRC this was a problem with GYP on OSX, it does work on Linux. 
>
> > *Autotools:* 
> > When I go the autotools route, make runs without error, but make check 
> > fails and my test program doesn't function correctly. 
> > 
> >     *$ sh autogen.sh 
> >     *+ glibtoolize 
> >     + aclocal -I m4 
> >     + autoconf 
> >     + automake --add-missing --copy 
> > 
> >     *$ ./configure --build=x86_64-apple-darwin 
> >     --host=arm-linux-androideabi --with-sysroot=$ANDROID_SYSROOT 
> >     --prefix /Users/mark.simpson/built_software/libuv_compile/* 
> >     checking for a BSD-compatible install... /usr/bin/install -c 
> >     checking whether build environment is sane... yes 
> >     checking for arm-linux-androideabi-strip... 
> arm-linux-androideabi-strip 
> >     checking for a thread-safe mkdir -p... ./install-sh -c -d 
> >     checking for gawk... no 
> >     checking for mawk... no 
> >     checking for nawk... no 
> >     checking for awk... awk 
> >     checking whether make sets $(MAKE)... yes 
> >     checking whether make supports nested variables... yes 
> >     checking build system type... x86_64-apple-darwin 
> >     checking host system type... arm-unknown-linux-androideabi 
> >     checking for arm-linux-androideabi-gcc... arm-linux-androideabi-gcc 
> >     checking whether the C compiler works... yes 
> >     checking for C compiler default output file name... a.out 
> >     checking for suffix of executables... 
> >     checking whether we are cross compiling... yes 
> >     checking for suffix of object files... o 
> >     checking whether we are using the GNU C compiler... yes 
> >     checking whether arm-linux-androideabi-gcc accepts -g... yes 
> >     checking for arm-linux-androideabi-gcc option to accept ISO C89... 
> >     none needed 
> >     checking whether arm-linux-androideabi-gcc understands -c and -o 
> >     together... yes 
> >     checking for style of include used by make... GNU 
> >     checking dependency style of arm-linux-androideabi-gcc... gcc3 
> >     checking if arm-linux-androideabi-gcc supports -fvisibility=hidden 
> >     flag... yes 
> >     checking if arm-linux-androideabi-gcc supports -g flag... yes 
> >     checking if arm-linux-androideabi-gcc supports -std=gnu89 flag... 
> yes 
> >     checking if arm-linux-androideabi-gcc supports -pedantic flag... yes 
> >     checking if arm-linux-androideabi-gcc supports -Wall flag... yes 
> >     checking if arm-linux-androideabi-gcc supports -Wextra flag... yes 
> >     checking if arm-linux-androideabi-gcc supports -Wno-unused-parameter 
> >     flag... yes 
> >     checking for arm-linux-androideabi-ar... arm-linux-androideabi-ar 
> >     checking the archiver (arm-linux-androideabi-ar) interface... ar 
> >     checking how to print strings... printf 
> >     checking for a sed that does not truncate output... /usr/bin/sed 
> >     checking for grep that handles long lines and -e... /usr/bin/grep 
> >     checking for egrep... /usr/bin/grep -E 
> >     checking for fgrep... /usr/bin/grep -F 
> >     checking for ld used by arm-linux-androideabi-gcc... 
> >     
> /Users/mark.simpson/built_software/libuv/android-toolchain/arm-linux-androideabi/bin/ld
>  
>
> >     checking if the linker 
> >     
> (/Users/mark.simpson/built_software/libuv/android-toolchain/arm-linux-androideabi/bin/ld)
>  
>
> >     is GNU ld... yes 
> >     checking for BSD- or MS-compatible name lister (nm)... 
> >     
> /Users/mark.simpson/built_software/libuv/android-toolchain/bin/arm-linux-androideabi-nm
>  
>
> >     -B 
> >     checking the name lister 
> >     
> (/Users/mark.simpson/built_software/libuv/android-toolchain/bin/arm-linux-androideabi-nm
>  
>
> >     -B) interface... BSD nm 
> >     checking whether ln -s works... yes 
> >     checking the maximum length of command line arguments... 196608 
> >     checking how to convert x86_64-apple-darwin file names to 
> >     arm-unknown-linux-androideabi format... func_convert_file_noop 
> >     checking how to convert x86_64-apple-darwin file names to toolchain 
> >     format... func_convert_file_noop 
> >     checking for 
> >     
> /Users/mark.simpson/built_software/libuv/android-toolchain/arm-linux-androideabi/bin/ld
>  
>
> >     option to reload object files... -r 
> >     checking for arm-linux-androideabi-objdump... 
> >     arm-linux-androideabi-objdump 
> >     checking how to recognize dependent libraries... pass_all 
> >     checking for arm-linux-androideabi-dlltool... no 
> >     checking for dlltool... no 
> >     checking how to associate runtime and link libraries... printf %s\n 
> >     checking for arm-linux-androideabi-ar... (cached) 
> >     arm-linux-androideabi-ar 
> >     checking for archiver @FILE support... @ 
> >     checking for arm-linux-androideabi-strip... (cached) 
> >     arm-linux-androideabi-strip 
> >     checking for arm-linux-androideabi-ranlib... 
> >     arm-linux-androideabi-ranlib 
> >     checking command to parse 
> >     
> /Users/mark.simpson/built_software/libuv/android-toolchain/bin/arm-linux-androideabi-nm
>  
>
> >     -B output from arm-linux-androideabi-gcc object... ok 
> >     checking for sysroot... 
> >     
> /Users/mark.simpson/Development/android-ndk-r10d/platforms/android-9/arch-arm 
>
> >     checking for a working dd... /bin/dd 
> >     checking how to truncate binary pipes... /bin/dd bs=4096 count=1 
> >     checking for arm-linux-androideabi-mt... no 
> >     checking for mt... no 
> >     checking if : is a manifest tool... no 
> >     checking how to run the C preprocessor... arm-linux-androideabi-gcc 
> -E 
> >     checking for ANSI C header files... yes 
> >     checking for sys/types.h... yes 
> >     checking for sys/stat.h... yes 
> >     checking for stdlib.h... yes 
> >     checking for string.h... yes 
> >     checking for memory.h... yes 
> >     checking for strings.h... yes 
> >     checking for inttypes.h... yes 
> >     checking for stdint.h... yes 
> >     checking for unistd.h... yes 
> >     checking for dlfcn.h... yes 
> >     checking for objdir... .libs 
> >     checking if arm-linux-androideabi-gcc supports -fno-rtti 
> >     -fno-exceptions... no 
> >     checking for arm-linux-androideabi-gcc option to produce PIC... 
> >     -fPIC -DPIC 
> >     checking if arm-linux-androideabi-gcc PIC flag -fPIC -DPIC works... 
> yes 
> >     checking if arm-linux-androideabi-gcc static flag -static works... 
> yes 
> >     checking if arm-linux-androideabi-gcc supports -c -o file.o... yes 
> >     checking if arm-linux-androideabi-gcc supports -c -o file.o... 
> >     (cached) yes 
> >     checking whether the arm-linux-androideabi-gcc linker 
> >     
> (/Users/mark.simpson/built_software/libuv/android-toolchain/arm-linux-androideabi/bin/ld)
>  
>
> >     supports shared libraries... yes 
> >     checking whether -lc should be explicitly linked in... no 
> >     checking dynamic linker characteristics... Android linker 
> >     checking how to hardcode library paths into programs... immediate 
> >     checking whether stripping libraries is possible... yes 
> >     checking if libtool supports shared libraries... yes 
> >     checking whether to build shared libraries... yes 
> >     checking whether to build static libraries... yes 
> >     checking whether make supports nested variables... (cached) yes 
> >     checking for dlopen in -ldl... yes 
> >     checking for kstat_lookup in -lkstat... no 
> >     checking for kvm_open in -lkvm... no 
> >     checking for gethostbyname in -lnsl... no 
> >     checking for perfstat_cpu in -lperfstat... no 
> >     checking for pthread_mutex_init in -lpthread... no 
> >     checking for clock_gettime in -lrt... no 
> >     checking for sendfile in -lsendfile... no 
> >     checking for socket in -lsocket... no 
> >     checking for special C compiler options needed for large files... no 
> >     checking for _FILE_OFFSET_BITS value needed for large files... 
> unknown 
> >     checking for _LARGE_FILES value needed for large files... unknown 
> >     checking for pkg-config... no 
> >     checking that generated files are newer than configure... done 
> >     configure: creating ./config.status 
> >     config.status: creating Makefile 
> >     config.status: executing depfiles commands 
> >     config.status: executing libtool commands 
> > 
> > 
> >     *$ make* 
> >       CC       src/libuv_la-fs-poll.lo 
> >       CC       src/libuv_la-inet.lo 
> >       CC       src/libuv_la-threadpool.lo 
> >       CC       src/libuv_la-uv-common.lo 
> >       CC       src/libuv_la-version.lo 
> >       CC       src/unix/libuv_la-async.lo 
> >       CC       src/unix/libuv_la-core.lo 
> >       CC       src/unix/libuv_la-dl.lo 
> >       CC       src/unix/libuv_la-fs.lo 
> >       CC       src/unix/libuv_la-getaddrinfo.lo 
> >       CC       src/unix/libuv_la-getnameinfo.lo 
> >       CC       src/unix/libuv_la-loop-watcher.lo 
> >       CC       src/unix/libuv_la-loop.lo 
> >       CC       src/unix/libuv_la-pipe.lo 
> >     src/unix/pipe.c: In function 'uv__pipe_getsockpeername': 
> >     src/unix/pipe.c:237:15: warning: comparison between signed and 
> >     unsigned integer expressions [-Wsign-compare] 
> >        if (addrlen > *size) { 
> >                    ^ 
> >       CC       src/unix/libuv_la-poll.lo 
> >       CC       src/unix/libuv_la-process.lo 
> >       CC       src/unix/libuv_la-signal.lo 
> >       CC       src/unix/libuv_la-stream.lo 
> >       CC       src/unix/libuv_la-tcp.lo 
> >       CC       src/unix/libuv_la-thread.lo 
> >       CC       src/unix/libuv_la-timer.lo 
> >       CC       src/unix/libuv_la-tty.lo 
> >       CC       src/unix/libuv_la-udp.lo 
> >       CC       src/unix/libuv_la-android-ifaddrs.lo 
> >     src/unix/android-ifaddrs.c: In function 'getNetlinkResponse': 
> >     src/unix/android-ifaddrs.c:139:9: warning: implicit declaration of 
> >     function 'uv__free' [-Wimplicit-function-declaration] 
> >              uv__free(l_buffer); 
> >              ^ 
>
> I submitted https://github.com/libuv/libuv/pull/285 to fix these 
> warnings. 
>
> >     src/unix/android-ifaddrs.c:140:9: warning: implicit declaration of 
> >     function 'uv__malloc' [-Wimplicit-function-declaration] 
> >              l_buffer = uv__malloc(l_size); 
> >              ^ 
> >     src/unix/android-ifaddrs.c:140:18: warning: assignment makes pointer 
> >     from integer without a cast [enabled by default] 
> >              l_buffer = uv__malloc(l_size); 
> >                       ^ 
> >     src/unix/android-ifaddrs.c: In function 'newListItem': 
> >     src/unix/android-ifaddrs.c:185:27: warning: initialization makes 
> >     pointer from integer without a cast [enabled by default] 
> >          NetlinkList *l_item = uv__malloc(sizeof(NetlinkList)); 
> >                                ^ 
> >     src/unix/android-ifaddrs.c: In function 'interpretLink': 
> >     src/unix/android-ifaddrs.c:351:13: warning: assignment makes pointer 
> >     from integer without a cast [enabled by default] 
> >          l_entry = uv__malloc(sizeof(struct ifaddrs) + sizeof(int) + 
> >     l_nameSize + l_addrSize + l_dataSize); 
> >                  ^ 
> >     src/unix/android-ifaddrs.c: In function 'interpretAddr': 
> >     src/unix/android-ifaddrs.c:480:13: warning: assignment makes pointer 
> >     from integer without a cast [enabled by default] 
> >          l_entry = uv__malloc(sizeof(struct ifaddrs) + l_nameSize + 
> >     l_addrSize); 
> >                  ^ 
> >       CC       src/unix/libuv_la-pthread-fixes.lo 
> >       CC       src/unix/libuv_la-linux-core.lo 
> >       CC       src/unix/libuv_la-linux-inotify.lo 
> >       CC       src/unix/libuv_la-linux-syscalls.lo 
> >       CC       src/unix/libuv_la-proctitle.lo 
> >       CCLD     libuv.la 
> > 
> > 
> > *$ make check* 
> > lots of warnings like: 
> > test/task.h:80:13: warning: anonymous variadic macros were introduced in 
> > C99 [-Wvariadic-macros] (should I be specifying C99 somewhere?) 
> > 
> > then... 
> > 
> > *test/test-signal-multiple-loops.c:248: error: undefined reference to 
> > 'uv__pthread_sigmask'* 
> > collect2: error: ld returned 1 exit status 
> > make[1]: *** [test/run-tests] Error 1 
> > make: *** [check-am] Error 2 
> > 
>
> A quick search shows that pthread_sigmask might not be supported 
> proberly on Andoird. We might need to skip the test there. 
>
> > So basically, I'm a bit stumped now. Hopefully I'm just making some sort 
> > of newbie CC error. Any help appreciated. 
> > 
>
> Well, the fact that tests don't run doesn't mean that libuv doesn't 
> work. Have you tried using the resulting library from the autoconf 
> build? Any problems there? 
>
>
> Cheers, 
>
> -- 
> Saúl Ibarra Corretgé 
> bettercallsaghul.com 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to