Граф коммитов

120 Коммитов

Автор SHA1 Сообщение Дата
Markus Westerlind d1a4273a41 chore: Update filetime to 0.2 2018-08-31 06:05:42 -04:00
Markus Westerlind 8a7973342c chore: Update crossbeam-utils to 0.5 2018-08-31 06:05:42 -04:00
Markus Westerlind fb3332ed99 chore: Update directories to 1.0 2018-08-31 06:05:42 -04:00
Markus Westerlind fbb5dee7de chore: Update log to 0.4 and env_logger to 0.5 2018-08-31 06:05:42 -04:00
Markus Westerlind 0bed973778 Update chrono to 0.4 2018-08-31 06:05:42 -04:00
Markus Westerlind 5570c3e0a1 chore: Update predicates and assert_cmd 2018-08-31 06:05:42 -04:00
Markus Westerlind 8bb8a9070d Use redis-0.9 for async requests 2018-08-30 13:58:25 -04:00
Ethan Smith 32add8af0d Update jsonwebtoken
jsonwebtoken also relied on ring, and until recently required 0.12
5.0 was released today.
2018-08-30 08:44:10 -04:00
Ethan Smith 16ba6f4e42 Upgrade ring to 13.2
This fixes building sccache using MSVC 15.8, which includes Spectre mitigations which cause earlier versions of ring to fail to build.
2018-08-30 08:43:53 -04:00
Aidan Hobson Sayers 105ab9199e Backport conditional compilation, fix markdown 2018-08-30 08:22:39 -04:00
Aidan Hobson Sayers 34ea7a2a2f Implement scheduler auth for clients and servers, add job tokens 2018-08-30 08:22:39 -04:00
Aidan Hobson Sayers bf1ec382d7 Use a trait to represent compiler packagers 2018-08-24 14:33:54 -04:00
Aidan Hobson Sayers f19fa06dbe Move sccache-dist to more conventional location 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 34ceea3e57 Move all into single crate 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 71a217096c Feature flag toggle for distributed compilation, cleanups 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 6677d008b0 Split out sccache-dist binary 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 08c8e2d00a Add overlay builder (with bubblewrap), serde tweaks 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 17c56c8d0d Rework sccache to use http rather than tcp 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 92c2912db3 Try harder to parallelise 2018-08-14 12:40:45 -04:00
Aidan Hobson Sayers 85acb04a46 Bits and pieces for distributed Rust 2018-08-14 12:40:45 -04:00
Ted Mielczarek 13701e3903 Refactor system tests to use assert_cmd 2018-07-30 06:40:11 -04:00
Ted Mielczarek 8e21796623 Switch from assert_cli to assert_cmd 2018-07-26 16:12:14 -04:00
Ted Mielczarek 3bd7e1fa0c Update assert_cli and tweak some of the tests using it. Also silence a lint warning from error-chain. 2018-07-26 10:16:55 -04:00
Aidan Hobson Sayers 62575e8396 Allow configuration of caches with a config file 2018-07-24 10:55:25 -04:00
Ted Mielczarek 4bf26513f4 (cargo-release) start next development iteration 0.2.8-alpha.0 2018-07-12 07:33:52 -04:00
Ted Mielczarek d19163acd8 (cargo-release) version 0.2.7 2018-07-12 07:32:26 -04:00
Ted Mielczarek bbff69f2c7 build azure backend in windows CI 2018-05-10 09:07:52 -04:00
Ben Bader eb5351d3ec Add Azure Blob Storage backend 2018-03-27 09:03:42 -04:00
Ted Mielczarek c13e04d507 Replace `app_dirs` crate with `directories`. Fixes #233.
The `app_dirs` crate has become unmaintained and is broken on macOS with
Rust 1.25. The `directories` crate provides the same functionality and
is maintained, so switch to using that instead.
2018-03-21 08:52:55 -04:00
Ted Mielczarek ef67ff018a (cargo-release) start next development iteration 0.2.7-alpha.0 2018-03-12 15:57:20 -04:00
Ted Mielczarek dfdfce28e0 (cargo-release) version 0.2.6 2018-03-12 15:55:59 -04:00
dylan_DPC 71183806da =updated uuid to 0.6 2018-02-28 16:08:44 -05:00
Ted Mielczarek 583fd1fe6b Always request color output from rustc. Fixes #99
This change makes sccache run rustc with `--color=always`, removing any other
--color option from the compiler options so that it's not included in the
cache key.

A `color_mode` method is added to the `CompilerHasher` trait, and the value
is sent back to the client in the `CompileFinished` method, so the client can
determine whether specific --color options were passed without having to
do its own commandline parsing.

