Skip to content

Commit 2c742c2

Browse files
authored
fix: build-sbf Home Directory Error on Windows (#3597)
* Fix `build-sbf` home directory error on Windows * Address PR feedback * Change `env::var()` to `env::var_os()`
1 parent 9b90455 commit 2c742c2

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

sdk/cargo-build-sbf/src/main.rs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,31 @@ pub fn is_version_string(arg: &str) -> Result<(), String> {
135135
Err("a version string may start with 'v' and contains major and minor version numbers separated by a dot, e.g. v1.32 or 1.32".to_string())
136136
}
137137

138+
fn home_dir() -> PathBuf {
139+
PathBuf::from(
140+
#[cfg_attr(not(windows), allow(clippy::unnecessary_lazy_evaluations))]
141+
env::var_os("HOME")
142+
.or_else(|| {
143+
#[cfg(windows)]
144+
{
145+
debug!("Could not read env variable 'HOME', falling back to 'USERPROFILE'");
146+
env::var_os("USERPROFILE")
147+
}
148+
149+
#[cfg(not(windows))]
150+
{
151+
None
152+
}
153+
})
154+
.unwrap_or_else(|| {
155+
error!("Can't get home directory path");
156+
exit(1);
157+
}),
158+
)
159+
}
160+
138161
fn find_installed_platform_tools() -> Vec<String> {
139-
let home_dir = PathBuf::from(env::var("HOME").unwrap_or_else(|err| {
140-
error!("Can't get home directory path: {}", err);
141-
exit(1);
142-
}));
143-
let solana = home_dir.join(".cache").join("solana");
162+
let solana = home_dir().join(".cache").join("solana");
144163
let package = "platform-tools";
145164
std::fs::read_dir(solana)
146165
.unwrap()
@@ -242,11 +261,7 @@ fn validate_platform_tools_version(requested_version: &str, builtin_version: &st
242261
}
243262

244263
fn make_platform_tools_path_for_version(package: &str, version: &str) -> PathBuf {
245-
let home_dir = PathBuf::from(env::var("HOME").unwrap_or_else(|err| {
246-
error!("Can't get home directory path: {}", err);
247-
exit(1);
248-
}));
249-
home_dir
264+
home_dir()
250265
.join(".cache")
251266
.join("solana")
252267
.join(version)

0 commit comments

Comments
 (0)