- 
                Notifications
    You must be signed in to change notification settings 
- Fork 30
Description
Attempting to install the helix client following the pattern used in other Dockerfiles fails while trying to install (by building from source) the cryptography wheel:
#6 29.46   × Getting requirements to build wheel did not run successfully.
#6 29.46   │ exit code: 1
#6 29.46   ╰─> [33 lines of output]
#6 29.46       Traceback (most recent call last):
#6 29.46         File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
#6 29.46           main()
#6 29.46         File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
#6 29.46           json_out['return_val'] = hook(**hook_input['kwargs'])
#6 29.46         File "/usr/local/lib/python3.10/dist-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
#6 29.46           return hook(config_settings)
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
#6 29.46           return self._get_build_requires(
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 143, in _get_build_requires
#6 29.46           self.run_setup()
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/build_meta.py", line 158, in run_setup
#6 29.46           exec(compile(code, __file__, 'exec'), locals())
#6 29.46         File "setup.py", line 1, in <module>
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 153, in setup
#6 29.46           return distutils.core.setup(**attrs)
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/_distutils/core.py", line 109, in setup
#6 29.46           _setup_distribution = dist = klass(attrs)
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 459, in __init__
#6 29.46           _Distribution.__init__(
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py", line 293, in __init__
#6 29.46           self.finalize_options()
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 836, in finalize_options
#6 29.46           for ep in sorted(loaded, key=by_order):
#6 29.46         File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 835, in <lambda>
#6 29.46           loaded = map(lambda e: e.load(), filtered)
#6 29.46         File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2464, in load
#6 29.46           self.require(*args, **kwargs)
#6 29.46         File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2487, in require
#6 29.46           items = working_set.resolve(reqs, env, installer, extras=self.extras)
#6 29.46         File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 782, in resolve
#6 29.46           raise VersionConflict(dist, req).with_context(dependent_req)
#6 29.46       pkg_resources.VersionConflict: (setuptools 59.6.0 (/usr/lib/python3/dist-packages), Requirement.parse('setuptools>=62.4'))
#6 29.46       [end of output]
(hit in dotnet/dotnet-buildtools-prereqs-docker#1043)
It's possible to get the wheel building using virtualenv, but I don't know how the helix client would need to be set up to use the virtualenv.
This points to a larger set of concerns about the python dependencies:
- 
We install them with --break-system-packageswhich is not recommended.
- 
Building the cryptography wheel from source introduces a dependency on the rust toolchain starting with version 3.5. 
- 
cryptographydoesn't appear to be supported for arm32.I believe this is why we don't hit problems installing this dependency on other platforms. For example, on amd64 the cryptography package is available as a binary wheel, and we don't have to build it from source: root@2ddf6b50d0c4:/# pip install cryptography Collecting cryptography Downloading cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl (3.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 11.3 MB/s eta 0:00:00 Collecting cffi>=1.12 Downloading cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (443 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 443.9/443.9 KB 43.7 MB/s eta 0:00:00 Collecting pycparser Downloading pycparser-2.22-py3-none-any.whl (117 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 KB 16.2 MB/s eta 0:00:00 Installing collected packages: pycparser, cffi, cryptography Successfully installed cffi-1.16.0 cryptography-42.0.7 pycparser-2.22 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv root@2ddf6b50d0c4:/#
It looks like this dependency has been a recurring problem based on discussions in dotnet/arcade#13186, #465, and related issues, so I wanted to ask for guidance.