sccache/README.md

63 строки
3.2 KiB
Markdown
Исходник Обычный вид История

2016-11-21 17:48:06 +03:00
[![Build Status](https://travis-ci.org/mozilla/sccache.svg?branch=master)](https://travis-ci.org/mozilla/sccache) [![Build status](https://ci.appveyor.com/api/projects/status/h4yqo430634pmfmt?svg=true)](https://ci.appveyor.com/project/luser/sccache2)
2016-05-02 19:56:57 +03:00
2014-05-08 10:05:28 +04:00
sccache - Shared Compilation Cache
==================================
2016-11-22 00:47:46 +03:00
Sccache is a [ccache](https://ccache.samba.org/)-like tool. It is used as a compiler wrapper and avoids compilation when possible, storing a cache in a remote storage using the S3 API.
2014-05-08 10:05:28 +04:00
2016-11-22 00:47:46 +03:00
It works as a client-server. The client spawns a server if one is not running already, and sends the wrapped command line as a request to the server, which then does the work and returns stdout/stderr for the job. The client-server model allows the server to be more efficient in its handling of the remote storage.
2014-05-08 10:05:28 +04:00
Sccache can also be used with local storage instead of remote.
Requirements
------------
sccache is a [Rust](https://www.rust-lang.org/) program. Building it requires `cargo` (and thus `rustc`). sccache currently requires **Rust 1.12**.
2014-05-08 10:05:28 +04:00
2016-12-06 02:31:21 +03:00
We recommend you install Rust via [Rustup](https://rustup.rs/). The generated binaries can be built so that they are very portable, see [scripts/build-release.sh](scripts/build-release.sh).
## Build
> $ cargo build [--release]
## Installation
> $ cargo install
2014-05-08 10:05:28 +04:00
Usage
-----
2016-11-30 18:23:34 +03:00
Running sccache is like running ccache: wrap your compilation commands with it, like so:
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
> $ sccache gcc -o foo.o -c foo.c
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
Sccache (tries to) support gcc, clang and MSVC. If you don't [specify otherwise](#storage-options), sccache will use a local disk cache.
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
You can run `sccache --start-server` to start the background server process without performing any compilation.
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
You can run `sccache --stop-server` to terminate the server. It will terminate after 10 minutes of inactivity.
Running `sccache --show-stats` will print a summary of cache statistics.
Storage Options
---------------
sccache defaults to using local disk storage. You can set the `SCCACHE_DIR` environment variable to change the disk cache location. By default it will use a sensible location for the current platform: `~/.cache/sccache` on Linux, `%LOCALAPPDATA%\Mozilla\sccache` on Windows, `~/Library/Caches/sccache` on OS X. See [Known Caveats](#known-caveats) before using local disk cache!
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
If you want to use S3 storage for the sccache cache, you need to set the `SCCACHE_BUCKET` environment variable to the name of the S3 bucket to use.
2014-05-08 10:05:28 +04:00
2016-11-30 18:23:34 +03:00
The environment variables are only taken into account when the server starts, so only on the first run.
2014-05-08 10:05:28 +04:00
Known caveats
-------------
(and possible future improvements)
* Sccache doesn't try to be smart about the command line arguments it uses when computing a key for a given compilation result (like skipping preprocessor-specific arguments)
* It doesn't support all kinds of compiler flags, and is certainly broken with a few of them. Really only the flags used during Firefox builds have been tested.
* It doesn't support ccache's direct mode.
2016-11-30 18:23:34 +03:00
* [Local storage mode doesn't do any kind of cleanup](https://github.com/mozilla/sccache/issues/29). The cache will keep growing indefinitely.
* [It doesn't support an option like `CCACHE_BASEDIR`](https://github.com/mozilla/sccache/issues/35).