Print

Print


@simonmichal, I don't know if you've read the details I already provided on that root forum post, but I encourage you to read it because I have done all that you are suggesting here and it's still failing to compile. I really don't want to repeat all that I have posted there (as @axel suggested to just refer you guys to what has already been posted there).
I understand it's a long post, but I provided above specified links where I have done what you've suggested, like here. I also provided root cause here.

As I noted here, I did manually build xrootd from the version that root downloaded, where I just triggered the cmake command using the same cmake options that root was passing to xrootd (via ExternalProject_Add), from the location root downloaded xrootd. The xrootd version that root downloaded was:

jade$ cat VERSION_INFO 
RefNames:  (tag: v5.4.1)
ShortHash: d21f09ce911
Date: 2022-02-21 11:10:10 +0100

That cmake command that was manually passed to xrootd (and the same command that root was passing after @axel suggested the addition of cmake's openssl options to point xrootd to an older version of openssl -- the same options you suggested) was:

cmake -DCMAKE_INSTALL_PREFIX=/Users/jade/thirdParty/root-6.26.00/build-dir/builtins/xrootd/XROOTD-prefix -DOPENSSL_INCLUDE_DIR=/opt/local/libexec/openssl11/include -DOPENSSL_SSL_LIBRARY=/opt/local/libexec/openssl11/lib/libssl.dylib -DOPENSSL_CRYPTO_LIBRARY=/opt/local/libexec/openssl11/lib/libcrypto.dylib -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -DCMAKE_C_FLAGS="-m64 -pipe -W -Wall -fsigned-char -fno-common -Qunused-arguments -pthread" -DCMAKE_CXX_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -DCMAKE_CXX_FLAGS="-std=c++17 -Wc++11-narrowing -Wsign-compare -Wsometimes-uninitialized -Wconditional-uninitialized -Wheader-guard -Warray-bounds -Wcomment -Wtautological-compare -Wstrncat-size -Wloop-analysis -Wbool-conversion -m64 -pipe -W -Wall -Woverloaded-virtual -fsigned-char -fno-common -Qunused-arguments -pthread -stdlib=libc++" -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -DENABLE_PYTHON=OFF -DENABLE_CEPH=OFF -DCMAKE_INSTALL_RPATH:STRING=/Users/jade/thirdParty/root-6.26.00/build-dir/builtins/xrootd/XROOTD-prefix/lib ../XROOTD

where I have noted at the root forum post that that command does recognize the openssl version 1.1.1m:

-- Found OpenSSL: /opt/local/libexec/openssl11/lib/libssl.dylib;/opt/local/libexec/openssl11/lib/libcrypto.dylib

And yet despite having provided -DOPENSSL_INCLUDE_DIR=/opt/local/libexec/openssl11/include in that cmake command, when compiling, it's still picking up openssl headers at the wrong location:

/Users/jade/thirdParty/root-6.26.00/build-dir/builtins/xrootd/XROOTD-prefix/src/XROOTD/src/XrdCrypto/XrdCryptosslRSA.cc:504:19: error: no matching function for call to 'RSA_private_encrypt'
      if ((lout = RSA_private_encrypt(lc, (unsigned char *)&in[kk],
                  ^~~~~~~~~~~~~~~~~~~
/opt/local/include/openssl/rsa.h:285:5: note: candidate function not viable: 4th argument ('const struct rsa_st *') would lose const qualifier
int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
    ^

As noted above it's picking up openssl headers at /opt/local/include instead of /opt/local/libexec/openssl11/include, because when it compiles, it orders the includes putting /opt/local/include first before /opt/local/libexec/openssl11/include and so picks up the openssl3 headers located at /opt/local/include.

When you say that you've tested with older versions of openssl, did you test it with having multiple versions of openssl installed on your system, where the default version is openssl3, and not the version you specifically specified to cmake? Because that's the circumstances that I'm in, where I need the default openssl version to be openssl3 since I have other tools dependent on it.

Now I wish I can get this building against openssl3, but even after not specifying any openssl version in the cmake commands (just remove -DOPENSSL_INCLUDE_DIR=/opt/local/libexec/openssl11/include -DOPENSSL_SSL_LIBRARY=/opt/local/libexec/openssl11/lib/libssl.dylib -DOPENSSL_CRYPTO_LIBRARY=/opt/local/libexec/openssl11/lib/libcrypto.dylib from the cmake command I provided above and add -DWITH_OPENSSL3=TRUE), even though during its configuration, it recognizes the openssl3 version:

-- Found OpenSSL: /opt/local/lib/libssl.dylib;/opt/local/lib/libcrypto.dylib

where the default openssl version on my system is:

jade$ openssl version
OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
jade$ which openssl
/opt/local/bin/openssl
jade$ otool -L /opt/local/bin/openssl
/opt/local/bin/openssl:
	/opt/local/libexec/openssl3/lib/libssl.3.dylib (compatibility version 3.0.0, current version 3.0.0)
	/opt/local/libexec/openssl3/lib/libcrypto.3.dylib (compatibility version 3.0.0, current version 3.0.0)
	/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.0.0)

jade$ ls -l /opt/local/lib/libssl.dylib;
lrwxr-xr-x  1 root  admin  14 Dec 20 00:57 /opt/local/lib/libssl.dylib -> libssl.3.dylib
jade$ ls -l /opt/local/lib/libssl.3.dylib
lrwxr-xr-x  1 root  admin  46 Dec 20 00:57 /opt/local/lib/libssl.3.dylib -> /opt/local/libexec/openssl3/lib/libssl.3.dylib

jade$ ls -l /opt/local/lib/libcrypto.dylib
lrwxr-xr-x  1 root  admin  17 Dec 20 00:57 /opt/local/lib/libcrypto.dylib -> libcrypto.3.dylib
jade$ ls -l /opt/local/lib/libcrypto.3.dylib
lrwxr-xr-x  1 root  admin  49 Dec 20 00:57 /opt/local/lib/libcrypto.3.dylib -> /opt/local/libexec/openssl3/lib/libcrypto.3.dylib

jade$ ls -l /opt/local/include/openssl
lrwxr-xr-x  1 root  admin  43 Dec 20 00:57 /opt/local/include/openssl -> /opt/local/libexec/openssl3/include/openssl

It still fails to compile:

/Users/jade/thirdParty/root-6.26.00/build-dir/builtins/xrootd/XROOTD-prefix/src/XROOTD/src/XrdSec/openssl3/XrdSecProtect.cc:57:8: error: unknown type name 'EVP_MD_CTX'
static EVP_MD_CTX* EVP_MD_CTX_new() {
       ^
/Users/jade/thirdParty/root-6.26.00/build-dir/builtins/xrootd/XROOTD-prefix/src/XROOTD/src/XrdSec/openssl3/XrdSecProtect.cc:58:3: error: unknown type name 'EVP_MD_CTX'
  EVP_MD_CTX *ctx = (EVP_MD_CTX *)OPENSSL_malloc(sizeof(EVP_MD_CTX));
  ...

BTW if I don't add -DWITH_OPENSSL3=TRUE (e.g. zero hints of openssl version passed to cmake) even though the default version of openssl is openssl3, I'd get the same error when specifying the older version of openssl in the cmake command.


Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you are subscribed to this thread.Message ID: <xrootd/xrootd/issues/1649/1068302397@github.com>

[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/xrootd/xrootd/issues/1649#issuecomment-1068302397", "url": "https://github.com/xrootd/xrootd/issues/1649#issuecomment-1068302397", "name": "View Issue" }, "description": "View this Issue on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]

Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1