Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building expects openssl/engine.h despite engine API being deprecated? #328

Open
polarathene opened this issue Sep 10, 2024 · 1 comment

Comments

@polarathene
Copy link

Fedora 41 fails to build libssh as openssl/engine.h is no longer included with the openssl-devel package. For the time being compatibility is offered via a separate openssl-devel-engine package.

Broader failures will occur once a future OpenSSL 4.0 release arrives. For context the engine API has been deprecated for a while AFAIK and will be dropped in the next major OpenSSL release.


Build error output
  cargo:warning=In file included from libssh2/src/agent.c:40:
  cargo:warning=In file included from libssh2/src/libssh2_priv.h:57:
  cargo:warning=In file included from /usr/include/stdio.h:28:
  cargo:warning=In file included from /usr/include/bits/libc-header-start.h:33:
  cargo:warning=/usr/include/features.h:503:9: warning: '__GLIBC_MINOR__' macro redefined [-Wmacro-redefined]
  cargo:warning=  503 | #define __GLIBC_MINOR__ 40
  cargo:warning=      |         ^
  cargo:warning=<command line>:1:9: note: previous definition is here
  cargo:warning=    1 | #define __GLIBC_MINOR__ 17
  cargo:warning=      |         ^
  cargo:warning=In file included from libssh2/src/bcrypt_pbkdf.c:21:
  cargo:warning=In file included from libssh2/src/libssh2_priv.h:57:
  cargo:warning=In file included from /usr/include/stdio.h:28:
  cargo:warning=In file included from /usr/include/bits/libc-header-start.h:33:
  cargo:warning=/usr/include/features.h:503:9: warning: '__GLIBC_MINOR__' macro redefined [-Wmacro-redefined]
  cargo:warning=  503 | #define __GLIBC_MINOR__ 40
  cargo:warning=      |         ^
  cargo:warning=<command line>:1:9: note: previous definition is here
  cargo:warning=    1 | #define __GLIBC_MINOR__ 17
  cargo:warning=      |         ^
  cargo:warning=In file included from libssh2/src/blowfish.c:49:
  cargo:warning=In file included from /usr/include/sys/types.h:25:
  cargo:warning=/usr/include/features.h:503:9: warning: '__GLIBC_MINOR__' macro redefined [-Wmacro-redefined]
  cargo:warning=  503 | #define __GLIBC_MINOR__ 40
  cargo:warning=      |         ^
  cargo:warning=<command line>:1:9: note: previous definition is here
  cargo:warning=    1 | #define __GLIBC_MINOR__ 17
  cargo:warning=      |         ^
  cargo:warning=In file included from libssh2/src/agent.c:40:
  cargo:warning=In file included from libssh2/src/libssh2_priv.h:141:
  cargo:warning=In file included from libssh2/src/crypto.h:42:
  cargo:warning=libssh2/src/openssl.h:83:10: fatal error: 'openssl/engine.h' file not found
  cargo:warning=   83 | #include <openssl/engine.h>
  cargo:warning=      |          ^~~~~~~~~~~~~~~~~~
  cargo:warning=1 warning and 1 error generated.
  exit status: 1

Most of that can be ignored, I just wanted to draw attention to the failure cause:

libssh2/src/openssl.h:83:10: fatal error: 'openssl/engine.h' file not found

So that line is upstream at: https://github.com/libssh2/libssh2/blob/libssh2-1.11.0/src/openssl.h#L84

I'm not sure if an issue needs to be raised there as they seem to have support for no engine, thus perhaps it's something required to be detected / handled here instead?

@mjgarton
Copy link

I don't know if this is the right fix, but this fixed it locally for me.

diff --git a/libssh2-sys/build.rs b/libssh2-sys/build.rs
index 5c9944d..2d37e4b 100644
--- a/libssh2-sys/build.rs
+++ b/libssh2-sys/build.rs
@@ -143,6 +143,8 @@ fn main() {
 
     cfg.define("LIBSSH2_HAVE_ZLIB", None);
 
+    cfg.define("OPENSSL_NO_ENGINE", None);
+
     if profile.contains("debug") {
         cfg.define("LIBSSH2DEBUG", None);
     }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants