From 0bf595c53a4fcf4248be35442e3cbcbb8d0c46d4 Mon Sep 17 00:00:00 2001 From: Christien Rioux Date: Tue, 19 Sep 2023 19:12:51 -0400 Subject: [PATCH] simplify version checking --- .capnp_version | 1 - .protoc_version | 1 - Earthfile | 10 +- scripts/earthly/install_capnproto.sh | 6 +- scripts/earthly/install_protoc.sh | 6 +- veilid-core/build.rs | 151 ++++++++++++--------------- 6 files changed, 74 insertions(+), 101 deletions(-) delete mode 100644 .capnp_version delete mode 100644 .protoc_version diff --git a/.capnp_version b/.capnp_version deleted file mode 100644 index 7f207341..00000000 --- a/.capnp_version +++ /dev/null @@ -1 +0,0 @@ -1.0.1 \ No newline at end of file diff --git a/.protoc_version b/.protoc_version deleted file mode 100644 index ed18113a..00000000 --- a/.protoc_version +++ /dev/null @@ -1 +0,0 @@ -24.3 \ No newline at end of file diff --git a/Earthfile b/Earthfile index 4c047c9e..7a2d2e6b 100644 --- a/Earthfile +++ b/Earthfile @@ -12,16 +12,14 @@ deps-base: # Install Cap'n Proto deps-capnp: FROM +deps-base - COPY .capnp_version / COPY scripts/earthly/install_capnproto.sh / - RUN /bin/bash /install_capnproto.sh 1; rm /install_capnproto.sh .capnp_version + RUN /bin/bash /install_capnproto.sh 1; rm /install_capnproto.sh # Install protoc deps-protoc: FROM +deps-capnp - COPY .protoc_version / COPY scripts/earthly/install_protoc.sh / - RUN /bin/bash /install_protoc.sh; rm /install_protoc.sh .protoc_version + RUN /bin/bash /install_protoc.sh; rm /install_protoc.sh # Install Rust deps-rust: @@ -73,14 +71,14 @@ deps-linux: # Code + Linux deps code-linux: FROM +deps-linux - COPY --dir .cargo .capnp_version .protoc_version files scripts veilid-cli veilid-core veilid-server veilid-tools veilid-flutter veilid-wasm Cargo.lock Cargo.toml /veilid + COPY --dir .cargo files scripts veilid-cli veilid-core veilid-server veilid-tools veilid-flutter veilid-wasm Cargo.lock Cargo.toml /veilid RUN cat /veilid/scripts/earthly/cargo-linux/config.toml >> /veilid/.cargo/config.toml WORKDIR /veilid # Code + Linux + Android deps code-android: FROM +deps-android - COPY --dir .cargo .capnp_version .protoc_version files scripts veilid-cli veilid-core veilid-server veilid-tools veilid-flutter veilid-wasm Cargo.lock Cargo.toml /veilid + COPY --dir .cargo files scripts veilid-cli veilid-core veilid-server veilid-tools veilid-flutter veilid-wasm Cargo.lock Cargo.toml /veilid RUN cat /veilid/scripts/earthly/cargo-linux/config.toml >> /veilid/.cargo/config.toml RUN cat /veilid/scripts/earthly/cargo-android/config.toml >> /veilid/.cargo/config.toml WORKDIR /veilid diff --git a/scripts/earthly/install_capnproto.sh b/scripts/earthly/install_capnproto.sh index 61544d6b..865dbea2 100755 --- a/scripts/earthly/install_capnproto.sh +++ b/scripts/earthly/install_capnproto.sh @@ -1,10 +1,6 @@ #!/bin/bash SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -if [ -f ".capnp_version" ]; then - CAPNPROTO_VERSION=$(cat ".capnp_version") -else - CAPNPROTO_VERSION=$(cat "$SCRIPTDIR/../../.capnp_version") -fi +CAPNPROTO_VERSION="1.0.1" # Keep in sync with veilid-core/build.rs mkdir /tmp/capnproto-install pushd /tmp/capnproto-install diff --git a/scripts/earthly/install_protoc.sh b/scripts/earthly/install_protoc.sh index 04cb461e..d01a780e 100755 --- a/scripts/earthly/install_protoc.sh +++ b/scripts/earthly/install_protoc.sh @@ -1,10 +1,6 @@ #!/bin/bash SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -if [ -f ".protoc_version" ]; then - PROTOC_VERSION=$(cat ".protoc_version") -else - PROTOC_VERSION=$(cat "$SCRIPTDIR/../../.protoc_version") -fi +PROTOC_VERSION="24.3" # Keep in sync with veilid-core/build.rs UNAME_M=$(uname -m) if [[ "$UNAME_M" == "x86_64" ]]; then diff --git a/veilid-core/build.rs b/veilid-core/build.rs index 3eb93400..745f3e52 100644 --- a/veilid-core/build.rs +++ b/veilid-core/build.rs @@ -1,26 +1,14 @@ -use std::path::PathBuf; use std::process::{Command, Stdio}; -fn search_file, P: AsRef>(start: T, name: P) -> Option { - let start_path = PathBuf::from(start.as_ref()).canonicalize().ok(); - let mut path = start_path.as_deref(); - while let Some(some_path) = path { - let file_path = some_path.join(name.as_ref()); - if file_path.exists() { - return Some(file_path.to_owned()); - } - path = some_path.parent(); - } - None -} +const CAPNP_VERSION: &str = "1.0.1"; // Keep in sync with scripts/install_capnp.sh +const PROTOC_VERSION: &str = "24.3"; // Keep in sync with scripts/install_protoc.sh fn get_desired_capnp_version_string() -> String { - let capnp_path = search_file(env!("CARGO_MANIFEST_DIR"), ".capnp_version") - .expect("should find .capnp_version file"); - std::fs::read_to_string(&capnp_path) - .unwrap_or_else(|_| panic!("can't read .capnp_version file here: {:?}", capnp_path)) - .trim() - .to_owned() + CAPNP_VERSION.to_string() +} + +fn get_desired_protoc_version_string() -> String { + PROTOC_VERSION.to_string() } fn get_capnp_version_string() -> String { @@ -40,15 +28,6 @@ fn get_capnp_version_string() -> String { s[20..].to_owned() } -fn get_desired_protoc_version_string() -> String { - let protoc_path = search_file(env!("CARGO_MANIFEST_DIR"), ".protoc_version") - .expect("should find .protoc_version file"); - std::fs::read_to_string(&protoc_path) - .unwrap_or_else(|_| panic!("can't read .protoc_version file here: {:?}", protoc_path)) - .trim() - .to_owned() -} - fn get_protoc_version_string() -> String { let output = Command::new("protoc") .arg("--version") @@ -67,63 +46,69 @@ fn get_protoc_version_string() -> String { } fn main() { - let desired_capnp_version_string = get_desired_capnp_version_string(); - let capnp_version_string = get_capnp_version_string(); - let desired_protoc_version_string = get_desired_protoc_version_string(); - let protoc_version_string = get_protoc_version_string(); + #[cfg(doc)] + return; - // Check capnp version - let desired_capnp_major_version = desired_capnp_version_string - .split_once('.') - .unwrap() - .0 - .parse::() - .expect("should be valid int"); - - if capnp_version_string - .split_once('.') - .unwrap() - .0 - .parse::() - .expect("should be valid int") - != desired_capnp_major_version + #[cfg(not(doc))] { - panic!( - "capnproto version should be major version 1, preferably {} but is {}", - desired_capnp_version_string, capnp_version_string - ); - } else if capnp_version_string != desired_capnp_version_string { - println!( - "capnproto version may be untested: {}", - capnp_version_string - ); - } + let desired_capnp_version_string = get_desired_capnp_version_string(); + let capnp_version_string = get_capnp_version_string(); + let desired_protoc_version_string = get_desired_protoc_version_string(); + let protoc_version_string = get_protoc_version_string(); - // Check protoc version - let desired_protoc_major_version = desired_protoc_version_string - .split_once('.') - .unwrap() - .0 - .parse::() - .expect("should be valid int"); - if protoc_version_string - .split_once('.') - .unwrap() - .0 - .parse::() - .expect("should be valid int") - < desired_protoc_major_version - { - panic!( - "protoc version should be at least major version {} but is {}", - desired_protoc_major_version, protoc_version_string - ); - } else if protoc_version_string != desired_protoc_version_string { - println!("protoc version may be untested: {}", protoc_version_string); - } + // Check capnp version + let desired_capnp_major_version = desired_capnp_version_string + .split_once('.') + .unwrap() + .0 + .parse::() + .expect("should be valid int"); - ::capnpc::CompilerCommand::new() - .file("proto/veilid.capnp") - .run() - .expect("compiling schema"); + if capnp_version_string + .split_once('.') + .unwrap() + .0 + .parse::() + .expect("should be valid int") + != desired_capnp_major_version + { + panic!( + "capnproto version should be major version 1, preferably {} but is {}", + desired_capnp_version_string, capnp_version_string + ); + } else if capnp_version_string != desired_capnp_version_string { + println!( + "capnproto version may be untested: {}", + capnp_version_string + ); + } + + // Check protoc version + let desired_protoc_major_version = desired_protoc_version_string + .split_once('.') + .unwrap() + .0 + .parse::() + .expect("should be valid int"); + if protoc_version_string + .split_once('.') + .unwrap() + .0 + .parse::() + .expect("should be valid int") + < desired_protoc_major_version + { + panic!( + "protoc version should be at least major version {} but is {}", + desired_protoc_major_version, protoc_version_string + ); + } else if protoc_version_string != desired_protoc_version_string { + println!("protoc version may be untested: {}", protoc_version_string); + } + + ::capnpc::CompilerCommand::new() + .file("proto/veilid.capnp") + .run() + .expect("compiling schema"); + } }