The client uses the new `strip-ansi-escapes` crate to remove escape codes
from the compiler output in situations where color output is not desired:
* When `--color=never` was passed on the compiler commandline.
* When `--color=auto` is in effect (the default) but the output is not
  a terminal.

The existing cargo tests were lightly modified to run compile once with
`--color=never` and once with `--color=always` to validate that cache hits
are not affected by color options.
2018-02-02 11:49:16 -05:00
Ted Mielczarek 22e588b87c Remove fern-based logging as it was never that useful due to the inability to set per-crate log levels 2018-02-01 11:06:25 -05:00
Ted Mielczarek 79b92a7e3f switch from the gcc crate to its successor, cc, for tests 2018-02-01 10:35:56 -05:00
Ted Mielczarek 1a82a4783d Don't build gcs on appveyor because it requires openssl 2018-02-01 09:25:16 -05:00
Ted Mielczarek de61c8b48e Add gcs to features=all 2018-02-01 06:32:49 -05:00
Ted Mielczarek db9e282fcb switch to ring version 0.12.1 2018-02-01 06:29:38 -05:00
Ted Mielczarek 0876024f9e Don't build release with debug symbols. Fixes #162 2018-02-01 06:24:22 -05:00
Ted Mielczarek ffce831b90 (cargo-release) start next development iteration 0.2.6-alpha.0 2018-01-30 11:56:10 -05:00
Ted Mielczarek 46b4ffaba7 Bump lru-disk-cache to 0.2.0 so we can publish it to crates.io because we made an API change 2018-01-30 11:54:20 -05:00
Ted Mielczarek f82c684655 (cargo-release) version 0.2.5 2018-01-30 11:47:40 -05:00
Ted Mielczarek fe768ac640 Fix those TODOs about using lazy_static and remove some (now) extraneous
static lifetimes on consts while I'm there.
2018-01-30 11:14:37 -05:00
David Michael Barr d2c7f925ad Add a Memcached cache variant
This cache module uses a Memcached cluster.
To make sccache use this, set SCCACHE_MEMCACHED
to a list of tcp://<hostname>:<port> addresses,
separated by whitespace.
2018-01-23 09:42:36 -05:00
Alex Crichton adaa4ef190 Add jobserver support to sccache
This commit alters the main sccache server to operate and orchestrate its own
GNU make style jobserver. This is primarily intended for interoperation with
rustc itself.

The Rust compiler currently has a multithreaded mode where it will execute code
generation and optimization on the LLVM side of things in parallel. This
parallelism, however, can overload a machine quickly if not properly accounted
for (e.g. if 10 rustcs all spawn 10 threads...). The usage of a GNU make style
jobserver is intended to arbitrate and rate limit all these rustc instances to
ensure that one build's maximal parallelism never exceeds a particular amount.

Currently for Rust Cargo is the primary driver for setting up a jobserver. Cargo
will create this and manage this per compilation, ensuring that any one `cargo
build` invocation never exceeds a maximal parallelism. When sccache enters the
picture, however, the story gets slightly more odd.

The jobserver implementation on Unix relies on inheritance of file descriptors
in spawned processes. With sccache, however, there's no inheritance as the
actual rustc invocation is spawned by the server, not the client. In this case
the env vars used to configure the jobsever are usually incorrect.

To handle this problem this commit bakes a jobserver directly into sccache
itself. The jobserver then overrides whatever jobserver the client has
configured in its own env vars to ensure correct operation. The settings of each
jobserver may be misconfigured (there's no way to configure sccache's jobserver
right now), but hopefully that's not too much of a problem for the forseeable
future.

The implementation here was to provide a thin wrapper around the `jobserver`
crate with a futures-based interface. This interface was then hooked into the
mock command infrastructure to automatically acquire a jobserver token when
spawning a process and automatically drop the token when the process exits.
Additionally, all spawned processes will now automatically receive a configured
jobserver.

cc rust-lang/rust#42867, the original motivation for this commit
2018-01-18 10:56:56 -05:00
Kornel 9c19b7cbce Update other deps 2018-01-08 16:29:24 -05:00
Kornel 12504fbf56 Update ring 2018-01-08 16:29:24 -05:00
Ted Mielczarek 24b5b95b5f (cargo-release) start next development iteration 0.2.5-pre 2018-01-08 16:02:54 -05:00
Ted Mielczarek 5386227460 Pin zip to 0.2.3 to avoid depending on rust 1.23 right now 2018-01-08 15:59:34 -05:00
Ted Mielczarek 8c577d8a41 (cargo-release) version 0.2.4 2018-01-08 15:46:44 -05:00