Maybe don't link openssl statically by default?
Problem
Linking openssl statically by default implies the image must have a static libcrypto.a, but not all *nixes ship that when installing openssl. In particular, RockyLinux 8 doesn't ship that, causing pip install pymgclient==1.3.1 to fail.
How was it discovered?
-
pip install gqlachemyfails on a fresh Rockylinux 8 image with the build prerequisites installed. Error message suggests something's up withpymgclientand openssl's version.
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version "3.0.8")
- Tried opting out of the static linking and the installation worked.
pip install pymgclient \
--global-option="build_ext" \
--global-option="--static-openssl=0"
Proposed fix
- Keep the openssl static linking the default behaviour and add another CI job.
Add another base image, say rockylinux:8, to CI where libcrypto.a is not provided by openssl-devel or libssl-dev. Fix the rest of CI job until the build passes and possibly improve documentation on the build process.
The reason ubuntu-22.04 didn't surface this error is because libssl-dev ships a libcrypto.a by default and the Runner comes with an openssl installed.
OR
- Remove the default static linking of openssl:
# setup.cfg
[build_ext]
static_openssl = 0
I have the same problem on arch even when setting OPENSSL_ROOT_DIR. Is there already a solution for static linking?