tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

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:
M.travis.yml | 5+++++
Achanges/bug22907 | 3+++
Mdoc/HACKING/GettingStartedRust.md | 32+++++++++++++++-----------------
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