new patches for cargo

This commit is contained in:
Cody P Schafer
2014-12-04 00:07:36 -05:00
parent f77f5b3c65
commit 9bdc072861
5 changed files with 28 additions and 93 deletions
+1 -2
View File
@@ -2,7 +2,7 @@ SRCREV_cargo = "a0f0abca4f718e36ddc7cc23f9bce4c51d93cbe5"
require cargo.inc require cargo.inc
SRC_URI += " \ SRC_URI += " \
file://0001-custom_build-add-BUILD_KIND-env-var.patch \ file://0001-custom_build-add-the-HOST-environment-variable.patch \
\ \
git://github.com/carllerche/curl-rust.git;protocol=https;name=curl-rust;destsuffix=curl-rust \ git://github.com/carllerche/curl-rust.git;protocol=https;name=curl-rust;destsuffix=curl-rust \
file://curl-rust/0001-curl-sys-avoid-explicitly-linking-in-openssl-If-it-.patch;patchdir=../curl-rust \ file://curl-rust/0001-curl-sys-avoid-explicitly-linking-in-openssl-If-it-.patch;patchdir=../curl-rust \
@@ -13,7 +13,6 @@ SRC_URI += " \
\ \
git://github.com/alexcrichton/gcc-rs.git;protocol=https;name=gcc-rs;destsuffix=gcc-rs \ git://github.com/alexcrichton/gcc-rs.git;protocol=https;name=gcc-rs;destsuffix=gcc-rs \
file://gcc-rs/0001-Support-use-of-namespaced-environment-variables-base.patch;patchdir=../gcc-rs \ file://gcc-rs/0001-Support-use-of-namespaced-environment-variables-base.patch;patchdir=../gcc-rs \
file://gcc-rs/0001-Avoid-death-when-lacking-BUILD_KIND.patch;patchdir=../gcc-rs \
" "
SRCREV_curl-rust = "5d0f5c8848e3cf1e12480a1923ae888e24d58f63" SRCREV_curl-rust = "5d0f5c8848e3cf1e12480a1923ae888e24d58f63"
@@ -1,55 +1,49 @@
From ccbbb148c237bbd6bfb8b98e34fb3ad8404348f0 Mon Sep 17 00:00:00 2001 From 41de2918fa69fa7e48bcfe7b3e68974befb0d5e6 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com> From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 13:09:46 -0500 Date: Wed, 3 Dec 2014 13:09:46 -0500
Subject: [PATCH] custom_build: add BUILD_KIND env var Subject: [PATCH] custom_build: add the HOST environment variable
--- ---
src/cargo/ops/cargo_rustc/custom_build.rs | 6 +++++- src/cargo/ops/cargo_rustc/custom_build.rs | 3 ++-
src/doc/build-script.md | 3 +++ src/doc/build-script.md | 1 +
tests/test_cargo_compile_custom_build.rs | 3 +++ tests/test_cargo_compile_custom_build.rs | 2 ++
3 files changed, 11 insertions(+), 1 deletion(-) 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/cargo/ops/cargo_rustc/custom_build.rs b/src/cargo/ops/cargo_rustc/custom_build.rs diff --git a/src/cargo/ops/cargo_rustc/custom_build.rs b/src/cargo/ops/cargo_rustc/custom_build.rs
index 6791e66..b0d2bf7 100644 index 6791e66..07ccbaf 100644
--- a/src/cargo/ops/cargo_rustc/custom_build.rs --- a/src/cargo/ops/cargo_rustc/custom_build.rs
+++ b/src/cargo/ops/cargo_rustc/custom_build.rs +++ b/src/cargo/ops/cargo_rustc/custom_build.rs
@@ -61,7 +61,11 @@ pub fn prepare(pkg: &Package, target: &Target, req: Platform, @@ -61,7 +61,8 @@ pub fn prepare(pkg: &Package, target: &Target, req: Platform,
})) }))
.env("DEBUG", Some(profile.get_debug().to_string())) .env("DEBUG", Some(profile.get_debug().to_string()))
.env("OPT_LEVEL", Some(profile.get_opt_level().to_string())) .env("OPT_LEVEL", Some(profile.get_opt_level().to_string()))
- .env("PROFILE", Some(profile.get_env())); - .env("PROFILE", Some(profile.get_env()));
+ .env("PROFILE", Some(profile.get_env())) + .env("PROFILE", Some(profile.get_env()))
+ .env("BUILD_KIND", Some(match kind { + .env("HOST", Some(cx.config.rustc_host()));
+ Kind::Host => "HOST",
+ Kind::Target => "TARGET",
+ }));
// Be sure to pass along all enabled features for this package, this is the // Be sure to pass along all enabled features for this package, this is the
// last piece of statically known information that we have. // last piece of statically known information that we have.
diff --git a/src/doc/build-script.md b/src/doc/build-script.md diff --git a/src/doc/build-script.md b/src/doc/build-script.md
index f5ece41..34de9cd 100644 index f5ece41..3a3f0ea 100644
--- a/src/doc/build-script.md --- a/src/doc/build-script.md
+++ b/src/doc/build-script.md +++ b/src/doc/build-script.md
@@ -43,6 +43,9 @@ all passed in the form of environment variables: @@ -43,6 +43,7 @@ all passed in the form of environment variables:
* `TARGET` - the target triple that is being compiled for. Native code should be * `TARGET` - the target triple that is being compiled for. Native code should be
compiled for this triple. Some more information about target compiled for this triple. Some more information about target
triples can be found in [clang's own documentation][clang]. triples can be found in [clang's own documentation][clang].
+* `BUILD_KIND` - the kind of the build, one of "TARGET" or "HOST". Use +* `HOST` - the host triple of the rust compiler.
+ discretion when utilizing this, very often the `TARGET`
+ variable is preferable.
* `NUM_JOBS` - the parallelism specified as the top-level parallelism. This can * `NUM_JOBS` - the parallelism specified as the top-level parallelism. This can
be useful to pass a `-j` parameter to a system like `make`. be useful to pass a `-j` parameter to a system like `make`.
* `CARGO_MANIFEST_DIR` - The directory containing the manifest for the package * `CARGO_MANIFEST_DIR` - The directory containing the manifest for the package
diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs
index 9ea71f0..1dd3c6b 100644 index 9ea71f0..aef3c77 100644
--- a/tests/test_cargo_compile_custom_build.rs --- a/tests/test_cargo_compile_custom_build.rs
+++ b/tests/test_cargo_compile_custom_build.rs +++ b/tests/test_cargo_compile_custom_build.rs
@@ -99,6 +99,9 @@ test!(custom_build_env_vars { @@ -99,6 +99,8 @@ test!(custom_build_env_vars {
assert!(out.as_slice().starts_with(r"{0}")); assert!(out.as_slice().starts_with(r"{0}"));
assert!(Path::new(out).is_dir()); assert!(Path::new(out).is_dir());
+ let kind = os::getenv("BUILD_KIND").unwrap(); + let _host = os::getenv("HOST").unwrap();
+ assert_eq!(kind.as_slice(), "TARGET");
+ +
let _feat = os::getenv("CARGO_FEATURE_FOO").unwrap(); let _feat = os::getenv("CARGO_FEATURE_FOO").unwrap();
}} }}
@@ -1,27 +0,0 @@
From f2872c1887de199d1ba773d092548876113775bf Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 14:21:29 -0500
Subject: [PATCH] Avoid death when lacking BUILD_KIND
---
src/lib.rs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 18718b9..d22d833 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -115,8 +115,8 @@ fn get_var(var_base: &str) -> Option<String> {
let target_u = target.split('-')
.collect::<Vec<&str>>()
.connect("_");
- let kind = os::getenv("BUILD_KIND")
- .expect("Environment variable 'BUILD_KIND' is unset");
+ let kind = os::getenv("BUILD_KIND")
+ .unwrap_or(String::from_str("TARGET"));
os::getenv(format!("{}_{}", var_base, target).as_slice())
.or_else(|| os::getenv(format!("{}_{}", var_base, target_u).as_slice()))
.or_else(|| os::getenv(format!("{}_{}", kind, var_base).as_slice()))
--
2.1.3
@@ -1,16 +1,16 @@
From 5f5cb84a50a505a7876999729d4f53f59fa913ec Mon Sep 17 00:00:00 2001 From 94205321c27fc40f7c9604558e08db345cd5a81a Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com> From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 13:41:11 -0500 Date: Wed, 3 Dec 2014 13:41:11 -0500
Subject: [PATCH] Support use of namespaced environment variables based on Subject: [PATCH] Support use of namespaced environment variables based on
target triplet and BUILD_KIND TARGET and HOST
--- ---
README.md | 25 +++++++++++++++++++++++++ README.md | 25 +++++++++++++++++++++++++
src/lib.rs | 20 +++++++++++++++++--- src/lib.rs | 21 ++++++++++++++++++---
2 files changed, 42 insertions(+), 3 deletions(-) 2 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md diff --git a/README.md b/README.md
index bb7047d..73b72d7 100644 index bb7047d..0268ce1 100644
--- a/README.md --- a/README.md
+++ b/README.md +++ b/README.md
@@ -11,6 +11,31 @@ fn main() { @@ -11,6 +11,31 @@ fn main() {
@@ -40,27 +40,28 @@ index bb7047d..73b72d7 100644
+ +
+If none of these varaibles exist, gcc-rs uses built-in defaults +If none of these varaibles exist, gcc-rs uses built-in defaults
+ +
+In addition to the the above optional environment variables, `gcc-rs` has some functions with hard requirements on some variables supplied by [cargo's build-script driver][cargo] that it has the `TARGET`, `OUT_DIR`, `OPT_LEVEL`, and `BUILD_KIND` variables +In addition to the the above optional environment variables, `gcc-rs` has some functions with hard requirements on some variables supplied by [cargo's build-script driver][cargo] that it has the `TARGET`, `OUT_DIR`, `OPT_LEVEL`, and `HOST` variables
+ +
# Windows notes # Windows notes
Currently use of this crate means that Windows users will require gcc to be Currently use of this crate means that Windows users will require gcc to be
diff --git a/src/lib.rs b/src/lib.rs diff --git a/src/lib.rs b/src/lib.rs
index 51157c8..18718b9 100644 index 51157c8..bb0cb3c 100644
--- a/src/lib.rs --- a/src/lib.rs
+++ b/src/lib.rs +++ b/src/lib.rs
@@ -109,8 +109,22 @@ fn run(cmd: &mut Command) { @@ -109,8 +109,23 @@ fn run(cmd: &mut Command) {
} }
} }
+fn get_var(var_base: &str) -> Option<String> { +fn get_var(var_base: &str) -> Option<String> {
+ let target = os::getenv("TARGET") + let target = os::getenv("TARGET")
+ .expect("Environment variable 'TARGET' is unset"); + .expect("Environment variable 'TARGET' is unset");
+ let host = os::getenv("HOST")
+ .expect("Environment variable 'HOST' is unset");
+ let kind = if host == target { "HOST" } else { "TARGET" };
+ let target_u = target.split('-') + let target_u = target.split('-')
+ .collect::<Vec<&str>>() + .collect::<Vec<&str>>()
+ .connect("_"); + .connect("_");
+ let kind = os::getenv("BUILD_KIND")
+ .expect("Environment variable 'BUILD_KIND' is unset");
+ os::getenv(format!("{}_{}", var_base, target).as_slice()) + os::getenv(format!("{}_{}", var_base, target).as_slice())
+ .or_else(|| os::getenv(format!("{}_{}", var_base, target_u).as_slice())) + .or_else(|| os::getenv(format!("{}_{}", var_base, target_u).as_slice()))
+ .or_else(|| os::getenv(format!("{}_{}", kind, var_base).as_slice())) + .or_else(|| os::getenv(format!("{}_{}", kind, var_base).as_slice()))
@@ -73,7 +74,7 @@ index 51157c8..18718b9 100644
"gcc".to_string() "gcc".to_string()
} else { } else {
"cc".to_string() "cc".to_string()
@@ -118,11 +132,11 @@ fn gcc() -> String { @@ -118,11 +133,11 @@ fn gcc() -> String {
} }
fn ar() -> String { fn ar() -> String {
@@ -1,32 +0,0 @@
From 66911257957f29ccf3a4386956977e97168200e7 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 25 Nov 2014 16:28:25 -0500
Subject: [PATCH] XXX: hacks
---
src/lib.rs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/lib.rs b/src/lib.rs
index de90de6..a388af3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -99,13 +99,14 @@ pub fn compile_library(output: &str, config: &Config, files: &[&str]) {
}
fn run(cmd: &mut Command) {
- println!("running: {}", cmd);
+ println!("running: '{}' : {}", cmd.program(), cmd);
assert!(cmd.stdout(InheritFd(1))
.stderr(InheritFd(2))
.status()
.unwrap()
.success());
+ println!("Run done");
}
fn gcc() -> String {
--
2.1.3