Bug 1391427 - Package upstream rust in taskcluster. r?glandium draft
authorRalph Giles <giles@mozilla.com>
Tue, 12 Sep 2017 16:30:19 -0700
changeset 670743 227ef4e1a73b90065607f569e6f40ce992c4932b
parent 670742 65ed166843e9fc8642dcab340dcb7bec2e4cfe8a
child 733296 5aa91eb732dc4ed84e007ae91b3542ed6c43d479
push id81697
push userbmo:giles@thaumas.net
push dateTue, 26 Sep 2017 19:16:56 +0000
reviewersglandium
bugs1391427
milestone58.0a1
Bug 1391427 - Package upstream rust in taskcluster. r?glandium Add a toolchain job description which calls the repack_rust.py script to package the requested upstream build of Rust and its standard libraries for use in gecko builds. Links are added to these new toolchains for various build and analysis tasks as appropriate. The base-toolchain tasks use an explicitly-versioned toolchain since those can be different from the current release used for most builds. The corresponding tooltool manifest entries are removed now that taskcluster artifact versions are available. This simplifies the update process since new toolchains can be packaged and used automatically by just updating the versions in the task descriptions. A 'linux64-rust' toolchain can be added to other tasks as a dependency and artifact. It supports linux64- hosted builds of Rust code targeting linux64 or linux32. A 'linux64-rust-macos' toolchain targets linux64-hosted builds of Rust code targeting macOS on x86_64. A 'linux64-rust-android' toolchain targets linux64-hosted builds of Rust code targeting various Android architectures. Two 'win64-rust' and 'win32-rust' toolchain tasks create similar entries for Windows-hosted builds. All our automation builds are hosted on win64, so we could use one artifact with support for both targets, but currently this doesn't work because of cross-compilation issues in some crates. This patch maintains the previous separation between win32 and win64 rust toolchains until that can be addressed. MozReview-Commit-ID: GRiJml8CtzO
browser/config/tooltool-manifests/linux32/releng.manifest
browser/config/tooltool-manifests/linux64/base-toolchains.manifest
browser/config/tooltool-manifests/linux64/releng.manifest
browser/config/tooltool-manifests/macosx64/cross-releng.manifest
browser/config/tooltool-manifests/win32/releng.manifest
browser/config/tooltool-manifests/win64/releng.manifest
browser/config/tooltool-manifests/win64/sccache-build.manifest
mobile/android/config/tooltool-manifests/android-x86/releng.manifest
mobile/android/config/tooltool-manifests/android/releng.manifest
taskcluster/ci/build/android.yml
taskcluster/ci/build/linux.yml
taskcluster/ci/build/macosx.yml
taskcluster/ci/build/windows.yml
taskcluster/ci/spidermonkey/kind.yml
taskcluster/ci/static-analysis/kind.yml
taskcluster/ci/toolchain/linux.yml
taskcluster/ci/toolchain/windows.yml
taskcluster/ci/valgrind/kind.yml
--- a/browser/config/tooltool-manifests/linux32/releng.manifest
+++ b/browser/config/tooltool-manifests/linux32/releng.manifest
@@ -1,18 +1,10 @@
 [
   {
     "size": 11189216,
     "digest": "18bc52b0599b1308b667e282abb45f47597bfc98a5140cfcab8da71dacf89dd76d0dee22a04ce26fe7ad1f04e2d6596991f9e5b01fd2aaaab5542965f596b0e6",
     "algorithm": "sha512",
     "filename": "gtk3.tar.xz",
     "setup": "setup.sh",
     "unpack": true
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 161014632,
-    "digest": "65bebcf94fc66ea618c58c9ac33f0f206095ecfe3931cc6edb301f4b40480e3b44b0f39aea7a25fed8eef47e63523e7e670082947a3662cdc04c68ebbe5dfc89",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
   }
 ]
--- a/browser/config/tooltool-manifests/linux64/base-toolchains.manifest
+++ b/browser/config/tooltool-manifests/linux64/base-toolchains.manifest
@@ -1,18 +1,10 @@
 [
   {
     "size": 12072532,
     "digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
     "algorithm": "sha512",
     "filename": "gtk3.tar.xz",
     "setup": "setup.sh",
     "unpack": true
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 161014632,
-    "digest": "65bebcf94fc66ea618c58c9ac33f0f206095ecfe3931cc6edb301f4b40480e3b44b0f39aea7a25fed8eef47e63523e7e670082947a3662cdc04c68ebbe5dfc89",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
   }
 ]
