| 
Commits:
64cb7b18
 by Pier Angelo Vendrame   at 2023-08-10T16:26:11+00:00 
 Bug 40917: Remove the uniffi-rs project.
We build an old version of uniffi-rs which is consumed only by
application-services.
However, AS includes a newer version in its Cargo.lock and it is
automatically added to the vendor archive, so it can build completely
fine also without this project.
So, we can remove it.
 
6 changed files:
Changes:
Makefile
 
| ... | ... | @@ -583,9 +583,6 @@ cargo_vendor-application-services: submodule-update |  
| 583 | 583 |  cargo_vendor-cbindgen: submodule-update
 |  
| 584 | 584 |  	$(rbm) build cbindgen --step cargo_vendor --target alpha --target torbrowser-linux-x86_64
 |  
| 585 | 585 |  
 |  
| 586 |  | -cargo_vendor-uniffi-rs: submodule-update
 |  
| 587 |  | -	$(rbm) build uniffi-rs --step cargo_vendor --target nightly --target torbrowser-linux-x86_64
 |  
| 588 |  | -
 |  
| 589 | 586 |  go_vendor-snowflake-alpha: submodule-update
 |  
| 590 | 587 |  	$(rbm) build snowflake --step go_vendor --target alpha --target torbrowser-linux-x86_64
 |  
| 591 | 588 |  
 |  projects/application-services/build
 
 
| ... | ... | @@ -21,8 +21,7 @@ mkdir /var/tmp/build |  
| 21 | 21 |  cd /var/tmp/dist
 |  
| 22 | 22 |  tar -xf $rootdir/[% c('input_files_by_name/rust') %]
 |  
| 23 | 23 |  tar -xf $rootdir/[% c('input_files_by_name/ninja') %]
 |  
| 24 |  | -tar -xf $rootdir/[% c('input_files_by_name/uniffi-rs') %]
 |  
| 25 |  | -export PATH=/var/tmp/dist/rust/bin:/var/tmp/dist/ninja:/var/tmp/dist/uniffi-rs:$PATH
 |  
|  | 24 | +export PATH=/var/tmp/dist/rust/bin:/var/tmp/dist/ninja:$PATH
 |  
| 26 | 25 |  export RUST_ANDROID_GRADLE_PYTHON_COMMAND=python3
 |  
| 27 | 26 |  cd $rootdir
 |  
| 28 | 27 |  
 |  projects/application-services/config
 
 
| ... | ... | @@ -46,9 +46,6 @@ steps: |  
| 46 | 46 |        - project: ninja
 |  
| 47 | 47 |          name: ninja
 |  
| 48 | 48 |          pkg_type: build
 |  
| 49 |  | -      - project: uniffi-rs
 |  
| 50 |  | -        name: uniffi-rs
 |  
| 51 |  | -        pkg_type: build
 |  
| 52 | 49 |        # See libs/build-all.sh to update these!
 |  
| 53 | 50 |        # Also, build them with application-services, since they need the NDK and
 |  
| 54 | 51 |        # we are using a different one from the other projects.
 |  projects/uniffi-rs/btreeset.patch
deleted
 
 
| 1 |  | -diff --git a/uniffi_bindgen/src/interface/types.rs b/uniffi_bindgen/src/interface/types.rs
 |  
| 2 |  | -index 6448d58..b7efd22 100644
 |  
| 3 |  | ---- a/uniffi_bindgen/src/interface/types.rs
 |  
| 4 |  | -+++ b/uniffi_bindgen/src/interface/types.rs
 |  
| 5 |  | -@@ -26,7 +26,7 @@
 |  
| 6 |  | - use anyhow::bail;
 |  
| 7 |  | - use anyhow::Result;
 |  
| 8 |  | - use std::convert::TryFrom;
 |  
| 9 |  | --use std::{collections::hash_map::Entry, collections::HashMap, collections::HashSet};
 |  
| 10 |  | -+use std::{collections::hash_map::Entry, collections::HashMap, collections::BTreeSet};
 |  
| 11 |  | - 
 |  
| 12 |  | - use super::Attributes;
 |  
| 13 |  | - 
 |  
