From 789d46991d2f270dc7afbdc0c85885509d30987d Mon Sep 17 00:00:00 2001 From: mokurin000 <1348292515a@gmail.com> Date: Thu, 31 Jul 2025 20:02:46 +0800 Subject: [PATCH] fix: totally fix rustc version check C-style shit syntax --- Cargo.lock | 2 +- sdgb-cli/Cargo.toml | 4 +++- sdgb-cli/build.rs | 7 +++++++ sdgb-cli/src/main.rs | 23 +++++++++++------------ 4 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 sdgb-cli/build.rs diff --git a/Cargo.lock b/Cargo.lock index fd1fb58..86d564e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1456,13 +1456,13 @@ dependencies = [ "nyquest-preset", "palc", "redb", - "rustversion", "sdgb-api", "serde_json", "snafu", "spdlog-rs", "strum 0.27.2", "tokio", + "version_check", ] [[package]] diff --git a/sdgb-cli/Cargo.toml b/sdgb-cli/Cargo.toml index 0776f6e..46ec120 100644 --- a/sdgb-cli/Cargo.toml +++ b/sdgb-cli/Cargo.toml @@ -29,4 +29,6 @@ nyquest-preset = { version = "0.2.0", features = ["async"] } palc = { version = "0.0.1", features = ["derive"] } futures-util = { version = "0.3.31", optional = true } ctrlc = { version = "3.4.7", features = ["termination"] } -rustversion = "1.0.21" + +[build-dependencies] +version_check = "0.9.5" diff --git a/sdgb-cli/build.rs b/sdgb-cli/build.rs new file mode 100644 index 0000000..80fdbad --- /dev/null +++ b/sdgb-cli/build.rs @@ -0,0 +1,7 @@ +fn main() { + println!("cargo::rustc-check-cfg=cfg(file_lock_ready)"); + + if version_check::is_min_version("1.89") == Some(true) { + println!("cargo:rustc-cfg=file_lock_ready"); + } +} diff --git a/sdgb-cli/src/main.rs b/sdgb-cli/src/main.rs index f615a0e..99f5005 100644 --- a/sdgb-cli/src/main.rs +++ b/sdgb-cli/src/main.rs @@ -201,6 +201,17 @@ async fn main() -> Result<(), Box> { use crate::cache::{open_table_read, read_txn}; + let file = OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open("players.json")?; + + #[cfg(file_lock_ready)] + file.try_lock()?; + + let writer = BufWriter::new(file); + let txn = read_txn()?; let table = open_table_read(&txn)?; @@ -215,18 +226,6 @@ async fn main() -> Result<(), Box> { .map(|(value, _)| value) .collect::>(); - let file = OpenOptions::new() - .create(true) - .truncate(true) - .write(true) - .open("players.json")?; - - #[rustversion::since(1.89)] - { - file.lock()?; - } - - let writer = BufWriter::new(file); serde_json::to_writer(writer, &user_ids)?; info!("dumped {} user id", user_ids.len()); }