aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiƩbaud Weksteen <tweek@google.com>2021-02-23 17:44:27 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-02-23 17:44:27 +0000
commitac2e8b3ea2640d429673428a3feab019b3897515 (patch)
tree765ad52801dae7746a8505124120ea344b9bc3be
parentc667c77a86aa416206a22f62428e25259594aa33 (diff)
parenta8669c044a79453ce571c11d5fe38ab7aec6c5db (diff)
downloadrustversion-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.bp9
-rw-r--r--patches/version.diff40
-rw-r--r--src/lib.rs15
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);
+ }
+
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);
}