Add features for rustls instead of openssl
Closed this issue · 11 comments
Hi,
Thanks for all your hard work with this. Great project.
I don't even know if this is possible (rust noob) but is there someway to change / add features to the reqwest dependency used? If you are deploying on a provide like AWS lambda using cargo lambda you'll run into these kinds of errors:
I know this is probably a niche case and there are ways to get openssl (not recommended by cargo lambda author) to work with rust lambda functions but if you swap openssl to rustls it'll compile no drama. If there is another way would love to be pointed in the right direction.
Again, awesome work!
hello @DoIevenLift,
i appreciate your time for the issue,
i'll add a feature flag either today or tomorrow under openssl
,
i'm very familiar with this error mainly on ubuntu builds so expect something soon
i mean rustls
not openssl as tag :)
hello @DoIevenLift
I have added a stable rustls
feature flag available on the newest version of the crate
https://crates.io/crates/supabase_rs/0.3.1
enable the flag in your cargo.toml
as such
supabse_rs = { version = "0.3.1", features = ["rustls"] }
It will force the request builder of Reqwest to use the rustls backend instead of the defaulted OpenSSL one
if something doesnt work as expected or anything in that nature lmk and ill fix it
I'll leave the issue open for now and close it when you let me know if this resolved your issue
Hey @floris-xlx ,
My apologies for the delay in getting back to you here.
Have added features and the builder is hitting opensys_ssl still.
error: failed to run custom build command for `openssl-sys v0.9.103`
Caused by:
process didn't exit successfully: `C:\Users\jacob\Documents\GitHub\rust-server-alive\target\release\build\openssl-sys-17a0de12626f386d\build-script-main` (exit code: 101)
--- stdout
cargo:rustc-check-cfg=cfg(osslconf, values("OPENSSL_NO_OCB", "OPENSSL_NO_SM4", "OPENSSL_NO_SEED", "OPENSSL_NO_CHACHA", "OPENSSL_NO_CAST", "OPENSSL_NO_IDEA", "OPENSSL_NO_CAMELLIA", "OPENSSL_NO_RC4", "OPENSSL_NO_BF", "OPENSSL_NO_PSK", "OPENSSL_NO_DEPRECATED_3_0", "OPENSSL_NO_SCRYPT", "OPENSSL_NO_SM3", "OPENSSL_NO_RMD160", "OPENSSL_NO_EC2M", "OPENSSL_NO_OCSP", "OPENSSL_NO_CMS", "OPENSSL_NO_COMP", "OPENSSL_NO_SOCK", "OPENSSL_NO_STDIO"))
cargo:rustc-check-cfg=cfg(openssl)
cargo:rustc-check-cfg=cfg(libressl)
cargo:rustc-check-cfg=cfg(boringssl)
cargo:rustc-check-cfg=cfg(libressl250)
cargo:rustc-check-cfg=cfg(libressl251)
cargo:rustc-check-cfg=cfg(libressl252)
cargo:rustc-check-cfg=cfg(libressl261)
cargo:rustc-check-cfg=cfg(libressl270)
cargo:rustc-check-cfg=cfg(libressl271)
cargo:rustc-check-cfg=cfg(libressl273)
cargo:rustc-check-cfg=cfg(libressl280)
cargo:rustc-check-cfg=cfg(libressl281)
cargo:rustc-check-cfg=cfg(libressl291)
cargo:rustc-check-cfg=cfg(libressl310)
cargo:rustc-check-cfg=cfg(libressl321)
cargo:rustc-check-cfg=cfg(libressl332)
cargo:rustc-check-cfg=cfg(libressl340)
cargo:rustc-check-cfg=cfg(libressl350)
cargo:rustc-check-cfg=cfg(libressl360)
cargo:rustc-check-cfg=cfg(libressl361)
cargo:rustc-check-cfg=cfg(libressl370)
cargo:rustc-check-cfg=cfg(libressl380)
cargo:rustc-check-cfg=cfg(libressl381)
cargo:rustc-check-cfg=cfg(libressl382)
cargo:rustc-check-cfg=cfg(libressl390)
cargo:rustc-check-cfg=cfg(libressl400)
cargo:rustc-check-cfg=cfg(ossl101)
cargo:rustc-check-cfg=cfg(ossl102)
cargo:rustc-check-cfg=cfg(ossl102f)
cargo:rustc-check-cfg=cfg(ossl102h)
cargo:rustc-check-cfg=cfg(ossl110)
cargo:rustc-check-cfg=cfg(ossl110f)
cargo:rustc-check-cfg=cfg(ossl110g)
cargo:rustc-check-cfg=cfg(ossl110h)
cargo:rustc-check-cfg=cfg(ossl111)
cargo:rustc-check-cfg=cfg(ossl111b)
cargo:rustc-check-cfg=cfg(ossl111c)
cargo:rustc-check-cfg=cfg(ossl111d)
cargo:rustc-check-cfg=cfg(ossl300)
cargo:rustc-check-cfg=cfg(ossl310)
cargo:rustc-check-cfg=cfg(ossl320)
cargo:rustc-check-cfg=cfg(ossl330)
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
OPENSSL_LIB_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
OPENSSL_INCLUDE_DIR unset
cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_DIR
OPENSSL_DIR unset
cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_ALLOW_CROSS
cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=TARGET_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
run pkg_config fail: pkg-config has not been configured to support cross-compilation.
Install a sysroot for the target platform and configure it via
PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_PATH, or install a
cross-compiling wrapper for pkg-config and set it via
PKG_CONFIG environment variable.
--- stderr
thread 'main' panicked at C:\Users\jacob\.cargo\registry\src\index.crates.io-6f17d22bba15001f\openssl-sys-0.9.103\build\find_normal.rs:190:5:
Could not find directory of OpenSSL installation, and this `-sys` crate cannot
proceed without this knowledge. If OpenSSL is installed and this crate had
trouble finding it, you can set the `OPENSSL_DIR` environment variable for the
compilation process.
Make sure you also have the development packages of openssl installed.
For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
If you're in a situation where you think the directory *should* be found
automatically, please open a bug at https://github.com/sfackler/rust-openssl
and include information about your system as well as this message.
$HOST = x86_64-pc-windows-msvc
$TARGET = x86_64-unknown-linux-gnu
openssl-sys = 0.9.103
If i remove supabase_rs and do the build - this builds successfully.
I also tried to do supabase_rs = { version blah, default-features = false, features = [ "rustls" ] } & features = [ "rustls-tls" ] no luck in the build phases.
Hope this helps and let me know if there is any further info needed.
Thanks again!
you need to insntsall openSSL on the machine, supabase_rs is the only lib that is probably depednant on it
Try this setup .sh file, i recognize your error as one you usually see on fresh builds that dont have pkg-config installed yet
setup.sh
#!/bin/bash
sudo apt update
sudo apt upgrade -y
sudo apt-get update
sudo apt install -y pkg-config
source $HOME/.cargo/env
sudo apt-get install -y libssl-dev
sudo apt install -y build-essential
sudo apt install -y plocate
sudo updatedb
openssl_dir=$(dirname $(locate openssl.pc | head -n 1))
if [ -n "$openssl_dir" ]; then
export PKG_CONFIG_PATH=$openssl_dir
echo "PKG_CONFIG_PATH set to $PKG_CONFIG_PATH"
else
echo "openssl.pc not found, PKG_CONFIG_PATH not set."
fi
try running this and then have another go
I suspect this is because we are pulling in a dependency to openssl when we really don't need to, as we're already using the rustls-tls
feature flag for reqwest
.
@DoIevenLift Could you try adding the attribute default-features = false
to the reqwest
dependency to see if that helps you? For me it seems to avoid pulling in Openssl, and might fix your problem.
Hey @floris-xlx & @strykejern
Not ignoring - will give this a go later on in the week and let you know!
@strykejern - still hits that error. This is the cargo.toml file:
@floris-xlx - Unsure here (I am a noob) but I don't think this is required due to cargo lambda doing the cross compilation to Lambdas environment? if I look at this ref: https://www.cargo-lambda.info/guide/cross-compiling.html and it has at the bottom:
This is OK though if it can't work - I've got a workaround just building it from scratch with nowhere near the same functionality but just in case anyone runs into this issue here. Could just be a niche case when dealing with lambda using cargo lambda. Happy to keep debugging with you both though
I can give it a go in a few hours to deploy a seperate package supabase_rs_lambda and see how that goes