Closed bedroge closed 5 months ago
It does have the following:
$ strings libssl.so.3 | grep "OPENSSL_3"
OPENSSL_3.0.0
OPENSSL_3.0.3
But this doesn't fully match the installed version (which is 3.0.2).
@lexming or @SebastianAchilles, can you take a look at this?
Would a solution be to modify the Regex? E.g.
- openssl_version_regex = re.compile(r'OpenSSL\s+([0-9]+\.[0-9]+(\.[0-9]+[a-z]?)*)', re.M)
+ openssl_version_regex = re.compile(r'(?i)OpenSSL[\s_]+([0-9]+\.[0-9]+(\.[0-9]+[a-z]?)*)', re.M)
Yes, the Regex works, but then I get on Ubuntu 23.10:
System OpenSSL header version '3.0.10' doesn not match library version '3.0.0'
And on Ubuntu 24.04:
System OpenSSL header version '3.0.13' doesn not match library version '3.0.0'
So, we also would have to modify this check in https://github.com/easybuilders/easybuild-easyblocks/blob/develop/easybuild/easyblocks/o/openssl_wrapper.py#L262:
if header_version == self.system_ssl['version']:
Would it make sense to only compare the major version?
I made a proposal to improve the OpenSSL version check for OpenSSL 3 in https://github.com/easybuilders/easybuild-easyblocks/pull/3340
Those on Debian-based systems with OpenSSL 3, can you check the following?
opensslv.h
: what is the value of OPENSSL_VERSION_TEXT
, OPENSSL_VERSION_STR
and OPENSSL_FULL_VERSION_STR
, do they match?libssl.so.3
: what is the output of strings libssl.so.3 | grep -i "OPENSSL"
?Instead of checking that the major version of the headers is >= 3
, we should compare it with the minimum required version of OpenSSL set in the easyconfig. Then we don't need specific code per OpenSSL version while allowing mismatched version between library and header files.
Even though my host system had OpenSSL 3 installed, EB was still trying to build it from source instead of wrapping the system libraries. It turns out that it does find the two required libraries, but it fails to determine the version of one of them:
The filenames don't provide the version here (
libssl-dev
is installed), so EB will try to find the version by reading the file itself and looking for some string (https://github.com/easybuilders/easybuild-easyblocks/blob/develop/easybuild/easyblocks/o/openssl_wrapper.py#L104). This works forlibcrypto.so.3
, but it apparently this doesn't forlibssl.so.3
anymore in OpenSSL 3: