ContinuumIO / anaconda-issues

Anaconda issue tracking
648 stars 222 forks source link

zeromq==4.3.5 does not appear to be built with CURVE support #13339

Open dihm opened 9 months ago

dihm commented 9 months ago

Checklist

Impacted product

What happened?

Starting with zeromq==4.3.5, the following error occurs:

>>> import zmq
>>> zmq.curve_keypair()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "zmq/backend/cython/utils.pyx", line 60, in zmq.backend.cython.utils.curve_keypair
  File "C:\Users\naqsL\miniconda3\envs\zmq\Lib\site-packages\zmq\error.py", line 149, in _check_rc
    raise ZMQError(errno)
zmq.error.ZMQError: Not supported

Expected behavior or outcome

The above commands work if zeromq==4.3.4 (which also downgrades pyzmq from 25.1.2 to 25.1.0

According to the zeromq docs, this appears to indicate that zeromq has be built without CURVE support.

Conda info

active environment : zmq
    active env location : C:\Users\naqsL\miniconda3\envs\zmq
            shell level : 3
       user config file : C:\Users\naqsL\.condarc
 populated config files : C:\Users\naqsL\.condarc
          conda version : 23.11.0
    conda-build version : not installed
         python version : 3.9.18.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=x86_64
                          __conda=23.11.0=0
                          __cuda=12.2=0
                          __win=0=0
       base environment : C:\Users\naqsL\miniconda3  (writable)
      conda av data dir : C:\Users\naqsL\miniconda3\etc\conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
                          https://conda.anaconda.org/conda-forge/win-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : C:\Users\naqsL\miniconda3\pkgs
                          C:\Users\naqsL\.conda\pkgs
                          C:\Users\naqsL\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\naqsL\miniconda3\envs
                          C:\Users\naqsL\.conda\envs
                          C:\Users\naqsL\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/23.11.0 requests/2.31.0 CPython/3.9.18 Windows/10 Windows/10.0.19045 solver/libmamba conda-libmamba-solver/23.12.0 libmambapy/1.5.6
          administrator : False
             netrc file : None
           offline mode : False

Conda config

==> C:\Users\naqsL\.condarc <==
channel_priority: strict
channels:
  - defaults
  - conda-forge

Conda list

# packages in environment at C:\Users\naqsL\miniconda3\envs\zmq:
#
# Name                    Version                   Build  Channel
bzip2                     1.0.8                he774522_0    defaults
ca-certificates           2023.12.12           haa95532_0    defaults
libffi                    3.4.4                hd77b12b_0    defaults
libsodium                 1.0.18               h62dcd97_0    defaults
openssl                   3.0.12               h2bbff1b_0    defaults
pip                       23.3.1          py311haa95532_0    defaults
python                    3.11.7               he1021f5_0    defaults
pyzmq                     25.1.2          py311hd77b12b_0    defaults
setuptools                68.2.2          py311haa95532_0    defaults
sqlite                    3.41.2               h2bbff1b_0    defaults
tk                        8.6.12               h2bbff1b_0    defaults
tzdata                    2023d                h04d1e81_0    defaults
vc                        14.2                 h21ff451_1    defaults
vs2015_runtime            14.27.29016          h5e58377_2    defaults
wheel                     0.41.2          py311haa95532_0    defaults
xz                        5.4.5                h8cc25b3_0    defaults
zeromq                    4.3.5                hd77b12b_0    defaults
zlib                      1.2.13               h8cc25b3_0    defaults

Additional information

No response

chrisjbillington commented 8 months ago

Still seeing this on a fresh environment and the latest pyzmq with Python 3.11 on Windows, but not on Linux where it seems zeromq is built with libsodium support:

$ ldd /home/bilbo/miniconda3/envs/py311/lib/libzmq.so
    linux-vdso.so.1 (0x00007ffdbf1cf000)
    libsodium.so.23 => /home/bilbo/miniconda3/envs/py311/lib/./libsodium.so.23 (0x0000714aa61c3000)
    librt.so.1 => /usr/lib/librt.so.1 (0x0000714aa6176000)
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x0000714aa6171000)
    libstdc++.so.6 => /home/bilbo/miniconda3/envs/py311/lib/./libstdc++.so.6 (0x0000714aa5e00000)
    libc.so.6 => /usr/lib/libc.so.6 (0x0000714aa5c1e000)
    libgcc_s.so.1 => /home/bilbo/miniconda3/envs/py311/lib/./libgcc_s.so.1 (0x0000714aa6155000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x0000714aa62c6000)
    libm.so.6 => /usr/lib/libm.so.6 (0x0000714aa6069000)

Not sure if I'm using dependency walker correctly on Windows correctly, but if I am it appears to show libzmq doesn't link to libsodium

image

although libsodium is listed as a dependency of the zeromq conda package:

zeromq 4.3.5 hd77b12b_0
-----------------------
file name   : zeromq-4.3.5-hd77b12b_0.conda
name        : zeromq
version     : 4.3.5
build string: hd77b12b_0
build number: 0
channel     : https://repo.anaconda.com/pkgs/main/win-64
size        : 5.2 MB
arch        : None
constrains  : ()
legacy_bz2_md5: e5aed81295b61b6d1eb62830799a0297
legacy_bz2_size: 9125184
license     : MPL-2.0
license_family: Other
md5         : 08e2b53b6f40e3c3737948dbe957b1fe
platform    : None
sha256      : 1c5f1d01892137ec205c5cf12e828eefb0d3874d8a60a1711502f10ed374b602
subdir      : win-64
timestamp   : 1705602328351
url         : https://repo.anaconda.com/pkgs/main/win-64/zeromq-4.3.5-hd77b12b_0.conda
dependencies:
    libsodium >=1.0.18,<1.0.19.0a0
    vc >=14.1,<15.0a0
    vs2015_runtime >=14.16.27012,<15.0a0
chrisjbillington commented 8 months ago

The zeromq package on conda-forge had the same issue, it has been fixed there:

https://github.com/conda-forge/zeromq-feedstock/pull/71

chrisjbillington commented 8 months ago

The problem of having libsodium provide cryptography for zeromq on Windows was originally fixed in 2015:

https://github.com/ContinuumIO/anaconda-issues/issues/515

And has regressed three times since:

https://github.com/ContinuumIO/anaconda-issues/issues/8932

https://github.com/ContinuumIO/anaconda-issues/issues/12031

(and this issue you're reading now - this time being somewhat worse since there isn't a fallback cryptography library used)

It seems this is a somewhat regular occurrence, I'm not sure why. It seems something about the process for packaging zeromq is not adequately addressing the need to maintain this linkage across major updates to the recipes. This is less than ideal.

Tagging @mingwandroid who fixed it last time. Sorry for the ping, but could we get this addressed? The conda-forge package linked in the previous comment might be useful as an example.