| 14 |  | -@@ -71,7 +71,7 @@ pub enum FFIType {
 |  
| 15 |  | - /// Represents all the different high-level types that can be used in a component interface.
 |  
| 16 |  | - /// At this level we identify user-defined types by name, without knowing any details
 |  
| 17 |  | - /// of their internal structure apart from what type of thing they are (record, enum, etc).
 |  
| 18 |  | --#[derive(Debug, Clone, Eq, PartialEq, Hash)]
 |  
| 19 |  | -+#[derive(Debug, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)]
 |  
| 20 |  | - pub enum Type {
 |  
| 21 |  | -     // Primitive types.
 |  
| 22 |  | -     UInt8,
 |  
| 23 |  | -@@ -195,7 +195,7 @@ pub(crate) struct TypeUniverse {
 |  
| 24 |  | -     // Named type definitions (including aliases).
 |  
| 25 |  | -     type_definitions: HashMap<String, Type>,
 |  
| 26 |  | -     // All the types in the universe, by canonical type name.
 |  
| 27 |  | --    all_known_types: HashSet<Type>,
 |  
| 28 |  | -+    all_known_types: BTreeSet<Type>,
 |  
| 29 |  | - }
 |  
| 30 |  | - 
 |  
| 31 |  | - impl TypeUniverse { |  projects/uniffi-rs/build
deleted
 
 
| 1 |  | -#!/bin/bash
 |  
| 2 |  | -[% c("var/set_default_env") -%]
 |  
| 3 |  | -distdir=/var/tmp/dist
 |  
| 4 |  | -builddir=/var/tmp/build/[% project %]
 |  
| 5 |  | -mkdir -p $distdir/[% project %]
 |  
| 6 |  | -tar -C $distdir -xf $rootdir/[% c('input_files_by_name/rust') %]
 |  
| 7 |  | -export PATH="/var/tmp/dist/rust/bin:$PATH"
 |  
| 8 |  | -mkdir -p /var/tmp/build
 |  
| 9 |  | -tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.[% c('compress_tar') %]
 |  
| 10 |  | -
 |  
| 11 |  | -# Now prepare the offline build
 |  
| 12 |  | -# Move the directory for hardcoding the path in .cargo/config
 |  
| 13 |  | -mv /var/tmp/build/[% project %]-[% c('version') %] $builddir
 |  
| 14 |  | -tar -C $builddir -xjf uniffi-rs-vendor-[% c('version') %].tar.bz2
 |  
| 15 |  | -cd $builddir
 |  
| 16 |  | -mkdir .cargo
 |  
| 17 |  | -cat > .cargo/config << 'EOF'
 |  
| 18 |  | -[source.crates-io]
 |  
| 19 |  | -replace-with = "vendored-sources"
 |  
| 20 |  | -
 |  
| 21 |  | -[source.vendored-sources]
 |  
| 22 |  | -directory = "/var/tmp/build/uniffi-rs/vendor"
 |  
| 23 |  | -EOF
 |  
| 24 |  | -
 |  
| 25 |  | -# We change the data type of the `all_known_types` Set from HashSet to BTreeSet.
 |  
| 26 |  | -# Uniffi iterates over the elements of this set, and iteration over a HashSet occurs
 |  
| 27 |  | -# in an arbitrary order, while iteration over a BTreeSet orders in a defined (and
 |  
| 28 |  | -# deterministic) order. This patch solves a build reproducibility issue, see
 |  
| 29 |  | -# tor-browser-build#40208.
 |  
| 30 |  | -#
 |  
| 31 |  | -# Upstream bug: https://github.com/mozilla/uniffi-rs/issues/374
 |  
| 32 |  | -patch -p1 < $rootdir/btreeset.patch
 |  
| 33 |  | -# We usually use --frozen but there is no Cargo.lock file available. Thus resort
 |  
| 34 |  | -# to --offline.
 |  
| 35 |  | -cargo build --release --offline --target x86_64-unknown-linux-gnu
 |  
| 36 |  | -mv target/x86_64-unknown-linux-gnu/release/uniffi-bindgen $distdir/[% project %]
 |  
| 37 |  | -
 |  
| 38 |  | -cd $distdir
 |  
| 39 |  | -[% c('tar', {
 |  
| 40 |  | -        tar_src => [ project ],
 |  
| 41 |  | -        tar_args => '-caf ' _ dest_dir _ '/' _ c('filename'),
 |  
| 42 |  | -    }) %] |  projects/uniffi-rs/config
deleted
 
 
| 1 |  | -# vim: filetype=yaml sw=2
 |  
| 2 |  | -version: 0.7.0
 |  
| 3 |  | -git_url: https://github.com/mozilla/uniffi-rs
 |  
| 4 |  | -git_hash: ea3ff0402438ef1ebceda4c5fbbbd2ed6a9be227
 |  
| 5 |  | -filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]'
 |  
| 6 |  | -
 |  
| 7 |  | -container:
 |  
| 8 |  | -  use_container: 1
 |  
| 9 |  | -
 |  
| 10 |  | -input_files:
 |  
| 11 |  | -  - project: container-image
 |  
| 12 |  | -  - name: rust
 |  
| 13 |  | -    project: rust
 |  
| 14 |  | -  # Use `make cargo_vendor-uniffi-rs` to re-generate the vendor tarball
 |  
| 15 |  | -  - URL: https://people.torproject.org/~boklm/mirrors/sources/uniffi-rs-vendor-[% c('version') %].tar.bz2
 |  
| 16 |  | -    sha256sum: 8f201df618b3e7bcaaf01a87e0d55171605b80abeb1b660fe4dd0b9bfc10a0d8
 |  
| 17 |  | -  - filename: btreeset.patch
 |  
| 18 |  | -
 |  
| 19 |  | -steps:
 |  
| 20 |  | -  cargo_vendor:
 |  
| 21 |  | -    filename: '[% project %]-vendor-[% c("version") %].tar.bz2'
 |  
| 22 |  | -    input_files:
 |  
| 23 |  | -      - project: container-image
 |  
| 24 |  | -        pkg_type: build
 |  
| 25 |  | -      - project: rust
 |  
| 26 |  | -        name: rust
 |  
| 27 |  | -        pkg_type: build |  
 |