--- a/browser/config/tooltool-manifests/linux64/releng.manifest
+++ b/browser/config/tooltool-manifests/linux64/releng.manifest
@@ -1,18 +1,10 @@
 [
   {
     "size": 12072532,
     "digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
     "algorithm": "sha512",
     "filename": "gtk3.tar.xz",
     "setup": "setup.sh",
     "unpack": true
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 161014632,
-    "digest": "65bebcf94fc66ea618c58c9ac33f0f206095ecfe3931cc6edb301f4b40480e3b44b0f39aea7a25fed8eef47e63523e7e670082947a3662cdc04c68ebbe5dfc89",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
   }
 ]
--- a/browser/config/tooltool-manifests/macosx64/cross-releng.manifest
+++ b/browser/config/tooltool-manifests/macosx64/cross-releng.manifest
@@ -1,18 +1,10 @@
 [
   {
     "size": 34094283,
     "visibility": "internal",
     "digest": "8811050fe375bcc566c8b85173d86b8a87aa2148edfed93023735c2de44b66a5a28cbaa1cfd396032447fd803e03f308ed941a200c0e2a1ad9fbe16b5606ee7c",
     "algorithm": "sha512",
     "unpack": true,
     "filename": "MacOSX10.11.sdk.tar.xz"
-  },
-  {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 155690216,
-    "digest": "379f542ea16c775e7bcad36823f0068ca6a1f17c2b25e42ef978d51865298ba4207dc89bbb614805f81a123d12e339209a447afbd12c1122e16f4c7c41e7d92b",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
   }
 ]
