From 6b52c1e93c35255d5bea9b9b67f14f6c248e8f1f Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Tue, 10 Oct 2023 11:50:39 +0200 Subject: [PATCH] Don't use env::current_dir in build script The current directory from a build script executed by cargo is always the manifest dir, so we may as well only use the manifest dir. --- boring-sys/build/config.rs | 5 ----- boring-sys/build/main.rs | 14 +++++++++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/boring-sys/build/config.rs b/boring-sys/build/config.rs index 32e2c1af..f08ae3cc 100644 --- a/boring-sys/build/config.rs +++ b/boring-sys/build/config.rs @@ -3,8 +3,6 @@ use std::ffi::OsString; use std::path::PathBuf; pub(crate) struct Config { - // TODO(nox): Use manifest dir instead. - pub(crate) pwd: PathBuf, pub(crate) manifest_dir: PathBuf, pub(crate) out_dir: PathBuf, pub(crate) host: String, @@ -38,8 +36,6 @@ pub(crate) struct Env { impl Config { pub(crate) fn from_env() -> Self { - let pwd = env::current_dir().unwrap(); - let manifest_dir = env::var_os("CARGO_MANIFEST_DIR").unwrap().into(); let out_dir = env::var_os("OUT_DIR").unwrap().into(); let host = env::var("HOST").unwrap(); @@ -52,7 +48,6 @@ impl Config { let env = Env::from_env(); let config = Self { - pwd, manifest_dir, out_dir, host, diff --git a/boring-sys/build/main.rs b/boring-sys/build/main.rs index 89231d8d..ffff689a 100644 --- a/boring-sys/build/main.rs +++ b/boring-sys/build/main.rs @@ -249,8 +249,10 @@ fn get_boringssl_cmake_config(config: &Config) -> cmake::Config { "x86" => { boringssl_cmake.define( "CMAKE_TOOLCHAIN_FILE", + // `src_path` can be a path relative to the manifest dir, but + // cmake hates that. config - .pwd + .manifest_dir .join(src_path) .join("src/util/32-bit-toolchain.cmake") .as_os_str(), @@ -259,13 +261,19 @@ fn get_boringssl_cmake_config(config: &Config) -> cmake::Config { "aarch64" => { boringssl_cmake.define( "CMAKE_TOOLCHAIN_FILE", - config.pwd.join("cmake/aarch64-linux.cmake").as_os_str(), + config + .manifest_dir + .join("cmake/aarch64-linux.cmake") + .as_os_str(), ); } "arm" => { boringssl_cmake.define( "CMAKE_TOOLCHAIN_FILE", - config.pwd.join("cmake/armv7-linux.cmake").as_os_str(), + config + .manifest_dir + .join("cmake/armv7-linux.cmake") + .as_os_str(), ); } _ => {