Skip to content

It is not possible to compile RustPython (0.5.0 and current main) with feature ssl-vendor #7893

@im-0

Description

@im-0

Summary

# cargo clean && cargo build --release --no-default-features --features threading,stdlib,stdio,importlib,host_env,freeze-stdlib,sqlite,ssl-vendor
     Removed 3814 files, 1.1GiB total
  Downloaded openssl v0.10.76
  Downloaded openssl-sys v0.9.112
  Downloaded 2 crates (355.0KiB) in 0.54s
   Compiling proc-macro2 v1.0.106
   Compiling unicode-ident v1.0.22
   Compiling quote v1.0.45
...
   Compiling dirs-next v2.0.0
   Compiling lexopt v0.3.2
   Compiling env_logger v0.11.10
   Compiling liblzma v0.4.6
error[E0425]: cannot find type `LazyLock` in this scope
   --> crates/stdlib/src/openssl.rs:435:24
    |
435 |     static CERT_PATHS: LazyLock<(PathBuf, PathBuf)> = LazyLock::new(|| {
    |                        ^^^^^^^^ not found in this scope
    |
help: consider importing one of these structs
    |
 53 +     use crate::openssl::LazyLock;
    |
 53 +     use std::sync::LazyLock;
    |

error[E0433]: cannot find type `LazyLock` in this scope
   --> crates/stdlib/src/openssl.rs:435:55
    |
435 |     static CERT_PATHS: LazyLock<(PathBuf, PathBuf)> = LazyLock::new(|| {
    |                                                       ^^^^^^^^ use of undeclared type `LazyLock`
    |
help: consider importing one of these structs
    |
 53 +     use crate::openssl::LazyLock;
    |
 53 +     use std::sync::LazyLock;
    |

error[E0425]: cannot find type `LazyLock` in this scope
   --> crates/stdlib/src/openssl.rs:473:28
    |
473 |     static CERT_ENV_NAMES: LazyLock<(String, String)> = LazyLock::new(|| {
    |                            ^^^^^^^^ not found in this scope
    |
help: consider importing one of these structs
    |
 53 +     use crate::openssl::LazyLock;
    |
 53 +     use std::sync::LazyLock;
    |

error[E0433]: cannot find type `LazyLock` in this scope
   --> crates/stdlib/src/openssl.rs:473:57
    |
473 |     static CERT_ENV_NAMES: LazyLock<(String, String)> = LazyLock::new(|| {
    |                                                         ^^^^^^^^ use of undeclared type `LazyLock`
    |
help: consider importing one of these structs
    |
 53 +     use crate::openssl::LazyLock;
    |
 53 +     use std::sync::LazyLock;
    |

error[E0599]: no method named `as_str` found for struct `PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:1049:38
     |
1049 |             let ciphers = cipherlist.as_str();
     |                                      ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for struct `PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:1105:26
     |
1105 |                     if s.as_str().contains('\0') {
     |                          ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for struct `PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:1462:64
     |
1462 |                     *self.psk_identity_hint.lock() = Some(hint.as_str().to_owned());
     |                                                                ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for struct `PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:1490:31
     |
1490 |                         if !s.as_str().is_ascii() {
     |                               ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for reference `&Py<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:1980:22
     |
1980 |                 Ok(s.as_str().as_bytes().to_vec())
     |                      ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for reference `&PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:2036:45
     |
2036 |                 let hostname_str = hostname.as_str();
     |                                             ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0599]: no method named `as_str` found for reference `&PyRef<PyStr>` in the current scope
    --> crates/stdlib/src/openssl.rs:2755:75
     |
2755 |             let cb_type_str = cb_type.as_ref().map_or("tls-unique", |s| s.as_str());
     |                                                                           ^^^^^^
     |
help: there is a method `as_pystr` with a similar name, but with different arguments
    --> crates/vm/src/builtins/str.rs:256:5
     |
 256 |     fn as_pystr(self, ctx: &Context) -> &'a Py<PyStr>;
     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Some errors have detailed explanations: E0425, E0433, E0599.
For more information about an error, try `rustc --explain E0425`.
error: could not compile `rustpython-stdlib` (lib) due to 11 previous errors

No such problem when compiling with ssl-rustls instead of ssl-vendor.

The last commit where ssl-vendor compiles is c06cf56. Compilation is broken since at least ccd3d4f.

Expected

Successful compilation.

Actual

Compilation errors.

Python Documentation

N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions