diff --git a/sqlx-cli/src/lib.rs b/sqlx-cli/src/lib.rs index a833fe0f..c4b93dd2 100644 --- a/sqlx-cli/src/lib.rs +++ b/sqlx-cli/src/lib.rs @@ -37,7 +37,8 @@ pub enum Command { #[structopt(long)] check: bool, - /// Any arguments to pass to `cargo check`. + /// Any arguments to pass to `cargo rustc`; + /// Cargo args (preceding `--` in `cargo rustc ... -- ...`) only. #[structopt(name = "Cargo args", last = true)] cargo_args: Vec, }, diff --git a/sqlx-cli/src/prepare.rs b/sqlx-cli/src/prepare.rs index 1cfbdcaf..f1e491a7 100644 --- a/sqlx-cli/src/prepare.rs +++ b/sqlx-cli/src/prepare.rs @@ -76,13 +76,17 @@ fn run_prepare_step(cargo_args: Vec) -> anyhow::Result { .context("`prepare` subcommand may only be invoked as `cargo sqlx prepare``")?; let check_status = Command::new(&cargo) - .arg("check") + .arg("rustc") .args(cargo_args) - // set an always-changing env var that the macros depend on via `env!()` - .env( - "__SQLX_RECOMPILE_TRIGGER", - SystemTime::UNIX_EPOCH.elapsed()?.as_millis().to_string(), - ) + .arg("--") + .arg("--emit") + .arg("dep-info,metadata") + // set an always-changing cfg so we can consistently trigger recompile + .arg("--cfg") + .arg(format!( + "__sqlx_recompile_trigger=\"{}\"", + SystemTime::UNIX_EPOCH.elapsed()?.as_millis() + )) .status()?; if !check_status.success() { diff --git a/sqlx-macros/src/query/mod.rs b/sqlx-macros/src/query/mod.rs index 76baeb6d..67fc681c 100644 --- a/sqlx-macros/src/query/mod.rs +++ b/sqlx-macros/src/query/mod.rs @@ -222,9 +222,6 @@ where (#($#arg_names:expr),*) => {{ use sqlx::arguments::Arguments as _; - // lets `cargo sqlx prepare` ensure that we can always trigger a recompile - const _: Option<&'static str> = option_env!("__SQLX_RECOMPILE_TRIGGER"); - #args_tokens #output