mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 10:52:56 +01:00
z/OS: Updated portability notes
Updated: builds/zos/README.md: Updated with portability notes resulting from building zeromq/libzmq/master as of 2014-07-23 on z/OS UNIX System Services. Current z/OS UNIX status: all expected tests pass, except "test_proxy", which hangs and times out.
This commit is contained in:
parent
f1cd2055de
commit
326dec067f
@ -12,6 +12,8 @@ Tested build combinations:
|
|||||||
|
|
||||||
* ZeroMQ 4.0.4, using IBM XL C/C++ compiler, as XPLINK in LP64 mode
|
* ZeroMQ 4.0.4, using IBM XL C/C++ compiler, as XPLINK in LP64 mode
|
||||||
|
|
||||||
|
* ZeroMQ 4.1-git, using IBM XL C/C++ compiler, as XPLINK in ILP32 mode
|
||||||
|
|
||||||
Other combinations are likely to work, possibly with minor changes,
|
Other combinations are likely to work, possibly with minor changes,
|
||||||
but have not been tested. Both static library and DLL modes have been
|
but have not been tested. Both static library and DLL modes have been
|
||||||
tested.
|
tested.
|
||||||
@ -201,9 +203,18 @@ pass. There are two tests that are expected to fail:
|
|||||||
programs -- most programs use threads or fork without exec, but
|
programs -- most programs use threads or fork without exec, but
|
||||||
not both.
|
not both.
|
||||||
|
|
||||||
These two "expected to fail" tests are listed as XFAIL_TESTS, and
|
0. `test_diffserv`: tests ability to set IP_TOS ([IP Type of
|
||||||
|
Service](http://en.wikipedia.org/wiki/Type_of_service), or
|
||||||
|
[DiffServ](http://en.wikipedia.org/wiki/Differentiated_Services_Code_Point))
|
||||||
|
values on sockets. While z/OS UNIX System Services has the
|
||||||
|
preprocessor defines required, it appears not to support the
|
||||||
|
required functionality (call fails with "EDC8109I Protocol not
|
||||||
|
available.")
|
||||||
|
|
||||||
|
These three "expected to fail" tests are listed as XFAIL_TESTS, and
|
||||||
`runtests` will still consider the test run successful when they fail
|
`runtests` will still consider the test run successful when they fail
|
||||||
as expected.
|
as expected. (`builds/zos/runtests` will automatically skip these
|
||||||
|
"expected to fail" tests if running "all" tests.)
|
||||||
|
|
||||||
In addition `test_security_curve` does not do any meaningful testing,
|
In addition `test_security_curve` does not do any meaningful testing,
|
||||||
as a result of the CURVE support not being compiled in; it requires
|
as a result of the CURVE support not being compiled in; it requires
|
||||||
@ -212,6 +223,13 @@ ported to z/OS UNIX System Services yet.
|
|||||||
|
|
||||||
Multicast (via `libpgm`) is also not ported or compiled in.
|
Multicast (via `libpgm`) is also not ported or compiled in.
|
||||||
|
|
||||||
|
[TIPC](http://hintjens.com/blog:70), a cluster IPC protocol,
|
||||||
|
is only supported on Linux, so it is not compiled into the z/OS
|
||||||
|
UNIX System Services port -- and the tests are automatically skipped
|
||||||
|
if running "all" tests. (However they are not listed in XFAIL_TESTS
|
||||||
|
because without the TIPC support there is no point in even running
|
||||||
|
them, and it would be non-trivial to track them by hand.)
|
||||||
|
|
||||||
|
|
||||||
## ZeroMQ on z/OS UNIX System Services: Library portability notes
|
## ZeroMQ on z/OS UNIX System Services: Library portability notes
|
||||||
|
|
||||||
@ -278,6 +296,18 @@ which is done in the `cxxall` script. (The "3" value exposes later
|
|||||||
pthreads functionality like `pthread_atfork`, although ZeroMQ does not
|
pthreads functionality like `pthread_atfork`, although ZeroMQ does not
|
||||||
currently use all these features.)
|
currently use all these features.)
|
||||||
|
|
||||||
|
If compiling on a *recent* version of z/OS UNIX System Services it
|
||||||
|
may be worth compiling with:
|
||||||
|
|
||||||
|
_UNIX03_THREADS=1
|
||||||
|
|
||||||
|
which enables a later version of the threading support, potentially
|
||||||
|
including `pthread_getschedparam` and pthread_setschedparam`; at
|
||||||
|
present in the z/OS UNIX System Services port these functions are
|
||||||
|
hidden and never called. (See [IBM z/OS pthread.h
|
||||||
|
documentation](http://pic.dhe.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.bpxbd00/pthrdh.htm)
|
||||||
|
for details on the differences.)
|
||||||
|
|
||||||
|
|
||||||
## `platform.hpp` on z/OS UNIX System Services
|
## `platform.hpp` on z/OS UNIX System Services
|
||||||
|
|
||||||
@ -286,6 +316,11 @@ pre-built `platform.hpp` file. (By default `src/platform.hpp` is
|
|||||||
dynamically generated as a result of running the `./configure` script.)
|
dynamically generated as a result of running the `./configure` script.)
|
||||||
The master version of this is in `builds/zos/platform.hpp`.
|
The master version of this is in `builds/zos/platform.hpp`.
|
||||||
|
|
||||||
|
Beware that this file contains the version number for libzmq (usually
|
||||||
|
included during the configure phase). If taking the `platform.hpp` from
|
||||||
|
an older version to use on a newer libzmq be sure to update the version
|
||||||
|
information near the top of the file.
|
||||||
|
|
||||||
The pre-built file is used because z/OS does not have the GNU auto tools
|
The pre-built file is used because z/OS does not have the GNU auto tools
|
||||||
(`automake`, `autoconf`, `libtool`, etc) installed, and particularly the
|
(`automake`, `autoconf`, `libtool`, etc) installed, and particularly the
|
||||||
libtool replacement does not work properly with the IBM XL C/C++
|
libtool replacement does not work properly with the IBM XL C/C++
|
||||||
@ -317,18 +352,20 @@ syntax):
|
|||||||
|
|
||||||
* set `CPPFLAGS` to for the feature macros required, eg:
|
* set `CPPFLAGS` to for the feature macros required, eg:
|
||||||
|
|
||||||
setenv CPPFLAGS "-D_XOPEN_SOURCE_EXTENDED=1 -D_OPEN_THREADS=3 -D_OPEN_SYS_SOCK_IPV6"
|
setenv CPPFLAGS "-D_XOPEN_SOURCE_EXTENDED=1 -D_OPEN_THREADS=3 -D_OPEN_SYS_SOCK_IPV6 -DZMQ_HAVE_ZOS"
|
||||||
|
|
||||||
* set `CXXFLAGS` to enable XPLINK:
|
* set `CXXFLAGS` to enable XPLINK:
|
||||||
|
|
||||||
setenv CXXFLAGS "-Wc,xplink -Wl,xplink -+"
|
setenv CXXFLAGS "-Wc,xplink -Wl,xplink -+"
|
||||||
|
|
||||||
* run configure script with `--disable-eventfd` (`sys/eventfd.h` does
|
* run configure script with `--disable-eventfd` (`sys/eventfd.h` does
|
||||||
not exist, but the test for its existance has a false positive on
|
not exist, but the test for its existance has a false positive on
|
||||||
z/OS UNIX System Services, apparently due to the way the `c++`
|
z/OS UNIX System Services, apparently due to the way the `c++`
|
||||||
compiler wrapper passes errors back from the IBM XL C/C++ compiler), viz:
|
compiler wrapper passes errors back from the IBM XL C/C++ compiler),
|
||||||
|
and with `--with-poller=poll` because `poll` is the most advanced
|
||||||
|
of the file descriptor status tests available on z/OS. That is:
|
||||||
|
|
||||||
./configure --disable-eventfd
|
./configure --disable-eventfd --with-poller=poll
|
||||||
|
|
||||||
All going well several Makefiles, and `src/platform.hpp` should be
|
All going well several Makefiles, and `src/platform.hpp` should be
|
||||||
produced. Two additional changes are required to `src/platform.hpp`
|
produced. Two additional changes are required to `src/platform.hpp`
|
||||||
|
Loading…
Reference in New Issue
Block a user