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

44 Коммитов

Автор SHA1 Сообщение Дата
Julian Gehring a3dcb66243 Update default cache dir on MacOS in the readme
Details on how the default value is constructed:
- 06b999976d/src/config.rs (L51)
- https://docs.rs/directories/1.0.2/directories/struct.ProjectDirs.html
2018-11-13 09:37:41 -05:00
Felix Bruns 6dde737658 Update docs with instructions on how to link OpenSSL statically. 2018-10-11 08:56:10 -04:00
Felix Obenhuber 1d899441ff Add a note about using Redis as LRU cache
Redis can be configured as a LRU cache. This patch extends the Readme
with a note about that.
2018-08-29 06:49:38 -04:00
Ted Mielczarek 4395196ee3 Bump minimum supported rustc to 1.27 2018-07-11 13:17:46 -04:00
Rondinelly 512826537d Update README.md
PR with very simple grammar fix.
2018-06-18 04:01:10 -07:00
Ben Bader eb5351d3ec Add Azure Blob Storage backend 2018-03-27 09:03:42 -04:00
Ted Mielczarek ae9517af28 Bump minimum supported Rust version to 1.22 2018-03-23 06:21:43 -04:00
Felix Bruns 1efee847f2 Add documentation on how to statically link OpenSSL. 2018-03-15 15:20:27 -04: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 cc1747d69c accidentally wrote some code that doesn't compile on 1.20, so bump the minimum supported version to 1.21 2018-01-30 11:32:12 -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
Ted Mielczarek abf52d2b6f Bump minimum Rust version to 1.20 because of dependencies 2018-01-12 08:28:26 -05:00
Ted Mielczarek 8871ae7bd8
Merge branch 'master' into master 2017-10-30 11:44:36 -04:00
tiagomoraismorgado eb31d8eedb Docs - README.md - tweaks (thumbnaill, separators, ToC)
**this PR does basically aim at:**
- *adding thumbnail logo to README.md*
- *adding separators to README.md*
- *adding ToC to README.md*

---

**main motivaton behind such:**
- *improving overall document accessebility*
2017-10-30 08:53:44 -04:00
Aaron Meese dec37ab87d Update README.md
Fixed grammatical error
2017-10-30 08:43:41 -04:00
Aaron Meese d102ea0b29
Update README.md
Capitalized two instances of sccache at the start of sentences to match the rest of the README.md
2017-10-30 07:39:45 -05:00
Ted Mielczarek 0ff33c9196 Bump required Rust version to 1.19 due to assert-cli 2017-10-25 21:21:49 -04:00
Jeff Muizelaar a4101594c5 Add usage instructions for rust 2017-10-13 16:53:41 -04:00
Felix Obenhuber 16d0ef0883 Add a link to the Jenkins notes in README 2017-08-16 14:34:58 -07:00
Taylor Cramer 9d1cc77c31 Fixup GCS documentation 2017-06-19 05:54:09 -04:00
Taylor Cramer 3da16a7c33 Update README and remove unnecessary flags 2017-06-19 05:54:09 -04:00
Andre Parodi c596150045 added some undocumented environment variables for s3 2017-06-14 12:01:32 -04:00
Ted Mielczarek b777bcde38 tweak Cargo.toml metadata and README 2017-05-25 12:54:02 -04:00
Alex Crichton 84054a8d4e Switch from SHA-1 to SHA-512
Local benchmarking showed that the implementation of SHA-512 in the *ring* crate
is 3x faster than the implementation of SHA-1 in the `sha1` crate. I've also
noticed that 80%+ of sccache's runtime on a fully cached build is spent hashing.
With this change I noticed a decrease from 108s to 92s when building a fully
cached LLVM from the network. Not a huge win but if the network were faster
could perhaps add up!

