Commit Graph

8487 Commits

Author SHA1 Message Date
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