Merge remote-tracking branch 'isis/bug22907'

This commit is contained in:
Nick Mathewson 2017-12-04 14:12:03 -05:00
commit ff0db77f91
3 changed files with 25 additions and 19 deletions

View File

@ -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
changes/bug22907 Normal file
View File

@ -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.

View File

@ -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
To specify a local directory:
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.)
You'll need the following Rust dependencies (as of this writing):
libc==0.2.22
To get them, do:
We vendor our Rust dependencies in a separate repo using
[cargo-vendor](https://github.com/alexcrichton/cargo-vendor). To use them, do:
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
git submodule init
git submodule update
To specify the local directory containing the dependencies, (assuming you are in
the top level of the repository) configure tor with:
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.)
Assuming you used the above `git submodule` commands and you're in the topmost
directory of the repository, this would be:
TOR_RUST_DEPENDENCIES=`pwd`/src/ext/rust/crates ./configure --enable-rust
Identifying which modules to rewrite