Closes #108
2017-05-15 13:25:23 -07:00
Felix Obenhuber 2349791192 Use Cargo features for S3 and Redis caches
The S3 and Redis caches are optional during build time.
Enable feature "s3" and/or "redis" to build sccache with
support for those backends. Only the local disk cache
is available by default. The "all" feature enables both.
This patch is changing the current default behavior that
always has S3 support.
2017-03-27 12:37:25 -07:00
Felix Obenhuber dc31690674 Add a Redis cache variant
This cache module uses a Redis instance. To make sccache use this,
set SCCACHE_REDIS to redis://[:<passwd>@]<hostname>[:port][/<db>].
The maximum and current cache size is retrieved from the INFO and
CONFIG GET redis command.
2017-03-27 12:34:05 -07:00
Ted Mielczarek 8605d60c21 document rust caveats 2017-03-24 16:03:57 -04:00
Alex Crichton 8968eba6c9 Remove dependency on `named_pipe`
I was sporadically receiving a segfault locally when trying to debug issues on
Windows and in tracking this down I discovered blackbeam/named_pipe#3 which
leads to segfaults locally on startup.

This switches the one use case to the relevant functionality in
`mio-named-pipes` (already pulled in as part of `tokio-process`) and then
otherwise mirrors the same logic as the Unix version, just waiting for a byte
with a timeout.
2017-03-21 15:51:53 -04:00
Ted Mielczarek 96de60c018 Update Rust version requirement to 1.13 in README. Fixes #73 2017-02-23 15:34:02 -05:00
Ted Mielczarek 1db21485e0 Add an `SCCACHE_ERROR_LOG` variable to redirect the server's stderr, so
we can get backtraces for unhandled panics.
2017-01-10 09:36:26 -05:00
Felix Obenhuber 0f5d67d42f Fix default logging initialization
If none of the logging environment variables are supplied
sccache creates a sccache2.log file on every sccache
invocation. Means, in every directory where a compilation takes
place a logfile is left afterwards. In the happy case this file
is empty. This can be kind of messy for larger projects where
the compiler invocation is done from multiple directories.

This patch changes the logging initialization:

* SCCACHE2_LOG_LEVEL is renamed to SCCACHE_LOG_LEVEL
* sccache2.log is renamed to sccache.log
* If none of RUST_LOG or SCCACHE_LOG_LEVEL is set, no logging is initialized.
* If RUST_LOG is set, only env_logger is used - no logfile is created.
2016-12-29 18:30:32 -05:00
Alex Newman d8a28bffad Add a snippet about logging level 2016-12-19 16:02:56 -05:00
Ted Mielczarek decd0b1a99 Remove caveats about local disk cache from README 2016-12-07 12:54:26 -10:00
Ted Mielczarek 982ff329b2 Document Rust 1.12 as minimum required version, add Travis CI for it 2016-12-07 12:53:29 -10:00
Yixi Zhang c77a8e81da More friendly README for Rust beginner 2016-12-06 15:54:58 -10:00
Ted Mielczarek 10fb1ad1c8 update readme a bit 2016-11-30 10:23:34 -05:00
Mike Hommey 3da89195ce Merge the Rust reimplementation 2016-11-22 06:50:00 +09:00
Ted Mielczarek 5e0451f56c update readme 2016-11-21 09:48:06 -05:00
Ted Mielczarek 124ab7546c Add appveyor build status badge 2016-05-18 14:32:25 -04:00
Ted Mielczarek b17a437a5a add travis build status to README 2016-05-02 12:56:57 -04:00
Ted Mielczarek 16d74015a9 Somewhat-fleshed-out skeleton.
Has a protocol (defined in protocol.proto), client-server bits,
and some basic request handling. Doesn't actually execute commands yet.
2016-04-26 16:43:03 -04:00
Mike Hommey 1e898e86c6 Add a note about the lack of local storage cleanup 2014-05-08 15:21:37 +09:00
Mike Hommey 216b626380 Add a basic README.md 2014-05-08 15:05:28 +09:00