# Import process

1. `git pull` to pull a new version from sso://team/beto-rust-devs/beto-rust

## If the dependency tree did not change significantly

2. It will be easier to manually update the Android.bp file to include the new dependencies.
   For each new library that is needed, add it to the `rustlibs` section of the build rule. The
   build rule is typically `lib<crate_name>`, but sometimes variants with different features exist,
   in which case you will have to look up the target name in the relevent `Android.bp` file in code
   search.

## If the dependency tree changed significantly

2. Locally check out the `beto-core-staging` project, and run `scripts/prepare-boringssl.sh`.
4. Modify `.cargo/config.toml` to point to the external `rust-openssl` and `bssl-sys` crates.
5. Run `cargo2android.py --config cargo2android.json`
6. There are probably going to be merge conflicts. Fix them manually. Remove the
   "Do not modify this file" comment added by cargo2android.json
7. Also modify `patches/Android.bp.patch` to include your manual changes.
8. Remove `cargo.out` and `target.tmp`, as those should not be checked in
