Compare commits

...

398 Commits

Author SHA1 Message Date
rp42
34f7fa2202 cmake_minimum_required() before project()
* Without this CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded (MT) Windows builds still produced incompatible MultiThreadedDLL (MD) output.

 * Resolves following warning:

CMake Warning (dev) at CMakeLists.txt:2 (project):
  cmake_minimum_required() should be called prior to this top-level project()
  call.

 * Use ${CMAKE_HOST_SYSTEM_NAME} as ${CMAKE_SYSTEM_NAME} not set before project().
2024-12-30 17:49:16 +00:00
BtbN
a23330dbe2 Fix compilation with modern compilers
Fixes error: jump to label 'try_tcpip' crosses initialization of 'const SOCKET listener'
2024-11-24 23:08:15 +00:00
githejie
60899603a4 Fix example issue of zmq_timers.adoc 2024-11-22 10:28:16 +00:00
Hennadii Stepanov
90b4f410a0 cmake: Refer to prefix variable in generated libzmq.pc
This change:
1. Makes the `libzmq.pc` files generated by Autotools and CMake more
aligned.
2. Allows the `prefix` variable to be redefined if the package is
relocated.
2024-09-24 22:50:30 +02:00
githejie
64db7d28fe Fix format issue of zmq_socket.adoc 2024-09-06 09:29:24 +02:00
Min RK
1f4dd54f94
Problem: ipc connect can fail on Windows, even after bind (#4734)
* ipc connect can fail, even after bind
2024-08-26 14:57:23 +01:00
Min RK
0ed7a08cd9 Problem: create_ipc_wildcard_address can fail
check and handle failure
2024-08-23 21:54:12 +01:00
Hennadii Stepanov
5f408ba371 Fix CMake-generated libzmq.pc file
This change mirrors the Autotools-based build system behavior for
cross-compiling for Windows with static linking.
2024-08-21 14:38:23 +02:00
githejie
4c6cff6391 Problem: CI build android on ubuntu-latest failed
Solution: Fixed the NDK version to android-ndk-r25 to
avoid using unsupported NDK version on ubuntu-latest.
2024-08-16 11:08:03 +02:00
BtbN
b71434140e Fix reading cycle count on non-msvc win-on-aarch64 2024-08-11 11:54:21 +02:00
Luca Boccassi
6aaafe0135
Merge pull request #4721 from githejie/reconnect_options
Fix issue with ZMQ_RECONNECT_STOP_AFTER_DISCONNECT option
2024-08-11 11:51:07 +02:00
githejie
ce17349f8b Problem: tests reconnect_stop_after_disconnect failed
Solution: this test failed because "_disconnected" is not initialized
in constructor, and the behavior of reconnect will not be as designed
when "_disconnected" is randomly assigned to true.
So we specify it as false in initialize list to solve this problem.
2024-08-10 00:10:31 +08:00
githejie
aa77c03a37 Add tests for sockopt ZMQ_RECONNECT_STOP_AFTER_DISCONNECT 2024-08-10 00:10:25 +08:00
githejie
b95d94935e Problem: macos-latest with libsodium compilation failed
Solution: Add libsodium dependencies to Makefile.am file.
2024-08-02 11:43:23 +02:00
Alexander Stefanov
59c91227b4 use proper STREQUAL instead of EQUAL to compare strings 2024-07-27 10:08:24 +01:00
fanquake
ee29bcd64a problem: trying to link against librt on macOS
Solution: don't use rt if not `RT_LIBRARY`

This currently causes the check to fail on macOS:
```bash
     /Library/Developer/CommandLineTools/usr/bin/c++  -std=c++11 -Wno-tautological-constant-compare  -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.4.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_8466b.dir/CheckSymbolExists.cxx.o -o cmTC_8466b  -lrt
        ld: library 'rt' not found
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
even though `clock_gettime` is available.

Move the `clock_gettime` check up with the other librt related checks,
and don't set `CMAKE_REQUIRED_LIBRARIES` if not `RT_LIBRARY`.
2024-07-08 22:35:49 +02:00
fanquake
d203ad2b7a problem: using -errwarn on non-Sun systems
solution: only use `-errwarn` on SunPro systems

For example, using Clang on Alpine, this just results in build spam, and
the option is incorrectly passed through to ld, which trys to use use it
(`-e`) as an entrypoint, i.e:
```bash
[ 28%] Building CXX object CMakeFiles/local_lat.dir/perf/local_lat.cpp.o
clang++: warning: -e rrwarn=%all: 'linker' input unused [-Wunused-command-line-argument]
[ 29%] Linking CXX executable bin/local_lat
/usr/bin/ld: warning: cannot find entry symbol rrwarn=%all; defaulting to 0000000000000cf0
[ 29%] Built target local_lat
```
2024-07-08 18:00:20 +02:00
fanquake
de290e91e3 Problem: macos-latest CIs both failing
Solution: Install `libtool`. This seems to be the issue, given the CI
output of a recent run, i.e:
```bash
 configure.ac:1023: the top level
configure.ac:80: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:81: error: possibly undefined macro: AC_PROG_LIBTOOL
configure:7350: error: possibly undefined macro: AC_DISABLE_STATIC
configure:7354: error: possibly undefined macro: AC_ENABLE_STATIC
autoreconf: error: /opt/homebrew/Cellar/autoconf/2.72/bin/autoconf failed with exit status: 1
autogen.sh: error: autoreconf exited with status 1
+ exit 1
```
https://github.com/zeromq/libzmq/actions/runs/9841129190/job/27167025854?pr=4699#step:12:200
2024-07-08 16:58:24 +02:00
C-sir
c2fae81460 Problem: my name is not in the AUTHORS file
Solution: add myself to the list
2024-05-10 15:45:28 +02:00
Isuru Fernando
0a1aa1e4a7 Fix typos in gssapi cmake support PR 2024-05-08 21:22:25 +02:00
Isuru Fernando
43a8b3c6c8 Add gssapi support to cmake 2024-05-08 10:06:39 +02:00
Stephan Lachnit
aa885c5a15 Do not use _MSC_VER if windows
This fixes several instances where _MSC_VER was used to determine whether to use afunix.h or not. For example, MinGW requires the use of afunix.h but does not define _MSC_VER. The correct behavior is checking ZMQ_HAVE_WINDOWS.

Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2024-04-23 21:00:20 +02:00
fanquake
2a75ef07be cmake: don't use builtin sha1 if not using ws
The builtin SHA1 (ZMQ_USE_BUILTIN_SHA1) is only used in the websocket
engine (ws_engine.cpp), so if websockets are disabled, i.e
-DENABLE_DRAFTS=OFF, don't add sha1.c to the sources list.
2024-03-25 18:51:39 +00:00
fanquake
4a5ece54b8 build: fix mkdtemp check on macOS
On macOS, mkdtemp is in unistd.h. Fix the CMake check so that is works.
This was discovered when comparing the output of the Autotools an CMake
build systems.
2024-03-25 13:24:30 +00:00
Hennadii Stepanov
45b2924a0a Fix Autotools-generated libzmq.pc file
This change fixes cross-compiling for Windows with static linking.
2024-03-21 12:22:43 +00:00
Min RK
481cc3fa2c halt build if CURVE requested but not found
ENABLE_CURVE is currently redundant with WITH_LIBSODIUM, as the only existing provider

now builds where requested configuration is not found fail rather than proceeding without requested features
2024-02-28 15:35:57 +00:00
Min RK
ff231d2673 Problem: cmake search for kqueue missing headers
Solution: include sys/types.h and sys/time.h as documented by kqueue
and used in autotools

fixes kqueue detection on openbsd
2024-02-23 14:25:17 +00:00
Eli Schwartz
3b264019a2 configure: fix basic syntax errors in the shell script programming language
There is no such thing as `+=` unless you happen to be using the Bash
programming language, i.e. your script shebang is /bin/bash.

However, configure scripts are run via /bin/sh instead, which may or may
not be be bash, usually depending on whether the system in question
preferred to have one less package installed (in which case it is bash)
vs. have a faster /bin/sh installed (in which case it is probably the
dash shell).
2024-01-24 23:01:24 +00:00
Thomas
959a133520
Fixing SEGV #4524. Pipe should only send to peer when active. (#4647)
* Fixing SEGV #4524. Pipe should only send to peer when active.
2023-12-19 15:21:46 +00:00
Denis Zibarev
86a42e1e43 Problem: Using non-ascii characters in unix domain socket path doesn't work on Windows
Solution: Convert utf-8 socket paths to utf-16 file names when using
filesystem calls to delete files and directories as Windows doesn't
have any filesystem calls that take utf-8 path.

rmdir_utf8() and unlink_utf8() static functions were created which
substitute rmdir() and unlink() when building on Windows.
2023-12-11 10:12:12 +00:00
Florian Weimer
665d1d4657 Build with -D_DEFAULT_SOURCE along with -std=c11
On its own, -std=c11 hides POSIX and other extensions from C headers
such as <stdlib.h> when building against glibc.  This causes the
posix_memalign probe to fail incorrectly with compilers that do not
accept implicit function declarations.  _DEFAULT_SOURCE is ignored by
most non-GNU/Linux systems or not relevant in this context, so there
is no separate check for adding it.
2023-11-29 13:58:35 +00:00
f18m
2622e618f0 Replace old website contribution page link with the page of the new website 2023-11-22 22:35:29 +00:00
Nehal Patel
b268effd88 Fix 4629 compile warning in endpoint.hpp 2023-11-19 11:35:09 +00:00
Francesco Montorsi
814dab58a4
Documentation: fix the HTMLZIP name to restore the download-documentation functionality (#4628) 2023-11-13 14:47:38 +00:00
f18m
61050beca6 Documentation: improve the look of landing page
* Link the new CSS stylesheet also when building docs at RTD
2023-11-10 12:05:52 +00:00
Francesco Montorsi
481d536713
Documentation: improve the look of landing page (#4625)
* Documentation: improve the look of landing page by showing a more-compact list
2023-11-10 11:42:46 +00:00
Francesco Montorsi
3e08ecc012
Feature: improve docs (#4620)
* Feature: improve see-also doc section
2023-11-03 10:36:47 +00:00
Francesco Montorsi
267e856494
Feature: master: integrate with ReadTheDocs (#4614)
* Feature: integrate libzmq with ReadTheDocs

* add readthedocs configuration file to convert Asciidoc files into HTML and HTMLZIP formats using Asciidoctor.js tool (the only Asciidoctor variant available on readthedocs so far)
2023-11-02 20:44:34 +00:00
Francesco Montorsi
aa9a2c8429
docs: add index page (#4615) 2023-11-01 09:49:25 +00:00
Stephan Lachnit
05c2025412 poller.hpp: fix incorrect ZMQ_IOTHREAD_POLLER_* usage
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-11-01 00:53:40 +00:00
Luca Boccassi
f0c471aaab
Merge pull request #4607 from f18m/feature/asciidoctor
Feature: modernize API documentation
2023-10-25 23:10:25 +01:00
Francesco Montorsi
b6ca9b2983 Feature: modernize API documentation
* migrate from the old, unmaintained "asciidoc-py" tool to the new "asciidoctor" generator
* migrate from asciidoc-py syntax to the modern Asciidoc syntax (especially page titles and section titles)
* remove the need of "xmlto" utility to create the manpage output; use asciidoctor for that
* add HTML output support to the doc/Makefile by using asciidoctor
* change API documentation files extension from .txt to .adoc to make it more explicit that they are Asciidoc-encoded (as a bonus several IDE plugins will autodetect the .adoc format as Asciidoc)
* remove asciidoc.conf: asciidoctor does not support that; this also required replacing the macro linkzmq into all documentation pages
* add a new Github action CI do deploy to Github Pages the static HTMLs produced by Asciidoctors
* removed references to the "xmlto" and "a2x" tools from the build and packaging systems: Asciidoctor can convert the documentation directly to e.g. pdf (via extended converters) and anyway there was no code/target for using "xmlto" and "a2x" tools anyway
2023-10-25 23:59:38 +02:00
Luca Boccassi
cd991c72c8 Revert "Add forgotten test_pubsub. Currently only tests NORM if built."
The test always fails.

This reverts commit a6039d8716612ca3002858a85b2119f970e0fc41.
2023-10-25 11:49:29 +01:00
Michael Hudson-Doyle
aa3e097996 initialize error in test_security_gssapi.c:test_null_creds
Under some circumstances (which probably no longer apply in master) gcc inlined get_monitor_event into test_null_creds and then emitted a "maybe uninitialized" warning on the use of error. This would only be a problem if the tested code was misbehaving but I guess that's the point of a test!
2023-10-25 09:51:25 +01:00
Axel Rietschin
a6039d8716 Add forgotten test_pubsub. Currently only tests NORM if built. 2023-10-24 10:47:19 +01:00
Yueshan
95caddb9a1 Update msg.cpp
allow the max_vsm_size of data can init as vsm type msg

the init message of vsm size should be <= max_vsm_size include equal size.
2023-10-22 11:47:21 +01:00
Luca Boccassi
b30a19ebde
Merge pull request #4602 from nnog/flaky-test
test_proxy_steerable: reduce cpu and thread count
2023-10-13 15:21:28 +01:00
George Cockshull
77303a1926 test_proxy_steerable: reduce cpu and thread count
Problem: flakiness on slow CI VMs

Solution: fewer worker threads, poll rather than thrash,
consistent timings. user cpu ~300% -> 15%.
2023-10-13 08:19:38 -04:00
Luca Boccassi
6b80df14f4
Merge pull request #4600 from nnog/fix-proxy-steerable
Fix zmq_proxy_steerable
2023-10-12 21:53:48 +01:00
George Cockshull
058ad60b9a zmq_proxy_steerable: support non-REP socket types
Problem: reimplemented zmq_proxy_steerable control socket type is not
backwards compatible - replies are always sent.

In the past, zmq_proxy_steerable never sent a reply for
commands that weren't STATISTICS, so only really worked with PAIR and didn't
work at all with REP. Now it only supports REP and PAIR semantics changed. This
breaks compatibility with PAIR in a subtle and slightly annoying way if
HWMs are hit without reading the replies.

Solution: Add a check to send the empty reply only for
REP control sockets. This restores backwards compatibility, and supports
REP, PAIR, and SUB (for non-reply commands).

I had no knowledge of the pre-MPL-2.0 implementation. This fix is based
on docs and prior API usage. I contribute this under MPL-2.0.
2023-10-12 15:22:44 -04:00
George Cockshull
f8b3cc8108 Fix zmq_proxy_steerable PAUSE/RESUME
Problem: the new reimplementation of zmq_proxy_steerable had PAUSE/RESUME
that didn't follow expected behaviour. Possibly mixed up. Test didn't properly
cover the issue.

Solution: improve test coverage, fix the proxy command parsing.

I had no knowledge of the pre-MPL-2.0 implementation. This fix is based
on documented semantics and prior API usage. I contribute this
under MPL-2.0.
2023-10-12 15:22:44 -04:00
James Harvey
9d31965548
Handle tcp self connection issues (#4599) 2023-10-10 14:46:48 +01:00
Luca Boccassi
dbb7e3dc01 Problem: 4.3.5 is out, need new version
Solution: bump to 4.3.6
2023-10-09 12:21:03 +01:00
Luca Boccassi
622fc6dde9 Update NEWS for 4.3.5 2023-10-09 11:47:05 +01:00
Luca Boccassi
5cf39bf0ce
Merge pull request #4598 from brettviren/reimplement-proxy-steerable
A clean room re-implementation of zmq_proxy_steerable()
2023-10-09 10:36:47 +01:00
Brett Viren
5712ad5138 A clean-room implementation of zmq_proxy_steerable().
It is contriubted under the MPL-2.0.

I had no knowledge of the previous implementation of zmq_proxy_steerable().

This version was developed based on expectations set in the old man page with one exception.  This version uses a REP/REQ for the proxy control protocol sockets.  The old man page example used PUB/SUB which is nonsensical given the STATISTICS command requires two way communication.
2023-10-08 19:56:03 -04:00
Nehal Patel
8cdc4ed71a
Problem: unused variables warnings
Solution: fix them
2023-10-04 09:51:43 +01:00
Hennadii Stepanov
de5ee18203 Replace egrep with grep -E
For the GNU Grep package version >= 3.8, the `egrep` command emits:
```
egrep: warning: egrep is obsolescent; using grep -E
```
which makes the `./autogen.sh` script very noisy.
2023-08-26 22:19:35 +01:00
Jeffery Weston
ec013f3a17 fix assert error on late-joining subscriber after publisher has filled NORM buffer 2023-07-21 19:46:44 +01:00
Cornelius
ecc63d0d3b
Problem: long flag isn't set for subscriptions if topic has between 246 and 255 characters (#4564)
* Problem: long flag isn't set for subscriptions if topic has between 246 and 255 characters

Solution: fix V3.1 encoder to calculate long flag after evaluating the subscribe and cancel commands
2023-06-20 15:17:26 +01:00
Luca Boccassi
7af09a0e3b obs: trigger build on merge 2023-06-18 15:40:05 +01:00
Luca Boccassi
61fd887d11 spec: do not attempt to install curve_keygen if curve is disabled 2023-06-18 13:06:57 +01:00
Luca Boccassi
7fef478481 spec: remove duplicated macros 2023-06-18 12:51:43 +01:00
Guillaume DELACOURT
5657b4586f Always allow DNS when resolving TCP and UDP adresses. DNS resolution is done after interface resolution, so it can always be enabled to have a fallback mecanism on hostname resolution. 2023-06-12 20:28:32 +01:00
Guillaume DELACOURT
e0296d9cdd Checks for pthread setname and setaffinity API are compilation checks, not execution checks. 2023-06-12 00:12:26 +01:00
Guillaume DELACOURT
797c7f09f8 When setting thread priority, always set the value to zero when the policy is not compatible. Also, only call nice when the priority is set to a strictly positive value. 2023-06-12 00:11:21 +01:00
Luca Boccassi
5bf04ee2ff Problem: docs for ZMQ_RECONNECT_IVL_MAX are stubs
Solution: write them now that the option is back
2023-06-06 18:09:12 +01:00
Luca Boccassi
346907065f Problem: trailing whitespace
Solution: remove it
2023-06-06 18:00:08 +01:00
Luca Boccassi
7175f0acb5
Merge pull request #4556 from stvales/master
Problem: relicensing forced to remove support for ZMQ_RECONNECT_IVL_MAX option
2023-06-06 16:40:57 +01:00
Stéphane Valès
de1bd5c8e7 Problem: relicensing forced to remove support for ZMQ_RECONNECT_IVL_MAX option
Solution: reimplement support for ZMQ_RECONNECT_IVL_MAX without knowledge of the previous code.
2023-06-06 15:15:22 +02:00
Luca Boccassi
1a921db728
Merge pull request #4555 from bluca/relicense
Relicense from LGPL3 + exceptions to Mozilla Public License version 2.0
2023-06-06 13:50:00 +01:00
Luca Boccassi
3e5e405f33 Remove RELICENSE/ directory
Grants archived at:

https://github.com/rlenferink/libzmq-relicense/blob/master/RELICENSE

No longer necessary to keep them here, as the relicensing is complete.
2023-06-05 20:31:47 +01:00
Luca Boccassi
da31917f4f Relicense from LGPL3 + exceptions to Mozilla Public License version 2.0
Relicense permission collected from all relevant authors as tallied at:
https://github.com/rlenferink/libzmq-relicense/blob/master/checklist.md
The relicense grants are collected under RELICENSE/ and will be moved
to the above repository in a later commit.

Fixes https://github.com/zeromq/libzmq/issues/2376
2023-06-05 20:31:47 +01:00
Luca Boccassi
87bb4db114
Merge pull request #4554 from bluca/relicense
Problem: cannot relicense due to missing agreement from 3 authors
2023-06-05 20:00:28 +01:00
Luca Boccassi
7bbd49726b Problem: no permission to relicense ZMQ_RECONNECT_IVL_MAX
Solution: remove the implementation. Thijs Terlouw <thijsterlouw@gmail.com>,
the author, did not respond to requests to allow relicensing to MPL2,
so we have to remove his copyrighted work.
Remove the implementation and make get/set return -EOPNOTSUPP.
2023-06-05 00:22:20 +01:00
Luca Boccassi
ff47aeb791 Problem: no permission to relicense tweetnacl integration
Solution: remove implementation. Frank Hartmann <soundart@gmx.net>,
the author, rejected our request to relicense under MPL2, so we
have to remove his copyrighted work.
Tweetnacl is not security-supported and could not be used in
production environments anyway, the supported backend is libsodium.
2023-06-04 23:54:31 +01:00
Luca Boccassi
13bc1de421 Problem: no permission to relicense zmq_proxy_steerable
Solution: remove implementation. Laurent Alebarde <l.alebarde@free.fr>,
the author, did not respond to requests to allow relicensing to MPL2,
so we have to remove his copyrighted work.
Make the API into an empty stub that returns -EOPNOTSUPP.
2023-06-04 23:54:31 +01:00
Jeff Weston
eaaea73bf1
Change NORM to set TTL using MULTICAST_HOPS sockopt (#4552)
* Change NORM to set TTL using MULTICAST_HOPS instead of hard-coding.  Changes default TTL from 255 to 1.
2023-05-19 20:53:20 +01:00
Nicolas Benes
4d1dccaebd Fix pkg_config_defines in CMakeFile
PR #4545 sets `pkg_config_defines` too late, i.e. after the pkg-config
file is already generated. It must be set before `configure_file`.
2023-05-16 17:47:51 +01:00
Luca Boccassi
cc12997a17
Merge pull request #4545 from panicgh/pc-file-fix
Add missing pkg_config_defines when built with CMake
2023-05-12 10:16:57 +01:00
Nicolas Benes
2da2bd8f6d RELICENSE: add statement
Signed-off-by: Nicolas Benes <nbenes.gh@xandea.de>
2023-05-12 06:29:44 +02:00
Luca Boccassi
077dd92616
Merge pull request #4546 from cdepillabout/link-openpgm-cmake-fresh
Link to openpgm when building with cmake
2023-05-11 13:59:13 +01:00
Dennis Gosnell
a6c2f6ba72 Problem: no relicense agreement by cdepillabout
Solution: added relicense agreement
2023-05-11 20:22:42 +09:00
Dennis Gosnell
5381be6c71 Problem: don't link to openpgm when building with cmake
Solution: Add `target_link_libraries()` to `libzmq` for openpgm when
openpgm has been enabled.
2023-05-11 20:22:42 +09:00
Nicolas Benes
c079ca5cc4 Add missing pkg_config_defines when built with CMake
The pkg_config_defines variable was only set in configure.ac, but not in
CMake. This lead to the `-DZMQ_BUILD_DRAFT_API=1` flag to be omitted
from the generated pkg-config file.

Signed-off-by: Nicolas Benes <nbenes.gh@xandea.de>
2023-05-09 23:15:46 +02:00
Luca Boccassi
532b61275e
Merge pull request #4542 from bjornstromberg/libzmq-patch-pr-4432
Problem: merged pr-4432 broke FindSodium on linux
2023-04-22 11:59:25 +01:00
Björn Strömberg
f56a44d35d
Problem: no relicense agreement by bjornstromberg
Solution: added relicense agreement
2023-04-22 09:13:22 +02:00
bjornstromberg
47b2aec813
Problem: merged pr-4432 broke FindSodium on linux
Solution: rename the FindSodium to Findsodium so it matches what the build script actually looks for. tested on ubuntu-20.04lts with cmake 3.16.
2023-04-22 08:58:55 +02:00
Jeff Weston
2d30020691
Add NORM Transport configuration sockopts (#4541)
* added NORM transport configuration socket options, and enabled NORM use of existing sockopts ZMQ_RATE for NORM fixed-rate operation, and ZMQ_TOS
2023-04-20 18:55:40 +01:00
Luca Boccassi
be8af6f128
Merge pull request #4540 from keith-dev/master
Support clang-16 on Termux
2023-04-19 11:57:08 +01:00
Keith Williams
bf3d37b7d0 Add RELICENSE for Keith Williams 2023-04-19 01:16:05 +01:00
Keith Williams
abf2444f09 remove c99 extention from c++11 code 2023-04-18 22:27:06 +01:00
Keith Williams
27dda213fe extend tipc check to support Android under Termux 2023-04-18 22:25:00 +01:00
Constantin Rack
5a5f90e07e
Merge pull request #4537 from chachoi/master
Add support for QNX 7.1 build
2023-04-11 22:22:54 +02:00
James Choi
c19d4c9bf0 Add RELICENSE for James Choi
Signed-off-by: James Choi <chachoi@blackberry.com>
2023-04-11 15:48:27 -04:00
James Choi
10e5847fa8 Add support for QNX 7.1 build
Signed-off-by: James Choi <chachoi@blackberry.com>
2023-04-11 15:48:07 -04:00
Luca Boccassi
1b52e19b2b
Merge pull request #4533 from autoantwort/gnutls-include-dir
Don't assume that GnuTLS is on the search path
2023-03-27 22:34:39 +01:00
Leander Schulten
08a6f8f84d license 2023-03-27 17:47:30 +02:00
Leander Schulten
f508394909 Don't assume that GnuTLS is on the search path 2023-03-27 16:06:23 +02:00
Luca Boccassi
94bf58e43c
Merge pull request #4522 from stephanlachnit/p-cmake-fix-devpoll
CMake: fix devpoll detection not working properly
2023-03-05 17:49:19 +00:00
Luca Boccassi
3f5d915b56
Merge pull request #4523 from stephanlachnit/p-fix-cmake-pgm-vmci
CMake: properly set ZMQ_HAVE_OPENPGM and ZMQ_HAVE_VMCI
2023-03-05 17:49:02 +00:00
Luca Boccassi
e6130935c7
Merge pull request #4521 from stephanlachnit/p-fix-pollset
CMake: fix not defining pollset in platform.hpp
2023-03-05 17:48:31 +00:00
Stephan Lachnit
6147de01da
RELICENSE: add statement
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-05 13:32:42 +01:00
Stephan Lachnit
87065068ca
CMake: properly set ZMQ_HAVE_OPENPGM and ZMQ_HAVE_VMCI
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 11:11:41 +01:00
Stephan Lachnit
6fc2a61d16
CMake: fix devpoll detection not working properly
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 11:01:47 +01:00
Stephan Lachnit
08d60dfdfa
CMake: fix not defining pollset in platform.hpp
Signed-off-by: Stephan Lachnit <stephanlachnit@debian.org>
2023-03-03 10:56:26 +01:00
Luca Boccassi
8c725093ac
Merge pull request #4509 from sphaero/udploop
Problem: infinite loop binding a dgram socket if it fails
2023-02-06 15:23:35 +00:00
Arnaud Loonstra
b261f9a678 treat bind errors as a protocol_error instead of connection_error preventing an infinite loop of trying to create the udp socket as through the protocol_error the creation of the socket fails 2023-02-03 16:33:18 +01:00
Luca Boccassi
6e2d632b18
Merge pull request #4502 from casaroli/fix-for-nuttx
Fixes for memory allocation and zero size
2023-02-03 09:16:26 +00:00
Marco Casaroli
52333da0e2 Add RELICENSE for Marco Casaroli 2023-02-03 09:35:35 +01:00
Marco Casaroli
d16db180d3 Do not break if malloc size is zero
I get a scenario where `size_` is `0` so there is nothing to `malloc()`.

According to `malloc(3)`:

If size is 0, then malloc() returns either NULL, or a unique pointer value thatcan later be
success‐fully passed to free().

According to `free(3)`:

If ptr is NULL, no operation is performed.

So, if `size_` is null and `_data` also, there is no OOM error.

We can adjust the assert to not fail on this scenario.
2023-02-03 09:35:35 +01:00
Luca Boccassi
a666cb1b40
Merge pull request #4507 from daira/zmq_snprintf
#4494 added calls to snprintf, but did not take into account that snprintf can truncate
2023-02-01 21:44:27 +00:00
Daira Hopwood
6dc559c072 #4494 added calls to snprintf, but did not take into account that snprintf
can truncate, and then return the number of characters that would have been
written without truncation.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2023-02-01 19:15:46 +00:00
Luca Boccassi
333c88e9ff
Merge pull request #4505 from barracuda156/darwin
tests: use NOT APPLE instead of NOT MATCHES Clang
2023-02-01 00:30:26 +00:00
Sergey Fedorov
2438952f75 Add relicense statement 2023-02-01 08:02:53 +08:00
Sergey Fedorov
74af53fdfa tests: use NOT APPLE instead of NOT MATCHES Clang 2023-02-01 05:37:59 +08:00
Marco Casaroli
f049edbf12 Use parenthesis for alloc_assert macro 2023-01-31 14:46:46 +01:00
Luca Boccassi
ce6d48c578
Merge pull request #4500 from bluca/ci
CI fixes
2023-01-31 10:48:44 +00:00
Luca Boccassi
bd0a34899a Problem: test_filter_ipc is flacky
Solution: expect send failure and use random endpoint
2023-01-31 01:16:24 +00:00
Luca Boccassi
ccdc2f7583 Problem: VMCI tests are not skipped outside VMs
Solution: check CID and skip if unavailable
2023-01-31 00:28:38 +00:00
Luca Boccassi
acfdf67127
Merge pull request #4497 from MartinDelille/badge
Add conan badge
2023-01-27 01:32:42 +00:00
Martin Delille
8850ccc450
Add relicense statement 2023-01-27 02:26:12 +01:00
Martin Delille
75e9a950d9
Add conan badge 2023-01-27 00:29:47 +01:00
Luca Boccassi
abb0ada5f7
Merge pull request #4494 from sphaero/depr_sprintf
deprecate sprint and replace with snprintf
2023-01-24 23:36:00 +00:00
Arnaud Loonstra
f7df6c8599 deprecate sprint and replace with snprintf 2023-01-24 22:45:48 +01:00
Luca Boccassi
b674ce68d0
Merge pull request #4490 from bluca/ci
Problem: various CI issues
2023-01-16 10:28:05 +00:00
Luca Boccassi
a820627f55 Problem: test_zmq_ppoll_signals does not cleanup context
Solution: do it, to avoid false positive in valgrind
2023-01-16 00:52:30 +00:00
Luca Boccassi
7e0fdd82de Problem: test_zmq_ppol_signals uses fixed TCP port
Solution: use random one to avoid random failures
2023-01-16 00:52:30 +00:00
Luca Boccassi
117cbe690c Problem: buffer overflow in new test case
Solution: fix it
2023-01-15 23:44:12 +00:00
Luca Boccassi
ee9c0919e2 Problem: address sanitizer complains about uninitialised func pointer
Solution: just call the function directly
2023-01-15 23:44:00 +00:00
Luca Boccassi
3cafc0c260
Merge pull request #4489 from bluca/ci
Problem: various CI issues
2023-01-12 09:49:59 +00:00
Luca Boccassi
78777fb9f5 Problem: shipping binaries is a responsibility that requires time
Solution: stop shipping binary releases for Windows. These days there's vcspkg, conda and more
that provide pre-built binaries for Windows.
Being a software supplier requires a lot of time and effort, and we have no bandwidth.
2023-01-12 01:07:06 +00:00
Luca Boccassi
961206abd5 Problem: libsodium doesn't build anymore in VS2010
Solution: disable it in appveyor, not our problem to solve
2023-01-12 01:07:06 +00:00
Luca Boccassi
7781dd1bbd Problem: formatting errors with clang-format-11
Solution: apply update
2023-01-12 01:07:06 +00:00
Luca Boccassi
47d0ecf639 Problem: missing VMCI can also return EPROTONOSUPPORT and the tests fail
Solution: ignore that too
2023-01-12 01:07:06 +00:00
Luca Boccassi
634cf9eea7 Problem: windows-2016 build no longer runs in CI
Solution: remove it
2023-01-12 01:07:06 +00:00
Luca Boccassi
3919956535 Problem: build fails with PGM + CXX98 + clang++
Solution: redefine 'restrict' which is used as an attribute in PGM headers,
but that is not available when using clang and CXX98
2023-01-11 23:43:13 +00:00
Luca Boccassi
049f79f72e
Merge pull request #4488 from ilkondr/ilkondr/poll_eintr
Problem: message can't be received due to signal
2023-01-10 18:55:45 +00:00
Ilya Kondrashkin
04720b6b91 Problem: message can't be received due to signal
Issue caught in Golang runtime, which widely uses signal SIGURG for
scheduling. Sometimes messages cannot be received. Technically
socket_base_t::process_commands() returns failure even if some commands were
processed, but next message from mailbox could not be received during interrupt.

Solution: retry receiving from mailbox with zero timeout after EINTR.

Signed-off-by: Ilya Kondrashkin <ikondrashkin@nfware.com>
2023-01-10 16:04:56 +00:00
Luca Boccassi
8d0f6f359e
Merge pull request #4486 from Rabenda/fix/qemu-user-build
fix: fix build on qemu-user
2023-01-09 17:25:29 +00:00
Han Gao
48960c2293 fix: fix build on qemu-user
In qemu-user, CACHELINE_SIZE probe is undefined

Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
2023-01-10 01:12:20 +08:00
Luca Boccassi
bdd471fa17
Merge pull request #4480 from trofi/gcc-13-rebind-fix
src/secure_allocator.hpp: define missing 'rebind' type
2022-12-22 11:51:15 +01:00
Sergei Trofimovich
438d5d8839 src/secure_allocator.hpp: define missing 'rebind' type
`gcc-13` added an assert to standard headers to make sure custom
allocators have intended implementation of rebind type instead
of inherited rebind. gcc change:
    https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=64c986b49558a7

Without the fix build fails on this week's `gcc-13` as:

    [ 92%] Building CXX object tests/CMakeFiles/test_security_curve.dir/test_security_curve.cpp.o
    In file included from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:34,
                     from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_uninitialized.h:64,
                     from /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/memory:69,
                     from tests/../src/secure_allocator.hpp:42,
                     from tests/../src/curve_client_tools.hpp:49,
                     from tests/test_security_curve.cpp:53:
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h: In instantiation of 'struct std::__allocator_traits_base::__rebind<zmq::secure_allocator_t<unsigned char>, unsigned char, void>':
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:94:11:   required by substitution of 'template<class _Alloc, class _Up> using std::__alloc_rebind = typename std::__allocator_traits_base::__rebind<_Alloc, _Up>::type [with _Alloc = zmq::secure_allocator_t<unsigned char>; _Up = unsigned char]'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:228:8:   required by substitution of 'template<class _Alloc> template<class _Tp> using std::allocator_traits< <template-parameter-1-1> >::rebind_alloc = std::__alloc_rebind<_Alloc, _Tp> [with _Tp = unsigned char; _Alloc = zmq::secure_allocator_t<unsigned char>]'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/ext/alloc_traits.h:126:65:   required from 'struct __gnu_cxx::__alloc_traits<zmq::secure_allocator_t<unsigned char>, unsigned char>::rebind<unsigned char>'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:88:21:   required from 'struct std::_Vector_base<unsigned char, zmq::secure_allocator_t<unsigned char> >'
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/stl_vector.h:423:11:   required from 'class std::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >'
    tests/../src/curve_client_tools.hpp:64:76:   required from here
    /<<NIX>>/gcc-13.0.0/include/c++/13.0.0/bits/alloc_traits.h:70:31: error: static assertion failed: allocator_traits<A>::rebind_alloc<A::value_type> must be A
       70 |                         _Tp>::value,
          |                               ^~~~~

The change adds trivial `rebind` definition with expected return type
and satisfies conversion requirements.
2022-12-20 23:00:53 +00:00
Luca Boccassi
dfbfc59c3f
Merge pull request #4432 from Teebonne/patch-1
sodium, not Sodium
2022-12-06 14:39:21 +01:00
Teebonne
da74015b85
Create Teebonne.md 2022-12-06 10:37:55 +00:00
Francesco Montorsi
c59104a01d
Add ZMQ_TOPICS_COUNT socket option (#4459) 2022-11-29 12:00:11 +00:00
Luca Boccassi
20de92ac0a
Merge pull request #4466 from td-krzysiek/fix-missing-sodium-link-directory
fix missing sodium link_directories
2022-11-24 10:51:11 +01:00
Krzysztof Rosiński
2eb9d59cb7 add relicense note 2022-11-24 10:39:02 +01:00
Krzysztof Rosiński
80e5bfeade fix missing sodium link_directories 2022-11-24 06:40:06 +01:00
Luca Boccassi
037dd199af
Merge pull request #4462 from stephan57160/master
Problem: Android build scripts need more enhancements.
2022-11-21 13:11:48 +01:00
Stephan Guilloux (cos)
684ebb2616 Problem: Main documentation refers to Android NDK 24, when 25 is currently in use.
Solution: Fix invalid NDK reference.
2022-11-21 12:15:59 +01:00
Stephan Guilloux (cos)
fcd519ba66 Android specific documentation update. 2022-11-21 12:15:38 +01:00
Stephan Guilloux (cos)
117ddabd02 Android minor fix in documentation. 2022-11-21 11:41:33 +01:00
Stephan Guilloux (home)
9f47e064a1 Documentation update. 2022-11-21 00:21:30 +01:00
Stephan Guilloux (home)
ebe0edaaa9 More enhancements and configuration variables to Android CI build scripts.
init_dependency_root(): Moved to android_build_helper.sh

ANDROID_DEPENDENCIES_DIR: added to specify a storage for dependencies
when downloaded automatically.

ANDROID_BUILD_DIR: Changed the default in ci_build.sh.

ci_build.sh configures these 2 variables to no more use /tmp by default (
except for Android NDK), but a local clone subfolder.

This helps to find downloaded dependencies and generated binaries.

This avoid to have user permission conflicts, or conflicts with 2
different clones of LIBZMQ (for instance).
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
40620f9b7b Android helpers minor fixes. 2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
30e950abfd Problem: Android dependencies are downloaded in an hard-coded /tmp/tmp-deps.
Solution: Added variable ANDROID_DEPENDENCIES_DIR, and initialize to
/tmp/tmp-deps, to avoid clash with existing code.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
91bc18ee16 Enriched Android helpers
2 more functions are added:
- android_clone_library():

  Similar to android_clone_library(), but fetch a tarball and uncompress it.

  So far, only .tar.gz and .tgz archives are supported, but could be enhanced
  easily, if needed.

- android_init_dependency_root():

  Initialize or check XXX_ROOT, when XXX is a dependency name.

  Enhanced version of init_android_root() in build.sh (to be dropped, then).
  This version is now also applicable in CZMQ & ZYRE CI builds scripts for Android.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
3aeadbd1c2 Problem: android_build_library can be more robust & generic
With these changes, this function is now able to build LIBZMQ but also
(almost) CZMQ, ZYRE (and their dependencies) in native or cross compilation
modes.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
f91e3e41fa Problem: android_clone_library() review
Basically, only local vars renamed.
New coming functions will use the same local vars naming.
2022-11-21 00:21:30 +01:00
Guilloux Stephan (Ubuntu)
308c94e9d8 Problem: android_download_ndk can be more 'autonomous'. 2022-11-21 00:21:30 +01:00
Francesco Montorsi
7fad9599ab
Fix typo in zmq_socket_monitor_versioned docs (#4458)
* Fix typo in zmq_socket_monitor_versioned docs
2022-11-15 22:18:11 +00:00
Luca Boccassi
3ff3c6cdf3
Merge pull request #4456 from djolemanojlovic/fix_4106
Problem: Handshake timeout error with ZMTP_2_0
2022-11-11 15:14:39 +01:00
Đorđije Manojlović
aeea10c068 Add RELICENSE statement 2022-11-11 12:26:44 +01:00
Đorđije Manojlović
6cc694d8c2 Problem: Handshake timeout error with ZMTP_2_0
When two parties are trying to establish ZMTP connection and do a
handshake, in which one partie selects hanshake version 2 or lower
has been selected, handshake timer fires always (by default after 30s)
as the timer never gets cancelled.

Solution: Cancel handshake timer after handhake has been done.
2022-11-11 12:26:44 +01:00
Luca Boccassi
8d4f4efef0
Merge pull request #4452 from stephan57160/master
Problem: Android helpers have duplicate init code.
2022-10-27 16:09:27 +02:00
Guilloux Stephan (Ubuntu)
6d9c0b8366 Problem: Android helpers have duplicate init code.
Last PRs introduced a duplicate code in Android helper file.
Duplicate "Initialisation" sequence can be observed after the helper functions:

    ########################################################################
    # Initialization

...

    # (Empty string indicates no failure)
    ANDROID_BUILD_FAIL=()

Seen when trying to report last LIBZMQ Android PRs to CZMQ & ZYRE.

Solution: Remove the duplicate code.
2022-10-27 15:46:16 +02:00
Luca Boccassi
1d3ad106ac
Merge pull request #4451 from stephan57160/master
Problem: Android build documentation is outdated.
2022-10-24 23:10:30 +02:00
Luca Boccassi
c1bcb53b12
Merge pull request #4450 from stephan57160/master
Problem: Android docker image is outdated.
2022-10-24 21:32:35 +02:00
Stephan Guilloux (cos)
8742763c04 Problem: Android build documentation to be updated.
Solution: Update Android build documentation.
2022-10-24 21:04:30 +02:00
Stephan Guilloux (cos)
0e887a4037 Problem: Android docker image is outdated.
Solution: Update image.

Added references to tested versions (Ubuntu, debian) and tested NDK.
Carefull though. Android have changed there NDK naming, between 22 and 23.
2022-10-24 20:56:52 +02:00
Luca Boccassi
bfd506094a
Merge pull request #4449 from stephan57160/master
Problem: Android helpers must provide build/clone functions.
2022-10-24 19:58:49 +02:00
Stephan Guilloux (cos)
6fb3a58ca8 Problem: Android helpers must provide build/clone functions.
Reason: Code factorisation & code sharing.

Solution: Create more functions in helper file:
- android_clone_library   # Clone a library source tree.
- android_build_library   # Build a library in its source tree.
2022-10-24 19:32:01 +02:00
Luca Boccassi
3dd2a6964a
Merge pull request #4448 from stephan57160/master
Problem: Android helpers should export more compilation chain related variables
2022-10-24 18:16:28 +02:00
Stephan Guilloux (cos)
69c237efed Problem: Android helpers should export more compilation chain related variables
Among them, CC, LD, CFLAGS, ... could be useful for other tools.

Reason: Many are calculated as "local" to a particular function, which makes
them unavailable outside this helper function.

Solution: Export more variables (CC, LD, CFLAGS, ...).

New exported variables are prefixed with ANDROID_BUILD_xxx.
This naming is expected to avoid any conflicts/problem with other tools:
- ANDROID_BUILD_CC
- ANDROID_BUILD_LD
- ANDROID_BUILD_CFLAGS
- ...
2022-10-24 17:05:20 +02:00
Luca Boccassi
7ff35715ef
Merge pull request #4446 from stephan57160/master
Problem: Android CI build tools does not support LIBSODIUM_ROOT
2022-10-24 14:32:51 +02:00
Stephan Guilloux (cos)
7c3a420be4 Problem: Android CI build tools does not support LIBSODIUM_ROOT
Solution: Implement the current same kind of mechanism as CZMQ & ZYRE, with enhancement.

Enhancement: When required and if LIBSODIUM is not set, the build tool checks
for an already existing clone, close to LIBZMQ. This mechanism is close
to what is done by LIBZMQ/CZMQ/ZYRE for their dependencies.

Additionnaly: Do not copy current source tree to any 'cache' folder. Use
current folder, but make sure all is cleaned before compilation is launched.
This is a lot safer, when building different clones in parrallel...

Enhancement to be reported to CZMQ/ZYRE via ZProject.
2022-10-24 14:10:04 +02:00
Luca Boccassi
34ae0626d4
Merge pull request #4445 from stephan57160/master
Problem: Android CI build helper has no trace function.
2022-10-24 12:08:42 +02:00
Guilloux Stephan (Ubuntu)
e1078f2e7c Problem: Android CI build helper has no trace function.
Solution: Add a trace function.

Requires to move the CI build helper code/check/init/... at the end of
helper file.

This new function is available for (and also used by) build.sh.
Output is like:

    LIBZMQ (x86_64) - Blah ...

To be reported to CZMQ/ZYRE via ZProject.
2022-10-24 10:59:13 +02:00
Stephan Guilloux
2b2fb9c708
Problem: Android NDK 22 download broken since support of NDK 23. (#4444)
* Problem: Android NDK 22 download broken since support of NDK 23.

Due to the PR to support NDK 23.

With NDK 23, the archive file name has changed.
This change is handled by the PR to support NDK23, but now, only 23 and after
are supported.

Also, NDK 23 support introduced a 2nd occurence of the variable
HOST_PLATFORM, with another value. One occurence being exported,
this may confuse next developpers (and it actually confused me).

Solution: Code review

1st occurence is simply dropped, and the algorithm around is changed so that
there is no need of a 'host_platform' kind of stuff.

2nd occurrence is renamed to ANDROID_BUILD_PLATFORM.

Note that 'HOST' is replaced by 'BUILD', as this is the common naming
when talking about the build/compilation machine, when cross compiling.

A dedicated function is created in the helpers, to actually download
the NDK. As this function is made 'public', more checks are performed.

Note:

    To be reported in CZMQ & ZYRE, via ZPROJECT, where NDK is downloaded
    in 2 different files.
2022-10-21 17:36:38 +01:00
Stephan Guilloux
2a7c9efe81
Problem: Android build environment variables need clarifications. (#4443)
* Problem: Android build environment variables need clarifications.

Reason: All are spread and initialized throughout the code.

Solution: Declare, initialize and document environment variables on top of build.sh.

Side effect: This participates to documentation.
2022-10-21 10:55:33 +01:00
Stephan Guilloux
e6e76096bf
Problem: Android APP fails to load ZMQ (ARM64 only) (#4442)
* Problem: Android APP fails to load ZMQ (ARM64 only)

Seen with physical Android devices running ARM64.
Not seen with ARM, X86 or X86_64.

Any Android APP loading ZMQ fails with:
```
[FATAL] Couldn't load library library zmq from jar. Dependency is required!
```

Unpack zyre-android-2.0.1.jar, find libzmq.so for ARM64 and look for missing
symbols:
```
prompt> unzip zyre-android-2.0.1.jar
prompt> cd lib/arm64-v8a
prompt> nm --undefined-only ./libzmq.so | head
                 U __aarch64_ldadd4_acq
                 U __aarch64_ldadd4_acq_rel
                 U __aarch64_ldadd4_rel
                 U __aarch64_ldadd4_relax
                 U __aarch64_ldadd8_acq_rel
                 U __aarch64_ldadd8_relax
                 U __aarch64_swp8_acq
                 U __aarch64_swp8_acq_rel
                 U __aarch64_swp8_rel
                 U __aarch64_swp8_relax
prompt>
```
Some more symbols are missing, but those are relevant for this issue.

OK.
These symbols are present in libc++_shared, but not exported ...:
```
prompt> nm libc++_shared.so | grep aarch64
00000000000ee6d0 t __aarch64_cas1_acq_rel
00000000000ee7a0 t __aarch64_cas8_acq_rel
00000000001028f0 b __aarch64_have_lse_atomics
00000000000ee840 t __aarch64_ldadd4_acq_rel
00000000000ee810 t __aarch64_ldadd4_rel
00000000000ee8a0 t __aarch64_ldadd8_acq_rel
00000000000ee870 t __aarch64_ldadd8_relax
00000000000ee7e0 t __aarch64_swp8_acq_rel
prompt>
```

Issue seen also on the WEB, with GCC & CLANG:
- https://bugzilla.redhat.com/show_bug.cgi?id=1830472
- cea175b838
- ...

Solution: Add `-mno-outline-atomics` to CXXFLAGS (FLUTTER fix).

Additionaly, had to introduce NDK_NUMBER.
This variable is calculated in `android_build_helper.sh`.
It represents the numeric form of NDK_VERSION:
```
  NDK_VERSION          --> NDK_NUMBER
  android-ndk-r25      --> 2500
  android-ndk-r23c     --> 2303
  android-ndk-r22      --> 2200
  android-ndk-r21e     --> 2105
  ... and so on
```

This will help a few other things (NDK download ?).
2022-10-18 10:19:15 +01:00
Luca Boccassi
ec1953e614
Merge pull request #4441 from stephan57160/master
Added RELICENSE statement
2022-10-13 21:36:25 +02:00
Stephan Guilloux (home)
3c50bd6596 Added RELICENSE statement 2022-10-13 21:29:07 +02:00
Luca Boccassi
a3f95107db
Merge pull request #4439 from stephan57160/master
Regression: Android build fails with libsodium.
2022-10-12 10:27:37 +02:00
Stephan Guilloux (cos)
3022e7e099 Regression: Android build fails with libsodium.
Scenario:
```
export CURL=libsodium
cd zyre/builds/android
./ci_build.sh
```

Result:
```
Android (arm) build failed for the following reasons:
  Found no library named libzmq.so libsodium.so
    /home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib/libzmq.so libsodium.so
```

Caused by PR #4437, where the 2nd commit was to fix Sonatype findings.

Lesson learnt: Not always a good idea to add double quotes around variables ...

Solution: Make VERIFY an array, so that Sonatype won't complain.
2022-10-12 02:43:10 +02:00
Luca Boccassi
c19f83027d
Merge pull request #4438 from stephan57160/master
Problem: Android CI build scripts need minor enhancements (traces & cleanup)
2022-10-11 23:32:51 +02:00
Stephan Guilloux (cos)
863b329ccd Problem: Android CI build scripts need minor enhancements (traces & cleanup).
Seen when someone has to relaunch `ci_build.sh` manually, for troubleshooting,
or experiment(s), ci_build.sh stops as libraries are already built.

Solution: Clean more temporary/build folders before build.

Note:

  To be reported in ZYRE/CZMQ via ZProject.

When called from ZYRE/CZMQ, it's difficult to identify which build script is
being executed

Solution: Modify each `echo` trace to show the project name and Android architecture in progress.

Note:

  To be reported in ZYRE/CZMQ via ZProject.
2022-10-11 23:08:08 +02:00
Stephan Guilloux
65b33ebefa
Problem: Android APP fails to load ZMQ since NDK r25.x (#4437)
* Problem: Android APP fails to load ZMQ since NDK r25.x

With the help of the dump of ./configure options (former PR):
```
LIBZMQ (arm) - ./configure options to build 'LIBZMQ':
  > --quiet
  > TOOLCHAIN=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64
  > CC=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang
  > CXX=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang++
  > LD=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/ld
  > AS=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as
  > AR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  > RANLIB=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  > STRIP=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
  > CFLAGS= -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE
  > CPPFLAGS= -I/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/include
  > CXXFLAGS=
  > LDFLAGS=-L/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib -L/tmp/android-ndk-r25/sour\
ces/cxx-stl/llvm-libc++/libs/armeabi-v7a
  > LIBS=-lc -ldl -lm -llog -lc++_shared
  > PKG_CONFIG_LIBDIR=/tmp/android-ndk-r25/prebuilt/linux-x86_64/lib/pkgconfig
  > PKG_CONFIG_PATH=/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm/lib/pkgconfig
  > PKG_CONFIG_SYSROOT_DIR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > PKG_CONFIG_DIR=
  > --with-sysroot=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > --host=arm-linux-androideabi
  > --prefix=/home/stephan/git/zproject-android-testing/libzmq/builds/android/prefix/arm
  > --disable-curve
  > --without-docs
```

We can observe that LDFLAGS has invalid `-L<path_to_libc++_shared.so>`:
```
-L/tmp/android-ndk-r25/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a

```
This path is no more valid, since NDK r25, where one should use LLVM path.

Ok, once this is fixed, ./configure requires also the path to libc.so.
I don't understand why libc.so is now required, actually, but without this, ./configure fails
to build its conftest.

Solution: Fix invalid LDFLAGS.

Notes:

- To be reported to CZMQ/ZYRE via ZPROJECT.

- Tested successfully with Android Emulator (x86 & x86_64).

- Still need some more work, as execution still fails with physical devices (observed on arm64).

- Introduced `ANDROID_STL`, `ANDROID_STL_ROOT` & `ANDROID_LIBC_ROOT`. All are initialized in `android_build_helper.sh`.

- New mechanism **MUST** be compatible with former NDK versions.
2022-10-11 21:40:13 +01:00
Luca Boccassi
1c92300933
Merge pull request #4435 from stephan57160/master
Problem: Android build system needs some debug (./configure options)
2022-10-06 18:34:04 +02:00
Guilloux Stephan (Ubuntu)
426985cb2c TAB -> SPACE 2022-10-06 11:32:57 +02:00
Guilloux Stephan (Ubuntu)
a20527da7f Problem: Android build system needs some debug (./configure options)
Proposal is to dump ./configure options to have an output like below:

```
LIBZMQ (x86_64) - ./configure options to build 'LIBZMQ':
  > --quiet
  > TOOLCHAIN=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64
  > CC=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang
  > CXX=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang++
  > LD=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/ld
  > AS=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as
  > AR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
  > RANLIB=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib
  > STRIP=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip
  > CFLAGS= -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE
  > CPPFLAGS= -I/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/include
  > CXXFLAGS=
  > LDFLAGS=-L/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/lib -L/tmp/android-ndk-r25/sources/cxx-stl/llvm-libc++/libs/x86_64
  > LIBS=-lc -ldl -lm -llog -lc++_shared
  > PKG_CONFIG_LIBDIR=/tmp/android-ndk-r25/prebuilt/linux-x86_64/lib/pkgconfig
  > PKG_CONFIG_PATH=/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64/lib/pkgconfig
  > PKG_CONFIG_SYSROOT_DIR=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > PKG_CONFIG_DIR=
  > --with-sysroot=/tmp/android-ndk-r25/toolchains/llvm/prebuilt/linux-x86_64/sysroot
  > --host=x86_64-linux-android
  > --prefix=/builds/CrisalidBox/zproject-android-testing/libzmq/builds/android/prefix/x86_64
  > --disable-curve
  > --without-docs
```

Note:

  This mechanism is currently in use to identify/fix a bug in a recent PR for NDK update.

This mechanism is added before every call of `./configure`.

To be reported to CZMQ/ZYRE (via ZPROJECT).
2022-10-06 11:08:06 +02:00
Luca Boccassi
875c2b15c3
Merge pull request #4433 from stephan57160/master
Problem: Android build script may fail silently
2022-10-02 10:21:53 +01:00
Stephan Guilloux (cos)
0d49eddf16 Problem: Android build script may fail silently
Solution: Use `set -e`

Note:
To be reported in ZPROJECT, when generating the same for CZMQ & ZYRE.

Note:
`make clean` may fail when Makefile is not yet generated
(case of 1st call of build.sh after git clone).

Additionnaly, cleaned the dependency folder
(report of ZPROJECT generated scripts).
2022-10-02 02:27:12 +02:00
Teebonne
8061a33e13
sodium, not Sodium
sodium, not Sodium
2022-10-01 15:29:42 +01:00
Luca Boccassi
a782d79d45
Merge pull request #4431 from stephan57160/master
Problem: Android helpers no not validate dependent libraries.
2022-10-01 11:56:10 +01:00
Stephan Guilloux (cos)
8b8fb6d80e Problem: Android helpers no not validate dependent libraries.
Seen in the code:
```
function android_build_verify_so {
...
    for dep_soname do
        if [[ $elfoutput != *"library: [${dep_soname}]"* ]]; then
            ANDROID_BUILD_FAIL+=("Library ${soname} was expected to be linked to library with soname:")
            ANDROID_BUILD_FAIL+=("  ${dep_soname}")
        fi
    done
```

The `for xxx` syntax is wrong, most probably a typo somewhere.

Solution: Fix & complete the `for xxx` loop.

Tested with & without LIBSODIUM (only available dependent library for LIBZMQ).

Note: The same has to be done in ZPROJECT, for CZMQ & ZYRE.
2022-10-01 03:59:23 +02:00
Luca Boccassi
e15fb044ef
Merge pull request #4430 from nyfix/test_spec_req_tmo
avoid intermittent timeouts in test (esp. when run w/ASAN etc.)
2022-09-30 21:45:04 +01:00
Bill Torpey
25b3e7af02 avoid intermittent timeouts in test (esp. when run w/ASAN etc.) 2022-09-30 11:45:19 -04:00
Luca Boccassi
c73447b9e7
Merge pull request #4429 from benjdero/master
Problem: Default Android NDK version is not aligned with zproject
2022-09-26 14:15:03 +01:00
Benjamin Deroche
1f1e8145d0 Problem: Default Android NDK version is not aligned with zproject
Solution: Set NDK r25 as the default. No compatiblity changes required.
2022-09-26 14:47:05 +02:00
Luca Boccassi
ec6f3b1dba
Merge pull request #4427 from stephan57160/master
Problem: builds/android/build.sh fails with CURVE=libsodium
2022-09-22 11:35:00 +01:00
Stephan Guilloux (cos)
d4dd8a5417 Changed more git:gihub.com to https://github.com 2022-09-22 02:47:22 +02:00
Stephan Guilloux (cos)
a7774e38e6 Problem: builds/android/build.sh fails with CURVE=libsodium
How to reproduce:
```
prompt> git clone libzmq
prompt> cd libzmq/builds/android
prompt> export CURVE=libsodium
prompt> ./ci_build.sh
Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.4]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.3]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.3]: errno=Connection timed out

