From cedceb8213293aa0c04ff034f75913ac2aa57553 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Tue, 27 Jul 2021 17:06:11 -0400 Subject: [PATCH] Fetch git submodule automatically Example output: ``` $ cargo check Compiling boring-sys v1.1.1 (/home/jnelson/src/boring/boring-sys) warning: fetching boringssl git submodule Finished dev [unoptimized + debuginfo] target(s) in 28.27s ``` --- boring-sys/build.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/boring-sys/build.rs b/boring-sys/build.rs index 4def8178..f398c6ad 100644 --- a/boring-sys/build.rs +++ b/boring-sys/build.rs @@ -173,7 +173,25 @@ fn get_boringssl_cmake_config() -> cmake::Config { fn main() { use std::env; - use std::path::PathBuf; + use std::path::{Path, PathBuf}; + use std::process::Command; + + if !Path::new("deps/boringssl/CMakeLists.txt").exists() { + println!("cargo:warning=fetching boringssl git submodule"); + // fetch the boringssl submodule + let status = Command::new("git") + .args(&[ + "submodule", + "update", + "--init", + "--recursive", + "deps/boringssl", + ]) + .status(); + if !status.map_or(false, |status| status.success()) { + panic!("failed to fetch submodule - consider running `git submodule update --init --recursive deps/boringssl` yourself"); + } + } let mut cfg = get_boringssl_cmake_config();