commit ff0db77f91ed7d4d265bc3dd01b1d6925537f639
parent fcefd69b80b2fc5297279cd9632b985a5c51dff9
Author: Nick Mathewson <nickm@torproject.org>
Date: Mon, 4 Dec 2017 14:12:03 -0500
Merge remote-tracking branch 'isis/bug22907'
Diffstat:
3 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/.travis.yml b/.travis.yml
@@ -56,6 +56,7 @@ env:
- MAKEFLAGS="-j 2"
matrix:
- RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
+ - RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
- RUST_OPTIONS=""
matrix:
@@ -87,6 +88,10 @@ install:
- if [[ "$RUST_OPTIONS" != "" ]]; then which cargo; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then rustc --version; fi
- if [[ "$RUST_OPTIONS" != "" ]]; then cargo --version; fi
+ ## If we're testing rust builds in offline-mode, then set up our vendored dependencies
+ - if [[ "$RUST_OPTIONS" == "--enable-rust" ]]; then git submodule init ; fi
+ - if [[ "$RUST_OPTIONS" == "--enable-rust" ]]; then git submodule update; fi
+ - if [[ "$TOR_RUST_DEPENDENCIES" == "true" ]]; then export TOR_RUST_DEPENDENCIES=$PWD/src/ext/rust/crates; fi
script:
- ./autogen.sh
diff --git a/changes/bug22907 b/changes/bug22907
@@ -0,0 +1,3 @@
+ o Documentation:
+ - Add documentation on how to build tor with Rust dependencies without
+ requiring being online. Closes ticket 22907; bugfix on tor-0.3.0.3-alpha.
diff --git a/doc/HACKING/GettingStartedRust.md b/doc/HACKING/GettingStartedRust.md
@@ -60,30 +60,28 @@ or specifying a local directory.
**Using a local dependency cache**
-**NOTE**: local dependency caches which were not *originally* created via
- `--enable-cargo-online-mode` are broken. See https://bugs.torproject.org/22907
+You'll need the following Rust dependencies (as of this writing):
-To specify a local directory:
+ libc==0.2.22
- RUST_DEPENDENCIES='path_to_dependencies_directory' ./configure --enable-rust
+We vendor our Rust dependencies in a separate repo using
+[cargo-vendor](https://github.com/alexcrichton/cargo-vendor). To use them, do:
-(Note that RUST_DEPENDENCIES must be the full path to the directory; it cannot
-be relative.)
+ git submodule init
+ git submodule update
-You'll need the following Rust dependencies (as of this writing):
+To specify the local directory containing the dependencies, (assuming you are in
+the top level of the repository) configure tor with:
- libc==0.2.22
+ TOR_RUST_DEPENDENCIES='path_to_dependencies_directory' ./configure --enable-rust
+
+(Note that RUST_DEPENDENCIES must be the full path to the directory; it cannot
+be relative.)
-To get them, do:
+Assuming you used the above `git submodule` commands and you're in the topmost
+directory of the repository, this would be:
- mkdir path_to_dependencies_directory
- cd path_to_dependencies_directory
- git clone https://github.com/rust-lang/libc
- cd libc
- git checkout 0.2.22
- cargo package
- cd ..
- ln -s libc/target/package/libc-0.2.22 libc-0.2.22
+ TOR_RUST_DEPENDENCIES=`pwd`/src/ext/rust/crates ./configure --enable-rust
Identifying which modules to rewrite