Source: zeromq3 Version: 4.0.5+dfsg-2 Severity: Important Tags: patch User: debian-h...@lists.debian.org Usertags: hurd
Attached are patches for adding GNU/Hurd to the list of supported architectures for zeromq3. I have tried bot the select and poll versions, same result. Libraries needed to run the dynamically linked lt-test_regrep_ipc excutable are: libzmq.so.3.1.0 (not included here 3.2 MiB), libpgm-5.1-0 and libsodium13. Failing test programs are test_abstract_ipc, test_pair_ipc, test_reqrep_ipc, the first should exit with an assertion, the other two due to a missing implementation of option SO_ERROR for getsockopt. The attached test program makes sshd (all ssh connections) freeze hard, either by running twice, or once and then removing the created socket /tmp/tester. Breaking the ssh connection(s) and logging in again, everything works normally. rpctrace shows that the failure happens at unlink: 110<--141(pid1186)->dir_lookup ("tmp" 0 0) = 0 1 "" <freeze here> 183<--185(pid1186)->dir_unlink ("tester") = 0 More rpctrace data is at: http://paste.debian.net/129009/ (as long as it stays there, 24 hours?) Building the package (and running the testsuite) hangs even if the patch adds XFAIL for the three failing tests. Logging in via ssh and building creates the freeze above, and building in the Hurd console of qemu results in a translator dying: Resource lost. Debugging with gdb is fine until the function __dir_unlink RPC_dir_unlink.c is called, which hangs. Doing the same on another (ordinary file) in /tmp follows the same path (and __dir_unlink succeeds). The problems are probably created before the RPC call?? Any further ideas or pointers are welcome. Thanks!
Index: zeromq3-4.0.5+dfsg/configure.ac =================================================================== --- zeromq3-4.0.5+dfsg.orig/configure.ac +++ zeromq3-4.0.5+dfsg/configure.ac @@ -115,6 +115,7 @@ libzmq_dso_visibility="yes" libzmq_on_mingw32="no" libzmq_on_android="no" libzmq_on_linux="no" +libzmq_on_gnu="no" # Set some default features required by 0MQ code. CPPFLAGS="-D_REENTRANT -D_THREAD_SAFE $CPPFLAGS" @@ -249,6 +250,17 @@ case "${host_os}" in AC_MSG_ERROR([Building static libraries is not supported under Cygwin]) fi ;; + gnu*) + # Define on GNU/Hurd to enable all library features. Define if using a gnu compiler + if test "x$GXX" = "xyes"; then + CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" + fi + AC_DEFINE(ZMQ_HAVE_GNU, 1, [Have GNU/Hurd OS]) + libzmq_on_gnu="yes" + AC_CHECK_LIB(rt, sem_init) + AC_CHECK_LIB(uuid, uuid_generate, , + [AC_MSG_ERROR([cannot link with -luuid, install uuid-dev.])]) + ;; *) AC_MSG_ERROR([unsupported system: ${host_os}.]) ;; @@ -431,6 +443,7 @@ AM_CONDITIONAL(BUILD_PGM, test "x$libzmq AM_CONDITIONAL(ON_MINGW, test "x$libzmq_on_mingw32" = "xyes") AM_CONDITIONAL(ON_ANDROID, test "x$libzmq_on_android" = "xyes") AM_CONDITIONAL(ON_LINUX, test "x$libzmq_on_linux" = "xyes") +AM_CONDITIONAL(ON_GNU, test "x$libzmq_on_gnu" = "xyes") # Checks for library functions. AC_TYPE_SIGNAL Index: zeromq3-4.0.5+dfsg/src/poller.hpp =================================================================== --- zeromq3-4.0.5+dfsg.orig/src/poller.hpp +++ zeromq3-4.0.5+dfsg/src/poller.hpp @@ -73,6 +73,13 @@ #elif defined ZMQ_HAVE_CYGWIN #define ZMQ_USE_SELECT #include "select.hpp" +#elif defined ZMQ_HAVE_GNU +/* +#define ZMQ_USE_SELECT +#include "select.hpp" +*/ +#define ZMQ_USE_POLL +#include "poll.hpp" #else #error Unsupported platform #endif Index: zeromq3-4.0.5+dfsg/tests/Makefile.am =================================================================== --- zeromq3-4.0.5+dfsg.orig/tests/Makefile.am +++ zeromq3-4.0.5+dfsg/tests/Makefile.am @@ -100,4 +100,7 @@ TESTS = $(noinst_PROGRAMS) if !ON_LINUX XFAIL_TESTS = test_abstract_ipc +if ON_GNU +XFAIL_TESTS += test_pair_ipc test_reqrep_ipc +endif endif
lt-test_reqrep_ipc
Description: application/executable