Skip to content

Commit

Permalink
skip auto download when SKIP_DOWNLOAD is set
Browse files Browse the repository at this point in the history
this can be handy in nix environment where build script cannot hit the
internet but dev-dependencies specify the auto download feature.
  • Loading branch information
RCasatta committed Apr 2, 2024
1 parent da48b10 commit e6fdc27
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
3 changes: 3 additions & 0 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ mod download {
}

pub(crate) fn start() -> anyhow::Result<()> {
if std::env::var_os("SKIP_DOWNLOAD").is_some() {
return Ok(());
}
let download_filename = download_filename();
let expected_hash = get_expected_sha256(&download_filename)?;
let out_dir = std::env::var_os("OUT_DIR").unwrap();
Expand Down
9 changes: 8 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ pub enum Error {
/// Returned when -rpcuser and/or -rpcpassword is used in `Conf` args
/// It will soon be deprecated, please use -rpcauth instead
RpcUserAndPasswordUsed,
/// Returned when expecting an auto-downloaded executable but `SKIP_DOWNLOAD` env var is set
SkipDownload,
}

impl fmt::Debug for Error {
Expand All @@ -135,7 +137,8 @@ impl fmt::Debug for Error {
Error::NoBitcoindExecutableFound => write!(f, "`bitcoind` executable is required, provide it with one of the following: set env var `BITCOIND_EXE` or use a feature like \"22_1\" or have `bitcoind` executable in the `PATH`"),
Error::EarlyExit(e) => write!(f, "The bitcoind process terminated early with exit code {}", e),
Error::BothDirsSpecified => write!(f, "tempdir and staticdir cannot be enabled at same time in configuration options"),
Error::RpcUserAndPasswordUsed => write!(f, "`-rpcuser` and `-rpcpassword` cannot be used, it will be deprecated soon and it's recommended to use `-rpcauth` instead which works alongside with the default cookie authentication")
Error::RpcUserAndPasswordUsed => write!(f, "`-rpcuser` and `-rpcpassword` cannot be used, it will be deprecated soon and it's recommended to use `-rpcauth` instead which works alongside with the default cookie authentication"),
Error::SkipDownload => write!(f, "expecting an auto-downloaded executable but `SKIP_DOWNLOAD` env var is set"),
}
}
}
Expand Down Expand Up @@ -496,6 +499,10 @@ pub fn downloaded_exe_path() -> anyhow::Result<String> {
/// Provide the bitcoind executable path if a version feature has been specified
#[cfg(feature = "download")]
pub fn downloaded_exe_path() -> anyhow::Result<String> {
if std::env::var_os("SKIP_DOWNLOAD").is_some() {
return Err(Error::SkipDownload.into());
}

let mut path: PathBuf = env!("OUT_DIR").into();
path.push("bitcoin");
path.push(format!("bitcoin-{}", versions::VERSION));
Expand Down

0 comments on commit e6fdc27

Please sign in to comment.