diff options
author | ThiƩbaud Weksteen <tweek@google.com> | 2021-02-23 17:44:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-23 17:44:27 +0000 |
commit | ac2e8b3ea2640d429673428a3feab019b3897515 (patch) | |
tree | 765ad52801dae7746a8505124120ea344b9bc3be | |
parent | c667c77a86aa416206a22f62428e25259594aa33 (diff) | |
parent | a8669c044a79453ce571c11d5fe38ab7aec6c5db (diff) | |
download | rustversion-ac2e8b3ea2640d429673428a3feab019b3897515.tar.gz |
Add Android.bp am: d550abe65f am: e7bf0007f9 am: ca2bc3341e am: a8669c044a
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/rustversion/+/1598215
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I9dc63c22b4f4588f3cf0e309a7cdc34b5e55c12e
-rw-r--r-- | Android.bp | 9 | ||||
-rw-r--r-- | patches/version.diff | 40 | ||||
-rw-r--r-- | src/lib.rs | 15 |
3 files changed, 61 insertions, 3 deletions
diff --git a/Android.bp b/Android.bp new file mode 100644 index 0000000..9630d0c --- /dev/null +++ b/Android.bp @@ -0,0 +1,9 @@ +// This file is generated by cargo2android.py --run --device --dependencies. +// Do not modify this file as changes will be overridden on upgrade. + +rust_proc_macro { + name: "librustversion", + crate_name: "rustversion", + srcs: ["src/lib.rs"], + edition: "2018", +} diff --git a/patches/version.diff b/patches/version.diff new file mode 100644 index 0000000..ea177f8 --- /dev/null +++ b/patches/version.diff @@ -0,0 +1,40 @@ +diff --git a/src/lib.rs b/src/lib.rs +index 2614105..18d170d 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -165,7 +165,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: &str = env!("ANDROID_RUST_VERSION"); ++fn rust_version() -> Version { ++ let v: Vec<&str> = ANDROID_RUSTVERSION.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 { +@@ -226,7 +235,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()) +@@ -241,7 +250,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); + } + @@ -165,7 +165,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: &str = env!("ANDROID_RUST_VERSION"); +fn rust_version() -> Version { + let v: Vec<&str> = ANDROID_RUSTVERSION.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 { @@ -226,7 +235,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()) @@ -241,7 +250,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); } |