Browse Source

Merge remote-tracking branch 'isis/bug22907'

Nick Mathewson 7 years ago
parent
commit
ff0db77f91
3 changed files with 23 additions and 17 deletions
  1. 5 0
      .travis.yml
  2. 3 0
      changes/bug22907
  3. 15 17
      doc/HACKING/GettingStartedRust.md

+ 5 - 0
.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

+ 3 - 0
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.

+ 15 - 17
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