--- a/browser/config/tooltool-manifests/win32/releng.manifest
+++ b/browser/config/tooltool-manifests/win32/releng.manifest
@@ -1,24 +1,16 @@
 [
   {
     "size": 266240,
     "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
     "algorithm": "sha512",
     "filename": "mozmake.exe"
   },
   {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 97017057,
-    "digest": "b726645f9d26c5a3048720b3839166021c1cf91a02d2ff2f10c49adced7455c7352e18b5052084d80bf9d1c40ec1bf72d0397921b8cd23262f89fdbd10def58f",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.bz2",
-    "unpack": true
-  },
-  {
     "version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
     "size": 326656969,
     "digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
     "algorithm": "sha512",
     "filename": "vs2015u3.zip",
     "unpack": true
   },
   {
--- a/browser/config/tooltool-manifests/win64/releng.manifest
+++ b/browser/config/tooltool-manifests/win64/releng.manifest
@@ -1,25 +1,16 @@
 [
   {
     "size": 266240,
     "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
     "algorithm": "sha512",
     "filename": "mozmake.exe"
   },
   {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 103602526,
-    "digest": "558d2d18991ad8b250a5d6b46a55e1ffdffc50d6bdd9cb4b3a945dd3d1143836b32e47f1df612bfea97ca2c02333ed43055b6c3030ecb1632385fb6940c1d246",
-    "algorithm": "sha512",
-    "visibility": "public",
-    "filename": "rustc.tar.bz2",
-    "unpack": true
-  },
-  {
     "version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
     "size": 326656969,
     "digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
     "algorithm": "sha512",
     "filename": "vs2015u3.zip",
     "unpack": true
   },
   {
--- a/browser/config/tooltool-manifests/win64/sccache-build.manifest
+++ b/browser/config/tooltool-manifests/win64/sccache-build.manifest
@@ -1,19 +1,10 @@
 [
   {
-    "version": "rustc 1.18.0 (03fc9d622 2017-06-06) repack",
-    "size": 98336380,
-    "digest": "92091d92ce135ee52486c31ae670735dd140ab5b1389f14582c4d9b14cbb393f7180399b9232564a3eb96443b568323070a3c1329deb07b145b28476e8271175",
-    "algorithm": "sha512",
-    "visibility": "public",
-    "filename": "rustc.tar.bz2",
-    "unpack": true
-  },
-  {
     "version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
     "size": 326656969,
     "digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
     "algorithm": "sha512",
     "filename": "vs2015u3.zip",
     "unpack": true
   },
   {
--- a/mobile/android/config/tooltool-manifests/android-x86/releng.manifest
+++ b/mobile/android/config/tooltool-manifests/android-x86/releng.manifest
@@ -20,24 +20,16 @@
     "size": 6856444,
     "visibility": "public",
     "unpack": true,
     "digest": "d68dd7d31b0153095ecf5cde5837fb1f95dc6e3f799d496fb764f7afeb9c6095c332467177c3aa54d3749b1901e0d6fa84c42162526e764e8a9d2196a0189861",
     "algorithm": "sha512",
     "filename": "jsshell.tar.xz"
   },
   {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 151322128,
-    "digest": "1d6d6e8bbf7535a4f1c8f1292562e30c868bfd3ac323992fc287be09f7fa3167c2f9e01dc98143967983e30488fe3ecaebff530ba4ec9113033d60af936c4f4d",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
-  },
-  {
     "size": 7797928,
     "visibility": "public",
     "digest": "7bb5c7b3586179a7805ae60b025b7856cb8dbed66da1b7962bc446d94ea6fa45ed55ebfe065d2d82690c68bf71bdab613e97f53da79b85e3185955461f751256",
     "algorithm": "sha512",
     "filename": "google.tar.xz",
     "unpack": true
   },
   {
--- a/mobile/android/config/tooltool-manifests/android/releng.manifest
+++ b/mobile/android/config/tooltool-manifests/android/releng.manifest
@@ -52,24 +52,16 @@
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "gradle-dist.tar.xz",
     "unpack": true,
     "digest": "e3cfe7f8259ad97722243d4e873d5a05c014bfc24d637427f89d804bf5073290229c778ea303142cf06c2dc79e0492f23521f57d3a73825f55b8db587317646f",
     "size": 51753660
   },
   {
-    "version": "rustc 1.19.0 (0ade33941 2017-07-17) repack",
-    "size": 151322128,
-    "digest": "1d6d6e8bbf7535a4f1c8f1292562e30c868bfd3ac323992fc287be09f7fa3167c2f9e01dc98143967983e30488fe3ecaebff530ba4ec9113033d60af936c4f4d",
-    "algorithm": "sha512",
-    "filename": "rustc.tar.xz",
-    "unpack": true
-  },
-  {
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "dotgradle.tar.xz",
     "unpack": true,
     "digest": "9f082ccd71ad18991eb71fcad355c6990f50a72a09ab9b79696521485656083a72faf5a8d4714de9c4b901ee2319b6786a51964846bb7075061642a8505501c2",
     "size": 512
   }
 ]
--- a/taskcluster/ci/build/android.yml
+++ b/taskcluster/ci/build/android.yml
@@ -19,16 +19,17 @@ android-api-16/debug:
             - builds/releng_base_android_64_builds.py
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16-debug
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-x86/opt:
     description: "Android 4.2 x86 Opt"
     index:
         product: mobile
         job-name: android-x86-opt
     treeherder:
@@ -47,16 +48,17 @@ android-x86/opt:
             - builds/releng_base_android_64_builds.py
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: x86
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-x86-nightly/opt:
     description: "Android 4.2 x86 Nightly"
     attributes:
         nightly: true
     index:
         product: mobile
@@ -79,16 +81,17 @@ android-x86-nightly/opt:
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: x86
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-api-16/opt:
     description: "Android 4.0 api-16+ Opt"
     index:
         product: mobile
         job-name: android-api-16-opt
     treeherder:
@@ -107,16 +110,17 @@ android-api-16/opt:
             - builds/releng_base_android_64_builds.py
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-api-16-nightly/opt:
     description: "Android 4.0 api-16+ Nightly"
     attributes:
         nightly: true
     index:
         product: mobile
@@ -139,16 +143,17 @@ android-api-16-nightly/opt:
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-x86-old-id/opt:
     description: "Android 4.2 x86 Opt OldId"
     index:
         product: mobile
         job-name: android-x86-old-id-opt
     treeherder:
@@ -168,16 +173,17 @@ android-x86-old-id/opt:
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: x86-old-id
         tooltool-downloads: internal
     run-on-projects: [ 'mozilla-central' ]
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-x86-old-id-nightly/opt:
     description: "Android 4.2 x86 OldId Nightly"
     attributes:
         nightly: true
     index:
         product: mobile
@@ -201,16 +207,17 @@ android-x86-old-id-nightly/opt:
             - platform_supports_post_upload_to_latest.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: x86-old-id
         tooltool-downloads: internal
     run-on-projects: [ 'mozilla-central' ]
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-api-16-old-id/opt:
     description: "Android 4.0 api-16+ Opt OldId"
     index:
         product: mobile
         job-name: android-api-16-old-id-opt
     treeherder:
@@ -230,16 +237,17 @@ android-api-16-old-id/opt:
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16-old-id
         tooltool-downloads: internal
     run-on-projects: [ 'mozilla-central' ]
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-api-16-old-id-nightly/opt:
     description: "Android 4.0 api-16+ OldId Nightly"
     attributes:
         nightly: true
     index:
         product: mobile
@@ -263,16 +271,17 @@ android-api-16-old-id-nightly/opt:
             - platform_supports_post_upload_to_latest.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16-old-id
         tooltool-downloads: internal
     run-on-projects: [ 'mozilla-central' ]
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-api-16-gradle/opt:
     description: "Android 4.0 api-16+ (Gradle) Opt"
     index:
         product: mobile
         job-name: android-api-16-gradle-opt
     treeherder:
@@ -304,16 +313,17 @@ android-api-16-gradle/opt:
             - builds/releng_base_android_64_builds.py
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: api-16-gradle
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-aarch64/opt:
     description: "Android 5.0 AArch64 Opt"
     index:
         product: mobile
         job-name: android-aarch64-opt
     treeherder:
@@ -332,16 +342,17 @@ android-aarch64/opt:
             - builds/releng_base_android_64_builds.py
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: aarch64
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
 
 android-aarch64-nightly/opt:
     description: "Android 5.0 AArch64 Nightly"
     attributes:
         nightly: true
     index:
         product: mobile
@@ -364,9 +375,10 @@ android-aarch64-nightly/opt:
             - disable_signing.py
             - platform_supports_post_upload_to_latest.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: aarch64
         tooltool-downloads: internal
     toolchains:
+        - linux64-rust-android
         - linux64-sccache
--- a/taskcluster/ci/build/linux.yml
+++ b/taskcluster/ci/build/linux.yml
@@ -19,16 +19,17 @@ linux64/opt:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-dmd/opt:
     description: "Linux64 DMD Opt"
     index:
         product: firefox
         job-name: linux64-dmd-opt
     treeherder:
@@ -49,16 +50,17 @@ linux64-dmd/opt:
         custom-build-variant-cfg: dmd
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     run-on-projects: [ ]
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64/pgo:
     description: "Linux64 PGO"
     index:
         product: firefox
         job-name: linux64-pgo
     treeherder:
@@ -78,16 +80,17 @@ linux64/pgo:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64/debug:
     description: "Linux64 Debug"
     index:
         product: firefox
         job-name: linux64-debug
     treeherder:
@@ -108,16 +111,17 @@ linux64/debug:
         secrets: true
         custom-build-variant-cfg: debug
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
         - linux64-sccache
+        - linux64-rust
 
 linux64-devedition-nightly/opt:
     description: "Linux64 devedition Nightly"
     attributes:
         nightly: true
     index:
         product: devedition
         job-name: linux64-opt
@@ -141,16 +145,17 @@ linux64-devedition-nightly/opt:
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
         custom-build-variant-cfg: devedition
     run-on-projects: [ 'mozilla-beta', ]
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-base-toolchains/opt:
     description: "Linux64 base toolchains Opt"
     index:
         product: firefox
         job-name: linux64-base-toolchains-opt
     treeherder:
@@ -170,16 +175,17 @@ linux64-base-toolchains/opt:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang-3.9
         - linux64-gcc-4.9
+        - linux64-rust-1.19
         - linux64-sccache
 
 linux64-base-toolchains/debug:
     description: "Linux64 base toolchains Debug"
     index:
         product: firefox
         job-name: linux64-base-toolchains-debug
     treeherder:
@@ -200,16 +206,17 @@ linux64-base-toolchains/debug:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: debug
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang-3.9
         - linux64-gcc-4.9
+        - linux64-rust-1.19
         - linux64-sccache
 
 linux/opt:
     description: "Linux32 Opt"
     index:
         product: firefox
         job-name: linux-opt
     treeherder:
@@ -228,16 +235,17 @@ linux/opt:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux/debug:
     description: "Linux32 Debug"
     index:
         product: firefox
         job-name: linux-debug
     treeherder:
@@ -257,16 +265,17 @@ linux/debug:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: debug
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux/pgo:
     description: "Linux32 PGO"
     index:
         product: firefox
         job-name: linux-pgo
     treeherder:
@@ -286,16 +295,17 @@ linux/pgo:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux-devedition-nightly/opt:
     description: "Linux32 devedition Nightly"
     attributes:
         nightly: true
     index:
         product: devedition
@@ -320,16 +330,17 @@ linux-devedition-nightly/opt:
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
         custom-build-variant-cfg: devedition
     run-on-projects: [ 'mozilla-beta', ]
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux-nightly/opt:
     description: "Linux32 Nightly"
     attributes:
         nightly: true
     index:
         product: firefox
@@ -352,16 +363,17 @@ linux-nightly/opt:
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 
 linux64-asan/opt:
     description: "Linux64 Opt ASAN"
     index:
         product: firefox
         job-name: linux64-asan-opt
@@ -383,16 +395,17 @@ linux64-asan/opt:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: asan-tc
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 
 linux64-asan-fuzzing/opt:
     description: "Linux64 Fuzzing Opt ASAN"
     index:
         product: firefox
         job-name: linux64-fuzzing-asan-opt
@@ -414,16 +427,17 @@ linux64-asan-fuzzing/opt:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: fuzzing-asan-tc
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang-4
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-asan-reporter/opt:
     description: "Linux64 Opt ASAN Reporter Nightly"
     index:
         product: firefox
         job-name: linux64-asan-reporter-opt
     treeherder:
@@ -444,16 +458,17 @@ linux64-asan-reporter/opt:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: asan-reporter-tc
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang-4
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-asan/debug:
     description: "Linux64 Debug ASAN"
     index:
         product: firefox
         job-name: linux64-asan-debug
     treeherder:
@@ -474,16 +489,17 @@ linux64-asan/debug:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: asan-tc-and-debug
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-nightly/opt:
     description: "Linux64 Nightly"
     attributes:
         nightly: true
     index:
         product: firefox
@@ -506,16 +522,17 @@ linux64-nightly/opt:
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-noopt/debug:
     description: "Linux64 No-optimize Debug"
     index:
         product: firefox
         job-name: linux64-noopt-debug
     treeherder:
@@ -538,16 +555,17 @@ linux64-noopt/debug:
         custom-build-variant-cfg: noopt-debug
         tooltool-downloads: public
         keep-artifacts: false
         need-xvfb: true
     run-on-projects: [ 'trunk', 'try' ]
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-jsdcov/opt:
     description: "Linux64-JSDCov Opt"
     index:
         product: firefox
         job-name: linux64-jsdcov-opt
     treeherder:
@@ -568,16 +586,17 @@ linux64-jsdcov/opt:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
 
 linux64-ccov/opt:
     description: "Linux64-CCov Opt"
     index:
         product: firefox
         job-name: linux64-ccov-opt
     treeherder:
@@ -598,16 +617,17 @@ linux64-ccov/opt:
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: code-coverage
         tooltool-downloads: public
         need-xvfb: true
     toolchains:
         - linux64-clang
+        - linux64-rust
         - linux64-gcc
 
 linux64-add-on-devel/opt:
     description: "Linux64 add-on-devel"
     index:
         product: firefox
         job-name: linux64-add-on-devel
     treeherder:
@@ -629,9 +649,10 @@ linux64-add-on-devel/opt:
         secrets: true
         custom-build-variant-cfg: add-on-devel
         tooltool-downloads: public
         need-xvfb: true
     run-on-projects: [ 'mozilla-beta', 'mozilla-release', 'mozilla-esr45' ]
     toolchains:
         - linux64-clang
         - linux64-gcc
+        - linux64-rust
         - linux64-sccache
--- a/taskcluster/ci/build/macosx.yml
+++ b/taskcluster/ci/build/macosx.yml
@@ -21,16 +21,17 @@ macosx64/debug:
         secrets: true
         custom-build-variant-cfg: cross-debug
         tooltool-downloads: internal
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64/opt:
     description: "MacOS X x64 Cross-compile"
     index:
         product: firefox
         job-name: macosx64-opt
     treeherder:
@@ -50,16 +51,17 @@ macosx64/opt:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: internal
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64-dmd/opt:
     description: "MacOS X x64 DMD Cross-compile"
     index:
         product: firefox
         job-name: macosx64-dmd-opt
     treeherder:
@@ -81,16 +83,17 @@ macosx64-dmd/opt:
         secrets: true
         tooltool-downloads: internal
     run-on-projects: [ ]
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64-devedition-nightly/opt:
     description: "MacOS X Dev Edition x64 Nightly"
     attributes:
         nightly: true
     index:
         product: devedition
@@ -117,16 +120,17 @@ macosx64-devedition-nightly/opt:
         tooltool-downloads: internal
         custom-build-variant-cfg: devedition
     run-on-projects: ['mozilla-beta',]
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64-noopt/debug:
     description: "MacOS X x64 No-optimize Debug"
     index:
         product: firefox
         job-name: macosx64-noopt-debug
     treeherder:
@@ -151,16 +155,17 @@ macosx64-noopt/debug:
         tooltool-downloads: internal
         keep-artifacts: false
     run-on-projects: [ 'trunk', 'try' ]
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64-add-on-devel/opt:
     description: "MacOS X x64 add-on-devel"
     index:
         product: firefox
         job-name: macosx64-add-on-devel
     treeherder:
@@ -183,16 +188,17 @@ macosx64-add-on-devel/opt:
        custom-build-variant-cfg: add-on-devel
        tooltool-downloads: internal
     run-on-projects: [ 'mozilla-beta', 'mozilla-release', 'mozilla-esr45' ]
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
 
 macosx64-nightly/opt:
     description: "MacOS X x64 Cross-compile Nightly"
     attributes:
         nightly: true
     index:
         product: firefox
@@ -217,9 +223,10 @@ macosx64-nightly/opt:
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: internal
     toolchains:
         - linux64-cctools-port
         - linux64-clang
         - linux64-hfsplus
         - linux64-libdmg
+        - linux64-rust-macos
         - linux64-sccache
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -14,16 +14,17 @@ win32/debug:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_32_debug.py
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win32/opt:
     description: "Win32 Opt"
     index:
         product: firefox
         job-name: win32-opt
     treeherder:
@@ -37,16 +38,17 @@ win32/opt:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_32_opt.py
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win32-dmd/opt:
     description: "Win32 DMD Opt"
     index:
         product: firefox
         job-name: win32-dmd-opt
     treeherder:
@@ -62,16 +64,17 @@ win32-dmd/opt:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_32_opt.py
         custom-build-variant-cfg: dmd
     run-on-projects: [ ]
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win32/pgo:
     description: "Win32 Opt PGO"
     index:
         product: firefox
         job-name: win32-pgo
     treeherder:
@@ -86,16 +89,17 @@ win32/pgo:
     run:
         using: mozharness
         options: [enable-pgo]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_32_opt.py
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win64/debug:
     description: "Win64 Debug"
     index:
         product: firefox
         job-name: win64-debug
     treeherder:
@@ -109,16 +113,17 @@ win64/debug:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_64_debug.py
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win64/opt:
     description: "Win64 Opt"
     index:
         product: firefox
         job-name: win64-opt
     treeherder:
@@ -132,16 +137,17 @@ win64/opt:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_64_opt.py
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win64-dmd/opt:
     description: "Win64 DMD Opt"
     index:
         product: firefox
         job-name: win64-dmd-opt
     treeherder:
@@ -157,16 +163,17 @@ win64-dmd/opt:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_64_opt.py
         custom-build-variant-cfg: dmd
     run-on-projects: [ ]
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win32-nightly/opt:
     description: "Win32 Nightly"
     index:
         product: firefox
         job-name: win32-opt
         type: nightly
@@ -186,16 +193,17 @@ win32-nightly/opt:
         actions: [clone-tools, build, check-test, update]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_32_opt.py
             - disable_signing.py
             - taskcluster_nightly.py
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win64-nightly/opt:
     description: "Win64 Nightly"
     index:
         product: firefox
         job-name: win64-opt
         type: nightly
@@ -215,16 +223,17 @@ win64-nightly/opt:
         actions: [clone-tools, build, check-test, update]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_64_opt.py
             - disable_signing.py
             - taskcluster_nightly.py
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win64/pgo:
     description: "Win64 Opt PGO"
     index:
         product: firefox
         job-name: win64-pgo
     treeherder:
@@ -239,16 +248,17 @@ win64/pgo:
     run:
         using: mozharness
         options: [enable-pgo]
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_windows_64_opt.py
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win32-add-on-devel/opt:
     description: "Windows32 add-on-devel"
     index:
         product: firefox
         job-name: win32-add-on-devel
     treeherder:
@@ -264,16 +274,17 @@ win32-add-on-devel/opt:
         using: mozharness
         script: "mozharness/scripts/fx_desktop_build.py"
         config:
             - builds/taskcluster_firefox_windows_32_addondevel.py
             - balrog/production.py
     run-on-projects: [ 'mozilla-beta', 'mozilla-release', 'mozilla-esr45' ]
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win64-add-on-devel/opt:
     description: "Windows64 add-on-devel"
     index:
         product: firefox
         job-name: win64-add-on-devel
     treeherder:
@@ -289,16 +300,17 @@ win64-add-on-devel/opt:
         using: mozharness
         script: "mozharness/scripts/fx_desktop_build.py"
         config:
             - builds/taskcluster_firefox_windows_64_addondevel.py
             - balrog/production.py
     run-on-projects: [ 'mozilla-beta', 'mozilla-release', 'mozilla-esr45' ]
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win64-noopt/debug:
     description: "Win64 No-optimize Debug"
     index:
         product: firefox
         job-name: win64-noopt-debug
     treeherder:
@@ -313,16 +325,17 @@ win64-noopt/debug:
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win64_noopt_debug.py
     run-on-projects: [ 'trunk', 'try' ]
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win32-noopt/debug:
     description: "Win32 No-optimize Debug"
     index:
         product: firefox
         job-name: win32-noopt-debug
     treeherder:
@@ -337,16 +350,17 @@ win32-noopt/debug:
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win32_noopt_debug.py
     run-on-projects: [ 'trunk', 'try' ]
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win64-asan/debug:
     description: "Win64 Debug ASAN"
     index:
         product: firefox
         job-name: win64-asan-debug
     treeherder:
@@ -361,16 +375,17 @@ win64-asan/debug:
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win64_asan_debug.py
     run-on-projects: []
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win64-asan/opt:
     description: "Win64 Opt ASAN"
     index:
         product: firefox
         job-name: win64-asan-opt
     treeherder:
@@ -385,16 +400,17 @@ win64-asan/opt:
     run:
         using: mozharness
         script: mozharness/scripts/fx_desktop_build.py
         config:
             - builds/taskcluster_firefox_win64_asan_opt.py
     run-on-projects: []
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
 
 win32-devedition-nightly/opt:
     description: "Win32 Dev Edition Nightly"
     index:
         product: devedition
         job-name: win32-opt
         type: nightly
@@ -415,16 +431,17 @@ win32-devedition-nightly/opt:
         config:
             - builds/taskcluster_firefox_windows_32_opt.py
             - disable_signing.py
             - taskcluster_nightly.py
         custom-build-variant-cfg: devedition
     run-on-projects: [ 'mozilla-beta', ]
     toolchains:
         - win32-clang-cl
+        - win32-rust
         - win64-sccache
 
 win64-devedition-nightly/opt:
     description: "Win64 Dev Edition Nightly"
     index:
         product: devedition
         job-name: win64-opt
         type: nightly
@@ -445,9 +462,10 @@ win64-devedition-nightly/opt:
         config:
             - builds/taskcluster_firefox_windows_64_opt.py
             - disable_signing.py
             - taskcluster_nightly.py
         custom-build-variant-cfg: devedition
     run-on-projects: [ 'mozilla-beta', ]
     toolchains:
         - win64-clang-cl
+        - win64-rust
         - win64-sccache
--- a/taskcluster/ci/spidermonkey/kind.yml
+++ b/taskcluster/ci/spidermonkey/kind.yml
@@ -54,19 +54,21 @@ job-defaults:
             - testing/mozbase/**
             - test.mozbuild
             - toolkit/mozapps/installer/package-name.mk
             - toolkit/mozapps/installer/upload-files.mk
     toolchains:
         by-worker-type:
             .*-b-win2012:
                 - win64-clang-cl
+                - win64-rust
             default:
                 - linux64-clang
                 - linux64-gcc
+                - linux64-rust
 
 jobs:
     sm-package/opt:
         description: "Spidermonkey source package and test"
         index:
             job-name: sm-package-opt
         treeherder:
             symbol: SM-tc(pkg)
--- a/taskcluster/ci/static-analysis/kind.yml
+++ b/taskcluster/ci/static-analysis/kind.yml
@@ -40,16 +40,17 @@ jobs:
             config:
                 - builds/releng_sub_linux_configs/64_stat_and_debug.py
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
             keep-artifacts: false
         toolchains:
             - linux64-clang
+            - linux64-rust
             - linux64-sccache
 
     linux64-st-an/opt:
         description: "Linux64 Opt Static Analysis"
         index:
             job-name: linux64-st-an-opt
         treeherder:
             platform: linux64/opt
@@ -65,16 +66,17 @@ jobs:
             config:
                 - builds/releng_sub_linux_configs/64_stat_and_opt.py
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
             keep-artifacts: false
         toolchains:
             - linux64-clang
+            - linux64-rust
             - linux64-sccache
 
     win32-st-an/debug:
         description: "Win32 Static Analysis Debug (clang-cl)"
         index:
             product: firefox
             job-name: win32-st-an-debug
         treeherder:
@@ -88,16 +90,17 @@ jobs:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
         run:
             using: mozharness
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/taskcluster_firefox_win32_clang_debug.py
         toolchains:
             - win32-clang-cl
+            - win32-rust
             - win64-sccache
 
     win32-st-an/opt:
         description: "Win32 Static Analysis Opt (clang-cl)"
         index:
             product: firefox
             job-name: win32-st-an-opt
         treeherder:
@@ -111,16 +114,17 @@ jobs:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
         run:
             using: mozharness
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/taskcluster_firefox_win32_clang.py
         toolchains:
             - win32-clang-cl
+            - win32-rust
             - win64-sccache
 
     win64-st-an/debug:
         description: "Win64 Static Analysis Debug (clang-cl)"
         index:
             product: firefox
             job-name: win64-st-an-debug
         treeherder:
@@ -134,16 +138,17 @@ jobs:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
         run:
             using: mozharness
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/taskcluster_firefox_win64_clang_debug.py
         toolchains:
             - win64-clang-cl
+            - win64-rust
             - win64-sccache
 
     win64-st-an/opt:
         description: "Win64 Static Analysis Opt (clang-cl)"
         index:
             product: firefox
             job-name: win64-st-an-opt
         treeherder:
@@ -157,9 +162,10 @@ jobs:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
         run:
             using: mozharness
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/taskcluster_firefox_win64_clang.py
         toolchains:
             - win64-clang-cl
+            - win64-rust
             - win64-sccache
--- a/taskcluster/ci/toolchain/linux.yml
+++ b/taskcluster/ci/toolchain/linux.yml
@@ -180,37 +180,113 @@ linux64-libdmg:
     worker:
         docker-image: {in-tree: desktop-build}
         max-run-time: 36000
     run:
         using: toolchain-script
         script: build-libdmg-hfsplus.sh
         toolchain-artifact: public/build/dmg.tar.xz
 
+linux64-rust-1.19:
+    description: "rust repack"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(rust)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 7200
+        env:
+          UPLOAD_DIR: artifacts
+    run:
+        using: toolchain-script
+        script: repack_rust.py
+        arguments: [
+            '--channel', '1.19.0',
+            '--host', 'x86_64-unknown-linux-gnu',
+            '--target', 'x86_64-unknown-linux-gnu',
+            '--target', 'i686-unknown-linux-gnu',
+        ]
+        toolchain-alias: linux64-rust
+        toolchain-artifact: public/build/rustc.tar.xz
+
+linux64-rust-macos-1.19:
+    description: "rust repack with macos-cross support"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(rust-macos)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 7200
+        env:
+          UPLOAD_DIR: artifacts
+    run:
+        using: toolchain-script
+        script: repack_rust.py
+        arguments: [
+           '--channel', '1.19.0',
+           '--host', 'x86_64-unknown-linux-gnu',
+           '--target', 'x86_64-unknown-linux-gnu',
+           '--target', 'x86_64-apple-darwin',
+        ]
+        toolchain-alias: linux64-rust-macos
+        toolchain-artifact: public/build/rustc.tar.xz
+
+linux64-rust-android-1.19:
+    description: "rust repack with android-cross support"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(rust-android)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 7200
+        env:
+          UPLOAD_DIR: artifacts
+    run:
+        using: toolchain-script
+        script: repack_rust.py
+        arguments: [
+           '--channel', '1.19.0',
+           '--host', 'x86_64-unknown-linux-gnu',
+           '--target', 'x86_64-unknown-linux-gnu',
+           '--target', 'armv7-linux-androideabi',
+           '--target', 'aarch64-linux-android',
+           '--target', 'i686-linux-android',
+        ]
+        toolchain-alias: linux64-rust-android
+        toolchain-artifact: public/build/rustc.tar.xz
+
 linux64-sccache:
     description: "sccache toolchain build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TL(sccache)
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         docker-image: {in-tree: desktop-build}
         max-run-time: 36000
-        env:
-            TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/linux64/releng.manifest"
     run:
         using: toolchain-script
         script: build-sccache.sh
         resources:
             - 'taskcluster/scripts/misc/tooltool-download.sh'
         toolchain-artifact: public/build/sccache2.tar.xz
     toolchains:
         - linux64-clang-3.9
+        - linux64-rust-1.19
 
 linux64-gn:
     description: "gn toolchain build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TL(gn)
         tier: 1
--- a/taskcluster/ci/toolchain/windows.yml
+++ b/taskcluster/ci/toolchain/windows.yml
@@ -89,16 +89,64 @@ win64-clang-tidy:
         script: build-clang-tidy64-windows.sh
         resources:
             - 'build/clang-plugin/**'
             - 'build/build-clang/build-clang.py'
             - 'build/build-clang/clang-tidy-win32.json'
             - 'taskcluster/scripts/misc/build-clang-windows-helper64.sh'
         toolchain-artifact: public/build/clang-tidy.tar.bz2
 
+win64-rust-1.19:
+    description: "rust repack"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TW64(rust)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 7200
+        env:
+          UPLOAD_DIR: artifacts
+    run:
+        using: toolchain-script
+        script: repack_rust.py
+        arguments: [
+          '--channel', '1.19.0',
+          '--host', 'x86_64-pc-windows-msvc',
+          '--target', 'x86_64-pc-windows-msvc',
+        ]
+        toolchain-alias: win64-rust
+        toolchain-artifact: public/build/rustc.tar.bz2
+
+win32-rust-1.19:
+    description: "rust repack"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TW32(rust)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 7200
+        env:
+          UPLOAD_DIR: artifacts
+    run:
+        using: toolchain-script
+        script: repack_rust.py
+        arguments: [
+          '--channel', '1.19.0',
+          '--host', 'i686-pc-windows-msvc',
+          '--target', 'i686-pc-windows-msvc',
+        ]
+        toolchain-alias: win32-rust
+        toolchain-artifact: public/build/rustc.tar.bz2
+
 win64-sccache:
     description: "sccache toolchain build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TW64(sccache)
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
@@ -107,16 +155,18 @@ win64-sccache:
         env:
             TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/sccache-build.manifest"
     run:
         using: toolchain-script
         script: build-sccache.sh
         resources:
             - 'taskcluster/scripts/misc/tooltool-download.sh'
         toolchain-artifact: public/build/sccache2.tar.bz2
+    toolchains:
+        - win64-rust-1.19
 
 win32-gn:
     description: "gn toolchain build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TW32(gn)
         tier: 1
--- a/taskcluster/ci/valgrind/kind.yml
+++ b/taskcluster/ci/valgrind/kind.yml
@@ -39,9 +39,10 @@ jobs:
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             secrets: true
             tooltool-downloads: public
             need-xvfb: true
         toolchains:
             - linux64-clang
             - linux64-gcc
+            - linux64-rust
             - linux64-sccache