mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-26 23:01:04 +08: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.1-git, using IBM XL C/C++ compiler, as XPLINK in ILP32 mode
|
||||
|
||||
Other combinations are likely to work, possibly with minor changes,
|
||||
but have not been tested. Both static library and DLL modes have been
|
||||
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
|
||||
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
|
||||
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,
|
||||
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.
|
||||
|
||||
[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
|
||||
|
||||
@ -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
|
||||
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
|
||||
|
||||
@ -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.)
|
||||
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
|
||||
(`automake`, `autoconf`, `libtool`, etc) installed, and particularly the
|
||||
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:
|
||||
|
||||
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:
|
||||
|
||||
setenv CXXFLAGS "-Wc,xplink -Wl,xplink -+"
|
||||
|
||||
* run configure script with `--disable-eventfd` (`sys/eventfd.h` does
|
||||
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++`
|
||||
compiler wrapper passes errors back from the IBM XL C/C++ compiler), viz:
|
||||
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++`
|
||||
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
|
||||
produced. Two additional changes are required to `src/platform.hpp`
|
||||
|
Loading…
x
Reference in New Issue
Block a user