[PATCH] Support cross-compile install
authorXimin Luo <infinity0@pwned.gg>
Fri, 29 Jun 2018 01:57:24 +0000 (18:57 -0700)
committerVasudev Kamath <vasudev@copyninja.info>
Mon, 13 Aug 2018 15:07:13 +0000 (20:37 +0530)
Gbp-Pq: Name 0774e97da3894f07ed5b6f7db175027a9bc4718b.patch

src/bin/cargo/commands/install.rs
tests/testsuite/install.rs

index f0c65515d2f2f776dad7eb4b65daa5becba53127..efac1a940c7a839180fb89973a1e81e714d3d38a 100644 (file)
@@ -32,6 +32,7 @@ pub fn cli() -> App {
             "Install only the specified example",
             "Install all examples",
         )
+        .arg_target_triple("Build for the target triple")
         .arg(opt("root", "Directory to install packages into").value_name("DIR"))
         .after_help(
             "\
index b26721d354131071f7b94415a0779c11f61e2740..7faf714fe896ec4c0cab44c936d10b3ba5bcb89c 100644 (file)
@@ -4,6 +4,7 @@ use std::io::prelude::*;
 
 use cargo::util::ProcessBuilder;
 use cargotest::install::{cargo_home, has_installed_exe};
+use cargotest::support::cross_compile;
 use cargotest::support::git;
 use cargotest::support::paths;
 use cargotest::support::registry::Package;
@@ -1309,6 +1310,40 @@ fn dev_dependencies_lock_file_untouched() {
     assert!(lock == lock2, "different lockfiles");
 }
 
+#[test]
+fn install_target_native() {
+    pkg("foo", "0.1.0");
+
+    assert_that(
+        cargo_process("install")
+            .arg("foo")
+            .arg("--target")
+            .arg(cargotest::rustc_host()),
+        execs()
+            .with_status(0),
+    );
+    assert_that(cargo_home(), has_installed_exe("foo"));
+}
+
+#[test]
+fn install_target_foreign() {
+    if cross_compile::disabled() {
+        return;
+    }
+
+    pkg("foo", "0.1.0");
+
+    assert_that(
+        cargo_process("install")
+            .arg("foo")
+            .arg("--target")
+            .arg(cross_compile::alternate()),
+        execs()
+            .with_status(0),
+    );
+    assert_that(cargo_home(), has_installed_exe("foo"));
+}
+
 #[test]
 fn vers_precise() {
     pkg("foo", "0.1.1");