Adding target support to cargo package and cargo publish
authorNisarg Thakkar <nisargtha@gmail.com>
Sat, 20 May 2017 17:05:14 +0000 (22:35 +0530)
committerNisarg Thakkar <nisthakkar@paypal.com>
Tue, 29 Aug 2017 14:47:55 +0000 (20:17 +0530)
src/bin/package.rs
src/bin/publish.rs
src/cargo/ops/cargo_package.rs
src/cargo/ops/registry.rs

index 8b88ba882ea45be11c9ef3af4ef17b04a4399970..06fc589bd948e7f17d94663c5268e19002d1bc67 100644 (file)
@@ -8,6 +8,7 @@ pub struct Options {
     flag_verbose: u32,
     flag_quiet: Option<bool>,
     flag_color: Option<String>,
+    flag_target: Option<String>,
     flag_manifest_path: Option<String>,
     flag_no_verify: bool,
     flag_no_metadata: bool,
@@ -32,6 +33,7 @@ Options:
     --no-verify             Don't verify the contents by building them
     --no-metadata           Ignore warnings about a lack of human-usable metadata
     --allow-dirty           Allow dirty working directories to be packaged
+    --target TRIPLE         Build for the target triple
     --manifest-path PATH    Path to the manifest to compile
     -j N, --jobs N          Number of parallel jobs, defaults to # of CPUs
     -v, --verbose ...       Use verbose output (-vv very verbose/build.rs output)
@@ -57,6 +59,7 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
         list: options.flag_list,
         check_metadata: !options.flag_no_metadata,
         allow_dirty: options.flag_allow_dirty,
+        target: options.flag_target.as_ref().map(|t| &t[..]),
         jobs: options.flag_jobs,
     })?;
     Ok(())
index d77957109c35cdbdc505e8ef0edbca9e09fb7149..3299aacf1c6483ae251f2bf323386b1908439918 100644 (file)
@@ -8,6 +8,7 @@ pub struct Options {
     flag_index: Option<String>,
     flag_host: Option<String>,  // TODO: Deprecated, remove
     flag_token: Option<String>,
+    flag_target: Option<String>,
     flag_manifest_path: Option<String>,
     flag_verbose: u32,
     flag_quiet: Option<bool>,
@@ -35,6 +36,7 @@ Options:
     --token TOKEN            Token to use when uploading
     --no-verify              Don't verify package tarball before publish
     --allow-dirty            Allow publishing with a dirty source directory
+    --target TRIPLE          Build for the target triple
     --manifest-path PATH     Path to the manifest of the package to publish
     -j N, --jobs N           Number of parallel jobs, defaults to # of CPUs
     --dry-run                Perform all checks without uploading
@@ -94,6 +96,7 @@ about this warning.";
             else { config.shell().warn(&msg)?; host },  // TODO: Deprecated, remove
         verify: !no_verify,
         allow_dirty: allow_dirty,
+        target: options.flag_target.as_ref().map(|t| &t[..]),
         jobs: jobs,
         dry_run: dry_run,
     })?;
index 72b083803a749bc4e6be6603a3d0eb5247957399..9050beeced68a80450cae6250b208735dd309af3 100644 (file)
@@ -22,6 +22,7 @@ pub struct PackageOpts<'cfg> {
     pub allow_dirty: bool,
     pub verify: bool,
     pub jobs: Option<u32>,
+    pub target: Option<&'cfg str>,
 }
 
 pub fn package(ws: &Workspace,
@@ -298,7 +299,7 @@ fn run_verify(ws: &Workspace, tar: &File, opts: &PackageOpts) -> CargoResult<()>
     ops::compile_ws(&ws, None, &ops::CompileOptions {
         config: config,
         jobs: opts.jobs,
-        target: None,
+        target: opts.target,
         features: &[],
         no_default_features: false,
         all_features: false,
index f7153c19067f7abfc8ca27bdd5442bedfb91c0e1..087007893c2e706f89b8fe7453d732add749ae6d 100644 (file)
@@ -34,6 +34,7 @@ pub struct PublishOpts<'cfg> {
     pub verify: bool,
     pub allow_dirty: bool,
     pub jobs: Option<u32>,
+    pub target: Option<&'cfg str>,
     pub dry_run: bool,
 }
 
@@ -61,6 +62,7 @@ pub fn publish(ws: &Workspace, opts: &PublishOpts) -> CargoResult<()> {
         list: false,
         check_metadata: true,
         allow_dirty: opts.allow_dirty,
+        target: opts.target,
         jobs: opts.jobs,
     })?.unwrap();