sccache/Cargo.lock

3096 строки
75 KiB
Plaintext
Исходник Обычный вид История

# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
2020-06-11 04:40:05 +03:00
2020-12-08 08:07:09 +03:00
[[package]]
name = "adler"
version = "1.0.2"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
2020-12-08 08:07:09 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "aho-corasick"
version = "0.7.18"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "ansi_term"
version = "0.12.1"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
dependencies = [
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2016-05-12 22:03:37 +03:00
Change error handling from `error-chain` to `anyhow`. Because `anyhow` is what seems to be the most common error library for applications these days. - The global `Result` type is now `anyhow::Result`. - In errors.rs, there's no need for any boilerplate to wrap all the foreign errors seen: `hyper::Error`, `io:Error`, etc. - The internal errors that we care about are now separate types, rather than within an enum, because that works better when we need to check for them by downcasting an `anyhow::Error`. And it's nice to write `Err(ProcessError(output))` rather than `Err(ErrorKind::ProcessError(output))`. - The `Which` error was unused and is removed. - The most common change is that `.chain_err()` is changed to `.context`/`.with_context()`. - `anyhow!` is used where necessary, mostly to promote a string to an `anyhow::Error`. - Errors within futures: `FutureChainErr`/`.chain_err()` is changed to `FutureContext`/`fcontext`/`fwith_context`. The `f` prefix is because I found it helpful to distinguish these cases from the simple error cases. - `BuilderIncoming`, `SchedulerIncoming`, `ServerIncoming` no longer have an `Error` associated type, we just use `anyhow::Error` uniformly. - `e.display_chain()` changes to `format!("{:?}")`, because they both print the full cause chain, and the backtrace (if present). - A few places where the old code was doing something weird or more complicated than seemed necessary, I generally tried to replace it with something simpler and more typical. Two places used `with_boxed_chain()`, which doesn't have an equivalent in `anyhow`, so I did my best to do something reasonable. - In `src/server.rs` we now import `std::task::Context` as `TaskContext` to avoid overshadowing the `anyhow::Context` trait :(
2020-06-02 10:22:31 +03:00
[[package]]
name = "anyhow"
version = "1.0.58"
Change error handling from `error-chain` to `anyhow`. Because `anyhow` is what seems to be the most common error library for applications these days. - The global `Result` type is now `anyhow::Result`. - In errors.rs, there's no need for any boilerplate to wrap all the foreign errors seen: `hyper::Error`, `io:Error`, etc. - The internal errors that we care about are now separate types, rather than within an enum, because that works better when we need to check for them by downcasting an `anyhow::Error`. And it's nice to write `Err(ProcessError(output))` rather than `Err(ErrorKind::ProcessError(output))`. - The `Which` error was unused and is removed. - The most common change is that `.chain_err()` is changed to `.context`/`.with_context()`. - `anyhow!` is used where necessary, mostly to promote a string to an `anyhow::Error`. - Errors within futures: `FutureChainErr`/`.chain_err()` is changed to `FutureContext`/`fcontext`/`fwith_context`. The `f` prefix is because I found it helpful to distinguish these cases from the simple error cases. - `BuilderIncoming`, `SchedulerIncoming`, `ServerIncoming` no longer have an `Error` associated type, we just use `anyhow::Error` uniformly. - `e.display_chain()` changes to `format!("{:?}")`, because they both print the full cause chain, and the backtrace (if present). - A few places where the old code was doing something weird or more complicated than seemed necessary, I generally tried to replace it with something simpler and more typical. Two places used `with_boxed_chain()`, which doesn't have an equivalent in `anyhow`, so I did my best to do something reasonable. - In `src/server.rs` we now import `std::task::Context` as `TaskContext` to avoid overshadowing the `anyhow::Context` trait :(
2020-06-02 10:22:31 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
Change error handling from `error-chain` to `anyhow`. Because `anyhow` is what seems to be the most common error library for applications these days. - The global `Result` type is now `anyhow::Result`. - In errors.rs, there's no need for any boilerplate to wrap all the foreign errors seen: `hyper::Error`, `io:Error`, etc. - The internal errors that we care about are now separate types, rather than within an enum, because that works better when we need to check for them by downcasting an `anyhow::Error`. And it's nice to write `Err(ProcessError(output))` rather than `Err(ErrorKind::ProcessError(output))`. - The `Which` error was unused and is removed. - The most common change is that `.chain_err()` is changed to `.context`/`.with_context()`. - `anyhow!` is used where necessary, mostly to promote a string to an `anyhow::Error`. - Errors within futures: `FutureChainErr`/`.chain_err()` is changed to `FutureContext`/`fcontext`/`fwith_context`. The `f` prefix is because I found it helpful to distinguish these cases from the simple error cases. - `BuilderIncoming`, `SchedulerIncoming`, `ServerIncoming` no longer have an `Error` associated type, we just use `anyhow::Error` uniformly. - `e.display_chain()` changes to `format!("{:?}")`, because they both print the full cause chain, and the backtrace (if present). - A few places where the old code was doing something weird or more complicated than seemed necessary, I generally tried to replace it with something simpler and more typical. Two places used `with_boxed_chain()`, which doesn't have an equivalent in `anyhow`, so I did my best to do something reasonable. - In `src/server.rs` we now import `std::task::Context` as `TaskContext` to avoid overshadowing the `anyhow::Context` trait :(
2020-06-02 10:22:31 +03:00
[[package]]
name = "ar"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d67af77d68a931ecd5cbd8a3b5987d63a1d1d1278f7f6a60ae33db485cdebb69"
2019-12-10 00:17:20 +03:00
[[package]]
name = "arrayref"
2020-04-28 07:55:50 +03:00
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
2018-08-27 17:23:32 +03:00
[[package]]
name = "arrayvec"
2020-12-08 08:07:09 +03:00
version = "0.5.2"
2018-08-27 17:23:32 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
2018-08-27 17:23:32 +03:00
[[package]]
name = "arrayvec"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
2018-08-27 17:23:32 +03:00
[[package]]
name = "ascii"
version = "1.0.0"
2018-08-27 17:23:32 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbf56136a5198c7b01a49e3afcbef6cf84597273d298f54432926024107b0109"
2018-08-27 17:23:32 +03:00
[[package]]
name = "assert-json-diff"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f1c3703dd33532d7f0ca049168930e9099ecac238e23cf932f3a69c42f06da"
dependencies = [
"serde",
"serde_json",
]
[[package]]
2018-07-26 22:52:50 +03:00
name = "assert_cmd"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e"
dependencies = [
"bstr",
"doc-comment",
"predicates",
"predicates-core",
"predicates-tree",
"wait-timeout",
]
[[package]]
name = "async-channel"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319"
dependencies = [
"concurrent-queue",
"event-listener",
"futures-core",
]
[[package]]
name = "async-trait"
version = "0.1.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
2017-04-05 17:42:06 +03:00
[[package]]
name = "atty"
2020-04-28 07:55:50 +03:00
version = "0.2.14"
2017-04-05 17:42:06 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
2020-04-28 07:55:50 +03:00
"hermit-abi",
"libc",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2017-04-05 17:42:06 +03:00
2020-04-28 07:55:50 +03:00
[[package]]
name = "autocfg"
version = "1.1.0"
2020-04-28 07:55:50 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
2020-04-28 07:55:50 +03:00
2020-12-08 08:07:09 +03:00
[[package]]
name = "base64"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
[[package]]
2018-01-07 18:33:04 +03:00
name = "bincode"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
dependencies = [
"serde",
]
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "blake3"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
dependencies = [
"arrayref",
"arrayvec 0.7.2",
"cc",
"cfg-if 1.0.0",
"constant_time_eq",
"digest",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "block-buffer"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
dependencies = [
"generic-array",
]
[[package]]
name = "boxfnonce"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426"
[[package]]
name = "bstr"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
dependencies = [
"lazy_static",
"memchr",
"regex-automata",
]
[[package]]
name = "buf_redux"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f"
dependencies = [
"memchr",
"safemem",
]
[[package]]
name = "bufstream"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8"
[[package]]
name = "bumpalo"
version = "3.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
2021-01-08 10:26:06 +03:00
[[package]]
name = "bytes"
version = "1.1.0"
2021-01-08 10:26:06 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
2021-01-08 10:26:06 +03:00
[[package]]
name = "cache-padded"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
dependencies = [
"jobserver",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "cfg-if"
version = "0.1.10"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
2016-05-12 22:03:37 +03:00
2020-12-08 08:07:09 +03:00
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
2018-01-07 18:33:04 +03:00
[[package]]
name = "chrono"
2020-12-08 08:07:09 +03:00
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
2020-12-08 08:07:09 +03:00
"libc",
"num-integer",
"num-traits",
"serde",
"time 0.1.43",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
[[package]]
name = "chunked_transfer"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e"
2016-05-12 22:03:37 +03:00
[[package]]
name = "clap"
version = "2.34.0"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
dependencies = [
"ansi_term",
"atty",
"bitflags",
"strsim",
"textwrap",
"unicode-width",
"vec_map",
]
2016-05-12 22:03:37 +03:00
2018-08-27 17:23:32 +03:00
[[package]]
name = "combine"
version = "4.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062"
dependencies = [
"bytes",
"futures-core",
"memchr",
"pin-project-lite",
"tokio",
"tokio-util 0.6.10",
]
[[package]]
name = "concurrent-queue"
version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3"
dependencies = [
"cache-padded",
]
[[package]]
name = "conhash"
2018-08-28 15:42:57 +03:00
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d6364d028778d0d98b6014fa5882da377cd10d3492b7734d266a428e9b1fca"
dependencies = [
"log",
"md5",
]
[[package]]
2019-12-10 00:17:20 +03:00
name = "constant_time_eq"
version = "0.1.5"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
2019-12-10 00:17:20 +03:00
[[package]]
name = "core-foundation"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
dependencies = [
"core-foundation-sys",
"libc",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "core-foundation-sys"
version = "0.8.3"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
2019-12-10 00:17:20 +03:00
[[package]]
name = "core_affinity"
version = "0.5.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f8a03115cc34fb0d7c321dd154a3914b3ca082ccc5c11d91bf7117dbbe7171f"
dependencies = [
"kernel32-sys",
"libc",
"num_cpus",
"winapi 0.2.8",
]
[[package]]
name = "counted-array"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "384f8c53175c890920b6e0127b730709d2a173ca6c4dfdc81618ac9b46f648fe"
[[package]]
name = "cpufeatures"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
dependencies = [
"libc",
]
[[package]]
name = "crc32fast"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
2020-12-08 08:07:09 +03:00
"cfg-if 1.0.0",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "crossbeam-utils"
version = "0.8.10"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
2020-12-08 08:07:09 +03:00
dependencies = [
"cfg-if 1.0.0",
"once_cell",
]
[[package]]
name = "crypto-common"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
dependencies = [
"generic-array",
"typenum",
2020-12-08 08:07:09 +03:00
]
2016-10-26 23:22:52 +03:00
[[package]]
name = "daemonize"
version = "0.4.1"
2016-10-26 23:22:52 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70c24513e34f53b640819f0ac9f705b673fcf4006d7aab8778bee72ebfc89815"
dependencies = [
"boxfnonce",
"libc",
]
[[package]]
name = "deadpool"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "421fe0f90f2ab22016f32a9881be5134fdd71c65298917084b0c7477cbc3856e"
dependencies = [
"async-trait",
"deadpool-runtime",
"num_cpus",
"retain_mut",
"tokio",
]
[[package]]
name = "deadpool-runtime"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eaa37046cc0f6c3cc6090fbdbf73ef0b8ef4cfcc37f6befc0020f63e8cf121e1"
[[package]]
name = "difflib"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
2020-12-08 08:07:09 +03:00
[[package]]
name = "digest"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer",
"crypto-common",
"subtle",
]
[[package]]
name = "directories"
version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210"
dependencies = [
"dirs-sys",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "dirs-sys"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780"
dependencies = [
"libc",
"redox_users",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
[[package]]
name = "displaydoc"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc2ab4d5a16117f9029e9a6b5e4e79f4c67f6519bc134210d4d4a04ba31f41b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "doc-comment"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[package]]
name = "dtoa"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
[[package]]
name = "either"
2020-12-08 08:07:09 +03:00
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "encoding_rs"
version = "0.8.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7896dc8abb250ffdda33912550faa54c88ec8b998dec0b2c55ab224921ce11df"
dependencies = [
2020-12-08 08:07:09 +03:00
"cfg-if 1.0.0",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "env_logger"
version = "0.9.0"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
dependencies = [
"atty",
"humantime",
"log",
"regex",
"termcolor",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "error-chain"
2020-12-08 08:07:09 +03:00
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
dependencies = [
"version_check",
]
[[package]]
name = "event-listener"
version = "2.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71"
[[package]]
name = "fastrand"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
dependencies = [
"instant",
]
2018-04-12 04:25:15 +03:00
[[package]]
name = "filetime"
version = "0.2.17"
2018-04-12 04:25:15 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c"
dependencies = [
2020-12-08 08:07:09 +03:00
"cfg-if 1.0.0",
"libc",
"redox_syscall",
"windows-sys",
]
2018-04-12 04:25:15 +03:00
[[package]]
name = "flate2"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
dependencies = [
"crc32fast",
"miniz_oxide",
]
2018-07-26 22:52:50 +03:00
[[package]]
name = "float-cmp"
version = "0.9.0"
2018-07-26 22:52:50 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
dependencies = [
"num-traits",
]
2018-07-26 22:52:50 +03:00
[[package]]
name = "flume"
version = "0.10.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a"
dependencies = [
"futures-core",
"futures-sink",
"nanorand",
"pin-project",
"spin 0.9.3",
]
[[package]]
name = "fnv"
2020-06-11 04:40:05 +03:00
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-06-11 04:40:05 +03:00
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
2018-01-07 18:33:04 +03:00
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
2018-01-07 18:33:04 +03:00
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
2020-12-08 08:07:09 +03:00
[[package]]
name = "form_urlencoded"
version = "1.0.1"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
2020-12-08 08:07:09 +03:00
dependencies = [
"matches",
"percent-encoding",
2020-12-08 08:07:09 +03:00
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "fuchsia-cprng"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
2019-12-10 00:17:20 +03:00
[[package]]
name = "futures"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
dependencies = [
"futures-channel",
"futures-core",
"futures-executor",
"futures-io",
"futures-sink",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-channel"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
dependencies = [
"futures-core",
"futures-sink",
]
[[package]]
name = "futures-core"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
[[package]]
name = "futures-executor"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
dependencies = [
"futures-core",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-io"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
[[package]]
name = "futures-lite"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48"
dependencies = [
"fastrand",
"futures-core",
"futures-io",
"memchr",
"parking",
"pin-project-lite",
"waker-fn",
]
[[package]]
name = "futures-locks"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eb42d4fb72227be5778429f9ef5240a38a358925a49f05b5cf702ce7c7e558a"
dependencies = [
"futures-channel",
"futures-task",
"tokio",
]
[[package]]
name = "futures-macro"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "futures-sink"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
[[package]]
name = "futures-task"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
[[package]]
name = "futures-timer"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
[[package]]
name = "futures-util"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
dependencies = [
"futures-channel",
"futures-core",
"futures-io",
"futures-macro",
"futures-sink",
"futures-task",
"memchr",
"pin-project-lite",
"pin-utils",
"slab",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "generic-array"
version = "0.14.5"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
2020-12-08 08:07:09 +03:00
dependencies = [
"typenum",
"version_check",
2020-12-08 08:07:09 +03:00
]
[[package]]
name = "getopts"
2019-12-10 00:17:20 +03:00
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
dependencies = [
"unicode-width",
]
[[package]]
name = "getrandom"
2021-01-08 10:26:06 +03:00
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
2021-01-08 10:26:06 +03:00
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
2021-01-08 10:26:06 +03:00
"cfg-if 1.0.0",
"libc",
2020-12-08 08:07:09 +03:00
"wasi 0.9.0+wasi-snapshot-preview1",
]
2020-06-11 04:40:05 +03:00
[[package]]
name = "getrandom"
version = "0.2.5"
2020-06-11 04:40:05 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
"libc",
"wasi 0.10.2+wasi-snapshot-preview1",
"wasm-bindgen",
]
[[package]]
name = "gzp"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcaa63633f99fe42694dbc0004cdc2ba160d9a303f0d08d2e50380a500a19cf3"
dependencies = [
"byteorder",
"bytes",
"core_affinity",
"flate2",
"flume",
"num_cpus",
"thiserror",
]
2020-06-11 04:40:05 +03:00
[[package]]
name = "h2"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e"
dependencies = [
"bytes",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http",
"indexmap",
"slab",
"tokio",
"tokio-util 0.6.10",
"tracing",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "hashbrown"
version = "0.11.2"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
2020-12-08 08:07:09 +03:00
2019-12-10 00:17:20 +03:00
[[package]]
name = "hermit-abi"
version = "0.1.19"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "hmac"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
"digest",
]
[[package]]
name = "hostname"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
dependencies = [
"libc",
"match_cfg",
"winapi 0.3.9",
]
[[package]]
name = "http"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
dependencies = [
"bytes",
"fnv",
"itoa 1.0.1",
]
[[package]]
name = "http-body"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6"
dependencies = [
"bytes",
"http",
"pin-project-lite",
]
[[package]]
name = "http-types"
version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad"
dependencies = [
"anyhow",
"async-channel",
"base64",
"futures-lite",
"http",
"infer",
"pin-project-lite",
"rand 0.7.3",
"serde",
"serde_json",
"serde_qs",
"serde_urlencoded",
"url",
]
[[package]]
name = "httparse"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4"
[[package]]
name = "httpdate"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "hyper"
version = "0.14.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac"
dependencies = [
"bytes",
"futures-channel",
"futures-core",
"futures-util",
"h2",
"http",
"http-body",
"httparse",
"httpdate",
"itoa 1.0.1",
"pin-project-lite",
"socket2",
"tokio",
"tower-service",
"tracing",
"want",
]
[[package]]
name = "hyper-tls"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
"hyper",
"native-tls",
"tokio",
"tokio-native-tls",
]
[[package]]
name = "hyperx"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5617e92fc2f2501c3e2bc6ce547cad841adba2bae5b921c7e52510beca6d084c"
dependencies = [
"base64",
"bytes",
"http",
"httpdate",
"language-tags",
"mime",
"percent-encoding",
"unicase",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "idna"
version = "0.2.3"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
dependencies = [
"matches",
"unicode-bidi",
"unicode-normalization",
]
[[package]]
name = "indexmap"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
dependencies = [
"autocfg",
2020-12-08 08:07:09 +03:00
"hashbrown",
]
[[package]]
name = "infer"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac"
[[package]]
name = "instant"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if 1.0.0",
]
[[package]]
name = "ipnet"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9"
2021-01-08 10:28:43 +03:00
[[package]]
name = "itertools"
version = "0.10.3"
2021-01-08 10:28:43 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
2021-01-08 10:28:43 +03:00
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "itoa"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
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
2017-09-27 19:14:51 +03:00
[[package]]
name = "jobserver"
version = "0.1.24"
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
2017-09-27 19:14:51 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
dependencies = [
"libc",
]
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
2017-09-27 19:14:51 +03:00
[[package]]
name = "js-sys"
version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"
dependencies = [
"wasm-bindgen",
]
2017-05-06 03:02:48 +03:00
[[package]]
name = "jsonwebtoken"
version = "8.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aa4b4af834c6cfd35d8763d359661b90f2e45d8f750a0849156c7f4671af09c"
dependencies = [
"base64",
"pem",
"ring",
"serde",
"serde_json",
"simple_asn1",
]
2017-05-06 03:02:48 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "kernel32-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
dependencies = [
"winapi 0.2.8",
"winapi-build",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "language-tags"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
2018-01-07 18:33:04 +03:00
[[package]]
name = "lazy_static"
2019-12-10 00:17:20 +03:00
version = "1.4.0"
Rewrite the server module with Tokio This commit rewrites the `server` module of sccache to be backed with Tokio. The previous version was written with `mio`, which Tokio is built on, but is unfortunately less ergonomic. Tokio is the state-of-the-art for asynchronous programming in Rust and sccache serves as a great testing ground for ergonomics! It's intended that the support added here will eventually extend to many other operations that sccache does as well. For example thread spawning has all been replaced with `CpuPool` to have a shared pool for I/O operations and such (namely the filesystem). Eventually the HTTP requests made by the S3 backend can be integrated with the Tokio branch of Hyper as well to run that on the event loop instead of in a worker thread. I'd also like to eventually extend this with `tokio-process` as well to move process spawning off helper threads as well, but I'm leaving that to a future commit as well. Overall I found the transition was quite smooth, with the high level architecture look like: * The `tokio-proto` crate is used in streaming mode. The streaming part is used for the one RPC sccache gets which requires a second response to be sent later on. This second response is the "response body" in tokio-proto terms. * All of sccache's logic is manifested in an implementation of the `Service` trait. * The transport layer is provided with `tokio_core::io::{Framed, Codec}`, and simple deserialization/serialization is performed with protobuf. Some differences in design are: * The `SccacheService` for now is just a bunch of reference-counted pointers, making it cheap to clone. As the futures it returns progress they will each retain a reference to a cloned copy of the `SccacheService`. Before all this data was just stored and manipulated in a struct directly, but it's now directly managed through shared memory. * The storage backends share a thread pool with the main server instead of spawning threads. And finally, some things I've learned along the way: * Sharing data between futures isn't a trivial operation. It took an explicit decision to use `Rc` and I'm not sure I'm 100% happy with how the ergonomics played out. * Shutdown is pretty tricky here. I've tried to carry over all the previous logic but it definitely required not using `TcpServer` in tokio-proto at the very least, and otherwise required a few custom futures and such to track the various states. I have a hunch that tokio-proto could provide more options out of the box for something like this.
2017-01-31 04:04:03 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
Rewrite the server module with Tokio This commit rewrites the `server` module of sccache to be backed with Tokio. The previous version was written with `mio`, which Tokio is built on, but is unfortunately less ergonomic. Tokio is the state-of-the-art for asynchronous programming in Rust and sccache serves as a great testing ground for ergonomics! It's intended that the support added here will eventually extend to many other operations that sccache does as well. For example thread spawning has all been replaced with `CpuPool` to have a shared pool for I/O operations and such (namely the filesystem). Eventually the HTTP requests made by the S3 backend can be integrated with the Tokio branch of Hyper as well to run that on the event loop instead of in a worker thread. I'd also like to eventually extend this with `tokio-process` as well to move process spawning off helper threads as well, but I'm leaving that to a future commit as well. Overall I found the transition was quite smooth, with the high level architecture look like: * The `tokio-proto` crate is used in streaming mode. The streaming part is used for the one RPC sccache gets which requires a second response to be sent later on. This second response is the "response body" in tokio-proto terms. * All of sccache's logic is manifested in an implementation of the `Service` trait. * The transport layer is provided with `tokio_core::io::{Framed, Codec}`, and simple deserialization/serialization is performed with protobuf. Some differences in design are: * The `SccacheService` for now is just a bunch of reference-counted pointers, making it cheap to clone. As the futures it returns progress they will each retain a reference to a cloned copy of the `SccacheService`. Before all this data was just stored and manipulated in a struct directly, but it's now directly managed through shared memory. * The storage backends share a thread pool with the main server instead of spawning threads. And finally, some things I've learned along the way: * Sharing data between futures isn't a trivial operation. It took an explicit decision to use `Rc` and I'm not sure I'm 100% happy with how the ergonomics played out. * Shutdown is pretty tricky here. I've tried to carry over all the previous logic but it definitely required not using `TcpServer` in tokio-proto at the very least, and otherwise required a few custom futures and such to track the various states. I have a hunch that tokio-proto could provide more options out of the box for something like this.
2017-01-31 04:04:03 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "libc"
version = "0.2.126"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
2016-05-12 22:03:37 +03:00
[[package]]
name = "libmount"
2019-12-10 00:17:20 +03:00
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23c4c2ad2d5cbd2f5a05620c3daf45930add53ec207fa99ce5eec971089dc35f"
dependencies = [
"libc",
"nix 0.14.1",
"quick-error",
]
[[package]]
name = "linked-hash-map"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "local-encoding"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66"
dependencies = [
"kernel32-sys",
"skeptic",
"winapi 0.2.8",
]
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
[[package]]
name = "lock_api"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
dependencies = [
"scopeguard",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "log"
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if 1.0.0",
]
[[package]]
name = "match_cfg"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
[[package]]
name = "matches"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "md-5"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582"
dependencies = [
"digest",
]
2018-08-28 15:42:57 +03:00
[[package]]
name = "md5"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79c56d6a0b07f9e19282511c83fc5b086364cbae4ba8c7d5f190c3d9b0425a48"
2018-08-28 15:42:57 +03:00
[[package]]
name = "memcached-rs"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3804643a8b556cd39d6b3ec5a181fdf36b642952d57f4c52bebd457d0ee0b1d"
dependencies = [
"bufstream",
"byteorder",
"conhash",
"log",
"rand 0.7.3",
"semver",
"unix_socket",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "memchr"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "memoffset"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
[[package]]
name = "mime"
2020-04-28 07:55:50 +03:00
version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "mime_guess"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
dependencies = [
"mime",
"unicase",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "miniz_oxide"
version = "0.5.3"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
2020-12-08 08:07:09 +03:00
dependencies = [
"adler",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "mio"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9"
dependencies = [
"libc",
"log",
"miow",
"ntapi",
"wasi 0.11.0+wasi-snapshot-preview1",
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "miow"
version = "0.3.7"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
dependencies = [
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "multipart"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182"
dependencies = [
"buf_redux",
"httparse",
"log",
"mime",
"mime_guess",
"quick-error",
"rand 0.8.5",
"safemem",
"tempfile",
"twoway",
]
[[package]]
name = "nanorand"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
dependencies = [
"getrandom 0.2.5",
]
[[package]]
name = "native-tls"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d"
dependencies = [
"lazy_static",
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "nix"
version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce"
dependencies = [
"bitflags",
"cc",
2020-12-08 08:07:09 +03:00
"cfg-if 0.1.10",
"libc",
"void",
]
2018-08-27 17:23:32 +03:00
[[package]]
2019-12-10 00:17:20 +03:00
name = "nix"
version = "0.24.1"
2018-08-27 17:23:32 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9"
dependencies = [
"bitflags",
2020-12-10 01:56:41 +03:00
"cfg-if 1.0.0",
"libc",
"memoffset",
]
2018-08-27 17:23:32 +03:00
[[package]]
name = "normalize-line-endings"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "ntapi"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
dependencies = [
"winapi 0.3.9",
]
[[package]]
name = "num-bigint"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-integer"
2020-12-08 08:07:09 +03:00
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
dependencies = [
"autocfg",
"num-traits",
]
2018-07-26 22:52:50 +03:00
[[package]]
name = "num-traits"
2020-12-08 08:07:09 +03:00
version = "0.2.14"
2018-07-26 22:52:50 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
dependencies = [
"autocfg",
]
2018-07-26 22:52:50 +03:00
[[package]]
name = "num_cpus"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
name = "num_threads"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15"
dependencies = [
"libc",
]
[[package]]
name = "number_prefix"
2020-12-10 02:03:49 +03:00
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-10 02:03:49 +03:00
checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
2020-06-11 04:40:05 +03:00
[[package]]
name = "once_cell"
version = "1.13.0"
2020-06-11 04:40:05 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
2020-06-11 04:40:05 +03:00
[[package]]
name = "openssl"
version = "0.10.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0"
dependencies = [
"bitflags",
2020-12-10 03:19:32 +03:00
"cfg-if 1.0.0",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.75"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f"
dependencies = [
"autocfg",
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "parity-tokio-ipc"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6"
dependencies = [
"futures",
"libc",
"log",
"rand 0.7.3",
"tokio",
"winapi 0.3.9",
]
[[package]]
name = "parking"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
[[package]]
name = "parking_lot"
version = "0.12.1"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
dependencies = [
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
version = "0.9.3"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
dependencies = [
"cfg-if 1.0.0",
"libc",
"redox_syscall",
"smallvec",
"windows-sys",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
]
[[package]]
name = "pem"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9a3b09a20e374558580a4914d3b7d89bd61b954a5a5e1dcbea98753addb1947"
dependencies = [
"base64",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
2019-12-10 00:17:20 +03:00
[[package]]
name = "pin-project"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "pin-project-lite"
version = "0.2.8"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c"
[[package]]
name = "pin-utils"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
2019-12-10 00:17:20 +03:00
[[package]]
name = "ppv-lite86"
version = "0.2.16"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
2019-12-10 00:17:20 +03:00
2018-07-26 22:52:50 +03:00
[[package]]
name = "predicates"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c"
dependencies = [
"difflib",
"float-cmp",
"itertools",
"normalize-line-endings",
"predicates-core",
"regex",
]
[[package]]
name = "predicates-core"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb"
[[package]]
name = "predicates-tree"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032"
dependencies = [
"predicates-core",
"termtree",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
dependencies = [
"unicode-ident",
]
[[package]]
name = "pulldown-cmark"
version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07"
dependencies = [
"getopts",
]
[[package]]
name = "quick-error"
2020-04-28 07:55:50 +03:00
version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "quickcheck"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
dependencies = [
"rand 0.8.5",
]
[[package]]
name = "quote"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
dependencies = [
"proc-macro2",
]
2018-02-01 18:29:23 +03:00
[[package]]
name = "rand"
2019-12-10 00:17:20 +03:00
version = "0.4.6"
2018-02-01 18:29:23 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
dependencies = [
"fuchsia-cprng",
"libc",
"rand_core 0.3.1",
"rdrand",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "rand"
2020-04-28 07:55:50 +03:00
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom 0.1.16",
"libc",
2020-04-28 07:55:50 +03:00
"rand_chacha 0.2.2",
"rand_core 0.5.1",
"rand_hc",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.3",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
2020-04-28 07:55:50 +03:00
"ppv-lite86",
"rand_core 0.5.1",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.3",
]
[[package]]
2018-08-27 17:23:32 +03:00
name = "rand_core"
2019-12-10 00:17:20 +03:00
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
dependencies = [
"rand_core 0.4.2",
]
[[package]]
name = "rand_core"
2019-12-10 00:17:20 +03:00
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
2019-12-10 00:17:20 +03:00
[[package]]
name = "rand_core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
"getrandom 0.1.16",
]
[[package]]
name = "rand_core"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom 0.2.5",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core 0.5.1",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "rdrand"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
dependencies = [
"rand_core 0.3.1",
]
[[package]]
name = "redis"
version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a80b5f38d7f5a020856a0e16e40a9cfabf88ae8f0e4c2dcd8a3114c1e470852"
dependencies = [
"async-trait",
"bytes",
"combine",
"dtoa",
"futures-util",
"itoa 0.4.8",
2021-03-19 20:25:28 +03:00
"native-tls",
"percent-encoding",
"pin-project-lite",
"tokio",
"tokio-native-tls",
"tokio-util 0.6.10",
"url",
]
[[package]]
name = "redox_syscall"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8380fe0152551244f0747b1bf41737e0f8a74f97a14ccefd1148187271634f3c"
dependencies = [
"bitflags",
]
2018-01-07 18:33:04 +03:00
[[package]]
2019-12-10 00:17:20 +03:00
name = "redox_users"
version = "0.4.0"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
dependencies = [
"getrandom 0.2.5",
"redox_syscall",
]
2018-01-07 18:33:04 +03:00
2018-07-26 22:52:50 +03:00
[[package]]
name = "regex"
version = "1.6.0"
2018-07-26 22:52:50 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
2018-07-26 22:52:50 +03:00
[[package]]
name = "regex-automata"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
2018-07-26 22:52:50 +03:00
[[package]]
name = "regex-syntax"
version = "0.6.27"
2018-07-26 22:52:50 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
2018-07-26 22:52:50 +03:00
2018-02-01 18:29:23 +03:00
[[package]]
name = "remove_dir_all"
2020-12-08 08:07:09 +03:00
version = "0.5.3"
2018-02-01 18:29:23 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
dependencies = [
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "reqwest"
version = "0.11.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92"
dependencies = [
"base64",
"bytes",
"encoding_rs",
"futures-core",
"futures-util",
"h2",
"http",
"http-body",
"hyper",
"hyper-tls",
"ipnet",
"js-sys",
"lazy_static",
"log",
"mime",
"native-tls",
"percent-encoding",
"pin-project-lite",
"serde",
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
"tokio-util 0.7.3",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"winreg",
]
[[package]]
name = "retain_mut"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0"
2016-05-12 22:03:37 +03:00
[[package]]
name = "retry"
version = "1.3.1"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac95c60a949a63fd2822f4964939662d8f2c16c4fa0624fd954bc6e703b9a3f6"
dependencies = [
"rand 0.8.5",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "ring"
version = "0.16.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
dependencies = [
"cc",
"libc",
"once_cell",
"spin 0.5.2",
"untrusted",
"web-sys",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "rouille"
version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18b2380c42510ef4a28b5f228a174c801e0dec590103e215e60812e2e2f34d05"
dependencies = [
"base64",
"chrono",
"filetime",
"multipart",
"num_cpus",
"percent-encoding",
"rand 0.8.5",
"serde",
"serde_derive",
"serde_json",
"sha1",
"threadpool",
"time 0.3.7",
"tiny_http",
"url",
]
[[package]]
name = "rustversion"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
[[package]]
name = "ryu"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
[[package]]
name = "safemem"
2019-12-10 00:17:20 +03:00
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
2017-12-05 16:32:33 +03:00
[[package]]
name = "sccache"
2022-05-04 21:52:32 +03:00
version = "0.3.0"
dependencies = [
Change error handling from `error-chain` to `anyhow`. Because `anyhow` is what seems to be the most common error library for applications these days. - The global `Result` type is now `anyhow::Result`. - In errors.rs, there's no need for any boilerplate to wrap all the foreign errors seen: `hyper::Error`, `io:Error`, etc. - The internal errors that we care about are now separate types, rather than within an enum, because that works better when we need to check for them by downcasting an `anyhow::Error`. And it's nice to write `Err(ProcessError(output))` rather than `Err(ErrorKind::ProcessError(output))`. - The `Which` error was unused and is removed. - The most common change is that `.chain_err()` is changed to `.context`/`.with_context()`. - `anyhow!` is used where necessary, mostly to promote a string to an `anyhow::Error`. - Errors within futures: `FutureChainErr`/`.chain_err()` is changed to `FutureContext`/`fcontext`/`fwith_context`. The `f` prefix is because I found it helpful to distinguish these cases from the simple error cases. - `BuilderIncoming`, `SchedulerIncoming`, `ServerIncoming` no longer have an `Error` associated type, we just use `anyhow::Error` uniformly. - `e.display_chain()` changes to `format!("{:?}")`, because they both print the full cause chain, and the backtrace (if present). - A few places where the old code was doing something weird or more complicated than seemed necessary, I generally tried to replace it with something simpler and more typical. Two places used `with_boxed_chain()`, which doesn't have an equivalent in `anyhow`, so I did my best to do something reasonable. - In `src/server.rs` we now import `std::task::Context` as `TaskContext` to avoid overshadowing the `anyhow::Context` trait :(
2020-06-02 10:22:31 +03:00
"anyhow",
"ar",
"assert_cmd",
"async-trait",
"atty",
"base64",
"bincode",
"blake3",
"byteorder",
"bytes",
"cc",
"chrono",
"clap",
"counted-array",
"crossbeam-utils",
"daemonize",
"directories",
"env_logger",
"filetime",
"flate2",
"futures",
"futures-locks",
"gzp",
"hmac",
"http",
"hyper",
"hyperx",
"itertools",
"jobserver",
"jsonwebtoken",
"lazy_static",
"libc",
"libmount",
"linked-hash-map",
"local-encoding",
"log",
"md-5",
"memcached-rs",
"nix 0.24.1",
"num_cpus",
"number_prefix",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"once_cell",
"openssl",
"parity-tokio-ipc",
"percent-encoding",
"predicates",
"rand 0.8.5",
"redis",
"regex",
"reqwest",
"retry",
"ring",
"rouille",
"semver",
"serde",
"serde_derive",
"serde_json",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"serial_test",
"sha-1",
"sha2",
"strip-ansi-escapes",
"syslog",
"tar",
"tempfile",
"thirtyfour_sync",
"tokio",
"tokio-serde",
"tokio-util 0.7.3",
"toml",
"tower",
"url",
"uuid",
"version-compare",
"void",
2020-07-14 13:14:02 +03:00
"walkdir",
"which",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
"wiremock",
"zip",
"zstd",
]
2017-12-05 16:32:33 +03:00
[[package]]
name = "schannel"
2020-06-11 04:40:05 +03:00
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-06-11 04:40:05 +03:00
checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
dependencies = [
"lazy_static",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "security-framework"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc"
dependencies = [
2020-04-28 07:55:50 +03:00
"bitflags",
"core-foundation",
"core-foundation-sys",
"libc",
"security-framework-sys",
]
[[package]]
name = "security-framework-sys"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556"
dependencies = [
"core-foundation-sys",
2020-04-28 07:55:50 +03:00
"libc",
]
[[package]]
name = "semver"
2018-08-28 15:42:57 +03:00
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
dependencies = [
"semver-parser",
]
2018-08-28 15:42:57 +03:00
[[package]]
name = "semver-parser"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
2018-08-28 15:42:57 +03:00
[[package]]
name = "serde"
version = "1.0.138"
Move from protobuf to bincode for a wire format This commit migrates away from the `protobuf` crate to instead just working with bincode on the wire as a serialization format. This is done by leveraging a few different crates: * The `bincode` and `serde_derive` crates are used to define serialization for Rust structures as well as provide a bincode implementation. * The `tokio_io::codec::length_delimited` module implements framing via length prefixes to transform an asynchronous stream of bytes into a literal `Stream` of `BytesMut`. * The `tokio_serde_bincode` crate is then used to tie it all together, parsing these `BytesMut` as the request/response types of sccache. Most of the changes here are related to moving away from the protobuf API throughout the codebase (e.g. `has_foo` and `take_foo`) towards a more rustic-ish API that just uses enums/structs. Overall it felt quite natural (as one would expect) to just use the raw enum/struct values. This may not be quite as performant as before but that doesn't really apply to sccache's use case where perf is hugely dominated by actually compiling and hashing, so I'm not too too worried about that. My personal motivation for this is twofold: 1. Using `protobuf` was a little clunky throughout the codebase and definitely had some sharp edges that felt good to smooth out. 2. There's currently what I believe some mysterious segfault and/or stray write happening in sccache and I'm not sure where. The `protobuf` crate had a lot of `unsafe` code and in lieu of actually auditing it I figured it'd be good to kill two birds with one stone. I have no idea if this fixes my segfault problem (I never could reproduce it) but I figured it's worth a shot.
2017-03-22 20:21:52 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47"
dependencies = [
"serde_derive",
]
Move from protobuf to bincode for a wire format This commit migrates away from the `protobuf` crate to instead just working with bincode on the wire as a serialization format. This is done by leveraging a few different crates: * The `bincode` and `serde_derive` crates are used to define serialization for Rust structures as well as provide a bincode implementation. * The `tokio_io::codec::length_delimited` module implements framing via length prefixes to transform an asynchronous stream of bytes into a literal `Stream` of `BytesMut`. * The `tokio_serde_bincode` crate is then used to tie it all together, parsing these `BytesMut` as the request/response types of sccache. Most of the changes here are related to moving away from the protobuf API throughout the codebase (e.g. `has_foo` and `take_foo`) towards a more rustic-ish API that just uses enums/structs. Overall it felt quite natural (as one would expect) to just use the raw enum/struct values. This may not be quite as performant as before but that doesn't really apply to sccache's use case where perf is hugely dominated by actually compiling and hashing, so I'm not too too worried about that. My personal motivation for this is twofold: 1. Using `protobuf` was a little clunky throughout the codebase and definitely had some sharp edges that felt good to smooth out. 2. There's currently what I believe some mysterious segfault and/or stray write happening in sccache and I'm not sure where. The `protobuf` crate had a lot of `unsafe` code and in lieu of actually auditing it I figured it'd be good to kill two birds with one stone. I have no idea if this fixes my segfault problem (I never could reproduce it) but I figured it's worth a shot.
2017-03-22 20:21:52 +03:00
[[package]]
name = "serde_derive"
version = "1.0.138"
Move from protobuf to bincode for a wire format This commit migrates away from the `protobuf` crate to instead just working with bincode on the wire as a serialization format. This is done by leveraging a few different crates: * The `bincode` and `serde_derive` crates are used to define serialization for Rust structures as well as provide a bincode implementation. * The `tokio_io::codec::length_delimited` module implements framing via length prefixes to transform an asynchronous stream of bytes into a literal `Stream` of `BytesMut`. * The `tokio_serde_bincode` crate is then used to tie it all together, parsing these `BytesMut` as the request/response types of sccache. Most of the changes here are related to moving away from the protobuf API throughout the codebase (e.g. `has_foo` and `take_foo`) towards a more rustic-ish API that just uses enums/structs. Overall it felt quite natural (as one would expect) to just use the raw enum/struct values. This may not be quite as performant as before but that doesn't really apply to sccache's use case where perf is hugely dominated by actually compiling and hashing, so I'm not too too worried about that. My personal motivation for this is twofold: 1. Using `protobuf` was a little clunky throughout the codebase and definitely had some sharp edges that felt good to smooth out. 2. There's currently what I believe some mysterious segfault and/or stray write happening in sccache and I'm not sure where. The `protobuf` crate had a lot of `unsafe` code and in lieu of actually auditing it I figured it'd be good to kill two birds with one stone. I have no idea if this fixes my segfault problem (I never could reproduce it) but I figured it's worth a shot.
2017-03-22 20:21:52 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
dependencies = [
"indexmap",
"itoa 1.0.1",
"ryu",
"serde",
]
[[package]]
name = "serde_qs"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6"
dependencies = [
"percent-encoding",
"serde",
"thiserror",
]
[[package]]
name = "serde_repr"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
dependencies = [
"form_urlencoded",
"itoa 1.0.1",
"ryu",
"serde",
]
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
[[package]]
name = "serial_test"
version = "0.8.0"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7eec42e7232e5ca56aa59d63af3c7f991fe71ee6a3ddd2d3480834cf3902b007"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
dependencies = [
"futures",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"lazy_static",
"log",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"parking_lot",
"serial_test_derive",
]
[[package]]
name = "serial_test_derive"
version = "0.8.0"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b95bb2f4f624565e8fe8140c789af7e2082c0e0561b5a82a1b678baa9703dc"
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
dependencies = [
"proc-macro-error",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"proc-macro2",
"quote",
"rustversion",
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
"syn",
]
[[package]]
name = "sha-1"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest",
]
[[package]]
name = "sha1"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770"
dependencies = [
"sha1_smol",
]
[[package]]
name = "sha1_smol"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
[[package]]
name = "sha2"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures",
"digest",
]
2019-12-10 00:17:20 +03:00
[[package]]
name = "signal-hook-registry"
version = "1.4.0"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
dependencies = [
"libc",
]
[[package]]
name = "simple_asn1"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a762b1c38b9b990c694b9c2f8abe3372ce6a9ceaae6bca39cfc46e054f45745"
dependencies = [
"num-bigint",
"num-traits",
"thiserror",
"time 0.3.7",
]
[[package]]
name = "skeptic"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24ebf8a06f5f8bae61ae5bbc7af7aac4ef6907ae975130faba1199e5fe82256a"
dependencies = [
"pulldown-cmark",
"tempdir",
]
[[package]]
name = "slab"
version = "0.4.5"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
2019-12-10 00:17:20 +03:00
Parse env-deps from dep-info (#1107) * Refactor sccache cargo test - Improve cleanup by using Result instead of panicking, to ensure that the temporary folder gets cleaned up. Previously, when a test failed, no clean up would happen. Now the cleanup happens, unless there is an unexpected panic somewhere in the intergration test code. - this commit aims to make it easier to add new tests Split sccache cargo tests To make it clearer what is failing, split the cargo test into multiple tests. Since Sccache can't be invoked in parallel, we use the `serial_test` to serialize testing,otherwise cargo by default would start them in parallel. The logger is now also lazily initialized, so the first test to run will initialize it. It now writes a linebreak, because otherwise the output is hard to read with `RUST_LOG=debug cargo test --test sccache_cargo -- --nocapture`. We catch panics (which are not intended by the tests ) to ensure that the temporary directory for the test gets cleaned up. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> Remove panic=abort from CI coverage test I suspect the commandline was just taken like that from the example here: https://doc.rust-lang.org/stable/unstable-book/compiler-flags/profile.html However, there seems to be no reason to actually abort, since we don't have a custom test harness or anything. Since we want to catch panics, so we can correctly clean up, we need panic=unwind. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Parse env_deps from dep-info This will trigger rebuilds if environment variables changed that the rust code depended on with env!. On the Rust side this requires at least Rust 1.46, otherwise there will be no env-dep info in the dep-info file. In that case we cannot detect the dependency on the env-value, and behaviour is unchanged compared to the current sccache behaviour. With recent Rust versions however, we can trigger a rebuild if a variable that is referenced via env! or option_env! is changed. Other env variables like `CARGO_*` or `RUSTFLAGS` which may affect the compilation are not listed in the dep-info file, so they have to be blanket added (as is currently already the case). Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com> * Add test for cargo env_deps The previous commit added support for parsing "env_dep" information from dep_info files. This commit adds a test for changing an environment variable, that is referenced in rust code via env!, and asserts that sccache rebuilds and the rust code uses the new value of the changed environment variable. Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2022-03-02 00:21:36 +03:00
[[package]]
name = "smallvec"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
2018-01-07 18:33:04 +03:00
[[package]]
name = "socket2"
version = "0.4.4"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0"
dependencies = [
"libc",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "spin"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spin"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d"
dependencies = [
"lock_api",
]
[[package]]
name = "stringmatch"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8c0faab770316c3838f895fc2dfc3a8707ef4da48676f1014e1061ebd583b40"
dependencies = [
"regex",
]
[[package]]
name = "strip-ansi-escapes"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8"
dependencies = [
"vte",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "strsim"
2019-12-10 00:17:20 +03:00
version = "0.8.0"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
2016-05-12 22:03:37 +03:00
2020-12-08 08:07:09 +03:00
[[package]]
name = "subtle"
version = "2.4.1"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
2020-12-08 08:07:09 +03:00
[[package]]
name = "syn"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
Move from protobuf to bincode for a wire format This commit migrates away from the `protobuf` crate to instead just working with bincode on the wire as a serialization format. This is done by leveraging a few different crates: * The `bincode` and `serde_derive` crates are used to define serialization for Rust structures as well as provide a bincode implementation. * The `tokio_io::codec::length_delimited` module implements framing via length prefixes to transform an asynchronous stream of bytes into a literal `Stream` of `BytesMut`. * The `tokio_serde_bincode` crate is then used to tie it all together, parsing these `BytesMut` as the request/response types of sccache. Most of the changes here are related to moving away from the protobuf API throughout the codebase (e.g. `has_foo` and `take_foo`) towards a more rustic-ish API that just uses enums/structs. Overall it felt quite natural (as one would expect) to just use the raw enum/struct values. This may not be quite as performant as before but that doesn't really apply to sccache's use case where perf is hugely dominated by actually compiling and hashing, so I'm not too too worried about that. My personal motivation for this is twofold: 1. Using `protobuf` was a little clunky throughout the codebase and definitely had some sharp edges that felt good to smooth out. 2. There's currently what I believe some mysterious segfault and/or stray write happening in sccache and I'm not sure where. The `protobuf` crate had a lot of `unsafe` code and in lieu of actually auditing it I figured it'd be good to kill two birds with one stone. I have no idea if this fixes my segfault problem (I never could reproduce it) but I figured it's worth a shot.
2017-03-22 20:21:52 +03:00
[[package]]
name = "syslog"
version = "6.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978044cc68150ad5e40083c9f6a725e6fd02d7ba1bcf691ec2ff0d66c0b41acc"
dependencies = [
"error-chain",
"hostname",
"libc",
"log",
"time 0.3.7",
]
2018-04-12 04:25:15 +03:00
[[package]]
name = "tar"
version = "0.4.38"
2018-04-12 04:25:15 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6"
dependencies = [
"filetime",
"libc",
"xattr",
]
2018-04-12 04:25:15 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "tempdir"
version = "0.3.7"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
dependencies = [
"rand 0.4.6",
"remove_dir_all",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "tempfile"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
dependencies = [
"cfg-if 1.0.0",
"fastrand",
"libc",
"redox_syscall",
"remove_dir_all",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
[[package]]
name = "termcolor"
version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
dependencies = [
2020-04-28 07:55:50 +03:00
"winapi-util",
]
[[package]]
name = "termtree"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b"
2016-05-12 22:03:37 +03:00
[[package]]
2018-01-07 18:33:04 +03:00
name = "textwrap"
2019-12-10 00:17:20 +03:00
version = "0.11.0"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
dependencies = [
"unicode-width",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "thirtyfour"
version = "0.27.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ac2540aff94b9f8d89a94bb5d8cc5e71560f78ee8f6c953cd31469083c61f6d"
dependencies = [
"async-trait",
"base64",
"chrono",
"displaydoc",
"futures",
"log",
"reqwest",
"serde",
"serde_json",
"serde_repr",
"stringmatch",
"thiserror",
"tokio",
"urlparse",
]
[[package]]
name = "thirtyfour_sync"
version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab1e47e6c2fed609d851c6f6171a559ecffb1d121f2d6e02dd390e90ea2c3d38"
dependencies = [
"base64",
"log",
"reqwest",
"serde",
"serde_json",
"stringmatch",
"thirtyfour",
]
[[package]]
name = "thiserror"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "threadpool"
2020-06-11 04:40:05 +03:00
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-06-11 04:40:05 +03:00
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
dependencies = [
"num_cpus",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "time"
version = "0.1.43"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "time"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d"
dependencies = [
"itoa 1.0.1",
"libc",
"num_threads",
"quickcheck",
"time-macros",
]
[[package]]
name = "time-macros"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25eb0ca3468fc0acc11828786797f6ef9aa1555e4a211a60d64cc8e4d1be47d6"
[[package]]
name = "tiny_http"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce51b50006056f590c9b7c3808c3bd70f0d1101666629713866c227d6e58d39"
dependencies = [
"ascii",
"chrono",
"chunked_transfer",
"log",
"openssl",
"url",
]
2020-12-08 08:07:09 +03:00
[[package]]
name = "tinyvec"
version = "1.5.1"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2"
2020-12-08 08:07:09 +03:00
dependencies = [
"tinyvec_macros",
]
[[package]]
name = "tinyvec_macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
version = "1.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439"
dependencies = [
"bytes",
2020-12-10 01:47:15 +03:00
"libc",
"memchr",
"mio",
"num_cpus",
"once_cell",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
"winapi 0.3.9",
2020-12-10 01:47:15 +03:00
]
[[package]]
name = "tokio-macros"
version = "1.7.0"
Rewrite the server module with Tokio This commit rewrites the `server` module of sccache to be backed with Tokio. The previous version was written with `mio`, which Tokio is built on, but is unfortunately less ergonomic. Tokio is the state-of-the-art for asynchronous programming in Rust and sccache serves as a great testing ground for ergonomics! It's intended that the support added here will eventually extend to many other operations that sccache does as well. For example thread spawning has all been replaced with `CpuPool` to have a shared pool for I/O operations and such (namely the filesystem). Eventually the HTTP requests made by the S3 backend can be integrated with the Tokio branch of Hyper as well to run that on the event loop instead of in a worker thread. I'd also like to eventually extend this with `tokio-process` as well to move process spawning off helper threads as well, but I'm leaving that to a future commit as well. Overall I found the transition was quite smooth, with the high level architecture look like: * The `tokio-proto` crate is used in streaming mode. The streaming part is used for the one RPC sccache gets which requires a second response to be sent later on. This second response is the "response body" in tokio-proto terms. * All of sccache's logic is manifested in an implementation of the `Service` trait. * The transport layer is provided with `tokio_core::io::{Framed, Codec}`, and simple deserialization/serialization is performed with protobuf. Some differences in design are: * The `SccacheService` for now is just a bunch of reference-counted pointers, making it cheap to clone. As the futures it returns progress they will each retain a reference to a cloned copy of the `SccacheService`. Before all this data was just stored and manipulated in a struct directly, but it's now directly managed through shared memory. * The storage backends share a thread pool with the main server instead of spawning threads. And finally, some things I've learned along the way: * Sharing data between futures isn't a trivial operation. It took an explicit decision to use `Rc` and I'm not sure I'm 100% happy with how the ergonomics played out. * Shutdown is pretty tricky here. I've tried to carry over all the previous logic but it definitely required not using `TcpServer` in tokio-proto at the very least, and otherwise required a few custom futures and such to track the various states. I have a hunch that tokio-proto could provide more options out of the box for something like this.
2017-01-31 04:04:03 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
Rewrite the server module with Tokio This commit rewrites the `server` module of sccache to be backed with Tokio. The previous version was written with `mio`, which Tokio is built on, but is unfortunately less ergonomic. Tokio is the state-of-the-art for asynchronous programming in Rust and sccache serves as a great testing ground for ergonomics! It's intended that the support added here will eventually extend to many other operations that sccache does as well. For example thread spawning has all been replaced with `CpuPool` to have a shared pool for I/O operations and such (namely the filesystem). Eventually the HTTP requests made by the S3 backend can be integrated with the Tokio branch of Hyper as well to run that on the event loop instead of in a worker thread. I'd also like to eventually extend this with `tokio-process` as well to move process spawning off helper threads as well, but I'm leaving that to a future commit as well. Overall I found the transition was quite smooth, with the high level architecture look like: * The `tokio-proto` crate is used in streaming mode. The streaming part is used for the one RPC sccache gets which requires a second response to be sent later on. This second response is the "response body" in tokio-proto terms. * All of sccache's logic is manifested in an implementation of the `Service` trait. * The transport layer is provided with `tokio_core::io::{Framed, Codec}`, and simple deserialization/serialization is performed with protobuf. Some differences in design are: * The `SccacheService` for now is just a bunch of reference-counted pointers, making it cheap to clone. As the futures it returns progress they will each retain a reference to a cloned copy of the `SccacheService`. Before all this data was just stored and manipulated in a struct directly, but it's now directly managed through shared memory. * The storage backends share a thread pool with the main server instead of spawning threads. And finally, some things I've learned along the way: * Sharing data between futures isn't a trivial operation. It took an explicit decision to use `Rc` and I'm not sure I'm 100% happy with how the ergonomics played out. * Shutdown is pretty tricky here. I've tried to carry over all the previous logic but it definitely required not using `TcpServer` in tokio-proto at the very least, and otherwise required a few custom futures and such to track the various states. I have a hunch that tokio-proto could provide more options out of the box for something like this.
2017-01-31 04:04:03 +03:00
[[package]]
name = "tokio-native-tls"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
dependencies = [
"native-tls",
"tokio",
]
Move from protobuf to bincode for a wire format This commit migrates away from the `protobuf` crate to instead just working with bincode on the wire as a serialization format. This is done by leveraging a few different crates: * The `bincode` and `serde_derive` crates are used to define serialization for Rust structures as well as provide a bincode implementation. * The `tokio_io::codec::length_delimited` module implements framing via length prefixes to transform an asynchronous stream of bytes into a literal `Stream` of `BytesMut`. * The `tokio_serde_bincode` crate is then used to tie it all together, parsing these `BytesMut` as the request/response types of sccache. Most of the changes here are related to moving away from the protobuf API throughout the codebase (e.g. `has_foo` and `take_foo`) towards a more rustic-ish API that just uses enums/structs. Overall it felt quite natural (as one would expect) to just use the raw enum/struct values. This may not be quite as performant as before but that doesn't really apply to sccache's use case where perf is hugely dominated by actually compiling and hashing, so I'm not too too worried about that. My personal motivation for this is twofold: 1. Using `protobuf` was a little clunky throughout the codebase and definitely had some sharp edges that felt good to smooth out. 2. There's currently what I believe some mysterious segfault and/or stray write happening in sccache and I'm not sure where. The `protobuf` crate had a lot of `unsafe` code and in lieu of actually auditing it I figured it'd be good to kill two birds with one stone. I have no idea if this fixes my segfault problem (I never could reproduce it) but I figured it's worth a shot.
2017-03-22 20:21:52 +03:00
[[package]]
name = "tokio-serde"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project",
]
[[package]]
name = "tokio-util"
version = "0.6.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"log",
"pin-project-lite",
"tokio",
]
[[package]]
name = "tokio-util"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
"tracing",
]
[[package]]
name = "toml"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
dependencies = [
"serde",
]
[[package]]
name = "tower"
version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
dependencies = [
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tower-layer"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62"
[[package]]
name = "tower-service"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
[[package]]
name = "tracing"
version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f"
dependencies = [
2020-12-08 08:07:09 +03:00
"cfg-if 1.0.0",
"log",
"pin-project-lite",
"tracing-core",
]
[[package]]
name = "tracing-core"
version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23"
dependencies = [
"lazy_static",
]
[[package]]
name = "try-lock"
2020-12-08 08:07:09 +03:00
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
[[package]]
name = "twoway"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1"
dependencies = [
"memchr",
]
[[package]]
name = "typenum"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "unicase"
2019-12-10 00:17:20 +03:00
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [
"version_check",
]
[[package]]
name = "unicode-bidi"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
[[package]]
name = "unicode-ident"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-normalization"
version = "0.1.19"
2017-04-05 17:42:06 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
dependencies = [
2020-12-08 08:07:09 +03:00
"tinyvec",
]
2017-04-05 17:42:06 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "unicode-width"
version = "0.1.9"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
2016-05-12 22:03:37 +03:00
[[package]]
name = "unix_socket"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6aa2700417c405c38f5e6902d699345241c28c0b7ade4abaad71e35a87eb1564"
dependencies = [
2020-12-08 08:07:09 +03:00
"cfg-if 0.1.10",
"libc",
]
[[package]]
name = "untrusted"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
2016-05-12 22:03:37 +03:00
[[package]]
2019-12-10 00:17:20 +03:00
name = "url"
version = "2.2.2"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
dependencies = [
2020-12-08 08:07:09 +03:00
"form_urlencoded",
"idna",
"matches",
"percent-encoding",
"serde",
]
2016-05-12 22:03:37 +03:00
[[package]]
name = "urlparse"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "110352d4e9076c67839003c7788d8604e24dcded13e0b375af3efaa8cf468517"
[[package]]
name = "utf8parse"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372"
[[package]]
name = "uuid"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
dependencies = [
"getrandom 0.2.5",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "vcpkg"
version = "0.2.15"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
2018-01-07 18:33:04 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "vec_map"
2020-06-11 04:40:05 +03:00
version = "0.8.2"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-06-11 04:40:05 +03:00
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
2016-05-12 22:03:37 +03:00
[[package]]
name = "version-compare"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73"
2018-01-07 18:33:04 +03:00
[[package]]
name = "version_check"
version = "0.9.4"
2019-12-10 00:17:20 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
2019-12-10 00:17:20 +03:00
[[package]]
name = "void"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
[[package]]
name = "vte"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
dependencies = [
"arrayvec 0.5.2",
"utf8parse",
"vte_generate_state_changes",
]
[[package]]
name = "vte_generate_state_changes"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
dependencies = [
"proc-macro2",
"quote",
]
[[package]]
name = "wait-timeout"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
dependencies = [
"libc",
]
[[package]]
name = "waker-fn"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
[[package]]
name = "walkdir"
version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
dependencies = [
2020-07-14 13:14:02 +03:00
"same-file",
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
"winapi-util",
]
[[package]]
name = "want"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
dependencies = [
"log",
"try-lock",
]
[[package]]
name = "wasi"
2020-04-28 07:55:50 +03:00
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
2020-12-08 08:07:09 +03:00
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
2020-12-08 08:07:09 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
2020-12-08 08:07:09 +03:00
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"
dependencies = [
"bumpalo",
"lazy_static",
"log",
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
dependencies = [
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
[[package]]
name = "web-sys"
version = "0.3.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"
dependencies = [
"js-sys",
"wasm-bindgen",
]
2016-07-14 13:38:26 +03:00
[[package]]
name = "which"
version = "4.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
dependencies = [
"either",
"lazy_static",
"libc",
]
2016-07-14 13:38:26 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "winapi"
version = "0.2.8"
2016-05-12 22:03:37 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
2016-05-12 22:03:37 +03:00
2018-01-07 18:33:04 +03:00
[[package]]
name = "winapi"
2020-12-08 08:07:09 +03:00
version = "0.3.9"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-12-08 08:07:09 +03:00
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
2018-01-07 18:33:04 +03:00
2016-05-12 22:03:37 +03:00
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
2016-05-12 22:03:37 +03:00
2018-01-07 18:33:04 +03:00
[[package]]
name = "winapi-i686-pc-windows-gnu"
2018-02-01 18:29:23 +03:00
version = "0.4.0"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
2018-01-07 18:33:04 +03:00
[[package]]
name = "winapi-util"
2020-04-28 07:55:50 +03:00
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
2020-04-28 07:55:50 +03:00
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
2020-12-08 08:07:09 +03:00
"winapi 0.3.9",
]
2018-01-07 18:33:04 +03:00
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
2018-02-01 18:29:23 +03:00
version = "0.4.0"
2018-01-07 18:33:04 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
2018-01-07 18:33:04 +03:00
[[package]]
name = "windows-sys"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
dependencies = [
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_msvc"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
[[package]]
name = "windows_i686_gnu"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
[[package]]
name = "windows_i686_msvc"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
[[package]]
name = "windows_x86_64_gnu"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
[[package]]
name = "windows_x86_64_msvc"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
[[package]]
name = "winreg"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
dependencies = [
"winapi 0.3.9",
]
[[package]]
name = "wiremock"
version = "0.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b12f508bdca434a55d43614d26f02e6b3e98ebeecfbc5a1614e0a0c8bf3e315"
dependencies = [
"assert-json-diff",
"async-trait",
"deadpool",
"futures",
"futures-timer",
"http-types",
"hyper",
"log",
"once_cell",
"regex",
"serde",
"serde_json",
"tokio",
]
2018-04-12 04:25:15 +03:00
[[package]]
name = "xattr"
version = "0.2.2"
2018-04-12 04:25:15 +03:00
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c"
dependencies = [
"libc",
]
2018-04-12 04:25:15 +03:00
[[package]]
name = "zip"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf225bcf73bb52cbb496e70475c7bd7a3f769df699c0020f6c7bd9a96dcf0b8d"
dependencies = [
2020-12-08 08:07:09 +03:00
"byteorder",
"crc32fast",
"crossbeam-utils",
]
[[package]]
name = "zstd"
version = "0.11.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "5.0.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
dependencies = [
"libc",
"zstd-sys",
]
[[package]]
name = "zstd-sys"
version = "2.0.1+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b"
dependencies = [
"cc",
"libc",
]