android13/external/rust/crates/rustversion/patches/version.diff

41 lines
1.4 KiB
Diff

diff --git a/src/lib.rs b/src/lib.rs
index 172eb89..6c4ef6a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -180,7 +180,16 @@ use crate::version::Version;
use proc_macro::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream, TokenTree};
use std::iter::FromIterator;
-const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "/version.rs"));
+// ANDROID: Soong is providing the version of rustc via an env variable.
+const ANDROID_RUSTVERSION: Option<&str> = option_env!("ANDROID_RUST_VERSION");
+fn rust_version() -> Version {
+ let v: Vec<&str> = ANDROID_RUSTVERSION.unwrap().split('.').collect();
+ Version {
+ minor: v[1].parse().unwrap(),
+ patch: v[2].parse().unwrap(),
+ channel: version::Channel::Stable,
+ }
+}
#[proc_macro_attribute]
pub fn stable(args: TokenStream, input: TokenStream) -> TokenStream {
@@ -241,7 +250,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result<To
let expr = expr::parse(full_args)?;
token::parse_end(full_args)?;
- if expr.eval(RUSTVERSION) {
+ if expr.eval(rust_version()) {
Ok(input)
} else {
Ok(TokenStream::new())
@@ -256,7 +265,7 @@ pub fn attr(args: TokenStream, input: TokenStream) -> TokenStream {
}
fn try_attr(args: attr::Args, input: TokenStream) -> Result<TokenStream> {
- if !args.condition.eval(RUSTVERSION) {
+ if !args.condition.eval(rust_version()) {
return Ok(input);
}