Cloning into 'libsodium'...
fatal: unable to connect to github.com:
github.com[0: 140.82.121.4]: errno=Connection timed out

prompt>
```

Reason: Invalid URL to download libsodium:
```
prompt> grep -s 'git clone' libzmq/builds/android/*.sh
libzmq/builds/android/build.sh:70:        (cd "${cache}" && git clone -b stable --depth 1 git://github.com/jedisct1/libsod
                                                                                          ^^^^^^^^^^^^^^^^^
```

URL should be either:
- `git@github.com:`
- `https://github.com/` same given in [zproject](https://github.com/zeromq/zproject/blob/master/zproject_known_projects.xml#L108-L111).

Solution: Change URL to `https://`.

Result:
```
prompt> export CURVE=libsodium
prompt> ./ci_build.sh
Cloning into 'libsodium'...
remote: Enumerating objects: 659, done.
remote: Counting objects: 100% (659/659), done.
remote: Compressing objects: 100% (586/586), done.
remote: Total 659 (delta 159), reused 220 (delta 34), pack-reused 0
Receiving objects: 100% (659/659), 1.97 MiB | 4.00 MiB/s, done.
Resolving deltas: 100% (159/159), done.
autoconf scripts already exist.
...
libtool: install: /bin/install -c tools/.libs/curve_keygen /home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/bin/curve_keygen
 /bin/mkdir -p '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/include'
 /bin/install -c -m 644 include/zmq.h include/zmq_utils.h '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/include'
 /bin/mkdir -p '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/lib/pkgconfig'
 /bin/install -c -m 644 src/libzmq.pc '/home/cbox_dev/git/ZEROMQ/libzmq/builds/android/prefix/x86_64/lib/pkgconfig'
make[2]: Leaving directory `/tmp/android_build/x86_64/libzmq'
make[1]: Leaving directory `/tmp/android_build/x86_64/libzmq'
libzmq android build succeeded
prompt>
```
2022-09-22 00:43:57 +02:00
Jack·Boos·Yu
9d4685d90c
[document] add vcpkg instruction (#4425)
* [document] Add vcpkg instruction step
2022-09-16 11:24:11 +01:00
Luca Boccassi
0ec2178edf
Merge pull request #4422 from minrk/bind-can-fail
Problem: bind can fail after open_socket succeeds on Windows without AF_UNIX
2022-09-08 16:17:39 +01:00
Min RK
bf906ee346
AF_UNIX support may fail on bind 2022-09-08 15:10:04 +02:00
Min RK
b2921d7183
check rc in make_fdpair
since it can fail, e.g. Windows + AF_UNIX
2022-09-08 11:17:51 +02:00
Abael He
4e193f36fc Problem: some tools misdetect null access or broken libsodium implementation
Build all projects

** BUILD SUCCEEDED **

bash-3.2# cd  bin/Debug/
bash-3.2# for x in ./* ; do ./$x 1> /dev/null 2>/dev/null  || echo $x ; done
./test_bind_curve_fuzzer
./test_bind_fuzzer
./test_bind_null_fuzzer
./test_connect_curve_fuzzer
./test_connect_fuzzer
./test_connect_null_fuzzer
Segmentation fault: 11
./test_security_curve
./test_z85_decode_fuzzer
bash-3.2# ./test_bind_curve_fuzzer
bash-3.2# ./test_bind_curve_fuzzer
bash-3.2# ./test_bind_fuzzer
bash-3.2# ./test_bind_null_fuzzer
bash-3.2# ./test_connect_curve_fuzzer
bash-3.2# ./test_connect_fuzzer
bash-3.2# ./test_security_curve
Segmentation fault: 11
bash-3.2# lldb ./test_security_curve
(lldb) target create "./test_security_curve"
Current executable set to '/Users/abaelhe/Downloads/libzmq-master/build/bin/Debug/test_security_curve' (x86_64).
(lldb) r
Process 39009 launched: '/Users/abaelhe/Downloads/libzmq-master/build/bin/Debug/test_security_curve' (x86_64)
Process 39009 stopped
* thread #3, name = 'ZMQbg/IO/0', stop reason = signal SIGSEGV
    frame #0: 0x00007ff80f64f192 libsystem_kernel.dylib`__pthread_sigmask + 10
libsystem_kernel.dylib`__pthread_sigmask:
->  0x7ff80f64f192 <+10>: jae    0x7ff80f64f19c            ; <+20>
    0x7ff80f64f194 <+12>: movq   %rax, %rdi
    0x7ff80f64f197 <+15>: jmp    0x7ff80f64a1c5            ; cerror_nocancel
    0x7ff80f64f19c <+20>: retq
Target 0: (test_security_curve) stopped.
(lldb) bt
warning: could not find Objective-C class data in the process. This may reduce the quality of type information available.
* thread #3, name = 'ZMQbg/IO/0', stop reason = signal SIGSEGV
  * frame #0: 0x00007ff80f64f192 libsystem_kernel.dylib`__pthread_sigmask + 10
    frame #1: 0x00007ff80f685acb libsystem_pthread.dylib`pthread_sigmask + 9
    frame #2: 0x00007ff80f5d1d19 libsystem_c.dylib`abort + 112
    frame #3: 0x0000000100333551 libsodium.23.dylib`_out_of_bounds.cold.1 + 17
    frame #4: 0x0000000100316229 libsodium.23.dylib`_out_of_bounds + 9
    frame #5: 0x0000000100316218 libsodium.23.dylib`sodium_free + 408
    frame #6: 0x00000001005a6d0d libzmq.5.dylib`zmq::secure_allocator_t<unsigned char>::deallocate(this=0x00007000014c6ce0, p="", (null)=96) at secure_allocator.hpp:63:56
    frame #7: 0x00000001005a6c25 libzmq.5.dylib`std::__1::allocator_traits<zmq::secure_allocator_t<unsigned char> >::deallocate(__a=0x00007000014c6ce0, __p="", __n=96) at allocator_traits.h:282:13
    frame #8: 0x00000001005a6484 libzmq.5.dylib`std::__1::__vector_base<unsigned char, zmq::secure_allocator_t<unsigned char> >::~__vector_base(this=0x00007000014c6cd0) at vector:488:9
    frame #9: 0x00000001005acae2 libzmq.5.dylib`std::__1::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >::~vector(this=0x00007000014c6cd0 size=0) at vector:579:5
    frame #10: 0x00000001005ac165 libzmq.5.dylib`std::__1::vector<unsigned char, zmq::secure_allocator_t<unsigned char> >::~vector(this=0x00007000014c6cd0 size=0) at vector:574:5
    frame #11: 0x00000001005ab2e7 libzmq.5.dylib`zmq::curve_server_t::process_hello(this=0x000000010182c600, msg_=0x00006000037001e8) at curve_server.cpp:208:1
    frame #12: 0x00000001005aad30 libzmq.5.dylib`zmq::curve_server_t::process_handshake_command(this=0x000000010182c600, msg_=0x00006000037001e8) at curve_server.cpp:104:18
    frame #13: 0x000000010062ccd7 libzmq.5.dylib`zmq::stream_engine_base_t::process_handshake_command(this=0x000000010182d400, msg_=0x00006000037001e8) at stream_engine_base.cpp:491:32
    frame #14: 0x000000010062ba21 libzmq.5.dylib`zmq::stream_engine_base_t::in_event_internal(this=0x000000010182d400) at stream_engine_base.cpp:309:14
    frame #15: 0x000000010062b665 libzmq.5.dylib`zmq::stream_engine_base_t::in_event(this=0x000000010182d400) at stream_engine_base.cpp:243:22
    frame #16: 0x00000001005c0889 libzmq.5.dylib`zmq::kqueue_t::loop(this=0x00006000037000c0) at kqueue.cpp:218:30
    frame #17: 0x00000001005eefa9 libzmq.5.dylib`zmq::worker_poller_base_t::worker_routine(arg_=0x00006000037000c0) at poller_base.cpp:146:51
    frame #18: 0x0000000100637e66 libzmq.5.dylib`thread_routine(arg_=0x0000600003700100) at thread.cpp:256:5
    frame #19: 0x00007ff80f6864e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #20: 0x00007ff80f681f6b libsystem_pthread.dylib`thread_start + 15
(lldb)
2022-08-10 22:21:00 +01:00
Luca Boccassi
05701e4a56
Merge pull request #4412 from caicaiking/master
Problem: get_opt function read the options value not thread safe
2022-08-10 22:15:08 +01:00
Abama.cai
65eee9354a
Update tongsong-cai.md 2022-08-11 03:02:56 +08:00
Abama cai
6d131718f3 Add RELICENSE statement 2022-08-11 02:46:31 +08:00
Abama cai
717d1980ee Problem: get_opt function read the options value maybe not thread safe
Solution: use scoped lock to prevent them from being modified during reading
2022-08-10 22:35:14 +08:00
Luca Boccassi
0251be4d77
Merge pull request #4409 from nevalsar/master
Problem: Incorrect formatting of documentation in zmq_udp.txt
2022-08-03 16:19:01 +01:00
Nevin Valsaraj
5a9523227a
Add relicense for nevalsar
Add relicense statement for nevalsar.
2022-08-03 08:09:26 -07:00
Nevin Valsaraj
ea1962b825
Problem: Incorrect formatting of documentation in zmq_udp.txt
Solution: Replace incorrect underline pattern in zmq_udp.txt that
makes part of the text show up as pre-formatted code block with
regular underline pattern.
2022-07-22 09:19:13 -07:00
Luca Boccassi
8fd1ec0592
Merge pull request #4406 from abaelhe/patch-2
Permission to Relicense under relevant approved license
2022-07-17 16:10:58 +01:00
Abael He
ceaccd7f9d
Permission to Relicense under relevant approved license
Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
By Abael He<abaelhe@icloud.com>
2022-07-17 23:08:08 +08:00
Luca Boccassi
37224c93de
Merge pull request #4383 from benjdero/master
Revert "Problem: Libs crash at runtime on Android when built with NDK 23+
2022-05-12 09:55:35 +01:00
Benjamin Deroche
5f6f708f29 Revert "Problem: Libs crash at runtime on Android when built with NDK 23+"
This reverts commit 9c6f09cbe551e08782b67fae367b56dc69f656f7.
2022-05-11 17:25:46 +02:00
Luca Boccassi
2d805026bb
Merge pull request #4382 from benjdero/master
Problem: Libs crash at runtime on Android when built with NDK 23+
2022-05-10 18:02:17 +01:00
Benjamin Deroche
9c6f09cbe5 Problem: Libs crash at runtime on Android when built with NDK 23+
Solution: Fix the recently updated scripts
2022-05-10 15:21:06 +02:00
Luca Boccassi
f7d4910017
Merge pull request #4381 from benjdero/master
Problem: Accidentaly deleted a comment when updating Android build sc…
2022-05-09 15:25:18 +01:00
Benjamin Deroche
a49a4d0997 Problem: Accidentaly deleted a comment when updating Android build scripts
Solution: Restore it
2022-05-09 16:18:02 +02:00
Luca Boccassi
ecfa5eccfb
Merge pull request #4380 from benjdero/master
Problem: Android build scripts does not work with latest NDK versions
2022-05-09 13:47:26 +01:00
Benjamin Deroche
d1ee71a634 Problem: Android build scripts does not work with latest NDK versions
Solution: Update the build scripts to work with NDK versions r23 and r24
2022-05-09 12:15:49 +02:00
Bill Torpey
edfbb1ced6
default to not building tests if cmake version can't handle skipped tests (#4376)
* default to not building tests if cmake version can't handle skipped tests (see https://github.com/zeromq/libzmq/issues/4375)
2022-05-03 22:18:44 +01:00
Luca Boccassi
572eb008f1
Merge pull request #4365 from bluca/obs
Problem: cannot use obs_scm which is faster than tar_scm
2022-04-09 01:16:41 +01:00
Luca Boccassi
c5d1bbf6f0 Problem: cannot use obs_scm which is faster than tar_scm
Solution: rename dsc file so that it matches expected format
2022-04-08 01:41:50 +01:00
Luca Boccassi
2ab472e735 Problem: manual release OBS trigger is flaky
Solution: use workflow instead
2022-04-08 01:23:51 +01:00
Luca Boccassi
e9e01faa73
Merge pull request #4360 from darkdragon-001/fix-pkgconfig
Fix pkgconfig
2022-03-15 13:43:25 +00:00
Darkdragon-001
58c2ac15b4 Add RELICENSE. 2022-03-15 12:44:01 +01:00
Darkdragon-001
ff2987d24a Fix pkgconfig
Use CMake install variables instead of hardcoded values.
2022-03-15 12:12:21 +01:00
Luca Boccassi
f13f891c91
Merge pull request #4357 from ferdnyc/doc-spec-ref
Problem: Docs reference outdated spec
2022-03-03 10:34:50 +00:00
FeRD (Frank Dana)
159bf0f3ad Problem: Docs reference outdated spec
Solution: Update with URL to current stable spec
2022-03-03 02:20:39 -05:00
Luca Boccassi
81a8211eeb
Merge pull request #4348 from rex4539/typos
Fix typos
2022-02-10 23:35:37 +00:00
Dimitris Apostolou
538fdb6e4c
Add relicense statement 2022-02-11 01:31:14 +02:00
Dimitris Apostolou
6b8dd84a63
Fix typos 2022-02-11 00:45:06 +02:00
Luca Boccassi
ca6dc86178
Merge pull request #4346 from Jasper-Bekkers/patch-2
Fix minor casing issue in include files
2022-02-08 20:52:21 +00:00
Jasper Bekkers
d01f244cf6
Add relicense 2022-02-08 16:17:29 +01:00
Jasper Bekkers
aea0665eec
Fix minor casing issue in include files
This fails when compiling x86_64-pc-windows-msvc targets on a case sensitive file system.
2022-02-06 22:12:19 +01:00
Luca Boccassi
a01d259db3
Merge pull request #4334 from bluca/gcc_fix
Problem: build fails with gcc 12
2022-01-18 20:17:32 +00:00
Luca Boccassi
176d72cc9b Problem: build fails with gcc 12
Solution: change test_monitor and example
2022-01-18 16:15:07 +00:00
Wojciech Kula
f03391640b Add relicense statement for Cziken 2022-01-13 09:08:23 +00:00
Luca Boccassi
612170a570 Add relicense grant from hitstergtd
Received via email, message-id:

<CAMiF1Pqf9c=KPAC9SMinKdPLVdfwB0D1B-ZbJAEMzyZmSyqQQg@mail.gmail.com>
2022-01-08 14:26:09 +00:00
Luca Boccassi
36f3d50c59
Merge pull request #4328 from tranthamp/master
Add license file for tranthamp
2022-01-07 19:06:54 +00:00
Patrick Trantham
e38a7f84d8 Add license file for tranthamp 2022-01-07 12:55:45 -06:00
fanquake
6473bf4166 problem: kevent udata is now void* on NetBSD Current (10)
solution: check for the intptr_t variant in configure.
2022-01-03 18:03:14 +00:00
Luca Boccassi
8e98b79f23
Merge pull request #4325 from fanquake/fix_builtin_typo
problem: typo in configure.ac output
2022-01-03 12:56:35 +00:00
fanquake
25d0a280e0
problem: typo in configure.ac output
solution: fix the typo
2022-01-03 19:44:07 +08:00
Luca Boccassi
ee09926cbd
Merge pull request #4323 from boscosiu/cmake-export-use-draft-api
Problem: ZMQ_BUILD_DRAFT_API define is not propagated to dependent CMake projects
2021-12-29 12:46:47 +00:00
boscosiu
4d0f4ebd69 Problem: ZMQ_BUILD_DRAFT_API define is not propagated to dependent CMake projects
Solution: Add the definition to the relevant CMake targets in public scope.  Fixes #4194
2021-12-28 18:23:05 -08:00
Luca Boccassi
7755c8442e
Merge pull request #4317 from tarmo/router-metadata-prefetch
Problem: ROUTER loses first frame metadata on message prefetch
2021-12-16 12:20:31 +00:00
Tarmo Tänav
74529d97b2 Problem: ROUTER loses first frame metadata on message prefetch
Solution: copy metadata on prefetch to the first frame
2021-12-16 10:17:44 +02:00
Luca Boccassi
ab9c7add58
Merge pull request #4314 from ThalesGroup/issue-4312-epoll-invalid-null-pointer
Issue 4312 : Fix epoll invalid event data pointer
2021-12-03 18:31:51 +00:00
patrick-volante
f6eb59c269 issue-4312 Add relicnce file. 2021-12-03 16:21:51 +01:00
patrick-volante
2c415b6f68 Problem: inside the event array, epoll return an event with invalid data pointer which create a segmentation fault
Tests to prevent segmentation fault due to null pointer are added.
2021-12-03 11:58:20 +01:00
Luca Boccassi
1d3633742a
Merge pull request #4311 from myd7349/fix-sockaddr_un-redefinition
Problem: struct sockaddr_un redefinition
2021-11-25 12:07:00 +00:00
myd7349
471ea68caf Problem: struct sockaddr_un redefinition
The definition of sockaddr_un should be protected by the include guard.
2021-11-25 08:35:58 +08:00
myd7349
5eb0b00c87
Problem: In rare cases, afunix.h doesn't contain a definition for struct sockaddr_un (#4310)
* Problem: In rare cases, afunix.h doesn't contain a definition for struct sockaddr_un

According to https://github.com/microsoft/vcpkg/issues/21623,
struct sockaddr_un might be unavailable on some machines even afunix.h exists.

For example, on some machines, the content of afunix.h looks like this:
typedef struct _SOCKADDR_UN
{
     ADDRESS_FAMILY Family;
     wchar_t Path[63];
} SOCKADDR_UN, *PSOCKADDR_UN;

but on other machines, it may looks like this:
#define UNIX_PATH_MAX 108

typedef struct sockaddr_un
{
    ADDRESS_FAMILY sun_family;
    char sun_path[UNIX_PATH_MAX];
} SOCKADDR_UN, *PSOCKADDR_UN;

Fixes #3949

References:
- [Enable Unix-domain sockets support on Windows](8f3ec75de4)
- [AF_UNIX equivalent for Windows](https://stackoverflow.com/questions/9029174/af-unix-equivalent-for-windows)
- https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
2021-11-24 14:55:45 +00:00
Luca Boccassi
5a9c174dab
Merge pull request #4309 from dgloe-hpe/3313-fork-detection
Problem: Fix fork detection on gcc 7
2021-11-23 19:17:26 +00:00
David Gloe
72b5359049 Problem: Missing relicense statement for dgloe-hpe
Solution: Add new author to the existing HPE relicense statement.
2021-11-23 16:27:52 +00:00
David Gloe
240e36af4e Problem: Fix fork detection on gcc 7
Solution: When compiling with gcc 7 and newer, the program produced by
AC_CHECK_FUNCS(fork) produces a warning, which results in configure
incorrectly disabling fork support. Fix the issue by using an
AC_COMPILE_IFELSE which correctly detects fork availability.
Tested by running configure and make check on a system with gcc 7
installed, and verifying that HAVE_FORK was defined correctly.

See issue #3313.
2021-11-23 15:47:57 +00:00
Niyas Sait
4b48007927 add win/arm64 to supported platform list 2021-11-15 14:33:20 +00:00
Luca Boccassi
2375ca8b26
Merge pull request #4299 from nsait-linaro/enable_woa64
Get cycle count from ARM64 PMCCNTR_EL0 register
2021-11-15 12:56:22 +00:00
Niyas Sait
0d86aa517f Fix linting error reported by clang-format 2021-11-15 10:31:21 +00:00
Niyas Sait
c3b3ea7ec2 add relicense for niyas sait 2021-11-15 09:42:28 +00:00
Niyas Sait
e9f86fee61 Get cycle count from ARM64 PMCCNTR_EL0 register 2021-11-15 09:12:11 +00:00
Luca Boccassi
329824cafe
Merge pull request #4294 from thielepaul/master
Problem: if ZMQ_XPUB_VERBOSER is used with proxies unsubscribe messages are lost
2021-11-05 17:44:34 +00:00
Paul Thiele
add81132c5 Problem: no relicense agreement by thielepaul
Solution: added relicense agreement
2021-11-05 15:15:19 +01:00
Paul Thiele
6737d50933 Problem: if ZMQ_XPUB_VERBOSER is used with proxies unsubscribe messages are lost
Solution: add socket option ZMQ_XSUB_VERBOSE_UNSUBSCRIBE to forward all unsubscribe messages
2021-11-05 15:12:31 +01:00
Luca Boccassi
d62fd1ac7a Problem: formatting broken
Solution: run make clang-format-diff
2021-11-03 19:39:50 +00:00
Qqzk
bb7a1cc018 Update decoder_allocators.cpp
zmq::shared_message_memory_allocator::deallocate () need to descontruct the object created by new operator.
2021-11-03 19:37:41 +00:00
Qqzk
8f238ae0b4 Create qzkLicense 2021-11-03 15:30:31 +00:00
Luca Boccassi
bddd0bc690
Merge pull request #4290 from thxkiwi/PR_issue_4287
Problem: (Windows) /GL /LTCG breaks builds when the compiler/linker o…
2021-10-29 00:30:24 +01:00
Michael Ngarimu
a6ed5b7a3f Adding missing RELICENSE file
Resolves zeromq/libzmq#4287
2021-10-28 11:28:19 -07:00
Michael Ngarimu
7c625afcc0 Problem: (Windows) /GL /LTCG breaks builds when the compiler/linker of static library differs from compiler/linker of executable
Solution: Enable /GL and /LTCG if and only if building as a Release (i.e. non-DEBUG) DLL.

Resolves zeromq/libzmq#4287
2021-10-27 22:17:21 -07:00
mjvankampen
36d6b5d923
Problem: polling_util.hpp missing sys/select.h include (#4283)
* Problem: polling_util.hpp missing sys/select.h include

Solution: include sys/select.h
2021-10-21 20:56:32 +01:00
Luca Boccassi
b2ab09bf79
Merge pull request #4285 from mjvankampen/fix/cmake_cxx_standard
Problem: newer cmake versions set CMAKE_C(XX)_FLAGS at a later stage …
2021-10-21 14:51:14 +01:00
Mark Jan van Kampen
c036d66286
Problem: newer cmake versions set CMAKE_C(XX)_FLAGS at a later stage not allowing a user to override the standard
Solution: check for C(XX)_STANDARD/CMAKE_C(XX)_STANDARD as well
Fixes #4284
2021-10-21 12:24:12 +02:00
Benjamin Deroche
519e2bf129
Problem: Android build script isn't compatible with latest NDK version (#4278)
* Problem: Android build script isn't compatible with latest NDK version

Solution: Update to Android NDK r22b
2021-10-18 10:05:10 +01:00
Gudmundur Adalsteinsson
7c2df78b49 Problem: Invalid and inconsistent poller docs
Solution: Fix it and make example code more complete
2021-10-10 11:55:56 +01:00
Luca Boccassi
e39a93e652 Problem: OBS CI config needs update following breaking change
https://openbuildservice.org/2021/09/28/support-for-push-events/
2021-10-07 11:45:59 +01:00
E. G. Patrick Bos
9fbfa40bab Problem: when linking to libzmq in my project, I want zmq symbols to remain invisible to users of my library. There is no way to control this, since visibility is set automatically through ZMQ_EXPORT based on OS and compiler.
Solution: add a preprocessor variable ZMQ_NO_EXPORT that, when set, bypasses the automatic ZMQ_EXPORT determination block and just sets ZMQ_EXPORT to empty.

By combining this solution at configuration time with manually passing -fvisibility=hidden to CXXFLAGS, I solved my visibility problem. Just passing -fvisibility=hidden is not enough, because __attribute__ ((visibility ("default"))) has higher priority.
2021-10-07 10:48:58 +01:00
Luca Boccassi
5d8d857540
Merge pull request #4264 from analogist/master
mingw-w64 10.3 build fix - winsock socket() return unsigned
2021-09-25 11:31:27 +01:00
James Wu
228edc92a9 fix test comparison between -1 and unsigned winsock2.h socket return 2021-09-24 13:13:19 -07:00
Luca Boccassi
de0b3e72dd
Merge pull request #4255 from egpbos/zmq_ppoll
add zmq_ppoll
2021-09-24 12:56:27 +01:00
E. G. Patrick Bos
36e4c9b474
add zmq_ppoll
zmq_ppoll mostly mimics zmq_poll behavior, except for the added feature of being able to specify a signal mask. Signals in this mask will be blocked during execution of zmq_ppoll. Switching of the process' active signal mask happens atomically with the actual poll call, so that no race conditions can occur. This behavior is useful when one wants to gracefully handle POSIX signals without race conditions. See e.g. the discussion below https://250bpm.com/blog:12/ for an explanation.

Also includes two new tests:
1. test_zmq_ppoll_fd does the same thing as test_zmq_poll_fd, demonstrating backwards compatibility with zmq_poll when used with a default signal mask.
2. test_zmq_ppoll_signals demonstrates the use of zmq_ppoll with a signal mask, blocking out SIGTERM everywhere except in zmq_ppoll, allowing to handle the signal in one place without having to worry about race conditions.
2021-09-24 11:04:20 +02:00
Luca Boccassi
f730e03835
Merge pull request #4259 from bluca/ci
Problem: Travis is no longer free for FLOSS projects
2021-09-22 21:13:27 +01:00
Luca Boccassi
cf8afcc411 Problem: Travis is no longer free for FLOSS projects
Solution: switch to Github Actions

Travis recently started enforcing credits for OSS projects without
any funding. While it is possible to get free credits, it is a manual
step that involves contacting customer support via email and asking to
add them, every week. While this does not require money, it requires
something far scarcer: volunteers time.

Drop Travis and migrate to Github Actions.
2021-09-22 16:42:09 +01:00
Luca Boccassi
6f200814cd Problem: some tests occasionally fail on OBS
Solution: ignore them
2021-09-22 16:42:09 +01:00
Luca Boccassi
2a954b301e Problem: test_security_curve always fails when run by CMake under Github Actions
Solution: skip it
2021-09-22 16:42:09 +01:00
Luca Boccassi
276bab8d3b Problem: test_socks and test_proxy hang under valgrind in Github Actions
Solution: skip them
2021-09-22 16:40:17 +01:00
Luca Boccassi
e3d37a82e1 Problem: some tests time out in CI under Valgrind
Solution: triple the timeouts
2021-09-22 16:40:17 +01:00
Luca Boccassi
0f706bdd97 Problem: formatting errors
Solution: run make clang-format-diff
2021-09-22 16:40:17 +01:00
Luca Boccassi
11f0802912 Problem: VMCI might not be supported by CI
Solution: skip tests if zmq_bind fails with EAFNOSUPPORT
2021-09-22 16:40:17 +01:00
Luca Boccassi
37c548d62b Problem: test_pair_tcp_cap_net_admin requires privileges and might fail
Solution: skip it if EOPNOTSUPP is returned instead of failing
2021-09-22 16:40:17 +01:00
Luca Boccassi
0eefa8b582 Problem: README.md does not mention Libera.chat
Solution: fix it

Closes #4261
2021-09-22 15:56:26 +01:00
Tim Blechmann
2bfef9aff3 epoll: add missing override statement 2021-09-22 10:11:03 +01:00
Luca Boccassi
ade334faa4
Merge pull request #4258 from timblechmann/feature/add-missing-override-statements
add missing override statements
2021-09-21 15:24:51 +01:00
Tim Blechmann
51e97c5480 add missing override statements 2021-09-21 20:13:41 +08:00
Tim Blechmann
5d04e20a01 relicense: add relicense statement for tim blechmann 2021-09-21 20:13:41 +08:00
Gudmundur Adalsteinsson
056f37f352 Problem: fast vector resize bug
Solution: init correct vector size and copy previous data into it
2021-09-01 09:58:34 +01:00
Luca Boccassi
80fef55955
Merge pull request #4246 from YunYe-Pu/yunye-patch-wss
Problem: WSS broken under high load
2021-08-31 18:31:52 +01:00
Yunye Pu
c8dfa36935 Add relicense statement for Yunye Pu 2021-08-31 13:47:33 +08:00
Yunye Pu
0e3073f402 Problem: WSS broken under contention
Solution: Make wss_engine_t's read and write consistent with stream_engine_base_t
2021-08-31 13:29:41 +08:00
Min RK
bcb659e00e
Problem: calling randombytes_close with libsodium can crash Contexts in other threads (#4242)
* add opt-out for randombytes_close

Problem: randombytes_close is either a no-op or unsafe when a Context is running.

Unfortunately, there does not appear to be a single always correct choice,
so let builders pick between two not-great options.

Opting out can leak an FD on /dev/urandom which may need to be closed explicitly.
However, with the default behavior,
using multiple contexts with CURVE can crash with no application-level workaround available.

randombytes_close is not threadsafe and calling it while still in use by a Context can cause a crash.

For implementations using /dev/[u]random, this can leave up to one leftover FD per process.

The libsodium docs suggest that this function rarely needs to be called explicitly.
2021-08-13 15:11:29 +01:00
Luca Boccassi
f6e99e72ec
Merge pull request #4236 from ChrisThrasher/enable-drafts-messages
Correct messages about whether or not the draft API is being built
2021-08-03 09:39:17 +01:00
Chris Thrasher
4756c04da0 Correct messages about whether or not the draft API is being built
If you cloned and built this repo or built it from a submodule, it
would always report "Build and install draft classes and methods"
which first might be wrong if ENABLE_DRAFTS is OFF but also didn't
match the tense of other similar messages about build options.
2021-08-02 21:13:14 -06:00
Luca Boccassi
c45750a29f Problem: formatting broken
Solution: run make clang-format-diff
2021-07-30 14:40:47 +01:00
Luca Boccassi
1caef95b48
Merge pull request #4235 from saschavv/fix_widechar_path_crash
Fix crash in context with wide characters in path
2021-07-30 14:39:44 +01:00
Sascha van Vliet
efd62e3e38 Add missing relicense agreement
To add code to the repository a relicense agreement is needed.
2021-07-30 13:28:11 +02:00
Sascha van Vliet
720ad05529 Fix crash in context with wide characters in path
The create_ipc_wildcard_address doesn't takes wide characters
into account while building a string from a temporary path.
The tmpnam_s can return a path in the user temp folder which
can contain special characters.
The string that is returned from the create_ipc_wildcard_address
will be used in the bind routine which will return an error code.
2021-07-30 10:47:08 +02:00
Luca Boccassi
a2d21f63cf
Merge pull request #4234 from sabotagebeats/fix/issues/4231
fix: building libzmq fails with error src/clock.cpp
2021-07-24 11:48:25 +01:00
sabotagebeats
430ffe61b7 fix: relicense 2021-07-24 01:36:58 -07:00
sabotagebeats
06aba27b04 fix: building libzmq fails with error src/clock.cpp:131:16: error: unused variable 'nsecs_per_usec' 2021-07-22 21:53:19 -07:00
Arnaud Loonstra
72b03aa281
Merge pull request #4230 from bluca/ci
Problem: some CI jobs always fail
2021-07-04 22:46:43 +02:00
Luca Boccassi
ddfddf8f01 Problem: appveyor has broken libsodium cache
Solution: fetch and reset instead of pulling
2021-07-04 18:35:14 +01:00
Luca Boccassi
0e795be8a8 Problem: OSX Travis builds using homebrew are timing out
Solution: use the Travis addon instead of installing manually
2021-07-04 16:15:32 +01:00
Luca Boccassi
6f76026541 Problem: Appveyor build fails to clone libsodium
Solution: set git user/email, otherwise git clone fails
2021-07-04 16:15:32 +01:00
Luca Boccassi
5cc6755174
Merge pull request #4227 from ChrisThrasher/remove_language_extensions
Use standard C and C++
2021-07-01 19:21:20 +01:00
Chris Thrasher
ef110f92c3 Add RELICENSE statement 2021-07-01 09:38:04 -06:00
Chris Thrasher
4fc83178aa Use standard C11 and C++11
Retain GNU extensions for C99 and C++98 since testing old compilers
is especially difficult and these compilation modes exist to maintain
compatability.
2021-07-01 09:37:02 -06:00
Doron Somech
1d2e972876
Merge pull request #4228 from bluca/update_wepoll
Problem: wepoll is out of date, known issues on Windows
2021-07-01 01:43:53 -04:00
Luca Boccassi
c7edbea971 Problem: wepoll is out of date, known issues on Windows
Solution: update to latest version, v1.5.8
2021-06-30 20:44:27 +01:00
Bill Torpey
ca8e30ed48
fixes for UBSAN warnings (#4223)
Problem: UBSAN shows warnings

Solution: fix alignment issues and signed to unsigned conversion
2021-06-29 13:02:35 +01:00
Luca Boccassi
fb9fb00eda Problem: formatting is broken
Solution: run clang-format-diff
2021-06-15 19:22:19 +01:00
Luca Boccassi
9b2e1fa26c
Merge pull request #4211 from egpbos/patch-1
fix unused parameter warning when POLL_BASED_ON_SELECT
2021-06-15 19:21:01 +01:00
E. G. Patrick Bos
535bc2abb8
add relicense statement for egpbos
Copyright of the Netherlands eScience Center.
2021-06-15 17:39:02 +02:00
Luca Boccassi
3b9ef60f2b
Merge pull request #4215 from bluca/test_inproc_connect
Problem: test_inproc_connect occasionally fails on slow archs
2021-06-15 14:05:07 +01:00
Luca Boccassi
de03c9a6ab Problem: test_inproc_connect occasionally fails on slow archs
Solution: actually send a message rather than just opening/closing
the sockets, as connecting is asynchronous.

tests/test_inproc_connect.cpp:341:test_bind_before_connect:PASS
tests/test_inproc_connect.cpp:342:test_connect_before_bind:PASS
tests/test_inproc_connect.cpp:343:test_connect_before_bind_pub_sub:PASS
tests/test_inproc_connect.cpp:344:test_connect_before_bind_ctx_term:PASS
tests/test_inproc_connect.cpp:345:test_multiple_connects:PASS
tests/test_inproc_connect.cpp:346:test_multiple_threads:PASS
Assertion failed: _state == active || _state == waiting_for_delimiter (src/pipe.cpp:504)
0  0xffffa015d3e4 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::zmq_abort(char const*)+0xc)
1  0xffffa017b208 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::pipe_t::process_delimiter()+0xb0)
2  0xffffa017b420 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::pipe_t::read(zmq::msg_t*)+0xd8)
3  0xffffa01a4b28 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::xpub_t::xread_activated(zmq::pipe_t*)+0x110)
4  0xffffa01a3758 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::xpub_t::xattach_pipe(zmq::pipe_t*, bool, bool)+0x68)
5  0xffffa018dc3c in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::socket_base_t::attach_pipe(zmq::pipe_t*, bool, bool)+0x94)
6  0xffffa016f288 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::object_t::process_command(zmq::command_t const&)+0x148)
7  0xffffa014ee3c in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::ctx_t::connect_inproc_sockets(zmq::socket_base_t*, zmq::options_t const&, zmq::ctx_t::pending_connection_t const&, zmq::ctx_t::side)+0xdc)
8  0xffffa0150bec in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::ctx_t::connect_pending(char const*, zmq::socket_base_t*)+0x1fc)
9  0xffffa0190034 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (zmq::socket_base_t::bind(char const*)+0x3e4)
10  0xaaaae50475d8 in /usr/src/packages/BUILD/tests/.libs/test_inproc_connect (simult_bind(void*)+0x28)
11  0xffffa019bfb8 in /usr/src/packages/BUILD/src/.libs/libzmq.so.5 (thread_routine+0x70)
12  0xffffa00e07e4 in /lib/aarch64-linux-gnu/libpthread.so.0 (start_thread+0x18c)
13  0xffff9fdcab2c in /lib/aarch64-linux-gnu/libc.so.6 (clone+0x5c)
2021-06-14 11:43:06 +01:00
Luca Boccassi
d3d685bbc1
Merge pull request #4214 from bluca/obs_pr
Problem: build/test breakages on various distros are discovered only after merge
2021-06-14 11:42:36 +01:00
Luca Boccassi
6fc817a18e Problem: build/test breakages on various distros are discovered only after merge
Solution: try the new Open Build Service PR integration workflow
2021-06-14 10:48:24 +01:00
Doron Somech
416b7aea47
Merge pull request #4213 from bluca/build
Problem: build with curve fails on GCC 11
2021-06-13 20:03:39 +03:00
Luca Boccassi
92b2c38a2c Problem: build with curve fails on GCC 11
Solution: ignore false positives due to compiler bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578

Fixes https://github.com/zeromq/libzmq/issues/4206
2021-06-13 16:21:55 +01:00
Patrick Bos
ece244dd3c
fix unused parameter warning when POLL_BASED_ON_SELECT
When the build is performed with cmake option `-DPOLLER=select`, the following warning is triggered from 4 locations that import `polling_util.hpp`:

```
[...]/src/polling_util.hpp:115:50: warning: unused parameter 'pollset_' [-Wunused-parameter]
inline size_t valid_pollset_bytes (const fd_set &pollset_)
                                                 ^
1 warning generated.
```

This is fixed here.
2021-06-10 12:23:22 +02:00
Luca Boccassi
b40a793142
Merge pull request #4207 from benjdero/master
Problem: Outdated Android build tools
2021-06-07 11:19:49 +01:00
Benjamin Deroche
2af72796a7 Problem: Outdated Android build tools
Solution: Update Android NDK version
2021-06-07 11:34:13 +02:00
Luca Boccassi
e86237da58
Merge pull request #4205 from somdoron/master
problem: no way to know when connection is temporarly dropped
2021-06-06 16:21:24 +01:00
Doron Somech
1c6c5514ed problem: no way to know when connection is temporarly dropped
This is important in order to send the login sequence of a client to the server.

Solution: add ZMQ_HICCUP_MSG to a socket, socket would send that message whenever a connection get temporarly disconnected
2021-06-06 17:14:22 +03:00
Luca Boccassi
d7e439d336 Problem: travis badge points to old travis-ci.org
Solution: Change badge to point to travis-ci.com
2021-05-27 10:05:06 +01:00
Tobias Schlüter
2ac9755ee9 Remove Windows-specific defines from zmq.h.
These are redundant with the ones in windows.hpp
and aren't needed for the public interface.
2021-05-26 16:04:24 +01:00
Simon Giesecke
78ea4ee787
Merge pull request #4193 from somdoron/master
problem: outpipe can be null when sending disconnect msg
2021-05-19 14:14:35 +02:00
Doron Somech
30a0c590d8 problem: outpipe can be null when sending disconnect msg 2021-05-19 14:41:27 +03:00
Luca Boccassi
e3c4ec241a
Merge pull request #4192 from minrk/appveyor-gh-release
[appveyor] upload windows artifacts to GitHub releases
2021-05-19 09:22:52 +01:00
Min RK
60bf76a4fd [appveyor] upload artifacts to GitHub releases 2021-05-18 22:50:11 +02:00
Luca Boccassi
0c5da25dcb
Merge pull request #4190 from yitzchak/fix-poll-docs
Update fd slot type to zmq_fd_t
2021-05-16 23:52:19 +01:00
Tarn W. Burton
59040f8dfe Add RELICENSE for yitzchak 2021-05-16 16:10:54 -04:00
Tarn W. Burton
d6e7ea44f7 Update fd slot type to zmq_fd_t 2021-05-16 08:50:06 -04:00
Chengye Ke
04c37982b1
Support so_busy_poll (#4188)
* Support so_busy_poll.
2021-05-14 23:05:56 +01:00
Luca Boccassi
ceb5fa39fe
Merge pull request #4181 from neheb/patch-1
fix unused variables under windows
2021-05-03 09:07:21 +01:00
Rosen Penev
a02cbd0646
fix unused variables under windows
Fixes compilation as -Werror is passed.
2021-05-02 16:49:27 -07:00
Luca Boccassi
497bcacb0e
Merge pull request #4176 from nyfix/reconn-options
ZMQ_RECONNECT_STOP options are intended to be inclusive
2021-04-29 19:26:55 +01:00
Bill Torpey
6bf7728e6e ZMQ_RECONNECT_STOP options are intended to be inclusive (i.e., can be OR'ed together), and so values must be powers of two 2021-04-28 10:30:35 -04:00
Luca Boccassi
2e932bb536
Merge pull request #4175 from mceSystems/master
Fix iOS build failure for x86_64
2021-04-28 11:11:01 +01:00
Koby Boyango
00d1000538 Fix iOS build failure for x86_64 2021-04-28 11:41:36 +03:00
Luca Boccassi
b4f758da35
Merge pull request #4174 from jlsantiago0/build-fix-bsd
Fix Build BSD
2021-04-15 23:16:33 +01:00
Luca Boccassi
895e976f51
Merge pull request #4173 from jlsantiago0/mingw-build-fix2
Fix MINGW with pthread cv
2021-04-15 23:15:50 +01:00
Luca Boccassi
43cb2600ca
Merge pull request #4172 from jlsantiago0/mingw-build-fix1
MINGW Build Fix.
2021-04-15 21:48:24 +01:00
Jose Santiago
7d8b149681 Fix Build BSD
This fixes build under BSD. Tested with OpenBSD-6.4 and FreeBSD-11.3.
2021-04-15 14:04:27 -05:00
Jose Santiago
e6e683731d Fix MINGW with pthread cv
ZeroMQ works and MINGW and pthread conditional variables if pthread
mutexes are used. POSIX conditional variables require POSIX mutexes, but
ZeroMQ unconditionally uses WIN32 critital sections even when configured
with pthread conditional variables. This of course does not work. This
patch fixes the build so that MINGW builds do not use WIN32 critical
sections and instead use POSIX mutexes when configured with pthread
conditional variables.

Tested with:

```
 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ ../libzmq/configure --host=x86_64-w64-mingw32 --prefix=`pwd`/stage --enable-debug --disable-Werror --enable-libunwind=no   --with-cv-impl=pthread --enable-libbsd=no
```

```
x86_64-w64-mingw32-gcc --version

   x86_64-w64-mingw32-gcc (GCC) 10.2.0.....
```
2021-04-15 13:43:55 -05:00
Jose Santiago
235654697f MINGW Build Fix.
There is a macro that redefines claose to closesocket, but then close is
later defined in unistd.h which is included in testutil_unity.cpp which
then causes the regular close() prototype to be defined with the new
function name closesocket which does not match the signature of the
original closesocket in winsock2.h from the toolchain.

We can work around this issue, by making sure that unistd.h is included
before the macro is defined. HMM> Yes macro substitution is the root of
evil.
2021-04-15 12:53:02 -05:00
Luca Boccassi
3070a4b246
Merge pull request #4163 from bluca/gcc11
Problem: build broken on Fedora Rawhide and SUSE Leap
2021-03-22 18:41:04 +00:00
Luca Boccassi
b82777bfb6 Problem: compiler error with GCC 11
Solution: downcast size to uint32_t to match vector size
range
2021-03-20 19:22:46 +00:00
Luca Boccassi
02be28e86b rpm: fix license shortname 2021-03-20 15:49:48 +00:00
Luca Boccassi
5a139a556a rpm: fix Group metadata 2021-03-20 15:45:27 +00:00
Luca Boccassi
347555f4f6 rpm: run make check in %check area 2021-03-20 15:44:34 +00:00
Luca Boccassi
4e8f02a8da
Merge pull request #4156 from nyfix/clangtidy-new
add more suppressions
2021-03-04 09:48:57 +00:00
Luca Boccassi
229fbeee1a
Merge pull request #4155 from nyfix/clangtidy-format
fix formatting problems in .clang-tidy options
2021-03-03 19:36:25 +00:00
Bill Torpey
251a155833 add suppressions for clang-tidy-10 on ubuntu:
-hicpp-avoid-goto: duplicate of -cppcoreguidelines-avoid-goto
-readability-magic-numbers: duplicate of -cppcoreguidelines-avoid-magic-numbers
-readability-identifier-naming: avoid complaints about variables like i, n
2021-03-03 14:26:17 -05:00
Bill Torpey
dc2ee409cb - fix formatting problems in .clang-tidy options 2021-03-03 11:14:49 -05:00
Luca Boccassi
bd5f5a1093
Merge pull request #4148 from bluca/vmci
Problem: VMCI build broken
2021-02-23 11:57:18 +00:00
Luca Boccassi
4bb9a4ccff Problem: no CI coverage for VMCI transport
Solution: add a build test
2021-02-21 11:50:38 +00:00
Luca Boccassi
8fe5b54b8a Problem: VMCI build broken
Solution: refactor it
2021-02-21 11:50:38 +00:00
Luca Boccassi
4ecb0454fb
Merge pull request #4149 from gummif/gfa/strtok
Problem: strtok is not thread safe
2021-02-21 10:30:54 +00:00
Luca Boccassi
38bb82b0c8 Problem: vmci tests built in repo root
Solution: move them with the rest
2021-02-20 21:38:02 +00:00
Gudmundur Adalsteinsson
c325ed127e Problem: strtok is not thread safe
Solution: use strtok_r
2021-02-20 20:29:17 +00:00
Luca Boccassi
c515671bc8
Merge pull request #4145 from gummif/gfa/malloc-vec
Problem: C style malloc and free
2021-02-19 14:06:20 +00:00
Luca Boccassi
31ebe35144
Merge pull request #4146 from gummif/gfa/unused-vars
Problem: Unused member variables _last_in
2021-02-19 14:05:44 +00:00
Luca Boccassi
fc6255ffec
Merge pull request #4143 from jlsantiago0/master
Fix Fedora33 s390x build.
2021-02-19 14:05:27 +00:00
Gudmundur Adalsteinsson
10078a9225 Problem: Unused member variables _last_in
Solution: Remove them
2021-02-18 20:38:42 +00:00
Gudmundur Adalsteinsson
4b61c67ef0 Problem: C style malloc and free
Solution: use new and delete
2021-02-18 20:31:55 +00:00
Jose Santiago
ce74e39ae3 Add Relicense statement. 2021-02-18 11:47:32 -06:00
Jose Santiago
72c8cc3912 Fix Fedora33 s390x build. 2021-02-18 11:05:29 -06:00
Luca Boccassi
54c7f7969b Problem: formatting errors
Solution: run make clang-format-diff
2021-02-08 11:39:09 +00:00
Luca Boccassi
8432cc37f8
Merge pull request #4137 from tarmo/xpub-manual-subscription-race
Problem: XPUB socket allows manual subscription on terminated pipe
2021-02-08 09:57:15 +00:00
Tarmo Tänav
2df7ab6aee Problem: XPUB socket allows manual subscription on terminated pipe
Solution: Avoid setting pipe as _last_pipe if it has been terminated
2021-02-08 06:02:10 +02:00
Doron Somech
b3722cf983
Merge pull request #4132 from sab24/master
Fixes Firefox WebSocket upgrade request in WebSocket engine
2021-01-30 23:09:52 +02:00
sab24
bdcc4cf06c Adds RELICENSE 2021-01-30 20:05:15 +01:00
sab24
133f0d00b6 Fixes indentation 2021-01-30 16:40:26 +01:00
sab24
15408f5609 Fixes Firefox WebSocket upgrade request in WebSocket engine 2021-01-30 16:23:48 +01:00
Luca Boccassi
92282785ed Add relicense grant by eponsko
Received via email, message-id:

CAGOEPvVonw=NicjcBKQcdcxGm43fOMgZfiga-4FoAQ=Efau8GQ@mail.gmail.com
2021-01-28 11:08:27 +00:00
Lingqiao Zhao
cc65a9ec93
Problem: exception thrown when debugging cl.exe x64 build with LLDB (#4129)
* Problem: exception thrown when debugging
cl.exe x64 build with LLDB

Solution: Use __try __except with cl.exe and
use pthread_setname_np with MinGW.
Remove usage of pushing exception handler
to TIB->ExceptionList.
2021-01-27 10:39:48 +00:00
Luca Boccassi
16af1bd622 Problem: test_pubsub broken everywhere
Solution: disable it
2021-01-18 09:42:33 +00:00
mjvankampen
2dd24d6d80
Problem: norm fails to compile under windows (#4123)
* Makes norm useable (but maybe slow) on windows
2021-01-18 08:42:14 +00:00
Simon Giesecke
53104ec1b9
Merge pull request #4126 from bluca/news
Problem: 4.3.4 is out, need new version
2021-01-17 16:57:48 +01:00
Luca Boccassi
c7e0342a0a Problem: wrong year in NEWS for 4.3.4
Solution: fix it
2021-01-17 13:24:32 +00:00
Luca Boccassi
cef3225370 Problem: 4.3.4 is out, need new version
Solution: bump to 4.3.5
2021-01-17 12:10:01 +00:00
942 changed files with 8638 additions and 23087 deletions

7
.clang-tidy Normal file → Executable file
View File

@ -10,10 +10,12 @@ Checks: "*,\
-google-readability-todo,\
-google-runtime-int,\
-cppcoreguidelines-avoid-goto,\
-hicpp-avoid-goto, \
-cppcoreguidelines-pro-type-member-init,\
-cppcoreguidelines-pro-type-static-cast-downcast,\
# not applicable\
-fuchsia-default-argument-calls,\
-readability-identifier-naming,\
# not applicable,\
-fuchsia-default-arguments-calls,\
-fuchsia-overloaded-operator,\
-fuchsia-statically-constructed-objects,\
# not currently a coding convention, C++11-specific, but conceivable,\
@ -45,6 +47,7 @@ Checks: "*,\
-google-readability-braces-around-statements,\
-cppcoreguidelines-pro-type-cstyle-cast,\
-cppcoreguidelines-avoid-magic-numbers,\
-readability-magic-numbers,\
-hicpp-braces-around-statements,\
-hicpp-use-equals-default,\
-hicpp-deprecated-headers,\

View File

@ -1,15 +1,20 @@
name: CI
on: [push, pull_request]
on:
push:
pull_request:
schedule:
- cron: "0 9 * * 5"
jobs:
build:
if: github.event_name == 'pull_request' || github.event_name == 'push'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- platform: x64
configuration: release
configuration: release
os: windows-2019
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
@ -18,26 +23,103 @@ jobs:
MSVCYEAR: vs2019
ARTIFACT_NAME: v142-x64
ENABLE_DRAFTS: ON
# - platform: Win32
# configuration: Release
# os: windows-2016
# WITH_LIBSODIUM: ON
# ENABLE_CURVE: ON
# CMAKE_GENERATOR: "Visual Studio 15 2017"
# MSVCVERSION: "v141"
# MSVCYEAR: "vs2017"
# ARTIFACT_NAME: v141
# ENABLE_DRAFTS: ON
- platform: x64
configuration: Release
os: windows-2016
WITH_LIBSODIUM: ON
ENABLE_CURVE: ON
CMAKE_GENERATOR: "Visual Studio 15 2017 Win64"
MSVCVERSION: "v141"
MSVCYEAR: "vs2017"
ARTIFACT_NAME: v141-x64
ENABLE_DRAFTS: ON
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: asciidoctor
DRAFT: disabled
POLLER: select
- os: ubuntu-latest
BUILD_TYPE: default
DRAFT: disabled
POLLER: poll
- os: ubuntu-latest
BUILD_TYPE: android
NDK_VERSION: android-ndk-r25
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: coverage
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev lcov
DRAFT: enabled
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
TLS: enabled
VMCI: enabled
- os: ubuntu-latest
BUILD_TYPE: valgrind
PACKAGES: valgrind libgnutls28-dev
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
CURVE: libsodium
DRAFT: enabled
PACKAGES: cmake libsodium-dev
TLS: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
CURVE: libsodium
DRAFT: enabled
GSSAPI: enabled
PACKAGES: cmake libsodium-dev libkrb5-dev
TLS: enabled
- os: ubuntu-latest
BUILD_TYPE: cmake
DRAFT: enabled
PACKAGES: cmake clang-format-11
DO_CLANG_FORMAT_CHECK: 1
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
ADDRESS_SANITIZER: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev libbsd-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
- os: ubuntu-latest
BUILD_TYPE: default
PACKAGES: libkrb5-dev libnorm-dev libpgm-dev libgnutls28-dev libsodium-dev libnss3-dev
CURVE: libsodium
GSSAPI: enabled
PGM: enabled
NORM: enabled
TIPC: enabled
IPv6: ON
TLS: enabled
USE_NSS: yes
VMCI: enabled
DRAFT: enabled
FORCE_98: enabled
CXX: clang++
- os: ubuntu-latest
BUILD_TYPE: abi-compliance-checker
PACKAGES: abi-dumper abi-compliance-checker
DRAFT: disabled
- os: ubuntu-latest
BUILD_TYPE: cmake
PACKAGES: clang-tidy clang-tools
DRAFT: enabled
CXX: clang++
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf libtool
DRAFT: enabled
- os: macos-latest
BUILD_TYPE: default
PACKAGES: automake autoconf libtool libsodium
CURVE: libsodium
DRAFT: disabled
env:
platform: ${{ matrix.platform }}
configuration: ${{ matrix.configuration }}
@ -51,43 +133,98 @@ jobs:
SODIUM_INCLUDE_DIR: ${{ github.workspace }}\libsodium\src\libsodium\include"
SODIUM_LIBRARY_DIR: ${{ github.workspace }}\libsodium\bin\${{ matrix.platform }}\${{ matrix.configuration }}\${{ matrix.MSVCVERSION }}\dynamic"
LIBZMQ_SRCDIR: ${{ github.workspace }}\libzmq
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
CURVE: ${{ matrix.CURVE }}
DRAFT: ${{ matrix.DRAFT }}
ADDRESS_SANITIZER: ${{ matrix.ADDRESS_SANITIZER }}
DO_CLANG_FORMAT_CHECK: ${{ matrix.DO_CLANG_FORMAT_CHECK }}
FORCE_98: ${{ matrix.FORCE_98 }}
CXX: ${{ matrix.CXX }}
GSSAPI: ${{ matrix.GSSAPI }}
PGM: ${{ matrix.PGM }}
NORM: ${{ matrix.NORM }}
TIPC: ${{ matrix.TIPC }}
IPv6: ${{ matrix.IPv6 }}
TLS: ${{ matrix.TLS }}
USE_NSS: ${{ matrix.USE_NSS }}
VMCI: ${{ matrix.VMCI }}
POLLER: ${{ matrix.POLLER }}
NDK_VERSION: ${{ matrix.NDK_VERSION }}
ANDROID_NDK_ROOT: /tmp/${{ matrix.NDK_VERSION }}
steps:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
if: matrix.os == 'windows-2019'
- name: Add msbuild to PATH 2016
uses: microsoft/setup-msbuild@v1.0.2
with:
vs-version: '[15.0,16.0)'
if: matrix.os == 'windows-2016'
- uses: actions/checkout@v2
if: matrix.WITH_LIBSODIUM == 'ON'
with:
repository: jedisct1/libsodium
ref: stable
path: libsodium
path: libsodium
- name: Compile libsodium
if: matrix.WITH_LIBSODIUM == 'ON'
if: matrix.WITH_LIBSODIUM == 'ON' && matrix.os == 'windows-2019'
shell: cmd
working-directory: libsodium
run: msbuild /v:minimal /p:Configuration=%Configuration%DLL builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
- name: Copy libsodium
if: matrix.WITH_LIBSODIUM == 'ON'
if: matrix.WITH_LIBSODIUM == 'ON' && matrix.os == 'windows-2019'
shell: powershell
working-directory: libsodium
run: Copy-Item "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib"
- uses: actions/checkout@v2
with:
path: libzmq
- run: md build_libzmq
- run: md build_libzmq
shell: cmd
- name: build
if: matrix.os == 'windows-2019'
- name: build-win
if: matrix.os == 'windows-2019'
shell: cmd
working-directory: build_libzmq
run: |
cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="%LIBZMQ_WERROR%" -G "%CMAKE_GENERATOR%" "%LIBZMQ_SRCDIR%"
cmake --build . --config %configuration% --target install -- -verbosity:Minimal -maxcpucount
- name: test
shell: cmd
- name: test
if: matrix.os == 'windows-2019'
shell: cmd
working-directory: build_libzmq
run: ctest -C "%Configuration%"
- name: Add debian packages
if: matrix.os == 'ubuntu-latest' && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
uses: myci-actions/add-deb-repo@10
with:
repo-name: obs
repo: deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/ ./
keys-asc: https://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_20.04/Release.key
install: ${{ matrix.PACKAGES }}
- name: Add brew packages
if: matrix.os == 'macos-latest'
shell: bash
run: brew install ${{ matrix.PACKAGES }}
- name: build
if: (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') && (matrix.BUILD_TYPE != 'coverage' || github.repository == 'zeromq/libzmq')
shell: bash
working-directory: libzmq
run: ./ci_build.sh
- name: coveralls
if: matrix.BUILD_TYPE == 'coverage' && github.repository == 'zeromq/libzmq'
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: /home/runner/work/libzmq/libzmq/libzmq/lcov.info
cron:
runs-on: ubuntu-latest
if: github.event_name == 'schedule'
strategy:
fail-fast: false
env:
BUILD_TYPE: cmake
CXX: clang++
CLANG_TIDY: clang-tidy
steps:
- name: Add debian packages
run: apt-get install --yes clang-tidy clang-tools
- name: build
shell: bash
working-directory: libzmq
run: ./ci_build.sh

50
.github/workflows/Docs.yaml vendored Normal file
View File

@ -0,0 +1,50 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy API docs content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
## libzmq-specific CI/CD ##
- name: Install AsciiDoctor
run: sudo apt install -y asciidoctor
- name: Convert AsciiDoc with AsciiDoctor into HTML
run: ./autogen.sh && ./configure && make --directory=doc
## boilerplate steps to publish github Pages ##
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: 'doc/'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2

2
.gitignore vendored
View File

@ -6,6 +6,7 @@ syntax: glob # for hg-git users
builds/Makefile
builds/deprecated-msvc/Makefile
doc/Makefile
doc/__pagelist
libtool
### automake
Makefile.in
@ -125,3 +126,4 @@ zeromq-*.tar.gz
zeromq-*.zip
core
mybuild

26
.obs/workflows.yml Normal file
View File

@ -0,0 +1,26 @@
workflow:
steps:
- branch_package:
source_project: network:messaging:zeromq:git-draft
source_package: libzmq
target_project: network:messaging:zeromq:ci
rebuild:
steps:
- trigger_services:
project: network:messaging:zeromq:git-stable
package: libzmq
- trigger_services:
project: network:messaging:zeromq:git-draft
package: libzmq
filters:
event: push
release:
steps:
- trigger_services:
project: network:messaging:zeromq:release-stable
package: libzmq
- trigger_services:
project: network:messaging:zeromq:release-draft
package: libzmq
filters:
event: tag_push

38
.readthedocs.yaml Normal file
View File

@ -0,0 +1,38 @@
#
# libzmq readthedocs.io integration
#
# This configuration file is processed by readthedocs.io to rebuild the
# libzmq documentation using Asciidoctor, see
# https://docs.readthedocs.io/en/stable/build-customization.html#asciidoc
version: "2"
formats:
- htmlzip
build:
os: "ubuntu-22.04"
tools:
nodejs: "20"
# NOTE: as of Nov 2023, build.apt_packages is NOT considered when using build.commands
#apt_packages:
# - automake
# - autoconf
# - cmake
# - libtool
commands:
# install required tools
- npm install -g asciidoctor
# HTML docs
# ---------
- doc/create_page_list.sh "$(pwd)/doc/__pagelist" "$(pwd)/doc"
- asciidoctor --backend html --destination-dir $READTHEDOCS_OUTPUT/html --attribute stylesheet=asciidoctor.css --attribute zmq_version='4.3.6' --attribute zmq_pagelist_dir=$(pwd)/doc doc/*.adoc
# HTMLZIP docs
# ------------
# Note that for usability we make sure zip will create a zipfile containing just a flat list of HTML files;
# to achieve that it's important to avoid storing absolute paths when invoking "zip", thus we use -j
# Also note that the archive name should match exactly the project slug, "libzmq" in this case.
- mkdir -p $READTHEDOCS_OUTPUT/htmlzip/
- cd $READTHEDOCS_OUTPUT/html && zip -j ../htmlzip/libzmq.zip *.html

View File

@ -4,7 +4,6 @@ language: c
os:
- linux
- osx
dist: bionic
@ -12,8 +11,6 @@ cache: ccache
env:
matrix:
- BUILD_TYPE=default CURVE=tweetnacl DRAFT=enabled
- BUILD_TYPE=cmake CURVE=tweetnacl
- BUILD_TYPE=default
# tokens to deploy releases on OBS and create/delete temporary branch on Github.
# 1) Create a token on https://github.com/settings/tokens/new with "public_repo"
@ -26,161 +23,6 @@ env:
- secure: lbZSzmqN39QdJwewKOZgq/1ijPKuyx9MFrGzMqXj2+eOSlaZS/tNavHMdKJOev+qJGK9wxmwzxOxS10AiH+AvN7WBacXX4ZtudjScz2HKJRDWTKyzMbzyScq51afniItzrsm+Vo8NHkenNFkux0sSbh0aHlpkLwrGQu+WZWcDN4=
- secure: "ZFL7hLJlGwYix8fF835OnQYakBt/o5iS7IfSW7el44ejEvGAOM9O5/ufxCcqSqn8Np7nOaM3RriAVTqWPZD6S7tMeflGTSGYHPYwWUc83z4rUPyG2FWVKXdB8ufpebAwu3hCgLiSmVeoQG47dl6xNk1oKCd+3UIjgz33u1Ecfps="
matrix:
include:
- if: type = cron OR (branch =~ analyze$ AND type = push)
env: BUILD_TYPE=cmake CLANG_TIDY=/usr/bin/clang-tidy-10 CC=clang-10 CXX=clang++-10
os: linux
compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-10
packages:
- clang-10
- clang-tools-10
- clang-tidy-10
- env: BUILD_TYPE=default CURVE=tweetnacl IPv6=ON
os: linux
dist: precise
- env: BUILD_TYPE=coverage CURVE=tweetnacl GSSAPI=enabled PGM=enabled NORM=enabled TIPC=enabled IPv6=ON TLS=enabled DRAFT=enabled
os: linux
addons:
apt:
sources:
- sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_18.04/ ./'
key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_18.04/Release.key'
packages:
- libkrb5-dev
- libnorm-dev
- libpgm-dev
- libgnutls28-dev
- lcov
- env: BUILD_TYPE=valgrind CURVE=tweetnacl DRAFT=enabled TLS=enabled
os: linux
dist: xenial
addons:
apt:
packages:
- valgrind
- libgnutls-dev
- env: BUILD_TYPE=default CURVE=libsodium GSSAPI=enabled PGM=enabled NORM=enabled
os: linux
addons:
apt:
sources:
- sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
packages:
- libkrb5-dev
- libnorm-dev
- libpgm-dev
- libsodium-dev
- asciidoc
- xmlto
- env: BUILD_TYPE=default DRAFT=enabled TLS=enabled
os: linux
dist: xenial
addons:
apt:
packages:
- libgnutls-dev
- env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled GSSAPI=enabled PGM=enabled NORM=enabled TIPC=enabled USE_NSS=yes
os: linux
addons:
apt:
sources:
- sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
packages:
- libkrb5-dev
- libnorm-dev
- libpgm-dev
- libsodium-dev
- libnss3-dev
- libbsd-dev
- env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled
os: osx
- env: BUILD_TYPE=default CURVE=libsodium DRAFT=enabled ADDRESS_SANITIZER=enabled
os: linux
addons:
apt:
packages:
- libsodium-dev
- env: BUILD_TYPE=android CURVE=tweetnacl
os: linux
dist: trusty
- env: BUILD_TYPE=cmake DO_CLANG_FORMAT_CHECK=1 CLANG_FORMAT=/usr/lib/llvm-8/bin/clang-format
os: linux
addons:
apt:
packages:
- clang-format-8
- env: BUILD_TYPE=default POLLER=poll
os: linux
- env: BUILD_TYPE=default POLLER=select
os: linux
- env: CXX=clang++ BUILD_TYPE=default CURVE=libsodium GSSAPI=enabled PGM=enabled NORM=enabled FORCE_98=enabled
os: linux
compiler: clang
addons:
apt:
sources:
- sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/ ./'
key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_14.04/Release.key'
packages:
- libkrb5-dev
- libnorm-dev
- libpgm-dev
- libsodium-dev
- env: BUILD_TYPE=abi-compliance-checker
os: linux
dist: xenial
addons:
apt:
packages:
- abi-dumper
- abi-compliance-checker
- name: Linux ARM64
env: BUILD_TYPE=default CURVE=tweetnacl GSSAPI=enabled PGM=enabled NORM=enabled IPv6=ON TLS=enabled DRAFT=enabled
os: linux
dist: bionic
arch: arm64
addons:
apt:
sources:
- sourceline: 'deb http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_18.04/ ./'
key_url: 'http://download.opensuse.org/repositories/network:/messaging:/zeromq:/git-stable/xUbuntu_18.04/Release.key'
packages:
- zip
- libkrb5-dev
- libnorm-dev
- libpgm-dev
- libgnutls28-dev
allow_failures:
- arch: arm64
before_install:
- if [ $TRAVIS_OS_NAME == "osx" -a $BUILD_TYPE == "android" ] ; then brew update; brew install binutils ; fi
- if [ $TRAVIS_OS_NAME == "osx" -a $CURVE == "libsodium" ] ; then brew update; brew install libsodium ; fi
# To allow sonar to process history information, unshallow clone first.
- if [ -n "$CLANG_TIDY" ] ; then
git fetch --unshallow ;
curl -L https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip -o build-wrapper-linux-x86.zip ;
unzip build-wrapper-linux-x86.zip ;
export SONARCLOUD_BUILD_WRAPPER_PATH="$(pwd)/build-wrapper-linux-x86/" ;
curl -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip -o sonar-scanner-cli.zip ;
unzip sonar-scanner-cli.zip ;
export SONAR_SCANNER_CLI_PATH="$(pwd)/sonar-scanner-4.2.0.1873-linux/bin/" ;
fi
before_script:
# ZMQ stress tests need more open socket (files) than the usual default
# On OSX, it seems the way to set the max files limit is constantly changing, so
# try to use all known knobs to ensure compatibility across various versions
- if [ $TRAVIS_OS_NAME == "osx" ] ; then sudo sysctl -w kern.maxfiles=64000 ; sudo sysctl -w kern.maxfilesperproc=64000 ; sudo launchctl limit maxfiles 64000 64000 ; ulimit -n 64000; fi
# Build and check this project according to the BUILD_TYPE
script: ./ci_build.sh

View File

@ -27,6 +27,7 @@ Bernd Prager
Bob Beaty
Brandon Carpenter
Brett Cameron
Brett Viren
Brian Buchanan
Burak Arslan
Carl Clemens
@ -69,7 +70,6 @@ Jon Dyte
Kamil Shakirov
Ken Steele
Kouhei Sutou
Laurent Alebarde
Leonardo J. Consoni
Lionel Flandrin
Lourens Naudé
@ -120,6 +120,7 @@ Toralf Wittner
Tore Halvorsen
Trevor Bernard
Vitaly Mayatskikh
Yacheng Zhou
Credits
=======

View File

@ -1,12 +1,13 @@
# CMake build script for ZeroMQ
project(ZeroMQ)
if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL Darwin)
cmake_minimum_required(VERSION 3.0.2)
else()
cmake_minimum_required(VERSION 2.8.12)
endif()
project(ZeroMQ)
include(CheckIncludeFiles)
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
@ -15,6 +16,7 @@ include(CheckCSourceCompiles)
include(CheckCSourceRuns)
include(CMakeDependentOption)
include(CheckCXXSymbolExists)
include(CheckStructHasMember)
include(CheckTypeSize)
include(FindThreads)
include(GNUInstallDirs)
@ -70,7 +72,7 @@ endif()
option(ENABLE_UBSAN "Build with undefined behavior sanitizer" OFF)
if(ENABLE_UBSAN)
message(STATUS "Instrumenting with Undefined Behavior Sanitizer")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
set(CMAKE_BUILD_TYPE "Debug")
set(UBSAN_FLAGS "${UBSAN_FLAGS} -fno-omit-frame-pointer")
set(UBSAN_FLAGS "${UBSAN_FLAGS} -fsanitize=undefined")
set(UBSAN_FLAGS "${UBSAN_FLAGS} -fsanitize=implicit-conversion")
@ -111,17 +113,17 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
endif()
if (NOT MSVC)
if(NOT CMAKE_CXX_FLAGS MATCHES "-std=")
if(NOT CMAKE_CXX_FLAGS MATCHES "-std=" AND NOT CXX_STANDARD AND NOT CMAKE_CXX_STANDARD)
# use C++11 by default if supported
check_cxx_compiler_flag("-std=gnu++11" COMPILER_SUPPORTS_CXX11)
check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
endif()
if(NOT CMAKE_C_FLAGS MATCHES "-std=")
check_c_compiler_flag("-std=gnu11" COMPILER_SUPPORTS_C11)
if(NOT CMAKE_C_FLAGS MATCHES "-std=" AND NOT C_STANDARD AND NOT CMAKE_C_STANDARD)
check_c_compiler_flag("-std=c11" COMPILER_SUPPORTS_C11)
if(COMPILER_SUPPORTS_C11)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_DEFAULT_SOURCE -std=c11")
else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
endif()
@ -141,6 +143,7 @@ endif()
# Will be used to add flags to pkg-config useful when apps want to statically link
set(pkg_config_libs_private "")
set(pkg_config_names_private "")
set(pkg_config_defines "")
option(WITH_OPENPGM "Build with support for OpenPGM" OFF)
option(WITH_NORM "Build with support for NORM" OFF)
@ -151,19 +154,19 @@ if(APPLE)
endif()
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
message(STATUS "Build and install draft classes and methods")
option(ENABLE_DRAFTS "Build and install draft classes and methods" ON)
else()
message(STATUS "Not building draft classes and methods")
option(ENABLE_DRAFTS "Build and install draft classes and methods" OFF)
endif()
# Enable WebSocket transport and RadixTree
if(ENABLE_DRAFTS)
set(ZMQ_BUILD_DRAFT_API 1)
message(STATUS "Building draft classes and methods")
option(ENABLE_WS "Enable WebSocket transport" ON)
option(ENABLE_RADIX_TREE "Use radix tree implementation to manage subscriptions" ON)
set(pkg_config_defines "-DZMQ_BUILD_DRAFT_API=1")
else()
message(STATUS "Not building draft classes and methods")
option(ENABLE_WS "Enable WebSocket transport" OFF)
option(ENABLE_RADIX_TREE "Use radix tree implementation to manage subscriptions" OFF)
endif()
@ -232,7 +235,7 @@ if(NOT ZMQ_USE_GNUTLS)
endif()
endif()
endif()
if(NOT ZMQ_USE_NSS)
if(ENABLE_WS AND NOT ZMQ_USE_NSS)
list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/external/sha1/sha1.c
${CMAKE_CURRENT_SOURCE_DIR}/external/sha1/sha1.h)
message(STATUS "Using builtin sha1")
@ -253,41 +256,56 @@ if(NOT MSVC)
check_cxx_symbol_exists(strlcpy string.h ZMQ_HAVE_STRLCPY)
endif()
# Select curve encryption library, defaults to tweetnacl To use libsodium instead, use --with-libsodium(must be
# Select curve encryption library, defaults to disabled To use libsodium instead, use --with-libsodium(must be
# installed) To disable curve, use --disable-curve
option(WITH_LIBSODIUM "Use libsodium instead of built-in tweetnacl" ON)
option(WITH_LIBSODIUM "Use libsodium (required with ENABLE_CURVE)" OFF)
option(WITH_LIBSODIUM_STATIC "Use static libsodium library" OFF)
option(ENABLE_CURVE "Enable CURVE security" ON)
option(ENABLE_LIBSODIUM_RANDOMBYTES_CLOSE "Automatically close libsodium randombytes. Not threadsafe without getrandom()" ON)
option(ENABLE_CURVE "Enable CURVE security" OFF)
if(ENABLE_CURVE)
# libsodium is currently the only CURVE provider
if(WITH_LIBSODIUM)
find_package("Sodium")
find_package("sodium")
if(SODIUM_FOUND)
message(STATUS "Using libsodium for CURVE security")
include_directories(${SODIUM_INCLUDE_DIRS})
link_directories(${SODIUM_LIBRARY_DIRS})
if(WITH_LIBSODIUM_STATIC)
add_compile_definitions(SODIUM_STATIC)
endif()
set(ZMQ_USE_LIBSODIUM 1)
set(ZMQ_HAVE_CURVE 1)
if (ENABLE_LIBSODIUM_RANDOMBYTES_CLOSE)
set(ZMQ_LIBSODIUM_RANDOMBYTES_CLOSE 1)
endif()
else()
message(
WARNING
"libsodium not installed, instead using builtin tweetnacl, you may want to install libsodium and run cmake again"
FATAL_ERROR
"libsodium requested but not found, you may want to install libsodium and run cmake again"
)
endif()
else() # WITH_LIBSODIUM
message(
FATAL_ERROR
"ENABLE_CURVE set, but not WITH_LIBSODIUM. No CURVE provider found."
)
endif()
if(NOT ZMQ_HAVE_CURVE)
message(STATUS "Using tweetnacl for CURVE security")
list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/src/tweetnacl.c)
set(ZMQ_USE_TWEETNACL 1)
set(ZMQ_HAVE_CURVE 1)
endif()
else()
else() # ENABLE_CURVE
message(STATUS "CURVE security is disabled")
endif()
option(WITH_GSSAPI_KRB5 "Use libgssapi_krb5" OFF)
if(WITH_GSSAPI_KRB5)
find_package("gssapi_krb5" REQUIRED)
message(STATUS "Using GSSAPI_KRB5")
include_directories(${GSSAPI_KRB5_INCLUDE_DIRS})
link_directories(${GSSAPI_KRB5_LIBRARY_DIRS})
set(HAVE_LIBGSSAPI_KRB5 1)
endif()
set(SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
option(WITH_MILITANT "Enable militant assertions" OFF)
@ -379,7 +397,7 @@ endif(WIN32)
if(NOT MSVC)
if(POLLER STREQUAL "")
check_cxx_symbol_exists(kqueue sys/event.h HAVE_KQUEUE)
check_cxx_symbol_exists(kqueue "sys/types.h;sys/event.h;sys/time.h" HAVE_KQUEUE)
if(HAVE_KQUEUE)
set(POLLER "kqueue")
endif()
@ -397,9 +415,7 @@ if(NOT MSVC)
endif()
if(POLLER STREQUAL "")
set(CMAKE_EXTRA_INCLUDE_FILES sys/devpoll.h)
check_type_size("struct pollfd" DEVPOLL)
set(CMAKE_EXTRA_INCLUDE_FILES)
check_include_files("sys/devpoll.h" HAVE_DEVPOLL)
if(HAVE_DEVPOLL)
set(POLLER "devpoll")
endif()
@ -464,18 +480,26 @@ message(STATUS "Using polling method in zmq_poll(er)_* API: ${API_POLLER}")
string(TOUPPER ${API_POLLER} UPPER_API_POLLER)
set(ZMQ_POLL_BASED_ON_${UPPER_API_POLLER} 1)
check_cxx_symbol_exists(pselect sys/select.h HAVE_PSELECT)
if (NOT WIN32 AND HAVE_PSELECT)
set(ZMQ_HAVE_PPOLL 1)
endif()
# special alignment settings
execute_process(
COMMAND getconf LEVEL1_DCACHE_LINESIZE
OUTPUT_VARIABLE CACHELINE_SIZE
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(CACHELINE_SIZE STREQUAL ""
OR CACHELINE_SIZE EQUAL 0
OR CACHELINE_SIZE EQUAL -1)
OR CACHELINE_SIZE EQUAL -1
OR CACHELINE_SIZE STREQUAL "undefined")
set(ZMQ_CACHELINE_SIZE 64)
else()
set(ZMQ_CACHELINE_SIZE ${CACHELINE_SIZE})
endif()
message(STATUS "Using ${ZMQ_CACHELINE_SIZE} bytes alignment for lock-free data structures")
check_cxx_symbol_exists(posix_memalign stdlib.h HAVE_POSIX_MEMALIGN)
if(NOT CYGWIN)
# TODO cannot we simply do 'if(WIN32) set(ZMQ_HAVE_WINDOWS ON)' or similar?
@ -484,8 +508,12 @@ endif()
if(NOT WIN32)
set(ZMQ_HAVE_IPC 1)
set(ZMQ_HAVE_STRUCT_SOCKADDR_UN 1)
else()
check_include_files("winsock2.h;afunix.h" ZMQ_HAVE_IPC)
if(ZMQ_HAVE_IPC)
check_struct_has_member("struct sockaddr_un" sun_path "winsock2.h;afunix.h" ZMQ_HAVE_STRUCT_SOCKADDR_UN)
endif()
endif()
# ##################### BEGIN condition_variable_t selection
@ -540,12 +568,18 @@ if(ZMQ_HAVE_WINDOWS)
# Cannot use check_library_exists because the symbol is always declared as char(*)(void)
set(CMAKE_REQUIRED_LIBRARIES "ws2_32.lib")
check_cxx_symbol_exists(WSAStartup "winsock2.h" HAVE_WS2_32)
if(HAVE_WS2_32)
set(pkg_config_libs_private "${pkg_config_libs_private} -lws2_32")
endif()
set(CMAKE_REQUIRED_LIBRARIES "rpcrt4.lib")
check_cxx_symbol_exists(UuidCreateSequential "rpc.h" HAVE_RPCRT4)
set(CMAKE_REQUIRED_LIBRARIES "iphlpapi.lib")
check_cxx_symbol_exists(GetAdaptersAddresses "winsock2.h;iphlpapi.h" HAVE_IPHLAPI)
if(HAVE_IPHLAPI)
set(pkg_config_libs_private "${pkg_config_libs_private} -liphlpapi")
endif()
check_cxx_symbol_exists(if_nametoindex "iphlpapi.h" HAVE_IF_NAMETOINDEX)
set(CMAKE_REQUIRED_LIBRARIES "")
@ -555,12 +589,19 @@ else()
check_cxx_symbol_exists(if_nametoindex net/if.h HAVE_IF_NAMETOINDEX)
check_cxx_symbol_exists(SO_PEERCRED sys/socket.h ZMQ_HAVE_SO_PEERCRED)
check_cxx_symbol_exists(LOCAL_PEERCRED sys/socket.h ZMQ_HAVE_LOCAL_PEERCRED)
check_cxx_symbol_exists(SO_BUSY_POLL sys/socket.h ZMQ_HAVE_BUSY_POLL)
endif()
if(NOT MINGW)
find_library(RT_LIBRARY rt)
if(RT_LIBRARY)
set(pkg_config_libs_private "${pkg_config_libs_private} -lrt")
set(CMAKE_REQUIRED_LIBRARIES rt)
check_cxx_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
set(CMAKE_REQUIRED_LIBRARIES)
else()
check_cxx_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
endif()
endif()
@ -581,13 +622,9 @@ if(WIN32 AND NOT CYGWIN)
endif()
if(NOT MSVC)
set(CMAKE_REQUIRED_LIBRARIES rt)
check_cxx_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
set(CMAKE_REQUIRED_LIBRARIES)
check_cxx_symbol_exists(fork unistd.h HAVE_FORK)
check_cxx_symbol_exists(gethrtime sys/time.h HAVE_GETHRTIME)
check_cxx_symbol_exists(mkdtemp stdlib.h HAVE_MKDTEMP)
check_cxx_symbol_exists(mkdtemp "stdlib.h;unistd.h" HAVE_MKDTEMP)
check_cxx_symbol_exists(accept4 sys/socket.h HAVE_ACCEPT4)
check_cxx_symbol_exists(strnlen string.h HAVE_STRNLEN)
else()
@ -677,7 +714,7 @@ if(LIBZMQ_WERROR)
zmq_check_cxx_flag_prepend("/WX")
else()
zmq_check_cxx_flag_prepend("-Werror")
if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if(${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
zmq_check_cxx_flag_prepend("-errwarn=%all")
endif()
endif()
@ -718,20 +755,24 @@ if(NOT ANDROID)
endif()
# -----------------------------------------------------------------------------
if(NOT CMAKE_CROSSCOMPILING AND NOT MSVC)
zmq_check_sock_cloexec()
zmq_check_o_cloexec()
zmq_check_so_bindtodevice()
zmq_check_so_keepalive()
zmq_check_so_priority()
zmq_check_tcp_keepcnt()
zmq_check_tcp_keepidle()
zmq_check_tcp_keepintvl()
zmq_check_tcp_keepalive()
zmq_check_tcp_tipc()
if (NOT MSVC)
# Compilation checks
zmq_check_pthread_setname()
zmq_check_pthread_setaffinity()
zmq_check_getrandom()
# Execution checks
if(NOT CMAKE_CROSSCOMPILING)
zmq_check_sock_cloexec()
zmq_check_o_cloexec()
zmq_check_so_bindtodevice()
zmq_check_so_keepalive()
zmq_check_so_priority()
zmq_check_tcp_keepcnt()
zmq_check_tcp_keepidle()
zmq_check_tcp_keepintvl()
zmq_check_tcp_keepalive()
zmq_check_tcp_tipc()
zmq_check_getrandom()
endif()
endif()
if(CMAKE_SYSTEM_NAME MATCHES "Linux"
@ -754,7 +795,7 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_definitions(-D_DARWIN_C_SOURCE)
endif()
find_package(AsciiDoc)
find_package(AsciiDoctor)
cmake_dependent_option(WITH_DOC "Build Reference Guide documentation(requires DocBook)" ON "ASCIIDOC_FOUND;NOT WIN32"
OFF) # Do not build docs on Windows due to issues with symlinks
@ -879,13 +920,6 @@ if(MSVC)
string(REGEX REPLACE "/Z.[^:]" "/Z7 " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
string(REGEX REPLACE "/Z.[^:]" "/Z7 " CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
# Optimization flags. http://msdn.microsoft.com/en-us/magazine/cc301698.aspx
if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /LTCG")
endif()
endif()
# -----------------------------------------------------------------------------
@ -1169,13 +1203,14 @@ endif()
set(public_headers include/zmq.h include/zmq_utils.h)
set(readme-docs AUTHORS COPYING COPYING.LESSER NEWS)
set(readme-docs AUTHORS LICENSE NEWS)
# -----------------------------------------------------------------------------
# optional modules
if(WITH_OPENPGM)
add_definitions(-DZMQ_HAVE_OPENPGM)
message(STATUS "Building with OpenPGM")
set(ZMQ_HAVE_OPENPGM 1)
include_directories(${OPENPGM_INCLUDE_DIRS})
link_directories(${OPENPGM_LIBRARY_DIRS})
set(OPTIONAL_LIBRARIES ${OPENPGM_LIBRARIES})
@ -1192,7 +1227,8 @@ if(WITH_NORM)
endif()
if(WITH_VMCI)
add_definitions(-DZMQ_HAVE_VMCI)
message(STATUS "Building with VMCI")
set(ZMQ_HAVE_VMCI 1)
include_directories(${VMCI_INCLUDE_DIRS})
list(APPEND cxx-sources vmci_address.cpp vmci_connecter.cpp vmci_listener.cpp vmci.cpp)
endif()
@ -1201,6 +1237,10 @@ if(ZMQ_HAVE_TIPC)
list(APPEND cxx-sources tipc_address.cpp tipc_connecter.cpp tipc_listener.cpp)
endif()
if(WITH_GSSAPI_KRB5)
list(APPEND cxx-sources gssapi_client.cpp gssapi_mechanism_base.cpp gssapi_server.cpp)
endif()
# -----------------------------------------------------------------------------
# source generators
@ -1217,9 +1257,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/platform.hpp.in ${CMAKE_
list(APPEND sources ${CMAKE_CURRENT_BINARY_DIR}/platform.hpp)
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${prefix})
set(libdir ${prefix}/lib)
set(includedir ${prefix}/include)
set(exec_prefix "\${prefix}")
set(libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
set(VERSION ${ZMQ_VERSION_MAJOR}.${ZMQ_VERSION_MINOR}.${ZMQ_VERSION_PATCH})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libzmq.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libzmq.pc @ONLY)
set(zmq-pkgconfig ${CMAKE_CURRENT_BINARY_DIR}/libzmq.pc)
@ -1245,25 +1285,16 @@ option(WITH_DOCS "Build html docs" ON)
if(WITH_DOCS)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc)
file(
GLOB docs
GLOB asciidoc_files
RELATIVE ${CMAKE_CURRENT_BINARY_DIR}/
"${CMAKE_CURRENT_SOURCE_DIR}/doc/*.txt")
set(html-docs)
foreach(txt ${docs})
string(REGEX REPLACE ".*/(.*)\\.txt" "\\1.html" html ${txt})
set(src ${txt})
set(dst doc/${html})
if(WITH_DOC)
add_custom_command(
OUTPUT ${dst}
COMMAND ${ASCIIDOC_EXECUTABLE} -d manpage -b xhtml11 -f ${CMAKE_CURRENT_SOURCE_DIR}/doc/asciidoc.conf
-azmq_version=${ZMQ_VERSION} -o ${dst} ${src}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${src}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating ${html}")
list(APPEND html-docs ${CMAKE_CURRENT_BINARY_DIR}/${dst})
endif()
endforeach()
"${CMAKE_CURRENT_SOURCE_DIR}/doc/*.adoc")
string(REPLACE ".txt" ".html" html_files ${asciidoc_files})
add_custom_command(
OUTPUT ${html_files}
COMMAND asciidoctor -b html -azmq_version=${ZMQ_VERSION} *.adoc
DEPENDS ${asciidoc_files}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating ${html}")
endif()
if(ZMQ_BUILD_FRAMEWORK)
@ -1307,6 +1338,27 @@ if(MSVC)
VS_GLOBAL_RunCodeAnalysis true)
endfunction()
if(BUILD_SHARED)
# Whole Program Optimization flags. http://msdn.microsoft.com/en-us/magazine/cc301698.aspx
#
# "Finally, there's the subject of libraries. It's possible to create .LIB
# files with code in its IL form. The linker will happily work with these
# .LIB files. Be aware that these libraries will be tied to a specific
# version of the compiler and linker. If you distribute these libraries,
# you'll need to update them if Microsoft changes the format of IL in a
# future release."
#
# /GL and /LTCG can cause problems when libraries built with different
# versions of compiler are later linked into an executable while /LTCG is active.
# https://social.msdn.microsoft.com/Forums/vstudio/en-US/5c102025-c254-4f02-9a51-c775c6cc9f4b/problem-with-ltcg-when-building-a-static-library-in-vs2005?forum=vcgeneral
#
# For this reason, enable only when building a "Release" (e.g. non-DEBUG) DLL.
if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GL")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /LTCG")
endif()
add_library(libzmq SHARED ${sources} ${public_headers} ${html-docs} ${readme-docs}
${CMAKE_CURRENT_BINARY_DIR}/NSIS.template.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
if(ENABLE_ANALYSIS)
@ -1348,9 +1400,9 @@ else()
if(NOT MINGW)
add_library(objects OBJECT ${sources})
set_property(TARGET objects PROPERTY POSITION_INDEPENDENT_CODE ON)
target_include_directories(
objects PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> $<INSTALL_INTERFACE:include>)
if(GNUTLS_FOUND)
target_include_directories(objects PRIVATE "${GNUTLS_INCLUDE_DIR}")
endif()
endif()
if(BUILD_SHARED)
@ -1365,12 +1417,12 @@ else()
add_library(libzmq SHARED $<TARGET_OBJECTS:objects> ${public_headers} ${html-docs} ${readme-docs}
${zmq-pkgconfig} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
endif()
endif()
# NOTE: the SOVERSION and VERSION MUST be the same as the one generated by libtool! It is NOT the same as the
# version of the package.
set_target_properties(
libzmq PROPERTIES COMPILE_DEFINITIONS "DLL_EXPORT" PUBLIC_HEADER "${public_headers}" VERSION "5.2.4"
libzmq PROPERTIES COMPILE_DEFINITIONS "DLL_EXPORT" PUBLIC_HEADER "${public_headers}" VERSION "5.2.6"
SOVERSION "5" OUTPUT_NAME "${ZMQ_OUTPUT_BASENAME}" PREFIX "lib")
if(ZMQ_BUILD_FRAMEWORK)
set_target_properties(
@ -1419,16 +1471,31 @@ if(BUILD_STATIC)
list(APPEND target_outputs "libzmq-static")
endif()
foreach(target ${target_outputs})
set(build_targets ${target_outputs})
if(TARGET objects)
list(APPEND build_targets "objects")
endif()
foreach(target ${build_targets})
target_include_directories(
${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> $<INSTALL_INTERFACE:include>)
if(ENABLE_DRAFTS)
target_compile_definitions(${target} PUBLIC ZMQ_BUILD_DRAFT_API)
endif()
endforeach()
if(BUILD_SHARED)
target_link_libraries(libzmq ${CMAKE_THREAD_LIBS_INIT})
if(QNX)
target_link_libraries(libzmq -lsocket)
endif()
if(GNUTLS_FOUND)
target_link_libraries(libzmq ${GNUTLS_LIBRARIES})
target_include_directories(libzmq PRIVATE "${GNUTLS_INCLUDE_DIR}")
endif()
if(NSS3_FOUND)
@ -1447,6 +1514,10 @@ if(BUILD_SHARED)
endif()
endif()
if(WITH_GSSAPI_KRB5)
target_link_libraries(libzmq ${GSSAPI_KRB5_LIBRARIES})
endif()
if(HAVE_WS2_32)
target_link_libraries(libzmq ws2_32)
elseif(HAVE_WS2)
@ -1468,12 +1539,17 @@ if(BUILD_SHARED)
if(norm_FOUND)
target_link_libraries(libzmq norm::norm)
endif()
if(OPENPGM_FOUND)
target_link_libraries(libzmq ${OPENPGM_LIBRARIES})
endif()
endif()
if(BUILD_STATIC)
target_link_libraries(libzmq-static ${CMAKE_THREAD_LIBS_INIT})
if(GNUTLS_FOUND)
target_link_libraries(libzmq-static ${GNUTLS_LIBRARIES})
target_include_directories(libzmq-static PRIVATE "${GNUTLS_INCLUDE_DIR}")
endif()
if(LIBBSD_FOUND)
@ -1492,6 +1568,10 @@ if(BUILD_STATIC)
endif()
endif()
if(WITH_GSSAPI_KRB5)
target_link_libraries(libzmq-static ${GSSAPI_KRB5_LIBRARIES})
endif()
if(HAVE_WS2_32)
target_link_libraries(libzmq-static ws2_32)
elseif(HAVE_WS2)
@ -1517,6 +1597,10 @@ if(BUILD_STATIC)
if(norm_FOUND)
target_link_libraries(libzmq-static norm::norm)
endif()
if(OPENPGM_FOUND)
target_link_libraries(libzmq-static ${OPENPGM_LIBRARIES})
endif()
endif()
if(BUILD_SHARED)
@ -1542,6 +1626,7 @@ if(BUILD_SHARED)
if(GNUTLS_FOUND)
target_link_libraries(${perf-tool} ${GNUTLS_LIBRARIES})
target_include_directories(${perf-tool} PRIVATE "${GNUTLS_INCLUDE_DIR}")
endif()
if(LIBBSD_FOUND)
@ -1556,6 +1641,10 @@ if(BUILD_SHARED)
target_link_libraries(${perf-tool} ${SODIUM_LIBRARIES})
endif()
if(WITH_GSSAPI_KRB5)
target_link_libraries(${perf-tool} ${GSSAPI_KRB5_LIBRARIES})
endif()
if(ZMQ_BUILD_FRAMEWORK)
# Copy perf-tools binaries into Framework
add_custom_command(
@ -1589,7 +1678,11 @@ endif()
# -----------------------------------------------------------------------------
# tests
option(BUILD_TESTS "Whether or not to build the tests" ON)
if(${CMAKE_VERSION} VERSION_LESS 3.12.3)
option(BUILD_TESTS "Whether or not to build the tests" OFF)
else()
option(BUILD_TESTS "Whether or not to build the tests" ON)
endif()
set(ZMQ_BUILD_TESTS
${BUILD_TESTS}
@ -1732,7 +1825,7 @@ if(MSVC AND ENABLE_CPACK)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ZeroMQ lightweight messaging kernel")
set(CPACK_PACKAGE_VENDOR "Miru")
set(CPACK_NSIS_CONTACT "Steven McCoy <Steven.McCoy@miru.hk>")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}\\\\COPYING.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}\\\\LICENSE.txt")
# set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_BINARY_DIR}\\\\README.txt") set(CPACK_RESOURCE_FILE_WELCOME
# "${CMAKE_CURRENT_BINARY_DIR}\\\\WELCOME.txt") There is a bug in NSI that does not handle full unix paths properly.
# Make sure there is at least one set of four(4) backslashes.
@ -1816,3 +1909,9 @@ if(MSVC
AND BUILD_STATIC)
add_dependencies(libzmq-static libzmq)
endif()
option(ENABLE_NO_EXPORT "Build with empty ZMQ_EXPORT macro, bypassing platform-based automated detection" OFF)
if(ENABLE_NO_EXPORT)
message(STATUS "Building with empty ZMQ_EXPORT macro")
add_definitions(-DZMQ_NO_EXPORT)
endif()

674
COPYING
View File

@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@ -1,181 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
--------------------------------------------------------------------------------
SPECIAL EXCEPTION GRANTED BY COPYRIGHT HOLDERS
As a special exception, copyright holders give you permission to link this
library with independent modules to produce an executable, regardless of
the license terms of these independent modules, and to copy and distribute
the resulting executable under terms of your choice, provided that you also
meet, for each linked independent module, the terms and conditions of
the license of that module. An independent module is a module which is not
derived from or based on this library. If you modify this library, you must
extend this exception to your version of the library.
Note: this exception relieves you of any obligations under sections 4 and 5
of this license, and section 6 of the GNU General Public License.

View File

@ -145,7 +145,7 @@ error can be resolved by adding environment variable for shell.
export XML_CATALOG_FILES=/usr/local/etc/xml/catalog
Write comamnd above in shell for instant resolve, or append command into
Write command above in shell for instant resolve, or append command into
shell profile file and reload for permanent resolve.
Compilers and Options

2
Jenkinsfile vendored
View File

@ -443,7 +443,7 @@ pipeline {
echo "Used: myDEPLOY_JOB_NAME:${myDEPLOY_JOB_NAME} myDEPLOY_BRANCH_PATTERN:${myDEPLOY_BRANCH_PATTERN} myDEPLOY_REPORT_RESULT:${myDEPLOY_REPORT_RESULT}"
if ( (myDEPLOY_JOB_NAME != "") && (myDEPLOY_BRANCH_PATTERN != "") ) {
if ( env.BRANCH_NAME =~ myDEPLOY_BRANCH_PATTERN ) {
def GIT_URL = sh(returnStdout: true, script: """git remote -v | egrep '^origin' | awk '{print \$2}' | head -1""").trim()
def GIT_URL = sh(returnStdout: true, script: """git remote -v | grep -E '^origin' | awk '{print \$2}' | head -1""").trim()
def GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse --verify HEAD').trim()
def DIST_ARCHIVE = ""
if ( params.DO_DIST_DOCS ) { DIST_ARCHIVE = env.BUILD_URL + "artifact/__dist.tar.gz" }

373
LICENSE Normal file
View File

@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@ -283,12 +283,6 @@ src_libzmq_la_SOURCES += \
external/wepoll/wepoll.h
endif
if USE_TWEETNACL
src_libzmq_la_SOURCES += \
src/tweetnacl.c \
src/tweetnacl.h
endif
if HAVE_WS
src_libzmq_la_SOURCES += \
src/ws_address.cpp \
@ -472,8 +466,8 @@ test_apps = \
tests/test_unbind_wildcard \
tests/test_ctx_options \
tests/test_ctx_destroy \
tests/test_security_no_zap_handler \
tests/test_security_null \
tests/test_security_no_zap_handler \
tests/test_security_null \
tests/test_security_plain \
tests/test_security_zap \
tests/test_iov \
@ -487,9 +481,9 @@ test_apps = \
tests/test_conflate \
tests/test_inproc_connect \
tests/test_issue_566 \
tests/test_proxy \
tests/test_proxy_hwm \
tests/test_proxy_single_socket \
tests/test_proxy_steerable \
tests/test_proxy_terminate \
tests/test_getsockopt_memset \
tests/test_setsockopt \
@ -500,6 +494,7 @@ test_apps = \
tests/test_capabilities \
tests/test_xpub_nodrop \
tests/test_xpub_manual \
tests/test_xpub_topic \
tests/test_xpub_welcome_msg \
tests/test_xpub_verbose \
tests/test_atomics \
@ -720,9 +715,14 @@ tests_test_issue_566_SOURCES = tests/test_issue_566.cpp
tests_test_issue_566_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_issue_566_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
# TODO: gets stuck even with long timeout running under Github Actions
if !VALGRIND_ENABLED
test_apps += tests/test_proxy
tests_test_proxy_SOURCES = tests/test_proxy.cpp
tests_test_proxy_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_proxy_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
endif
tests_test_proxy_hwm_SOURCES = tests/test_proxy_hwm.cpp
tests_test_proxy_hwm_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
@ -732,6 +732,10 @@ tests_test_proxy_single_socket_SOURCES = tests/test_proxy_single_socket.cpp
tests_test_proxy_single_socket_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_proxy_single_socket_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_proxy_steerable_SOURCES = tests/test_proxy_steerable.cpp
tests_test_proxy_steerable_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_proxy_steerable_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_proxy_terminate_SOURCES = tests/test_proxy_terminate.cpp
tests_test_proxy_terminate_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_proxy_terminate_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
@ -768,6 +772,10 @@ tests_test_xpub_manual_SOURCES = tests/test_xpub_manual.cpp
tests_test_xpub_manual_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_xpub_manual_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_xpub_topic_SOURCES = tests/test_xpub_topic.cpp
tests_test_xpub_topic_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_xpub_topic_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_xpub_welcome_msg_SOURCES = tests/test_xpub_welcome_msg.cpp
tests_test_xpub_welcome_msg_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_xpub_welcome_msg_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
@ -843,11 +851,6 @@ tests_test_security_curve_SOURCES = \
src/err.hpp \
src/err.cpp
if USE_TWEETNACL
tests_test_security_curve_SOURCES += \
src/tweetnacl.c
endif
tests_test_security_curve_LDADD = \
${TESTUTIL_LIBS} src/libzmq.la $(LIBUNWIND_LIBS) $(LIBBSD_LIBS)
tests_test_security_curve_CPPFLAGS = \
@ -1001,16 +1004,20 @@ tests_test_security_gssapi_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
endif
if ON_LINUX
test_apps += tests/test_abstract_ipc \
tests/test_socks
test_apps += tests/test_abstract_ipc
tests_test_abstract_ipc_SOURCES = tests/test_abstract_ipc.cpp
tests_test_abstract_ipc_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_abstract_ipc_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
# TODO: gets stuck even with long timeout running under Github Actions
if !VALGRIND_ENABLED
test_apps += tests/test_socks
tests_test_socks_SOURCES = tests/test_socks.cpp
tests_test_socks_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_socks_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
endif
# TODO: enable when https://github.com/zeromq/libzmq/issues/3898 is fixed
if !ENABLE_ASAN
@ -1024,19 +1031,19 @@ endif
endif
if HAVE_VMCI
test_apps += test_pair_vmci test_reqrep_vmci
test_apps += tests/test_pair_vmci tests/test_reqrep_vmci
test_pair_vmci_SOURCES = tests/test_pair_vmci.cpp
test_pair_vmci_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
test_pair_vmci_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
test_pair_vmci_LDFLAGS = @LIBZMQ_VMCI_LDFLAGS@
test_pair_vmci_CXXFLAGS = @LIBZMQ_VMCI_CXXFLAGS@
tests_test_pair_vmci_SOURCES = tests/test_pair_vmci.cpp
tests_test_pair_vmci_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_pair_vmci_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_pair_vmci_LDFLAGS = @LIBZMQ_VMCI_LDFLAGS@
tests_test_pair_vmci_CXXFLAGS = @LIBZMQ_VMCI_CXXFLAGS@
test_reqrep_vmci_SOURCES = tests/test_reqrep_vmci.cpp
test_reqrep_vmci_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
test_reqrep_vmci_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
test_reqrep_vmci_LDFLAGS = @LIBZMQ_VMCI_LDFLAGS@
test_reqrep_vmci_CXXFLAGS = @LIBZMQ_VMCI_CXXFLAGS@
tests_test_reqrep_vmci_SOURCES = tests/test_reqrep_vmci.cpp
tests_test_reqrep_vmci_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_reqrep_vmci_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_reqrep_vmci_LDFLAGS = @LIBZMQ_VMCI_LDFLAGS@
tests_test_reqrep_vmci_CXXFLAGS = @LIBZMQ_VMCI_CXXFLAGS@
endif
@ -1056,7 +1063,11 @@ test_apps += tests/test_poller \
tests/test_msg_init \
tests/test_hello_msg \
tests/test_disconnect_msg \
tests/test_channel
tests/test_channel \
tests/test_hiccup_msg \
tests/test_zmq_ppoll_fd \
tests/test_xsub_verbose \
tests/test_pubsub_topics_count
tests_test_poller_SOURCES = tests/test_poller.cpp
tests_test_poller_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
@ -1121,6 +1132,30 @@ tests_test_disconnect_msg_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_channel_SOURCES = tests/test_channel.cpp
tests_test_channel_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_channel_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_hiccup_msg_SOURCES = tests/test_hiccup_msg.cpp
tests_test_hiccup_msg_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_hiccup_msg_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_zmq_ppoll_fd_SOURCES = tests/test_zmq_ppoll_fd.cpp
tests_test_zmq_ppoll_fd_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_zmq_ppoll_fd_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_xsub_verbose_SOURCES = tests/test_xsub_verbose.cpp
tests_test_xsub_verbose_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_xsub_verbose_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
tests_test_pubsub_topics_count_SOURCES = tests/test_pubsub_topics_count.cpp
tests_test_pubsub_topics_count_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_pubsub_topics_count_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
if HAVE_FORK
test_apps += tests/test_zmq_ppoll_signals
tests_test_zmq_ppoll_signals_SOURCES = tests/test_zmq_ppoll_signals.cpp
tests_test_zmq_ppoll_signals_LDADD = ${TESTUTIL_LIBS} src/libzmq.la
tests_test_zmq_ppoll_signals_CPPFLAGS = ${TESTUTIL_CPPFLAGS}
endif
endif
if FUZZING_ENGINE_LIB
@ -1383,6 +1418,11 @@ unittests_unittest_curve_encoding_LDADD = \
$(top_builddir)/src/.libs/libzmq.a \
${src_libzmq_la_LIBADD} \
$(CODE_COVERAGE_LDFLAGS)
if USE_LIBSODIUM
unittests_unittest_curve_encoding_CPPFLAGS += ${sodium_CFLAGS}
unittests_unittest_curve_encoding_LDADD += ${sodium_LIBS}
endif
endif
check_PROGRAMS = ${test_apps}
@ -1414,6 +1454,7 @@ EXTRA_DIST = \
autogen.sh \
version.sh \
ci_build.sh \
LICENSE \
src/libzmq.vers \
src/version.rc.in \
tests/CMakeLists.txt \

39
NEWS
View File

@ -1,4 +1,41 @@
0MQ version 4.3.4 stable, released on 2020/01/17
0MQ version 4.3.5 stable, released on 2023/10/09
================================================
* Relicensing from LGPL-3.0+ (with custom exceptions) to MPL-2.0 is now complete.
libzmq is now distributed under the Mozilla Public License 2.0. Relicensing
grants have been collected from all relevant authors, and some functionality
has been clean-room reimplemented where that was not possible. In layman terms,
the new license provides the same rights and obligations as before. Source
files are now tagged using the SPDX license identifier format.
Details of the relicensing process can be seen at:
https://github.com/zeromq/libzmq/issues/2376
Relicensing grants have been archived at:
https://github.com/rlenferink/libzmq-relicense
A special thanks to everybody who helped with this long and difficult task,
with the process, the reimplementations, the collections and everything else.
* New DRAFT (see NEWS for 4.2.0) socket options:
- ZMQ_BUSY_POLL will set the SO_BUSY_POLL socket option on the underlying
sockets, if it is supported.
- ZMQ_HICCUP_MSG will send a message when the peer has been disconnected.
- ZMQ_XSUB_VERBOSE_UNSUBSCRIBE will configure a socket to pass all
unsubscription messages, including duplicated ones.
- ZMQ_TOPICS_COUNT will return the number of subscribed topics on a
PUB/SUB socket.
- ZMQ_NORM_MODE, ZMQ_NORM_UNICAST_NACK, ZMQ_NORM_BUFFER_SIZE,
ZMQ_NORM_SEGMENT_SIZE, ZMQ_NORM_BLOCK_SIZE, ZMQ_NORM_NUM_PARITY,
ZMQ_NORM_NUM_AUTOPARITY and ZMQ_NORM_PUSH to control various aspect of
NORM sockets.
See doc/zmq_setsockopt.txt and doc/zmq_getsockopt.txt for details.
* New DRAFT (see NEWS for 4.2.0) zmq_ppoll APIs was added that differs from
zmq_poll in the same way that ppoll differs from poll.
See doc/zmq_ppoll.txt for details.
* Various bug fixes and performance improvements.
0MQ version 4.3.4 stable, released on 2021/01/17
================================================
* New DRAFT (see NEWS for 4.2.0) socket option:

View File

@ -38,7 +38,7 @@ Freenode network (irc.freenode.net).
## Copyright
Copyright (c) 2007-2016 Contributors as noted in the AUTHORS file.
The project license is specified in COPYING and COPYING.LESSER.
The project license is specified in LICENSE.
The names "ØMQ", "ZeroMQ", "0MQ", and the ØMQ logo are registered trademarks
of iMatix Corporation ("iMatix") and refers to either (a) the original libzmq

View File

@ -1,8 +1,9 @@
# ZeroMQ
[![Build Status](https://travis-ci.org/zeromq/libzmq.png?branch=master)](https://travis-ci.org/zeromq/libzmq)
[![Build Status](https://github.com/zeromq/libzmq/actions/workflows/CI.yaml/badge.svg)](https://github.com/zeromq/libzmq/actions/workflows/CI.yaml)
[![Build status](https://ci.appveyor.com/api/projects/status/e2ks424yrs1un3wt?svg=true)](https://ci.appveyor.com/project/zeromq/libzmq)
[![Coverage Status](https://coveralls.io/repos/github/zeromq/libzmq/badge.svg?branch=master)](https://coveralls.io/github/zeromq/libzmq?branch=master)
[![Conan Center](https://shields.io/conan/v/zeromq)](https://conan.io/center/zeromq)
## Welcome
@ -23,7 +24,7 @@ of platforms, where libzmq has been successfully compiled on.
| OS and version | Architecture | Compiler and version | Build system | Remarks |
|----------------------------------------|-------------------------|-------------------------------|--------------|---------------------------------------------------------------------------------------------------------------------------------------|
| Android NDK r20 | arm, arm64, x86, x86_64 | llvm (see NDK) | autotools | DRAFT |
| Android NDK r25 | arm, arm64, x86, x86_64 | llvm (see NDK) | autotools | DRAFT |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | clang 5.0.0 | autotools | STABLE, extras: GSSAPI, PGM, NORM, C++98 mode only |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | gcc 4.8.4 | autotools | STABLE, DRAFT, extras: GSSAPI, PGM, NORM, TIPC, IPV6, also POLLER=poll, POLLER=select, also valgrind and address sanitizer executions |
| Ubuntu 14.04.5 LTS (trusty) | amd64 | gcc 4.8.4 | CMake 3.12.2 | STABLE |
@ -76,7 +77,8 @@ case of a released version.
| DragonFly BSD | amd64 | gcc 8.3 | autotools | 2018/08/07 git-72854e63 | |
| IBM i | ppc64 | gcc 6.3 | autotools | 2019/10/02 git-25320a3 | |
| QNX 7.0 | x86_64 | gcc 5.4.0 | CMake | 4.3.2 | |
| Windows 10 | ARM64 | Visual Studio 2019 | CMake | 2021/11/15 git-2375ca8b | |
| Windows 10 | ARM64 | clang | CMake | 2021/11/15 git-2375ca8b | |
### Supported platforms without known active users
@ -103,7 +105,6 @@ Note: this list is incomplete and inaccurate and still needs some work.
| OS and version | Architecture | Compiler and version | Remarks |
|----------------|--------------|----------------------|-------------------------------------------------------------------------|
| QNX 6.3 | ? | gcc 3.3.5 | see #3371, support was added by a user, but not contributed to upstream |
| Windows 10 | ARM, ARM64 | Visual Studio 2017 | see #3366, probably only minor issues |
For more details, see [here](SupportedPlatforms.md).
@ -154,6 +155,17 @@ For OSX users, packages are available via brew.
brew install zeromq
## Installation of package manager <a name="package manager"/>
### vcpkg
vcpkg is a full platform package manager, you can easily install libzmq via vcpkg.
git clone https://github.com/microsoft/vcpkg.git
./bootstrap-vcpkg.bat # For powershell
./bootstrap-vcpkg.sh # For bash
./vcpkg install zeromq
## Build from sources <a name="build"/>
To build from sources, see the INSTALL file included with the distribution.
@ -176,31 +188,14 @@ Announcements mailing list: zeromq-announce@lists.zeromq.org
Git repository: http://github.com/zeromq/libzmq
ZeroMQ developers can also be found on the IRC channel #zeromq, on the
Freenode network (irc.freenode.net).
Libera Chat network (irc.libera.chat).
## License
The project license is specified in COPYING and COPYING.LESSER.
The project license is specified in LICENSE.
libzmq is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License (LGPL) as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
As a special exception, the Contributors give you permission to link
this library with independent modules to produce an executable,
regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the
terms and conditions of the license of that module. An independent
module is a module which is not derived from or based on this library.
If you modify this library, you must extend this exception to your
version of the library.
libzmq is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
the terms of the Mozilla Public License Version 2.0.
## Contributing

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Leonardo J. Consoni
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "AnCaPepe", with
commit author "Leonardo José Consoni <consoni_2519@hotmail.com>", are copyright of Leonardo J. Consoni.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Leonardo José Consoni
2017/03/19

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Andre Caron
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "AndreLouisCaron", with
commit author "Andre Caron <andre.l.caron@gmail.com>", are copyright of Andre Caron.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Andre Caron
2017/03/19

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Hendrik Beskow
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "Asmod4n", with
commit author "Asmod4n Asmod4n@users.noreply.github.com", are copyright of Hendrik Beskow.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Hendrik Beskow
2017/04/21

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Axel Nennker that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "AxelNennker", with
commit author "Axel Nennker <axel@nennker.de>", are
copyright of Axel Nennker. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Axel Nennker
2019/08/11

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Caleb Epstein
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "Bklyn", with
commit author "Caleb Epstein <cae@bklyn.org>", are copyright of Caleb Epstein.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Caleb Epstein
2017/03/21

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Dries Harnie
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "Botje", with
commit author "Dries Harnie <dries@harnie.be>", are copyright of Dries Harnie.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Dries Harnie
2019/10/31

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by C-Sir
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "C-Sir", with
commit author "C-Sir <942510829@qq.com>", are copyright of C-Sir.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
C-Sir
2020/09/28

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Michael Lloyd
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "CommanderBubble", with
commit author "Michael Lloyd <commander.bubble@gmail.com>", are copyright of Michael Lloyd.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Michael Lloyd
2019/02/23

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Daiyu Hurst that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "daiyuhurst", with
commit author "Daiyu Hurst <daiyu.hurst@gmail.com>", are
copyright of Daiyu Hurst. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Daiyu Hurst
2019/08/31

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Eelis van der Weegen that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "Eelis", with
commit author "Eelis van der Weegen <eelis@eelis.net>", are
copyright of Eelis van der Weegen. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Eelis van der Weegen
2019/02/22

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Franco Fichtner that grants permission to relicense
its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public
License v2 (MPLv2) or any other Open Source Initiative approved license
chosen by the current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "fichtner", with
commit author "Franco Fichtner <franco@lastsummer.de>", are copyright
of Franco Fichtner. This document hereby grants the libzmq project
team to relicense libzmq, including all past, present and future
contributions of the author listed above.
Franco Fichtner
2017/03/21

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Frédéric Trégon
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "FredTreg", with
commit author "Frederic Tregon <frederic.tregon@gmail.com>", are copyright of Frédéric Trégon.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Frédéric Trégon
2020/02/03

View File

@ -1,17 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Erik Hugne
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "Hugne", with
commit author "erik.hugne@gmail.com", are copyright of Erik Hugne.
Commits made by author "erik.hugne@ericsson.com" are NOT covered by this
statement.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Erik Hugne
2017/03/22

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Johan Mabille
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "JohanMabille", with
commit author "Johan Mabille johan.mabille@gmail.com", are copyright of Johan Mabille.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Johan Mabille
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Jon Dyte
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "JonDyte", with
commit author "Jon Dyte <jon@totient.co.uk>", are copyright of Jon Dyte.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Jon Dyte
2019/10/03

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Nikita Kozlov
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "KLNikita", with
commit author "nikita kozlov <nikita@elyzion.net>", are copyright of Nikita Kozlov .
This document hereby grants the libzmq project team to relicense
libzmq,
including all past, present and future contributions of the author
listed above.
Nikita Kozlov
6 February 2020

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Martin Grigorov
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "martin-g", with
commit author "Martin Grigorov", are copyright of Martin Grigorov.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Martin Grigorov
2021/01/11

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Robert G. Jakabosky
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "Neopallium", with
commit author "Robert G. Jakabosky <bobby@sharedrealm.com>", are copyright of Robert G. Jakabosky.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Robert Gabriel Jakabosky
2019/08/17

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Arthur O'Dwyer
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "Quuxplusone", with
commit author "Arthur O'Dwyer <arthur@push.am>", are copyright of Arthur O'Dwyer.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Arthur O'Dwyer
2019/02/17

View File

@ -1,23 +0,0 @@
# Permission to Relicense under MPLV2
This directory collects grants from individuals and firms that hold
copyrights in ZeroMQ to permit licensing the ZeroMQ code under
the [Mozilla Public License, version
2](https://www.mozilla.org/en-US/MPL/2.0/). See [GitHub Pull
Request #1917](https://github.com/zeromq/libzmq/pull/1917),
the [0MQ Licensing Page](http://zeromq.org/area:licensing) and
[original iMatix zeromq-dev license
grant](http://lists.zeromq.org/pipermail/zeromq-dev/2016-April/030288.html)
for some background information.
Please create a separate file in this directory for each individual
or firm holding copyright in ZeroMQ, named after the individual or
firm holding the copyright.
Each patch must be made with a GitHub handle that is clearly
associated with the copyright owner, to guarantee the identity of
the signatory. Please avoid changing the files created by other
individuals or firms granting a copyright license over their
copyrights (if rewording is required contact them and ask them to
submit an updated version). This makes it easier to verify that
the license grant was made by an authorized GitHub account.

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Bryan Gillespie (RPGillespie6)
that grants permission to relicense his copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "RPGillespie6", with
commit author "Bryan Gillespie <rpgillespie6@gmail.com>", are copyright of Bryan Gillespie.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed
above.
Bryan Gillespie
2019/09/06

View File

@ -1,6 +0,0 @@
Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Rickard Hallerbäck that grants permission to relicense its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other Open Source Initiative approved license chosen by the current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "Ricardicus", with commit author "Rickard Hallerbäck", are copyright of Rickard Hallerbäck. This document hereby grants the libzmq project team to relicense libzmq, including all past, present and future contributions of the author listed above.
Rickard Hallerbäck 2020/02/28

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Sébastien Rombauts
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "SRombauts", with
commit author "Sébastien Rombauts", are copyright of Sébastien Rombauts.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Sébastien Rombauts
2017/03/21

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Serghei Novac
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "carbofos", with
commit author "Serghei Novac <serghei.novac@epydoc.com>", are copyright of Serghei Novac.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Serghei Novac
2019/03/05

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Stephane Vales
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "StephaneVales", with
commit author "Stephane Vales <7755128+stvales@users.noreply.github.com>", are copyright of Stephane Vales.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Stephane Vales
2020/08/06

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Sylvain Corlay
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "SylvainCorlay", with
commit author "Sylvain Corlay sylvain.corlay@gmail.com", are copyright of Sylvain Corlay .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Sylvain Corlay
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Timothee Besset
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "TTimo", with
commit author "Timothee Besset <ttimo@ttimo.net>", are copyright of Timothee Besset.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Timothee Besset
2017/03/19

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Jesse Gorzinski
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "ThePrez", with
commit author "ThePrez &lt;jgorzinski@gmail.com&gt;", are copyright of Jesse Gorzinski.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Jesse Gorzinski
2019/10/02

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Tobias Schlüter
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "TobiSchluter", with
commit author "TobiSchluter", are copyright of Tobias Schlüter .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Tobias Schlüter
2019/09/13

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Wenbin Hou
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "WenbinHou", with
commit author "Wenbin Hou <houwenbin@pku.edu.cn>", are copyright of Wenbin Hou.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Wenbin Hou
2018/05/16

View File

@ -1,17 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Harald Achitz
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "a4z", with
commit author "Harald Achitz <harald.achitz@gmail.com>" or
"Harald Achitz <harald.achitz@tritech.se>" or
"Harald Achitz <harald.achitz@getinge.com>", are copyright of Harald Achitz.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Harald Achitz
2017/03/21

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Nikolay Amiantov that grants permission to relicense his
copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License
v2 (MPLv2) or any other Open Source Initiative approved license chosen by the
current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "abbradar", with commit
author "Nikolay Amiantov <ab@fmap.me>", are copyright of Nikolay Amiantov.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed
above.
Nikolay Amiantov
2017/03/24

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Alain Kalker
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "ackalker", with
commit author "Alain Kalker <a.c.kalker@gmail.com>", are copyright of Alain Kalker.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Alain Kalker
2019/05/23

View File

@ -1,14 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Liquid Instruments
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "acsearle", with
commit author "Antony Searle", are copyright of Liquid Instruments .
This document hereby grants the libzmq project team to relicense
libzmq, including all past, present and future contributions of the author
listed above.
Antony Searle
2020/02/03

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Alex Grönholm
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "agronholm", with
commit author "Alex Grönholm <alex.gronholm+git@nextday.fi>", are copyright of Alex Grönholm.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Alex Grönholm
2017/03/19

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by aixxe (aixxe)
that grants permission to relicense his copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "aixxe", with commit author
"aixxe <me@aixxe.net>" are copyright of aixxe.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
aixxe
2019/07/25

View File

@ -1,7 +0,0 @@
Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Attila Mark Sz that grants permission to relicense its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other Open Source Initiative approved license chosen by the current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "ambitslix", with commit author "gougolith@gmail.com", are copyright of Attila Mark. This document hereby grants the libzmq project team to relicense libzmq, including all past, present and future contributions of the author listed above.
Attila Mark Sz 2020/11/10

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Adrian Muraru
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "amuraru", with
commit author "Adrian Muraru <adi.muraru@gmail.com>", are copyright of Adrian Muraru.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Adrian Muraru
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Ming Ji
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "answeroo", with
commit author "answeroo <jiming@yafco.com>", are copyright of Ming Ji.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Ming Ji
2018/08/20

View File

@ -1,17 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Anton Dimitrov that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "antonrd", with
commit author "Anton Dimitrov <dimitrov.anton@gmail.com>", are
copyright of Anton Dimitrov. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Anton Dimitrov
2018/10/01

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Arkadiusz Drabczyk (ardrabczyk) that grants
permission to relicense his copyrights in the libzmq C++ library
(ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other Open
Source Initiative approved license chosen by the current ZeroMQ BDFL
(Benevolent Dictator for Life).
A portion of the commits made by the Github handle "ardrabczyk", with
commit author "Arkadiusz Drabczyk <arkadiusz@drabczyk.org>", are
copyright of Arkadiusz Drabczyk. This document hereby grants the
libzmq project team to relicense libzmq, including all past, present
and future contributions of the author listed above.
Arkadiusz Drabczyk
2020/11/10

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Matthew Arsenault
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "arsenm", with
commit author "Matt Arsenault <arsenm2@gmail.com>", are copyright of Matthew Arsenault.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Matthew Arsenault
2017/10/12

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Asaf Kahlon
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "asafkahlon", with
commit author "Asaf Kahlon asafka7@gmail.com", are copyright of Asaf Kahlon.
This document hereby grants the libzmq project team to relicense
libzmq,
including all past, present and future contributions of the author
listed above.
Asaf Kahlon
2020/02/05

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Adam Seering
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commit made by the Github handle "aseering", with
commit author "Adam Seering <aseering@gmail.com>", are copyright of Adam Seering.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Adam Seering
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Andrei Tomashpolskiy
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "atomashpolskiy", with
commit author "Andrei Tomashpolskiy <nordmann89@gmail.com>", are copyright of Andrei Tomashpolskiy .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Andrei Tomashpolskiy
2019/08/22

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Jim Hague that grants permission to relicense
its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla
Public License v2 (MPLv2) or any other Open Source Initiative approved
license chosen by the current ZeroMQ BDFL (Benevolent Dictator for
Life).
A portion of the commits made by the Github handle "banburybill", with
commit author "Jim Hague <jim.hague@acm.org>", are copyright of Jim
Hague. This document hereby grants the libzmq project team to
relicense libzmq, including all past, present and future contributions
of the author listed above.
Jim Hague
2017/03/20

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Bruno Bodin
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "bbdb68", with
commit author "Bruno Bodin <brunobodin@gmail.com>", are copyright of Bruno Bodin .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Bruno Bodin
2017/04/04

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Brian Adamson that grants permission to relicense its
copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License v2
(MPLv2).
A portion of the commits made by the Github handle "bebopagogo", with commit
author "bebopagogo <bebopagogo@users.noreply.github.com>" and "Brian Adamson
<badamson@gmail.com>", are copyright of Brian Adamson. This document hereby grants
the libzmq project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Brian Adamson 2019/08/11 s

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Benjamin Deroche
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "benjdero", with
commit author "Benjamin Deroche", are copyright of Benjamin Deroche.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Benjamin Deroche
2019/10/26

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Björn Töpel that grants permission to relicense
its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla
Public License v2 (MPLv2) or any other Open Source Initiative approved
license chosen by the current ZeroMQ BDFL (Benevolent Dictator for
Life).
A portion of the commits made by the Github handle "bjoto", with
commit author "Bjorn Topel <bjorn.topel@gmail.com>", are copyright of
Björn Töpel. This document hereby grants the libzmq project team to
relicense libzmq, including all past, present and future contributions
of the author listed above.
Björn Töpel
2017/03/26

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Jovan Bunjevacki that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "bjovke", with
commit author "Jovan Bunjevacki <bjovan@gmail.com>", are
copyright of Jovan Bunjevacki. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Jovan Bunjevacki
2017/04/04

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Bastian Löher that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "bl0x", with
commit author "Bastian Löher <me@l-dot.de>", are
copyright of Bastian Löher. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Bastian Löher
2019/08/01

View File

@ -1,17 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Luca Boccassi (bluca)
that grants permission to relicense his copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "bluca", with
commit author "Luca Boccassi <luca.boccassi@gmail.com>" or
"Luca Boccassi <bluca@debian.org>", are copyright of Luca Boccassi.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed
above.
Luca Boccassi
2019/02/16

View File

@ -1,7 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by boxkey that grants permission to relicense its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other Open Source Initiative approved license chosen by the current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "boxkey", with commit author "boxkey [289844900@qq.com](289844900@qq.com)", are copyright of boxkey. This document hereby grants the libzmq project team to relicense libzmq, including all past, present and future contributions of the author listed above.
boxkey 2020/11/30

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Bernd Prager
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "bprager", with
commit author "Bernd Prager <bernd@prager.ws>", are copyright of Bernd Prager.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Bernd Prager
2017/03/22

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Brett Cameron
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "brc859844", with
commit author "Brett Cameron <brett.r.cameron@gmail.com>" or
"Brett Cameron <brett.cameron@vmssoftware.com>", are copyright of Brett Cameron.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Brett Russell Cameron
2019/02/25

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Brian Silverman
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "brian-peloton", with
commit author "brian@peloton-tech.com", are copyright of Brian Silverman .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Brian Silverman
2019/08/14

View File

@ -1,15 +0,0 @@
## Brocade Communications Systems Inc.
This is a statement by Brocade Communications Systems Inc. (Brocade)
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "bluca", with
commit author "Luca Boccassi <luca.boccassi@gmail.com>" or
"Luca Boccassi <lboccass@brocade.com>", are copyright of Brocade.
This permission to relicense includes all past, present and future
contributions of Brocade employees.
Luca Boccassi
Software Engineer, Brocade Communications Systems Inc.
2016-05-16

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Jeff Brubaker that grants permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
A portion of the commits made by the Github handle "brubakerjeff", with
commit author "Jeff Brubaker <brubaker.jeff@gmail.com>", are
copyright of Jeff Brubaker. This document hereby grants the libzmq
project team to relicense libzmq, including all past, present and
future contributions of the author listed above.
Jeff Brubaker
2018/11/18

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Brian Buchanan
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "bwbuchanan", with
commit author "Brian Buchanan &lt;bwb@holo.org&gt;" or "Brian Buchanan &lt;brian@tiogalake.com&gt;", are copyright of Brian Buchanan.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Brian Buchanan
2017/03/23

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Constantin Rack
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "c-rack", with
commit author "Constantin Rack <constantin.rack@gmail.com>", are copyright of Constantin Rack.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Constantin Rack
2017/03/20

View File

@ -1,14 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Dylan Cali
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "calid", with
commit author "Dylan Cali <calid1984@gmail.com>", are copyright of Dylan Cali.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Dylan Cali
2019/02/17

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Eric Camachat
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "camachat", with
commit author "Eric Camachat <eric@camachat.org>", are copyright of Eric Camachat.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Eric L. Camachat
March 20, 2017

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Connamara Systems llc
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "cbusbey", with
commit author "chris busbey", are copyright of Connamara Systems, llc.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Chris Busbey
2019/09/03

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Christopher Dolan
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "cdolan", with
commit author "Christopher Dolan <chris@codingstream.org>", are copyright of Christopher Dolan.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Christopher Dolan
2017/03/19

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Lionel Orry
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "chickenkiller", with
commit author "Lionel Orry <lionel.orry@gmail.com>", are copyright of Lionel Orry.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Lionel Orry
2017/03/23

View File

@ -1,14 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Chris Staite that grants permission to relicense its
copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License
v2 (MPLv2).
A portion of the commits made by the Github handle "chrisstaite", with commit
author "Chris <chris@yourdreamnet.co.uk>", are copyright of Chris Staite.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed
above.
Chris Staite
2017/03/28

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Chuck Remes
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "chuckremes", with
commit author "Chuck Remes", are copyright of Chuck Remes.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Chuck Remes
2017/03/21

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by "chugga\_fan"
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "chuggafan", with
commit author "chugga\_fan chuggafans@gmail.com", are copyright of "chugga\_fan" .
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
"chugga\_fan"
2017/03/19

View File

@ -1,12 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
I happily grant permission to
relicense its copyrights in the libzmq C++ library (ZeroMQ) under the
Mozilla Public License v2 (MPLv2) or any other Open Source Initiative
approved license chosen by the current ZeroMQ BDFL (Benevolent
Dictator for Life).
The portion of the commits made by the Github handle "chymanfx", are
not copyrighted in any way.
Chyman
2019/08/12

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Christophe Juniet
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "cjuniet", with
commit author "Christophe Juniet <c.juniet@gmail.com>", are copyright of Christophe Juniet.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Christophe Juniet
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Christian Kamm
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "ckamm", with
commit author "Christian Kamm kamm@incasoftware.de", are copyright of Christian Kamm.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Christian Kamm
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Christopher Laws
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "claws", with
commit author "Chris Laws <clawsicus@gmail.com>", are copyright of Christopher Laws.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Christopher Laws
2019/08/11

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other share-alike OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Chia-liang Kao
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
share-alike Open Source Initiative approved license chosen by the current
ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "clkao", with
commit author "Chia-liang Kao clkao@clkao.org", are copyright of Chia-liang Kao.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Chia-liang Kao
2017/03/20

View File

@ -1,7 +0,0 @@
Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Denis Collette that grants permission to relicense its copyrights in the libzmq C++ library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other Open Source Initiative approved license chosen by the current ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "colletted", with commit author "Denis Collette denisncollette@gmail.com", are copyright of Denis Collette. This document hereby grants the libzmq project team to relicense libzmq, including all past, present and future contributions of the author listed above.
Denis Collette 2020/01/22

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Giuseppe Corbelli
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "cowo78" with
commit author "Giuseppe Corbelli <cowo78@gmail.com>", are copyright of Giuseppe Corbelli.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Giuseppe Corbelli
2017/03/21

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by crocket
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "crocket", with
commit author "crocket <748856+crocket@users.noreply.github.com>", are copyright of crocket.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
crocket
2018/11/10

View File

@ -1,13 +0,0 @@
# Permission to Relicense under MPLv2
This is a statement by Cameron Smith
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).
A portion of the commits made by the Github handle "cwsmith", with
commit author "Cameron Smith <smithc11@rpi.edu>", are copyright of Cameron Smith.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Cameron Smith
2020/02/05

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Daniel Shih
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "danielhtshih", with
commit author "Daniel Shih <hotingwow@gmail.com>", are copyright of Daniel Shih.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Daniel Shih
2017/03/20

View File

@ -1,16 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Dan Riegsecker
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "danriegsecker", with
commit author "Dan Riegsecker 1baldgeek@gmail.com", are copyright of
Dan Riegsecker. This document hereby grants the libzmq project team to
relicense libzmq, including all past, present and future contributions of
the author listed above.
Dan Riegsecker
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Tore Halvorsen
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "demozon", with
commit author "Tore Halvorsen <tore.halvorsen@gmail.com>", are copyright of Tore Halvorsen.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Tore Halvorsen
2017/03/20

View File

@ -1,15 +0,0 @@
# Permission to Relicense under MPLv2 or any other OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by Dennis Klein
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
Open Source Initiative approved license chosen by the current ZeroMQ
BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "dennisklein", with
commit author "Dennis Klein <d.klein@gsi.de>", are copyright of Dennis Klein.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
Dennis Klein
2019/08/11

Some files were not shown because too many files have changed in this diff Show More