memgraph / pymgclient

Python Memgraph Client
https://memgraph.github.io/pymgclient/
Apache License 2.0
43 stars 6 forks source link

Maybe don't link openssl statically by default? #53

Open aalekhpatel07 opened 1 year ago

aalekhpatel07 commented 1 year ago

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?

  1. pip install gqlachemy fails on a fresh Rockylinux 8 image with the build prerequisites installed. Error message suggests something's up with pymgclient and 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")
  1. 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

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

# setup.cfg
[build_ext]
static_openssl = 0
bernd-k1337 commented 1 year ago

I have the same problem on arch even when setting OPENSSL_ROOT_DIR. Is there already a solution for static linking?