servo: Merge #13455 - Cleanup the bindgen tools and update their README (from Wafflespeanut:bindgen); r=emilio
authorRavi Shankar <wafflespeanut@gmail.com>
Thu, 29 Sep 2016 17:11:35 -0500
changeset 339776 182b357adca7d3c3b5a591c81cf848abbeed8b63
parent 339775 ec00ba6cef79d82cd92d66db37caab7c3e153b87
child 339777 03fdc91db4149e692c59c3255ae2a6fb45e2596f
push id31307
push usergszorc@mozilla.com
push dateSat, 04 Feb 2017 00:59:06 +0000
treeherdermozilla-central@94079d43835f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemilio
servo: Merge #13455 - Cleanup the bindgen tools and update their README (from Wafflespeanut:bindgen); r=emilio <!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors <!-- Either: --> - [x] These changes do not require tests because it's just a cleanup <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> r? @emilio Source-Repo: https://github.com/servo/servo Source-Revision: 495fbef1295c13d538fd5a24a61182d4e67b765d
servo/components/style/binding_tools/README.md
servo/components/style/binding_tools/regen.sh
servo/components/style/binding_tools/setup_bindgen.sh
--- a/servo/components/style/binding_tools/README.md
+++ b/servo/components/style/binding_tools/README.md
@@ -1,26 +1,12 @@
-# GeckoLib tools
-
-This directory contains mostly simple tools for working with
-[stylo](https://public.etherpad-mozilla.org/p/stylo).
+# Geckolib tools
 
-Some scripts require [multirust](https://github.com/brson/multirust) in order to
-work.
-
-You can see a description of them below.
+This directory contains simple tools for generating the Rust bindings for [stylo](https://public.etherpad-mozilla.org/p/stylo).
 
 ## `setup_bindgen.sh`
 
-This uses downloads a custom version of bindgen, up to date to generate the
-bindings, and uses the required `llvm38` to build it.
+This clones Servo's version of bindgen, and uses `llvm-3.8` library to build it. It will then be used to generate the Rust bindings.
 
-It will also rebuild it if it's already downloaded.
-
-## `regen_bindings.sh`
+## `regen.sh`
 
 This will regenerate the bindings for the `ServoBindings.h` file in your gecko
-build (which are in `ports/geckolib/bindings.rs`).
-
-## `regen_style_structs.sh`
-
-This will generate the bindings for Gecko's style structs. Current bindings are
-actually in `ports/geckolib/structs.rs`.
+build. The generated bindings live in `components/style/gecko_bindings/bindings.rs`. For structs, the bindings are in `components/style/gecko_bindings/structs_*`
--- a/servo/components/style/binding_tools/regen.sh
+++ b/servo/components/style/binding_tools/regen.sh
@@ -3,33 +3,35 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 set -o errexit
 set -o nounset
 set -o pipefail
 
+TOOLS_DIR="$(dirname ${0})"
+
 if [[ ${#} -eq 0 ]]; then
   echo "Usage: ${0} /path/to/gecko/objdir [other-regen.py-flags]"
   exit 1
 fi
 
 # Check for rust-bindgen
-if [[ ! -d rust-bindgen ]]; then
+if [[ ! -d "${TOOLS_DIR}/rust-bindgen" ]]; then
   echo "rust-bindgen not found. Run setup_bindgen.sh first."
   exit 1
 fi
 
 # Check for /usr/include
 if [[ ! -d /usr/include ]]; then
   echo "/usr/include doesn't exist." \
-       "Mac users may need to run xcode-select --install."
+       "Mac users may need to run 'xcode-select --install.'"
   exit 1
 fi
 
 if [[ "$(uname)" == "Linux" ]]; then
   LIBCLANG_PATH=/usr/lib/llvm-3.8/lib
 else
   LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
 fi
 
-./regen.py --target all "${@}"
+"./${TOOLS_DIR}/regen.py" --target all "${@}"
--- a/servo/components/style/binding_tools/setup_bindgen.sh
+++ b/servo/components/style/binding_tools/setup_bindgen.sh
@@ -13,33 +13,26 @@ cd "$(dirname ${0})"
 
 # Setup and build bindgen.
 if [[ "$(uname)" == "Linux" ]]; then
   export LIBCLANG_PATH=/usr/lib/llvm-3.8/lib
 else
   export LIBCLANG_PATH="$(brew --prefix llvm38)/lib/llvm-3.8/lib"
 fi
 
-# Make sure we have llvm38.
+# Make sure we have llvm-3.8.
 if [[ ! -x "$(command -v clang-3.8)" ]]; then
-    echo "llmv38 must be installed." \
-         "Mac users should |brew install llvm38|, Linux varies by distro."
-    exit 1
+  echo "llvm-3.8 is required." \
+       "Mac users should |brew install llvm38|," \
+       "Linux users can find it in clang-3.8."
+  exit 1
 fi
 
 export LD_LIBRARY_PATH="${LIBCLANG_PATH}"
 export DYLD_LIBRARY_PATH="${LIBCLANG_PATH}"
 
-# Check for multirust
-if [[ ! -x "$(command -v multirust)" ]]; then
-    echo "multirust must be installed."
-    exit 1
-fi
-
 # Don't try to clone twice.
 if [[ ! -d rust-bindgen ]]; then
   git clone https://github.com/servo/rust-bindgen.git
 fi
 
 cd rust-bindgen
-
-multirust override nightly
 cargo build --features llvm_stable