Our current build system support for Rust compiles any Rust crate into a so-called staticlib, which is a static library (.a file) that includes the Rust runtime. That staticlib is then linked into libxul. For supporting multiple crates, this approach breaks down, as linking multiple copies of the Rust runtime is going to fail. For supporting multiple crates, the approach taken here is to compile each crate into a so-called rlib, which is essentially a staticlib without the Rust runtime linked in. The build system takes note of every crate destined for linking with libxul (treating them like static libraries generated from C/C++ files), and generates a super-crate, whimsically named "rul", that is compiled as a staticlib (so as to include the Rust runtime) and then linked into libxul. Thus only one copy of the Rust runtime is included, and the Rust compiler can take care of any inter-crate dependencies. This patch currently only supports Rust code in shared libraries, not in binaries. The handling for the rul crate is placed in the common backend, with a special hook for derived backends to handle shared library objects.
This directory contains common Python code. The basic rule is that if Python code is cross-module (that's "module" in the Mozilla meaning - as in "module ownership") and is MPL-compatible, it should go here. What should not go here: * Python that is not MPL-compatible (see other-licenses/) * Python that has good reason to remain close to its "owning" (Mozilla) module (e.g. it is only being consumed from there). Historical information can be found at https://bugzilla.mozilla.org/show_bug.cgi?id=775243 ## pyyaml | pystache Used in taskcluster related mach commands to update download from github and remove .git and tests. Then run tests in taskcluster/tests/