Skip to content

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

@aalekhpatel07

Description

@aalekhpatel07

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

  • 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions