[tor-commits] [tor-browser-build/master] Bug 40271: Improve process to generate rust vendor tarballs

sysrqb at torproject.org sysrqb at torproject.org
Fri Apr 30 16:38:36 UTC 2021


commit e2f729af199613ae593947cf6c64235f3dbf90a0
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Wed Apr 21 17:23:40 2021 +0200

    Bug 40271: Improve process to generate rust vendor tarballs
---
 Makefile                             | 15 +++++++++++++++
 projects/application-services/config | 17 ++++++++++++++---
 projects/cbindgen/config             |  9 +++++++++
 projects/lucetc/config               | 10 ++++++++--
 projects/uniffi-rs/config            |  9 ++++++++-
 rbm.conf                             | 30 ++++++++++++++++++++++++++++++
 6 files changed, 84 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 1d16fa4..94010c1 100644
--- a/Makefile
+++ b/Makefile
@@ -228,6 +228,21 @@ get_gradle_dependencies_list-application-services: submodule-update
 get_gradle_dependencies_list-android-components: submodule-update
 	$(rbm) build android-components --step get_gradle_dependencies_list --target nightly --target torbrowser-android-armv7
 
+cargo_vendor-application-services: submodule-update
+	$(rbm) build application-services --step cargo_vendor --target nightly
+
+cargo_vendor-cbindgen-android: submodule-update
+	$(rbm) build cbindgen --step cargo_vendor --target nightly --target android
+
+cargo_vendor-cbindgen: submodule-update
+	$(rbm) build cbindgen --step cargo_vendor --target nightly
+
+cargo_vendor-lucetc: submodule-update
+	$(rbm) build lucetc --step cargo_vendor --target nightly
+
+cargo_vendor-uniffi-rs: submodule-update
+	$(rbm) build uniffi-rs --step cargo_vendor --target nightly
+
 submodule-update:
 	git submodule update --init
 
diff --git a/projects/application-services/config b/projects/application-services/config
index 456ce87..ba5acc1 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -79,9 +79,7 @@ input_files:
   - URL: https://people.torproject.org/~gk/mirrors/sources/glean-parser-[% c('var/glean_parser') %].tar.bz2
     sha256sum: 19dbdd4958022a1a638e0217489ab722fe7d4f588f1978a4ae162f93e75694c2
     enable: '[% !c("var/fetch_gradle_dependencies") %]'
-  # `cargo vendor vendor -s components/external/nimbus-sdk/nimbus/Cargo.toml`
-  # in the `application-services` directory has vendored the sources,
-  # after applying update-cargo-lock.patch and viaduct-workaround.patch
+  # Use `make cargo_vendor-application-services` to re-generate the vendor tarball
   - URL: https://people.torproject.org/~boklm/mirrors/sources/application-services-vendor-[% c('var/rust_vendor_version') %].tar.bz2
     sha256sum: 5f1c9e1bc0db283e88516bd1d78187145bacbf4aeb72972ac09875c1147d2215
   - filename: no-git.patch
@@ -106,3 +104,16 @@ steps:
     get_gradle_dependencies_list: '[% INCLUDE build %]'
     var:
       fetch_gradle_dependencies: 1
+
+  cargo_vendor:
+    filename: '[% project %]-vendor-[% c("version") %].tar.bz2'
+    var:
+      cargo_vendor_opts: '-s components/external/nimbus-sdk/nimbus/Cargo.toml'
+      pre_cargo_vendor: |
+        patch -p1 < $rootdir/update-cargo-lock.patch
+        patch -d components/external/nimbus-sdk -p1 < $rootdir/viaduct-workaround.patch
+    input_files:
+      - project: container-image
+        pkg_type: build
+      - filename: viaduct-workaround.patch
+      - filename: update-cargo-lock.patch
diff --git a/projects/cbindgen/config b/projects/cbindgen/config
index a4e9cb7..43c2fb8 100644
--- a/projects/cbindgen/config
+++ b/projects/cbindgen/config
@@ -23,5 +23,14 @@ input_files:
   - name: rust
     project: rust
   # `cargo vendor vendor` in the `cbindgen` directory has vendored the sources.
+  # Use `make cargo_vendor-cbindgen` or `make cargo_vendor-cbindgen-android`
+  # (for the Android version) to re-generate the vendor tarball
   - URL: https://people.torproject.org/~gk/mirrors/sources/cbindgen-vendor-[% c('version') %].tar.bz2
     sha256sum: '[% c("var/cbindgen_vendor_hash") %]'
+
+steps:
+  cargo_vendor:
+    filename: '[% project %]-vendor-[% c("version") %].tar.bz2'
+    input_files:
+      - project: container-image
+        pkg_type: build
diff --git a/projects/lucetc/config b/projects/lucetc/config
index 0007201..1177b4f 100644
--- a/projects/lucetc/config
+++ b/projects/lucetc/config
@@ -27,8 +27,14 @@ input_files:
     project: rust
   - name: wasi-sysroot
     project: wasi-sysroot
-  # `cargo vendor vendor` in the `lucetc-sandbox-compiler` directory has vendored
-  # the sources.
+  # Use `make cargo_vendor-lucetc` to re-generate the vendor tarball
   - URL: https://people.torproject.org/~gk/mirrors/sources/lucetc-vendor.tar.bz2
     sha256sum: 12ba97fca12177e7ed5b5409fcfdbd31dc7db2e82282768d99dee5bcb1b1246a
   - filename: Remove-march-native-from-COMMON_CFLAGS.patch
+
+steps:
+  cargo_vendor:
+    filename: '[% project %]-vendor-[% c("version") %].tar.bz2'
+    input_files:
+      - project: container-image
+        pkg_type: build
diff --git a/projects/uniffi-rs/config b/projects/uniffi-rs/config
index acd9d2d..c8ad51c 100644
--- a/projects/uniffi-rs/config
+++ b/projects/uniffi-rs/config
@@ -12,7 +12,14 @@ input_files:
   - project: container-image
   - name: rust
     project: rust
-  # `cargo vendor vendor` in the `uniffi-rs` directory has vendored the sources.
+  # Use `make cargo_vendor-uniffi-rs` to re-generate the vendor tarball
   - URL: https://people.torproject.org/~boklm/mirrors/sources/uniffi-rs-vendor-[% c('version') %].tar.bz2
     sha256sum: 8f201df618b3e7bcaaf01a87e0d55171605b80abeb1b660fe4dd0b9bfc10a0d8
   - filename: btreeset.patch
+
+steps:
+  cargo_vendor:
+    filename: '[% project %]-vendor-[% c("version") %].tar.bz2'
+    input_files:
+      - project: container-image
+        pkg_type: build
diff --git a/rbm.conf b/rbm.conf
index a7023f2..ec38441 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -15,10 +15,40 @@ steps:
       set -e
       mkdir -p '[% dest_dir %]'
       mv -vf '[% project %]-[% c("version") %].tar.xz' '[% dest_dir %]/[% c("filename") %]'
+
   list_toolchain_updates:
     build_log: '-'
     list_toolchain_updates: '[% INCLUDE list_toolchain_updates %]'
 
+  cargo_vendor:
+    output_dir: "out/[% project %]/cargo_vendor"
+    var:
+      container:
+        suite: buster
+        arch: amd64
+      pre_pkginst: ''
+      deps:
+        - cargo
+        - patch
+    cargo_vendor: |
+      #!/bin/bash
+      [% c("var/set_default_env") %]
+      tar -xf [% project %]-[% c('version') %].tar.gz
+      cd [% project %]-[% c('version') %]
+      [% c("var/pre_cargo_vendor") %]
+      cargo vendor vendor [% c("var/cargo_vendor_opts") %]
+      [% c('tar', {
+        tar_src => [ 'vendor' ],
+        tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
+        }) %]
+      cd [% dest_dir %]
+      fname="out/[% project %]/cargo_vendor/[% c('filename') %]"
+      echo
+      echo "Finished creating $fname"
+      sha256sum "[% c('filename') %]"
+      echo "You can upload it with:"
+      echo "  scp -p $fname people.torproject.org:public_html/mirrors/sources"
+
 # buildconf contains build options that the user can change in rbm.local.conf
 # When adding a new option to buildconf, a default value should be defined
 # in var/build_id, so that changing this option does not affect the build_id.





More information about the tor-commits mailing list