From 56baa6090dfa335d2a8a24696bcd0be1c6398b3c Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Wed, 7 Sep 2022 15:09:07 +0200 Subject: [PATCH 01/15] Add profiling --- .github/workflows/build.yml | 37 +- Cargo.lock | 919 ++++++++++++++------- Cargo.toml | 8 +- scripts/build-in-docker.sh | 5 +- src/commands/debug_files/bundle_sources.rs | 4 + src/commands/debug_files/check.rs | 5 + src/commands/debug_files/find.rs | 6 + src/commands/debug_files/upload.rs | 10 +- src/commands/mod.rs | 21 +- 9 files changed, 706 insertions(+), 309 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 40bcae116d..8f43732459 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,10 +35,20 @@ jobs: env: TARGET: ${{ matrix.target }} DOCKER_TAG: ${{ matrix.container }} + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + - name: Rename Binary run: mv target/*/release/sentry-cli sentry-cli-Linux-${{ matrix.arch }} + - name: Upload Symbols + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: sentry-cli-Linux-${{ matrix.arch }} upload-dif sentry-cli-Linux-${{ matrix.arch }} --org --project + + - name: Strip Symbols from Binary + run: strip sentry-cli-Linux-${{ matrix.arch }} + - uses: actions/upload-artifact@v2 with: name: ${{ github.sha }} @@ -68,16 +78,35 @@ jobs: target: ${{ matrix.target }} profile: minimal override: true + components: rust-src - - name: Run Cargo Build - uses: actions-rs/cargo@v1 + - name: Install Nightly Toolchain + uses: actions-rs/toolchain@v1 with: - command: build - args: --target=${{ matrix.target }} --release --locked + toolchain: nightly + target: ${{ matrix.target }} + profile: minimal + components: rust-src + + - name: Build with Frame Pointer + env: + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + shell: bash + run: | + cargo +nightly run -Z build-std --target ${{ matrix.target }} + RUSTFLAGS="-C force-frame-pointers=yes" cargo build --release --target=${{ matrix.target }} --locked - name: Rename Binary run: mv target/${{ matrix.target }}/release/sentry-cli sentry-cli-Darwin-${{ matrix.arch }} + - name: Upload Symbols + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + run: sentry-cli-Darwin-${{ matrix.arch }} upload-dif sentry-cli-Darwin-${{ matrix.arch }} --org sentry --project sentry-cli + + - name: Strip Symbols from Binary + run: strip sentry-cli-Darwin-${{ matrix.arch }} + - uses: actions/upload-artifact@v2 with: name: ${{ github.sha }} diff --git a/Cargo.lock b/Cargo.lock index b320354c81..9975314c79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,10 +33,10 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cipher", "cpufeatures", - "opaque-debug 0.3.0", + "opaque-debug", ] [[package]] @@ -52,18 +52,27 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" dependencies = [ "memchr", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" -version = "1.0.58" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" +checksum = "b9a8f622bcf6ff3df478e9deba3e03e4e04b300f8e6a139e192c05fa3490afc7" dependencies = [ "backtrace", ] @@ -97,11 +106,23 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +[[package]] +name = "as-slice" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" +dependencies = [ + "generic-array 0.12.4", + "generic-array 0.13.3", + "generic-array 0.14.6", + "stable_deref_trait", +] + [[package]] name = "assert-json-diff" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f1c3703dd33532d7f0ca049168930e9099ecac238e23cf932f3a69c42f06da" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" dependencies = [ "serde", "serde_json", @@ -137,25 +158,19 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" dependencies = [ "addr2line", "cc", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - [[package]] name = "base64" version = "0.13.0" @@ -168,6 +183,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" +[[package]] +name = "binary-merge" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597bb81c80a54b6a4381b23faba8d7774b144c94cbd1d6fe3f1329bd776554ab" + [[package]] name = "bitflags" version = "1.3.2" @@ -176,9 +197,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitvec" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", @@ -199,32 +220,11 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - -[[package]] -name = "block-buffer" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" -dependencies = [ - "generic-array 0.14.5", -] - -[[package]] -name = "block-padding" -version = "0.1.5" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" dependencies = [ - "byte-tools", + "generic-array 0.14.6", ] [[package]] @@ -269,10 +269,23 @@ dependencies = [ ] [[package]] -name = "byte-tools" -version = "0.3.1" +name = "build_id" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6deb6795d8b4d2269c3fcf87a87bff9f4cd45a99e259806603ee8007077daf3" +dependencies = [ + "byteorder", + "once_cell", + "palaver", + "twox-hash", + "uuid 0.8.2", +] + +[[package]] +name = "bumpalo" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" [[package]] name = "byteorder" @@ -282,9 +295,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" [[package]] name = "bzip2" @@ -316,6 +329,12 @@ dependencies = [ "jobserver", ] +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + [[package]] name = "cfg-if" version = "1.0.0" @@ -330,15 +349,17 @@ checksum = "1a48563284b67c003ba0fb7243c87fab68885e1532c605704228a80238512e31" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" dependencies = [ - "libc", + "iana-time-zone", + "js-sys", "num-integer", "num-traits", "serde", "time 0.1.44", + "wasm-bindgen", "winapi 0.3.9", ] @@ -348,14 +369,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", ] [[package]] name = "clap" -version = "3.2.7" +version = "3.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7b16274bb247b45177db843202209b12191b631a14a9d06e41b3777d6ecf14" +checksum = "23b71c3ce99b7611011217b366d923f1d0a7e07a92bb2dbf1e84508c673ca3bd" dependencies = [ "bitflags", "clap_lex", @@ -387,9 +408,9 @@ dependencies = [ [[package]] name = "combine" -version = "4.6.4" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" dependencies = [ "bytes", "memchr", @@ -414,14 +435,13 @@ checksum = "d6417fe6fc03a8b533fd2177742eeb39a90c7233eedec7bac96d4d6b69a09449" [[package]] name = "console" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28b32d32ca44b70c3e4acd7db1babf555fa026e385fb95f18028f88848b3c31" +checksum = "89eab4d20ce20cea182308bca13088fecea9c05f6776cf287205d41a0ed3c847" dependencies = [ "encode_unicode", "libc", "once_cell", - "regex", "terminal_size", "unicode-width", "winapi 0.3.9", @@ -442,11 +462,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] @@ -457,38 +483,38 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] name = "crossbeam-channel" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" dependencies = [ "autocfg", - "cfg-if", + "cfg-if 1.0.0", "crossbeam-utils", "memoffset", "once_cell", @@ -497,21 +523,21 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", ] [[package]] name = "crypto-common" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.5", + "generic-array 0.14.6", "typenum", ] @@ -539,9 +565,9 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d855aeef205b43f65a5001e0997d81f8efca7badad4fad7d897aa7f0d0651f" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" dependencies = [ "curl-sys", "libc", @@ -554,9 +580,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.55+curl-7.83.1" +version = "0.4.57+curl-7.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23734ec77368ec583c2e61dd3f0b0e5c98b93abe6d2a004ca06b91dd7e3e2762" +checksum = "c2f5c209fdc3b856c446c52a1f9e90db20ea2b1bbbbd60bc18239174fa6eae70" dependencies = [ "cc", "libc", @@ -574,7 +600,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ "serde", - "uuid", + "uuid 1.1.2", ] [[package]] @@ -583,22 +609,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - [[package]] name = "digest" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ - "block-buffer 0.10.2", + "block-buffer", "crypto-common", "subtle", ] @@ -660,9 +677,9 @@ checksum = "453440c271cf5577fd2a40e4942540cb7d0d2f85e27c8d07dd0023c925a67541" [[package]] name = "either" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "elementtree" @@ -674,6 +691,15 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "elsa" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b4b5d23ed6b6948d68240aafa4ac98e568c9a020efd9d4201a6288bc3006e09" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "encode_unicode" version = "0.3.6" @@ -753,12 +779,6 @@ dependencies = [ "backtrace", ] -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - [[package]] name = "fallible-iterator" version = "0.2.0" @@ -767,22 +787,34 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" dependencies = [ "instant", ] [[package]] name = "filetime" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.2.16", + "windows-sys", +] + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", "libc", - "redox_syscall 0.2.13", "winapi 0.3.9", ] @@ -838,9 +870,18 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -852,7 +893,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -863,19 +904,18 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" dependencies = [ "fallible-iterator", - "indexmap", "stable_deref_trait", ] @@ -913,24 +953,45 @@ dependencies = [ [[package]] name = "goblin" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfeb764aa29a0774d290c2df134a37ab2e3c1ba59009162626658aabefda321a" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" dependencies = [ "log", "plain", "scroll 0.11.0", ] +[[package]] +name = "hash32" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] +[[package]] +name = "heapless" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74911a68a1658cfcfb61bc0ccfbd536e3b6e906f8c2f7883ee50157e3e2184f1" +dependencies = [ + "as-slice", + "generic-array 0.13.3", + "hash32", + "stable_deref_trait", +] + [[package]] name = "hermit-abi" version = "0.1.19" @@ -952,14 +1013,14 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.3", + "digest", ] [[package]] name = "httparse" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -983,6 +1044,20 @@ dependencies = [ "serde", ] +[[package]] +name = "iana-time-zone" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c495f162af0bf17656d0014a0eded5f3cd2f365fdd204548c2869db89359dc7" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "js-sys", + "once_cell", + "wasm-bindgen", + "winapi 0.3.9", +] + [[package]] name = "idna" version = "0.2.3" @@ -1046,20 +1121,29 @@ dependencies = [ "regex", ] +[[package]] +name = "inplace-vec-builder" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf64c2edc8226891a71f127587a2861b132d2b942310843814d5001d99a1d307" +dependencies = [ + "smallvec", +] + [[package]] name = "insta" -version = "1.15.0" +version = "1.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4126dd76ebfe2561486a1bd6738a33d2029ffb068a99ac446b7f8c77b2e58dbc" +checksum = "fc61e98be01e89296f3343a878e9f8ca75a494cb5aaf29df65ef55734aeb85f5" dependencies = [ "console", + "linked-hash-map", "once_cell", "pest", "pest_derive", "serde", - "serde_json", - "serde_yaml", "similar", + "yaml-rust", ] [[package]] @@ -1068,7 +1152,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1088,9 +1172,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "java-properties" @@ -1118,6 +1202,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1132,9 +1225,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.126" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libgit2-sys" @@ -1177,9 +1270,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "lock_api" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" dependencies = [ "autocfg", "scopeguard", @@ -1191,7 +1284,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1204,10 +1297,13 @@ dependencies = [ ] [[package]] -name = "maplit" -version = "1.0.2" +name = "mach" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] [[package]] name = "matches" @@ -1215,6 +1311,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +[[package]] +name = "maybe-owned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" + [[package]] name = "memchr" version = "2.5.0" @@ -1223,9 +1325,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5172b50c23043ff43dd53e51392f36519d9b35a8f3a410d30ece5d1aedd58ae" +checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" dependencies = [ "libc", ] @@ -1257,9 +1359,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" dependencies = [ "adler", ] @@ -1288,6 +1390,36 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" +[[package]] +name = "nix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + +[[package]] +name = "nix" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "libc", +] + +[[package]] +name = "nom" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf51a729ecf40266a2368ad335a5fdde43471f545a967109cd62146ecf8b66ff" + [[package]] name = "nom" version = "7.1.1" @@ -1308,7 +1440,7 @@ dependencies = [ "indent_write", "joinery", "memchr", - "nom", + "nom 7.1.1", ] [[package]] @@ -1363,25 +1495,18 @@ checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" [[package]] name = "object" -version = "0.28.4" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" dependencies = [ - "flate2", "memchr", ] [[package]] name = "once_cell" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" [[package]] name = "opaque-debug" @@ -1391,9 +1516,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "open" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360bcc8316bf6363aa3954c3ccc4de8add167b087e0259190a043c9514f910fe" +checksum = "f23a407004a1033f53e93f9b45580d14de23928faad187384f891507c9b0c045" dependencies = [ "pathdiff", "windows-sys", @@ -1416,9 +1541,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.74" +version = "0.9.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" dependencies = [ "autocfg", "cc", @@ -1450,9 +1575,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.1.0" +version = "6.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" [[package]] name = "osascript" @@ -1465,6 +1590,23 @@ dependencies = [ "serde_json", ] +[[package]] +name = "palaver" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49dfc200733ac34dcd9a1e4a7e454b521723936010bef3710e2d8024a32d685f" +dependencies = [ + "bitflags", + "heapless", + "lazy_static", + "libc", + "mach", + "nix 0.15.0", + "procinfo", + "typenum", + "winapi 0.3.9", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -1481,9 +1623,9 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.13", + "redox_syscall 0.2.16", "smallvec", "windows-sys", ] @@ -1511,7 +1653,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271779f35b581956db91a3e55737327a03aa051e90b1c47aeb189508533adfd7" dependencies = [ - "digest 0.10.3", + "digest", "hmac", "password-hash", "sha2", @@ -1525,7 +1667,21 @@ checksum = "82040a392923abe6279c00ab4aff62d5250d1c8555dc780e4b02783a7aa74863" dependencies = [ "fallible-iterator", "scroll 0.11.0", - "uuid", + "uuid 1.1.2", +] + +[[package]] +name = "pdb-addr2line" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f35bfde893b961482493f7828cd01693cf18179475efa8cc557db21c4824cc" +dependencies = [ + "bitflags", + "elsa", + "maybe-owned", + "pdb", + "range-collections", + "thiserror", ] [[package]] @@ -1536,18 +1692,19 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pest" -version = "2.1.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4" dependencies = [ + "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" +checksum = "905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91" dependencies = [ "pest", "pest_generator", @@ -1555,9 +1712,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.1.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" +checksum = "5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad" dependencies = [ "pest", "pest_meta", @@ -1568,11 +1725,11 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.1.3" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" +checksum = "1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04" dependencies = [ - "maplit", + "once_cell", "pest", "sha-1", ] @@ -1586,6 +1743,12 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + [[package]] name = "pkg-config" version = "0.3.25" @@ -1604,14 +1767,34 @@ version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225" dependencies = [ - "base64 0.13.0", + "base64", "indexmap", "line-wrap", "serde", - "time 0.3.11", + "time 0.3.14", "xml-rs", ] +[[package]] +name = "pprof" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6472bfed9475542ac46c518734a8d06d71b0f6cb2c17f904aa301711a57786f" +dependencies = [ + "backtrace", + "cfg-if 1.0.0", + "findshlibs", + "libc", + "log", + "nix 0.24.2", + "once_cell", + "parking_lot", + "smallvec", + "symbolic-demangle", + "tempfile", + "thiserror", +] + [[package]] name = "ppv-lite86" version = "0.2.16" @@ -1660,13 +1843,25 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] +[[package]] +name = "procinfo" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab1427f3d2635891f842892dda177883dca0639e05fe66796a62c9d2f23b49c" +dependencies = [ + "byteorder", + "libc", + "nom 2.2.1", + "rustc_version", +] + [[package]] name = "proguard" version = "5.0.0" @@ -1674,14 +1869,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea52ab74a4eeffa17e7ab1fefd1416bd49e88afe8d214cdc164efef1bde4525" dependencies = [ "lazy_static", - "uuid", + "uuid 1.1.2", ] [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -1733,6 +1928,17 @@ dependencies = [ "getrandom 0.2.7", ] +[[package]] +name = "range-collections" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61fdfd79629e2b44a1d34b4d227957174cb858e6b86ee45fad114edbcfc903ab" +dependencies = [ + "binary-merge", + "inplace-vec-builder", + "smallvec", +] + [[package]] name = "rayon" version = "1.5.3" @@ -1765,9 +1971,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] @@ -1790,15 +1996,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.7", - "redox_syscall 0.2.13", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.5.6" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "aho-corasick", "memchr", @@ -1813,9 +2019,9 @@ checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] name = "remove_dir_all" @@ -1842,7 +2048,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ - "base64 0.13.0", + "base64", "blake2b_simd", "constant_time_eq", "crossbeam-utils", @@ -1854,7 +2060,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "ordered-multimap", ] @@ -1875,9 +2081,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "safemem" @@ -1970,9 +2176,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d92beeab217753479be2f74e54187a6aed4c125ff0703a866c3147a02f0c6dd" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" [[package]] name = "semver-parser" @@ -1983,8 +2189,7 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73642819e7fa63eb264abc818a2f65ac8764afbe4870b5ee25bcecc491be0d4c" +source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" dependencies = [ "curl", "httpdate", @@ -1995,8 +2200,7 @@ dependencies = [ [[package]] name = "sentry-anyhow" version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d3479158a7396b4dfd346a1944d523427a225ff3c39102e8e985bc21cdfea8" +source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" dependencies = [ "anyhow", "sentry-backtrace", @@ -2006,8 +2210,7 @@ dependencies = [ [[package]] name = "sentry-backtrace" version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49bafa55eefc6dbc04c7dac91e8c8ab9e89e9414f3193c105cabd991bbc75134" +source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" dependencies = [ "backtrace", "once_cell", @@ -2063,7 +2266,7 @@ dependencies = [ "regex", "runas", "rust-ini", - "semver 1.0.11", + "semver 1.0.13", "sentry", "serde", "serde_json", @@ -2077,9 +2280,9 @@ dependencies = [ "unix-daemonize", "url", "username", - "uuid", + "uuid 1.1.2", "walkdir", - "which 4.2.5", + "which 4.3.0", "winapi 0.3.9", "zip", ] @@ -2087,21 +2290,24 @@ dependencies = [ [[package]] name = "sentry-core" version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a4591a2d128af73b1b819ab95f143bc6a2fbe48cd23a4c45e1ee32177e66ae6" +source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" dependencies = [ + "build_id", + "findshlibs", "once_cell", + "pprof", "rand", "sentry-types", "serde", "serde_json", + "sys-info", + "uuid 1.1.2", ] [[package]] name = "sentry-types" version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823923ae5f54a729159d720aa12181673044ee5c79cbda3be09e56f885e5468f" +source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" dependencies = [ "debugid", "getrandom 0.2.7", @@ -2109,25 +2315,25 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.11", + "time 0.3.14", "url", - "uuid", + "uuid 1.1.2", ] [[package]] name = "serde" -version = "1.0.137" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -2136,11 +2342,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" dependencies = [ - "itoa 1.0.2", + "itoa 1.0.3", "ryu", "serde", ] @@ -2152,44 +2358,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.2", - "ryu", - "serde", -] - -[[package]] -name = "serde_yaml" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707d15895415db6628332b737c838b88c598522e4dc70647e59b72312924aebc" -dependencies = [ - "indexmap", + "itoa 1.0.3", "ryu", "serde", - "yaml-rust", ] [[package]] name = "sha-1" -version = "0.8.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", + "cfg-if 1.0.0", + "cpufeatures", + "digest", ] [[package]] name = "sha1" -version = "0.10.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" +checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest", ] [[package]] @@ -2203,13 +2396,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest", ] [[package]] @@ -2239,9 +2432,9 @@ dependencies = [ [[package]] name = "similar" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e24979f63a11545f5f2c60141afe249d4f19f84581ea2138065e400941d83d3" +checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803" [[package]] name = "siphasher" @@ -2251,15 +2444,15 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "smallvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "snapbox" -version = "0.2.10" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767a1d5da232b6959cd1bd5c9e8db8a7cce09c3038e89deedb49a549a2aefd93" +checksum = "44d199ccf8f606592df2d145db26f2aa45344e23c64b074cc5a4047f1d99b0f7" dependencies = [ "concolor", "content_inspector", @@ -2277,15 +2470,15 @@ dependencies = [ [[package]] name = "snapbox-macros" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c01dea7e04cbb27ef4c86e9922184608185f7cd95c1763bc30d727cda4a5e930" +checksum = "8a253e6f894cfa440cba00600a249fa90869d8e0ec45ab274a456e043a0ce8f2" [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi 0.3.9", @@ -2293,11 +2486,11 @@ dependencies = [ [[package]] name = "sourcemap" -version = "6.0.2" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ca89636b276071e7276488131f531dbf43ad1c19bc4bd5a04f6a0ce1ddc138" +checksum = "58ad6f449ac2dc2eaa01e766408b76b55fc0a20c842b63aa11a8448caa72f50b" dependencies = [ - "base64 0.11.0", + "base64", "if_chain", "lazy_static", "regex", @@ -2314,6 +2507,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "string_cache" version = "0.8.4" @@ -2342,9 +2541,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "symbolic" -version = "9.0.0" +version = "9.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfa96ac23f7d031f3c10a7ac9a6365938e78c0dae68721cd205350eaf051521" +checksum = "88dc71d44a86d4ae9e3c9b6d36c6c3664f19afe1b863f1563548c69969596b43" dependencies = [ "symbolic-common", "symbolic-debuginfo", @@ -2354,36 +2553,37 @@ dependencies = [ [[package]] name = "symbolic-common" -version = "9.0.0" +version = "9.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea2ab8b85d27d49d184438b4b77fbd521b385cc9c5c802f60e784f2df25a03d" +checksum = "3e555b2c3ebd97b963c8a3e94ce5e5137ba42da4a26687f81c700d8de1c997f0" dependencies = [ "debugid", "memmap2", "serde", "stable_deref_trait", - "uuid", + "uuid 1.1.2", ] [[package]] name = "symbolic-debuginfo" -version = "9.0.0" +version = "9.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae53696d978c5b188348a1c20137b2ea70627cc600b4857bad5bd0492cfbf27" +checksum = "5be6fd1cf9ae6cbcc162b19199da2e2e10e9944d58bf8e32226eeadbad5303de" dependencies = [ "bitvec", "dmsort", "elementtree", + "elsa", "fallible-iterator", "flate2", "gimli", "goblin", "lazy_static", "lazycell", - "nom", + "nom 7.1.1", "nom-supreme", "parking_lot", - "pdb", + "pdb-addr2line", "regex", "scroll 0.11.0", "serde", @@ -2395,28 +2595,33 @@ dependencies = [ "zip", ] +[[package]] +name = "symbolic-demangle" +version = "9.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71a1425bccf0a24c68c9faea6c4f1f84b4865a3dd5976454d8a796c80216e38a" +dependencies = [ + "rustc-demangle", + "symbolic-common", +] + [[package]] name = "symbolic-il2cpp" -version = "9.0.0" +version = "9.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "376a4d1201b9895d899fdaa15e6687dfb541e5914a347211dab134f3522b1c57" +checksum = "179a82ef0b185eaf8c97dccd32859c299eefd4ff3c9c48da7f002e6b211e07d7" dependencies = [ - "anyhow", - "gimli", "indexmap", - "object", - "scroll 0.11.0", "serde_json", "symbolic-common", "symbolic-debuginfo", - "thiserror", ] [[package]] name = "symbolic-symcache" -version = "9.0.0" +version = "9.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2d7059fe1d882df610339240489a64b947c3d48e87637dc7cf5d66aa561aab" +checksum = "362385aa2245eeb8ebbe0391c45bb929a53d1cdf37c09564500472f86a6c0dc8" dependencies = [ "dmsort", "fnv", @@ -2425,19 +2630,30 @@ dependencies = [ "symbolic-debuginfo", "symbolic-il2cpp", "thiserror", + "tracing", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sys-info" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -2450,10 +2666,10 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fastrand", "libc", - "redox_syscall 0.2.13", + "redox_syscall 0.2.16", "remove_dir_all", "winapi 0.3.9", ] @@ -2490,18 +2706,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "8c1b05ca9d106ba7d2e31a9dab4a64e7be2cce415321966ea3132c49a656e252" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "e8f2591983642de85c921015f3f070c665a197ed69e417af436115e3a1407487" dependencies = [ "proc-macro2", "quote", @@ -2530,11 +2746,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.11" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" dependencies = [ - "itoa 1.0.2", + "itoa 1.0.3", "libc", "num_threads", "time-macros", @@ -2573,11 +2789,43 @@ dependencies = [ "serde", ] +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + [[package]] name = "trycmd" -version = "0.13.4" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4185126cc904642173a54c185083f410c86d1202ada6761aacf7c40829f13" +checksum = "9ac9fa73959e252e7c5a4e6260544b952f5bf3989e0b7ad229f4fd6f14671b02" dependencies = [ "glob", "humantime", @@ -2589,6 +2837,16 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if 1.0.0", + "static_assertions", +] + [[package]] name = "typenum" version = "1.15.0" @@ -2597,9 +2855,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "ucd-trie" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "unicode-bidi" @@ -2609,15 +2867,15 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] @@ -2639,13 +2897,12 @@ dependencies = [ [[package]] name = "url" -version = "2.2.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", "serde", ] @@ -2660,6 +2917,12 @@ dependencies = [ "winapi 0.2.8", ] +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + [[package]] name = "uuid" version = "1.1.2" @@ -2683,6 +2946,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "wait-timeout" version = "0.2.0" @@ -2721,11 +2990,65 @@ 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.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + [[package]] name = "wasmparser" -version = "0.84.0" +version = "0.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77dc97c22bb5ce49a47b745bed8812d30206eff5ef3af31424f2c1820c0974b2" +checksum = "570460c58b21e9150d2df0eaaedbb7816c34bcec009ae0dcc976e40ba81463e7" dependencies = [ "indexmap", ] @@ -2742,13 +3065,13 @@ dependencies = [ [[package]] name = "which" -version = "4.2.5" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae" +checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" dependencies = [ "either", - "lazy_static", "libc", + "once_cell", ] [[package]] @@ -2883,7 +3206,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.11", + "time 0.3.14", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index 77bc1f37e6..00af132029 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ regex = "1.5.6" runas = "0.2.1" rust-ini = "0.18.0" semver = "1.0.11" -sentry = { version = "0.27.0", default-features = false, features = ["anyhow", "curl"] } +sentry = { git = "https://github.com/getsentry/sentry-rust", version = "0.27.0", default-features = false, features = ["anyhow", "curl"] } serde = { version = "1.0.137", features = ["derive"] } serde_json = "1.0.81" sha1_smol = { version = "1.0.0", features = ["serde"] } @@ -80,12 +80,13 @@ mac-process-info = "0.2.0" osascript = "0.3.0" unix-daemonize = "0.1.2" -[target."cfg(unix)"] +#[target.'cfg(target_family = "unix")'] -[target."cfg(unix)".dependencies] +[target.'cfg(target_family = "unix")'.dependencies] openssl-probe = "0.1.5" signal-hook = "0.3.14" crossbeam-channel = "0.5.5" +sentry = { git = "https://github.com/getsentry/sentry-rust", version = "0.27.0", default-features = false, features = ["anyhow", "curl", "profiling", "frame-pointer"] } [target."cfg(windows)"] @@ -95,3 +96,4 @@ winapi = "0.3.9" [profile.release] opt-level = 3 panic = "abort" +debug = true diff --git a/scripts/build-in-docker.sh b/scripts/build-in-docker.sh index 89be5cc25d..c00871bb07 100755 --- a/scripts/build-in-docker.sh +++ b/scripts/build-in-docker.sh @@ -15,7 +15,10 @@ DOCKER_RUN_OPTS=" docker run \ ${DOCKER_RUN_OPTS} \ - cargo build --release --target=${TARGET} --locked + /bin/bash -c "rustup toolchain install nightly; + rustup component add rust-src --toolchain nightly; + cargo +nightly run -Z build-std --target ${TARGET}; + RUSTFLAGS=\"-C force-frame-pointers=yes\" cargo build --release --target=${TARGET} --locked" # Smoke test (but only when building from the same repo). # $TRAVIS_PULL_REQUEST_SLUG is set either to head repo slug, or to "" when diff --git a/src/commands/debug_files/bundle_sources.rs b/src/commands/debug_files/bundle_sources.rs index e9270d4433..f220955d90 100644 --- a/src/commands/debug_files/bundle_sources.rs +++ b/src/commands/debug_files/bundle_sources.rs @@ -67,6 +67,9 @@ fn get_canonical_path>(path: P) -> Result { } pub fn execute(matches: &ArgMatches) -> Result<()> { + let tx_ctx = sentry::TransactionContext::new("bundle_sources", "create source bundle for debug file"); + let transaction = sentry::start_transaction(tx_ctx); + let output_path = matches.value_of("output").map(Path::new); for orig_path in matches.values_of("paths").unwrap() { @@ -118,6 +121,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { } } } + transaction.finish(); Ok(()) } diff --git a/src/commands/debug_files/check.rs b/src/commands/debug_files/check.rs index 572bbed04f..c7dbbeff50 100644 --- a/src/commands/debug_files/check.rs +++ b/src/commands/debug_files/check.rs @@ -40,6 +40,9 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { + let tx_ctx = sentry::TransactionContext::new("check_files", "check which debug information files can be used by sentry"); + let transaction = sentry::start_transaction(tx_ctx); + let path = Path::new(matches.value_of("path").unwrap()); // which types should we consider? @@ -89,9 +92,11 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { if let Some(prob) = dif.get_problem() { println!(" Usable: {} ({})", style("no").red(), prob); + transaction.finish(); Err(QuietExit(1).into()) } else { println!(" Usable: {}", style("yes").green()); + transaction.finish(); Ok(()) } } diff --git a/src/commands/debug_files/find.rs b/src/commands/debug_files/find.rs index 6591fe8e0b..fb4c85ef3d 100644 --- a/src/commands/debug_files/find.rs +++ b/src/commands/debug_files/find.rs @@ -316,6 +316,9 @@ fn extract_remaining_ids( } pub fn execute(matches: &ArgMatches) -> Result<()> { + let tx_ctx = sentry::TransactionContext::new("locate_debug_file", "locate debug information files"); + let transaction = sentry::start_transaction(tx_ctx); + let mut paths = HashSet::new(); let mut types = HashSet::new(); let mut ids = HashSet::new(); @@ -370,12 +373,15 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { ids.insert(id.parse().unwrap()); } } else { + transaction.finish(); return Ok(()); } if !find_ids(&paths, &types, &ids, matches.is_present("json"))? { + transaction.finish(); return Err(QuietExit(1).into()); } + transaction.finish(); Ok(()) } diff --git a/src/commands/debug_files/upload.rs b/src/commands/debug_files/upload.rs index cb243bddfa..cd4df6e50a 100644 --- a/src/commands/debug_files/upload.rs +++ b/src/commands/debug_files/upload.rs @@ -170,6 +170,9 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { + let tx_ctx = sentry::TransactionContext::new("upload_debug_file", "upload debugging information files"); + let transaction = sentry::start_transaction(tx_ctx); + let config = Config::current(); let (org, project) = config.get_org_and_project(matches)?; @@ -316,18 +319,23 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { for id in missing_ids { println!(" {}", id); } - + + transaction.finish(); return Err(QuietExit(1).into()); } } + + // report a non 0 status code if the server encountered issues. if has_processing_errors { eprintln!(); eprintln!("{}", style("Error: some symbols did not process correctly")); + transaction.finish(); return Err(QuietExit(1).into()); } + transaction.finish(); Ok(()) }) } diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 6d681fe249..59dcbb63bf 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -2,6 +2,7 @@ use std::env; use std::process; +use std::time::{Duration}; use anyhow::{bail, Result}; use clap::{Arg, ArgMatches, Command}; @@ -9,7 +10,7 @@ use log::{debug, info, set_logger, set_max_level, LevelFilter}; use crate::api::Api; use crate::config::{Auth, Config}; -use crate::constants::{ARCH, PLATFORM, VERSION}; +use crate::constants::{ARCH, PLATFORM, VERSION, USER_AGENT}; use crate::utils::logging::set_quiet_mode; use crate::utils::logging::Logger; use crate::utils::system::{init_backtrace, load_dotenv, print_error, QuietExit}; @@ -247,7 +248,23 @@ pub fn execute() -> Result<()> { .join(" ") ); - run_command(&matches) + let _guard = sentry::init(( + env!("SENTRY_DSN").to_string(), + sentry::ClientOptions { + release: sentry::release_name!(), + user_agent: USER_AGENT.into(), + traces_sample_rate: 0.1, + enable_profiling: true, + profiles_sample_rate: 1.0, + ..Default::default() + }, + )); + + let res = run_command(&matches); + + _guard.flush(Some(Duration::from_secs(2))); + + res } fn setup() { From 92de5cb72da3fde0a4770f7eab96601be62ac8bd Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 13 Sep 2022 11:11:27 +0200 Subject: [PATCH 02/15] Lower the traces_sample_rate to 0.01 --- src/commands/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 59dcbb63bf..d444673d98 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -253,7 +253,7 @@ pub fn execute() -> Result<()> { sentry::ClientOptions { release: sentry::release_name!(), user_agent: USER_AGENT.into(), - traces_sample_rate: 0.1, + traces_sample_rate: 0.01, enable_profiling: true, profiles_sample_rate: 1.0, ..Default::default() From 60f1e228e3d26d0fb989c4d7375376b0c2266fc8 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 13 Sep 2022 16:40:33 +0200 Subject: [PATCH 03/15] Fix formatting --- src/commands/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index d444673d98..fbc89efaf4 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -2,7 +2,7 @@ use std::env; use std::process; -use std::time::{Duration}; +use std::time::Duration; use anyhow::{bail, Result}; use clap::{Arg, ArgMatches, Command}; @@ -10,7 +10,7 @@ use log::{debug, info, set_logger, set_max_level, LevelFilter}; use crate::api::Api; use crate::config::{Auth, Config}; -use crate::constants::{ARCH, PLATFORM, VERSION, USER_AGENT}; +use crate::constants::{ARCH, PLATFORM, USER_AGENT, VERSION}; use crate::utils::logging::set_quiet_mode; use crate::utils::logging::Logger; use crate::utils::system::{init_backtrace, load_dotenv, print_error, QuietExit}; From d5ea8e00b540125e2ef29a65b2f251318a38f2a4 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 13 Sep 2022 16:58:18 +0200 Subject: [PATCH 04/15] Pass SENTRY_DSN env variable to Lint job --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40df9a658b..d8db51e6dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,8 @@ jobs: - name: Run Clippy uses: actions-rs/cargo@v1 + env: + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} with: command: clippy args: --workspace --all-features --tests -- -D clippy::all From ee45b8ad0ab896234e27421e60948bfbd2b4b8ea Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 13 Sep 2022 17:15:32 +0200 Subject: [PATCH 05/15] Fix build.yml and ci.yml --- .github/workflows/build.yml | 2 ++ .github/workflows/ci.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f43732459..e368ee2bcf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -156,6 +156,8 @@ jobs: - name: Run Cargo Build uses: actions-rs/cargo@v1 + env: + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} with: command: build args: --release --locked diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8db51e6dc..c2eefb72db 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,8 @@ jobs: - name: Run Cargo Tests uses: actions-rs/cargo@v1 + env: + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} with: command: test args: --all From ef44cbbef93c32c8e57b8a0f8d1eb10870ebcb80 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 13 Sep 2022 17:26:28 +0200 Subject: [PATCH 06/15] Set traces_sample_rate to 5% --- src/commands/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index fbc89efaf4..2967df4445 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -253,7 +253,7 @@ pub fn execute() -> Result<()> { sentry::ClientOptions { release: sentry::release_name!(), user_agent: USER_AGENT.into(), - traces_sample_rate: 0.01, + traces_sample_rate: 0.05, enable_profiling: true, profiles_sample_rate: 1.0, ..Default::default() From 1f6a18a06beabdd280adcd68cc150663f1ea84f9 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Thu, 22 Sep 2022 17:56:09 +0200 Subject: [PATCH 07/15] Fix org and project name --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e368ee2bcf..c867344f9a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - name: Upload Symbols env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - run: sentry-cli-Linux-${{ matrix.arch }} upload-dif sentry-cli-Linux-${{ matrix.arch }} --org --project + run: sentry-cli-Linux-${{ matrix.arch }} upload-dif sentry-cli-Linux-${{ matrix.arch }} --org sentry --project sentry-cli - name: Strip Symbols from Binary run: strip sentry-cli-Linux-${{ matrix.arch }} From 2259fb17b66f342b364b02c213710eb0f6f39254 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Fri, 23 Sep 2022 11:49:12 +0200 Subject: [PATCH 08/15] Wraps command in a closure to make sure the transaction ends regardless of the results. Also: remove explicit flush as by default the 2 seconds flush is already provided by the drop implementation. --- src/commands/debug_files/bundle_sources.rs | 95 +++---- src/commands/debug_files/check.rs | 97 ++++---- src/commands/debug_files/find.rs | 108 ++++---- src/commands/debug_files/upload.rs | 272 +++++++++++---------- src/commands/mod.rs | 7 +- 5 files changed, 296 insertions(+), 283 deletions(-) diff --git a/src/commands/debug_files/bundle_sources.rs b/src/commands/debug_files/bundle_sources.rs index f220955d90..88d0dd9a72 100644 --- a/src/commands/debug_files/bundle_sources.rs +++ b/src/commands/debug_files/bundle_sources.rs @@ -70,58 +70,63 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let tx_ctx = sentry::TransactionContext::new("bundle_sources", "create source bundle for debug file"); let transaction = sentry::start_transaction(tx_ctx); - let output_path = matches.value_of("output").map(Path::new); + let command = || -> Result<()>{ - for orig_path in matches.values_of("paths").unwrap() { - let canonical_path = get_canonical_path(orig_path)?; + let output_path = matches.value_of("output").map(Path::new); - let archive = match DifFile::open_path(&canonical_path, None)? { - DifFile::Archive(archive) => archive, - _ => { - warn!("Cannot build source bundles from {}", orig_path); - continue; - } - }; - - // At this point we can be sure that we're dealing with a file - let parent_path = get_sane_parent(&canonical_path); - let filename = canonical_path.file_name().unwrap(); + for orig_path in matches.values_of("paths").unwrap() { + let canonical_path = get_canonical_path(orig_path)?; - for (index, object) in archive.get().objects().enumerate() { - let object = object?; - if object.has_sources() { - eprintln!("skipped {} (no source info)", orig_path); - continue; - } - - let mut out = output_path.unwrap_or(parent_path).join(filename); - match index { - 0 => out.set_extension("src.zip"), - index => out.set_extension(&format!("{}.src.zip", index)), + let archive = match DifFile::open_path(&canonical_path, None)? { + DifFile::Archive(archive) => archive, + _ => { + warn!("Cannot build source bundles from {}", orig_path); + continue; + } }; - fs::create_dir_all(out.parent().unwrap())?; - let writer = SourceBundleWriter::create(&out)?; - - // Resolve source files from the object and write their contents into the archive. Skip to - // upload this bundle if no source could be written. This can happen if there is no file or - // line information in the object file, or if none of the files could be resolved. - let written = writer.write_object_with_filter( - &object, - &filename.to_string_lossy(), - filter_bad_sources, - )?; - - if !written { - eprintln!("skipped {} (no files found)", orig_path); - fs::remove_file(&out)?; - continue; - } else { - println!("{}", out.display()); + // At this point we can be sure that we're dealing with a file + let parent_path = get_sane_parent(&canonical_path); + let filename = canonical_path.file_name().unwrap(); + + for (index, object) in archive.get().objects().enumerate() { + let object = object?; + if object.has_sources() { + eprintln!("skipped {} (no source info)", orig_path); + continue; + } + + let mut out = output_path.unwrap_or(parent_path).join(filename); + match index { + 0 => out.set_extension("src.zip"), + index => out.set_extension(&format!("{}.src.zip", index)), + }; + + fs::create_dir_all(out.parent().unwrap())?; + let writer = SourceBundleWriter::create(&out)?; + + // Resolve source files from the object and write their contents into the archive. Skip to + // upload this bundle if no source could be written. This can happen if there is no file or + // line information in the object file, or if none of the files could be resolved. + let written = writer.write_object_with_filter( + &object, + &filename.to_string_lossy(), + filter_bad_sources, + )?; + + if !written { + eprintln!("skipped {} (no files found)", orig_path); + fs::remove_file(&out)?; + continue; + } else { + println!("{}", out.display()); + } } } - } + Ok(()) + }; + let command_result = command(); transaction.finish(); - Ok(()) + command_result } diff --git a/src/commands/debug_files/check.rs b/src/commands/debug_files/check.rs index c7dbbeff50..0b6f3c3e9a 100644 --- a/src/commands/debug_files/check.rs +++ b/src/commands/debug_files/check.rs @@ -43,60 +43,65 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let tx_ctx = sentry::TransactionContext::new("check_files", "check which debug information files can be used by sentry"); let transaction = sentry::start_transaction(tx_ctx); - let path = Path::new(matches.value_of("path").unwrap()); + let command = || -> Result<()>{ + let path = Path::new(matches.value_of("path").unwrap()); - // which types should we consider? - let ty = matches.value_of("type").map(|t| t.parse().unwrap()); - let dif = DifFile::open_path(path, ty)?; + // which types should we consider? + let ty = matches.value_of("type").map(|t| t.parse().unwrap()); + let dif = DifFile::open_path(path, ty)?; - if matches.is_present("json") { - serde_json::to_writer_pretty(&mut io::stdout(), &dif)?; - println!(); - } + if matches.is_present("json") { + serde_json::to_writer_pretty(&mut io::stdout(), &dif)?; + println!(); + } - if matches.is_present("json") || is_quiet_mode() { - return if dif.is_usable() { - Ok(()) - } else { - Err(QuietExit(1).into()) - }; - } + if matches.is_present("json") || is_quiet_mode() { + return if dif.is_usable() { + Ok(()) + } else { + Err(QuietExit(1).into()) + }; + } - println!("{}", style("Debug Info File Check").dim().bold()); - match dif.kind() { - Some(class) => println!( - " Type: {} {:#}", - style(dif.ty()).cyan(), - style(class).cyan() - ), - None => println!(" Type: {}", style(dif.ty()).cyan()), - } + println!("{}", style("Debug Info File Check").dim().bold()); + match dif.kind() { + Some(class) => println!( + " Type: {} {:#}", + style(dif.ty()).cyan(), + style(class).cyan() + ), + None => println!(" Type: {}", style(dif.ty()).cyan()), + } - println!(" Contained debug identifiers:"); - for variant in dif.variants() { - println!(" > Debug ID: {}", style(variant.debug_id).dim()); - if let Some(code_id) = variant.code_id { - println!(" Code ID: {}", style(code_id).dim()); + println!(" Contained debug identifiers:"); + for variant in dif.variants() { + println!(" > Debug ID: {}", style(variant.debug_id).dim()); + if let Some(code_id) = variant.code_id { + println!(" Code ID: {}", style(code_id).dim()); + } + if let Some(arch) = variant.arch { + println!(" Arch: {}", style(arch).dim()); + } } - if let Some(arch) = variant.arch { - println!(" Arch: {}", style(arch).dim()); + + println!(" Contained debug information:"); + println!(" > {}", dif.features()); + + if let Some(msg) = dif.get_note() { + println!(" Note: {}", msg); } - } - println!(" Contained debug information:"); - println!(" > {}", dif.features()); + if let Some(prob) = dif.get_problem() { + println!(" Usable: {} ({})", style("no").red(), prob); + Err(QuietExit(1).into()) + } else { + println!(" Usable: {}", style("yes").green()); + Ok(()) + } + }; - if let Some(msg) = dif.get_note() { - println!(" Note: {}", msg); - } + let command_result = command(); + transaction.finish(); - if let Some(prob) = dif.get_problem() { - println!(" Usable: {} ({})", style("no").red(), prob); - transaction.finish(); - Err(QuietExit(1).into()) - } else { - println!(" Usable: {}", style("yes").green()); - transaction.finish(); - Ok(()) - } + command_result } diff --git a/src/commands/debug_files/find.rs b/src/commands/debug_files/find.rs index fb4c85ef3d..47a6ebc0a1 100644 --- a/src/commands/debug_files/find.rs +++ b/src/commands/debug_files/find.rs @@ -319,69 +319,73 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let tx_ctx = sentry::TransactionContext::new("locate_debug_file", "locate debug information files"); let transaction = sentry::start_transaction(tx_ctx); - let mut paths = HashSet::new(); - let mut types = HashSet::new(); - let mut ids = HashSet::new(); - - // which types should we consider? - if let Some(t) = matches.values_of("types") { - for ty in t { - types.insert(ty.parse().unwrap()); + let command = || -> Result<()> { + let mut paths = HashSet::new(); + let mut types = HashSet::new(); + let mut ids = HashSet::new(); + + // which types should we consider? + if let Some(t) = matches.values_of("types") { + for ty in t { + types.insert(ty.parse().unwrap()); + } + } else { + types.insert(DifType::Dsym); + types.insert(DifType::Pdb); + types.insert(DifType::Pe); + types.insert(DifType::Proguard); + types.insert(DifType::SourceBundle); + types.insert(DifType::Breakpad); } - } else { - types.insert(DifType::Dsym); - types.insert(DifType::Pdb); - types.insert(DifType::Pe); - types.insert(DifType::Proguard); - types.insert(DifType::SourceBundle); - types.insert(DifType::Breakpad); - } - let with_well_known = !matches.is_present("no_well_known"); - let with_cwd = !matches.is_present("no_cwd"); + let with_well_known = !matches.is_present("no_well_known"); + let with_cwd = !matches.is_present("no_cwd"); + + // start adding well known locations + if_chain! { + if with_well_known; + if types.contains(&DifType::Dsym); + if let Some(path) = dirs::home_dir().map(|x| x.join("Library/Developer/Xcode/DerivedData")); + if path.is_dir(); + then { + paths.insert(path); + } + } - // start adding well known locations - if_chain! { - if with_well_known; - if types.contains(&DifType::Dsym); - if let Some(path) = dirs::home_dir().map(|x| x.join("Library/Developer/Xcode/DerivedData")); - if path.is_dir(); - then { - paths.insert(path); + // current folder if wanted + if_chain! { + if with_cwd; + if let Ok(path) = env::current_dir(); + then { + paths.insert(path); + } } - } - // current folder if wanted - if_chain! { - if with_cwd; - if let Ok(path) = env::current_dir(); - then { - paths.insert(path); + // extra paths + if let Some(p) = matches.values_of("paths") { + for path in p { + paths.insert(PathBuf::from(path)); + } } - } - // extra paths - if let Some(p) = matches.values_of("paths") { - for path in p { - paths.insert(PathBuf::from(path)); + // which ids are we looking for? + if let Some(i) = matches.values_of("ids") { + for id in i { + ids.insert(id.parse().unwrap()); + } + } else { + return Ok(()); } - } - // which ids are we looking for? - if let Some(i) = matches.values_of("ids") { - for id in i { - ids.insert(id.parse().unwrap()); + if !find_ids(&paths, &types, &ids, matches.is_present("json"))? { + return Err(QuietExit(1).into()); } - } else { - transaction.finish(); - return Ok(()); - } - if !find_ids(&paths, &types, &ids, matches.is_present("json"))? { - transaction.finish(); - return Err(QuietExit(1).into()); - } + Ok(()) + }; + let command_result = command(); transaction.finish(); - Ok(()) + + command_result } diff --git a/src/commands/debug_files/upload.rs b/src/commands/debug_files/upload.rs index cd4df6e50a..2977077d2e 100644 --- a/src/commands/debug_files/upload.rs +++ b/src/commands/debug_files/upload.rs @@ -173,169 +173,173 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { let tx_ctx = sentry::TransactionContext::new("upload_debug_file", "upload debugging information files"); let transaction = sentry::start_transaction(tx_ctx); - let config = Config::current(); - let (org, project) = config.get_org_and_project(matches)?; + let command = || -> Result<()> { + let config = Config::current(); + let (org, project) = config.get_org_and_project(matches)?; - let ids = matches - .values_of("ids") - .unwrap_or_default() - .filter_map(|s| DebugId::from_str(s).ok()); + let ids = matches + .values_of("ids") + .unwrap_or_default() + .filter_map(|s| DebugId::from_str(s).ok()); - info!( - "Issuing a command for Organization: {} Project: {}", - org, project - ); + info!( + "Issuing a command for Organization: {} Project: {}", + org, project + ); - // Build generic upload parameters - let mut upload = DifUpload::new(org.clone(), project.clone()); - upload - .wait(matches.is_present("wait")) - .search_paths(matches.values_of("paths").unwrap_or_default()) - .allow_zips(!matches.is_present("no_zips")) - .filter_ids(ids); + // Build generic upload parameters + let mut upload = DifUpload::new(org.clone(), project.clone()); + upload + .wait(matches.is_present("wait")) + .search_paths(matches.values_of("paths").unwrap_or_default()) + .allow_zips(!matches.is_present("no_zips")) + .filter_ids(ids); - // Restrict symbol types, if specified by the user - for ty in matches.values_of("types").unwrap_or_default() { - match ty { - "dsym" => upload.filter_format(DifFormat::Object(FileFormat::MachO)), - "elf" => upload.filter_format(DifFormat::Object(FileFormat::Elf)), - "breakpad" => upload.filter_format(DifFormat::Object(FileFormat::Breakpad)), - "pdb" => upload.filter_format(DifFormat::Object(FileFormat::Pdb)), - "pe" => upload.filter_format(DifFormat::Object(FileFormat::Pe)), - "sourcebundle" => upload.filter_format(DifFormat::Object(FileFormat::SourceBundle)), - "bcsymbolmap" => { - upload.filter_format(DifFormat::BcSymbolMap); - upload.filter_format(DifFormat::PList) - } - other => bail!("Unsupported type: {}", other), - }; - } + // Restrict symbol types, if specified by the user + for ty in matches.values_of("types").unwrap_or_default() { + match ty { + "dsym" => upload.filter_format(DifFormat::Object(FileFormat::MachO)), + "elf" => upload.filter_format(DifFormat::Object(FileFormat::Elf)), + "breakpad" => upload.filter_format(DifFormat::Object(FileFormat::Breakpad)), + "pdb" => upload.filter_format(DifFormat::Object(FileFormat::Pdb)), + "pe" => upload.filter_format(DifFormat::Object(FileFormat::Pe)), + "sourcebundle" => upload.filter_format(DifFormat::Object(FileFormat::SourceBundle)), + "bcsymbolmap" => { + upload.filter_format(DifFormat::BcSymbolMap); + upload.filter_format(DifFormat::PList) + } + other => bail!("Unsupported type: {}", other), + }; + } - upload.filter_features(ObjectDifFeatures { - // Allow stripped debug symbols. These are dSYMs, ELF binaries generated - // with `objcopy --only-keep-debug` or Breakpad symbols. As a fallback, - // we also upload all files with a public symbol table. - debug: !matches.is_present("no_debug"), - symtab: !matches.is_present("no_debug"), - // Allow executables and dynamic/shared libraries, but not object files. - // They are guaranteed to contain unwind info, for instance `eh_frame`, - // and may optionally contain debugging information such as DWARF. - unwind: !matches.is_present("no_unwind"), - sources: !matches.is_present("no_sources"), - }); + upload.filter_features(ObjectDifFeatures { + // Allow stripped debug symbols. These are dSYMs, ELF binaries generated + // with `objcopy --only-keep-debug` or Breakpad symbols. As a fallback, + // we also upload all files with a public symbol table. + debug: !matches.is_present("no_debug"), + symtab: !matches.is_present("no_debug"), + // Allow executables and dynamic/shared libraries, but not object files. + // They are guaranteed to contain unwind info, for instance `eh_frame`, + // and may optionally contain debugging information such as DWARF. + unwind: !matches.is_present("no_unwind"), + sources: !matches.is_present("no_sources"), + }); - upload.include_sources(matches.is_present("include_sources")); - upload.il2cpp_mapping(matches.is_present("il2cpp_mapping")); + upload.include_sources(matches.is_present("include_sources")); + upload.il2cpp_mapping(matches.is_present("il2cpp_mapping")); - // Configure BCSymbolMap resolution, if possible - if let Some(symbol_map) = matches.value_of("symbol_maps") { - upload - .symbol_map(symbol_map) - .map_err(|_| format_err!("--symbol-maps requires Apple dsymutil to be available."))?; - } + // Configure BCSymbolMap resolution, if possible + if let Some(symbol_map) = matches.value_of("symbol_maps") { + upload + .symbol_map(symbol_map) + .map_err(|_| format_err!("--symbol-maps requires Apple dsymutil to be available."))?; + } - // Add a path to XCode's DerivedData, if configured - if matches.is_present("derived_data") { - let derived_data = dirs::home_dir().map(|x| x.join(DERIVED_DATA_FOLDER)); - if let Some(path) = derived_data { - if path.is_dir() { - upload.search_path(path); + // Add a path to XCode's DerivedData, if configured + if matches.is_present("derived_data") { + let derived_data = dirs::home_dir().map(|x| x.join(DERIVED_DATA_FOLDER)); + if let Some(path) = derived_data { + if path.is_dir() { + upload.search_path(path); + } } } - } - - // Try to resolve the Info.plist either by path or from Xcode - let info_plist = match matches.value_of("info_plist") { - Some(path) => Some(InfoPlist::from_path(path)?), - None => InfoPlist::discover_from_env()?, - }; - if matches.is_present("no_upload") { - println!("{} skipping upload.", style(">").dim()); - return Ok(()); - } + // Try to resolve the Info.plist either by path or from Xcode + let info_plist = match matches.value_of("info_plist") { + Some(path) => Some(InfoPlist::from_path(path)?), + None => InfoPlist::discover_from_env()?, + }; - MayDetach::wrap("Debug symbol upload", |handle| { - // Optionally detach if run from Xcode - if !matches.is_present("force_foreground") { - handle.may_detach()?; + if matches.is_present("no_upload") { + println!("{} skipping upload.", style(">").dim()); + return Ok(()); } - // Execute the upload - let (uploaded, has_processing_errors) = upload.upload()?; - let api = Api::current(); + MayDetach::wrap("Debug symbol upload", |handle| { + // Optionally detach if run from Xcode + if !matches.is_present("force_foreground") { + handle.may_detach()?; + } + + // Execute the upload + let (uploaded, has_processing_errors) = upload.upload()?; + let api = Api::current(); - // Associate the dSYMs with the Info.plist data, if available - if let Some(ref info_plist) = info_plist { - let progress_style = ProgressStyle::default_spinner() - .template("{spinner} Associating dSYMs with {msg}..."); + // Associate the dSYMs with the Info.plist data, if available + if let Some(ref info_plist) = info_plist { + let progress_style = ProgressStyle::default_spinner() + .template("{spinner} Associating dSYMs with {msg}..."); - let pb = ProgressBar::new_spinner(); - pb.enable_steady_tick(100); - pb.set_style(progress_style); - pb.set_message(&info_plist.to_string()); + let pb = ProgressBar::new_spinner(); + pb.enable_steady_tick(100); + pb.set_style(progress_style); + pb.set_message(&info_plist.to_string()); - let checksums = uploaded.iter().map(|dif| dif.checksum.clone()).collect(); - let response = api.associate_apple_dsyms(&org, &project, info_plist, checksums)?; - pb.finish_and_clear(); + let checksums = uploaded.iter().map(|dif| dif.checksum.clone()).collect(); + let response = api.associate_apple_dsyms(&org, &project, info_plist, checksums)?; + pb.finish_and_clear(); - if let Some(association) = response { - if association.associated_dsyms.is_empty() { - println!("{} No new debug symbols to associate.", style(">").dim()); + if let Some(association) = response { + if association.associated_dsyms.is_empty() { + println!("{} No new debug symbols to associate.", style(">").dim()); + } else { + println!( + "{} Associated {} debug symbols with the build.", + style(">").dim(), + style(association.associated_dsyms.len()).yellow() + ); + } } else { - println!( - "{} Associated {} debug symbols with the build.", - style(">").dim(), - style(association.associated_dsyms.len()).yellow() - ); + info!("Server does not support dSYM associations. Ignoring."); } - } else { - info!("Server does not support dSYM associations. Ignoring."); } - } - // Trigger reprocessing only if requested by user - if matches.is_present("no_reprocessing") { - println!("{} skipped reprocessing", style(">").dim()); - } else if !api.trigger_reprocessing(&org, &project)? { - println!("{} Server does not support reprocessing.", style(">").dim()); - } + // Trigger reprocessing only if requested by user + if matches.is_present("no_reprocessing") { + println!("{} skipped reprocessing", style(">").dim()); + } else if !api.trigger_reprocessing(&org, &project)? { + println!("{} Server does not support reprocessing.", style(">").dim()); + } - // Did we miss explicitly requested symbols? - if matches.is_present("require_all") { - let required_ids: BTreeSet<_> = matches - .values_of("ids") - .unwrap_or_default() - .filter_map(|s| DebugId::from_str(s).ok()) - .collect(); + // Did we miss explicitly requested symbols? + if matches.is_present("require_all") { + let required_ids: BTreeSet<_> = matches + .values_of("ids") + .unwrap_or_default() + .filter_map(|s| DebugId::from_str(s).ok()) + .collect(); - let found_ids = uploaded.into_iter().map(|dif| dif.id()).collect(); - let missing_ids: Vec<_> = required_ids.difference(&found_ids).collect(); + let found_ids = uploaded.into_iter().map(|dif| dif.id()).collect(); + let missing_ids: Vec<_> = required_ids.difference(&found_ids).collect(); - if !missing_ids.is_empty() { - eprintln!(); - eprintln!("{}", style("Error: Some symbols could not be found!").red()); - eprintln!("The following symbols are still missing:"); - for id in missing_ids { - println!(" {}", id); + if !missing_ids.is_empty() { + eprintln!(); + eprintln!("{}", style("Error: Some symbols could not be found!").red()); + eprintln!("The following symbols are still missing:"); + for id in missing_ids { + println!(" {}", id); + } + + return Err(QuietExit(1).into()); } - - transaction.finish(); + } + + + + // report a non 0 status code if the server encountered issues. + if has_processing_errors { + eprintln!(); + eprintln!("{}", style("Error: some symbols did not process correctly")); return Err(QuietExit(1).into()); } - } - + Ok(()) + }) + }; - // report a non 0 status code if the server encountered issues. - if has_processing_errors { - eprintln!(); - eprintln!("{}", style("Error: some symbols did not process correctly")); - transaction.finish(); - return Err(QuietExit(1).into()); - } + let command_result = command(); + transaction.finish(); - transaction.finish(); - Ok(()) - }) + command_result } diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 2967df4445..74e07ac261 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -2,7 +2,6 @@ use std::env; use std::process; -use std::time::Duration; use anyhow::{bail, Result}; use clap::{Arg, ArgMatches, Command}; @@ -260,11 +259,7 @@ pub fn execute() -> Result<()> { }, )); - let res = run_command(&matches); - - _guard.flush(Some(Duration::from_secs(2))); - - res + run_command(&matches) } fn setup() { From 29fc3a5ca7b977f92f5e817278f2faf3f70bf64f Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Fri, 23 Sep 2022 14:42:00 +0200 Subject: [PATCH 09/15] Makes profiling integration optional --- .github/workflows/build.yml | 2 +- Cargo.toml | 3 ++- scripts/build-in-docker.sh | 2 +- src/commands/debug_files/bundle_sources.rs | 7 +++++-- src/commands/debug_files/check.rs | 7 +++++-- src/commands/debug_files/find.rs | 7 +++++-- src/commands/debug_files/upload.rs | 7 +++++-- src/commands/mod.rs | 5 +++-- 8 files changed, 27 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c867344f9a..810c16997d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -94,7 +94,7 @@ jobs: shell: bash run: | cargo +nightly run -Z build-std --target ${{ matrix.target }} - RUSTFLAGS="-C force-frame-pointers=yes" cargo build --release --target=${{ matrix.target }} --locked + RUSTFLAGS="-C force-frame-pointers=yes" cargo build --release --target=${{ matrix.target }} --features "profiling" --locked - name: Rename Binary run: mv target/${{ matrix.target }}/release/sentry-cli sentry-cli-Darwin-${{ matrix.arch }} diff --git a/Cargo.toml b/Cargo.toml index 00af132029..894a862558 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ trycmd = "0.13.4" default = [] managed = [] with_crash_reporting = [] +profiling = ["sentry"] [target] @@ -86,7 +87,7 @@ unix-daemonize = "0.1.2" openssl-probe = "0.1.5" signal-hook = "0.3.14" crossbeam-channel = "0.5.5" -sentry = { git = "https://github.com/getsentry/sentry-rust", version = "0.27.0", default-features = false, features = ["anyhow", "curl", "profiling", "frame-pointer"] } +sentry = { git = "https://github.com/getsentry/sentry-rust", version = "0.27.0", default-features = false, optional = true, features = ["anyhow", "curl", "profiling", "frame-pointer"] } [target."cfg(windows)"] diff --git a/scripts/build-in-docker.sh b/scripts/build-in-docker.sh index c00871bb07..dc2ba431bf 100755 --- a/scripts/build-in-docker.sh +++ b/scripts/build-in-docker.sh @@ -18,7 +18,7 @@ docker run \ /bin/bash -c "rustup toolchain install nightly; rustup component add rust-src --toolchain nightly; cargo +nightly run -Z build-std --target ${TARGET}; - RUSTFLAGS=\"-C force-frame-pointers=yes\" cargo build --release --target=${TARGET} --locked" + RUSTFLAGS=\"-C force-frame-pointers=yes\" cargo build --release --target=${TARGET} --features \"profiling\" --locked" # Smoke test (but only when building from the same repo). # $TRAVIS_PULL_REQUEST_SLUG is set either to head repo slug, or to "" when diff --git a/src/commands/debug_files/bundle_sources.rs b/src/commands/debug_files/bundle_sources.rs index 88d0dd9a72..85986e0ca2 100644 --- a/src/commands/debug_files/bundle_sources.rs +++ b/src/commands/debug_files/bundle_sources.rs @@ -67,8 +67,10 @@ fn get_canonical_path>(path: P) -> Result { } pub fn execute(matches: &ArgMatches) -> Result<()> { - let tx_ctx = sentry::TransactionContext::new("bundle_sources", "create source bundle for debug file"); - let transaction = sentry::start_transaction(tx_ctx); + #[cfg(feature = "profiling")] + let transaction = sentry::start_transaction( + sentry::TransactionContext::new("bundle_sources", "create source bundle for debug file") + ); let command = || -> Result<()>{ @@ -126,6 +128,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { Ok(()) }; let command_result = command(); + #[cfg(feature = "profiling")] transaction.finish(); command_result diff --git a/src/commands/debug_files/check.rs b/src/commands/debug_files/check.rs index 0b6f3c3e9a..bc06a37e11 100644 --- a/src/commands/debug_files/check.rs +++ b/src/commands/debug_files/check.rs @@ -40,8 +40,10 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { - let tx_ctx = sentry::TransactionContext::new("check_files", "check which debug information files can be used by sentry"); - let transaction = sentry::start_transaction(tx_ctx); + #[cfg(feature = "profiling")] + let transaction = sentry::start_transaction( + sentry::TransactionContext::new("check_files", "check which debug information files can be used by sentry") + ); let command = || -> Result<()>{ let path = Path::new(matches.value_of("path").unwrap()); @@ -101,6 +103,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { }; let command_result = command(); + #[cfg(feature = "profiling")] transaction.finish(); command_result diff --git a/src/commands/debug_files/find.rs b/src/commands/debug_files/find.rs index 47a6ebc0a1..c9e64371ae 100644 --- a/src/commands/debug_files/find.rs +++ b/src/commands/debug_files/find.rs @@ -316,8 +316,10 @@ fn extract_remaining_ids( } pub fn execute(matches: &ArgMatches) -> Result<()> { - let tx_ctx = sentry::TransactionContext::new("locate_debug_file", "locate debug information files"); - let transaction = sentry::start_transaction(tx_ctx); + #[cfg(feature = "profiling")] + let transaction = sentry::start_transaction( + sentry::TransactionContext::new("locate_debug_file", "locate debug information files") + ); let command = || -> Result<()> { let mut paths = HashSet::new(); @@ -385,6 +387,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { }; let command_result = command(); + #[cfg(feature = "profiling")] transaction.finish(); command_result diff --git a/src/commands/debug_files/upload.rs b/src/commands/debug_files/upload.rs index 2977077d2e..ab9dc39382 100644 --- a/src/commands/debug_files/upload.rs +++ b/src/commands/debug_files/upload.rs @@ -170,8 +170,10 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { - let tx_ctx = sentry::TransactionContext::new("upload_debug_file", "upload debugging information files"); - let transaction = sentry::start_transaction(tx_ctx); + #[cfg(feature = "profiling")] + let transaction = sentry::start_transaction( + sentry::TransactionContext::new("upload_debug_file", "upload debugging information files") + ); let command = || -> Result<()> { let config = Config::current(); @@ -339,6 +341,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { }; let command_result = command(); + #[cfg(feature = "profiling")] transaction.finish(); command_result diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 74e07ac261..9b1be9d484 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -9,7 +9,7 @@ use log::{debug, info, set_logger, set_max_level, LevelFilter}; use crate::api::Api; use crate::config::{Auth, Config}; -use crate::constants::{ARCH, PLATFORM, USER_AGENT, VERSION}; +use crate::constants::{ARCH, PLATFORM, VERSION}; use crate::utils::logging::set_quiet_mode; use crate::utils::logging::Logger; use crate::utils::system::{init_backtrace, load_dotenv, print_error, QuietExit}; @@ -247,11 +247,12 @@ pub fn execute() -> Result<()> { .join(" ") ); + #[cfg(feature = "profiling")] let _guard = sentry::init(( env!("SENTRY_DSN").to_string(), sentry::ClientOptions { release: sentry::release_name!(), - user_agent: USER_AGENT.into(), + user_agent: crate::constants::USER_AGENT.into(), traces_sample_rate: 0.05, enable_profiling: true, profiles_sample_rate: 1.0, From e1ba39768886d1dfcdea731cadf56aee18bb9563 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Fri, 23 Sep 2022 16:20:38 +0200 Subject: [PATCH 10/15] Fixes yaml linting error --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 894a862558..38c7e7a120 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ which = "4.2.5" zip = "0.6.2" [dev-dependencies] -insta = { version = "1.15.0", features = ["redactions"] } +insta = { version = "1.15.0", features = ["redactions", "yaml"] } mockito = "0.31.0" predicates = "2.1.1" tempfile = "3.3.0" From d8f7114c952957219f4be9f1350035239cdf34a4 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 27 Sep 2022 14:10:04 +0200 Subject: [PATCH 11/15] Revert execute functions. Unwrap execute functions from the closures and instrument the execute function in debug_files/mod.rs instead --- Cargo.lock | 10 +- src/commands/debug_files/bundle_sources.rs | 101 ++++---- src/commands/debug_files/check.rs | 101 ++++---- src/commands/debug_files/find.rs | 113 ++++----- src/commands/debug_files/mod.rs | 12 +- src/commands/debug_files/upload.rs | 275 ++++++++++----------- 6 files changed, 285 insertions(+), 327 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9975314c79..d4dd0975ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2189,7 +2189,7 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" version = "0.27.0" -source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" +source = "git+https://github.com/getsentry/sentry-rust#a433f638c872be73c773bda7c30c4fd1b2395c03" dependencies = [ "curl", "httpdate", @@ -2200,7 +2200,7 @@ dependencies = [ [[package]] name = "sentry-anyhow" version = "0.27.0" -source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" +source = "git+https://github.com/getsentry/sentry-rust#a433f638c872be73c773bda7c30c4fd1b2395c03" dependencies = [ "anyhow", "sentry-backtrace", @@ -2210,7 +2210,7 @@ dependencies = [ [[package]] name = "sentry-backtrace" version = "0.27.0" -source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" +source = "git+https://github.com/getsentry/sentry-rust#a433f638c872be73c773bda7c30c4fd1b2395c03" dependencies = [ "backtrace", "once_cell", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "sentry-core" version = "0.27.0" -source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" +source = "git+https://github.com/getsentry/sentry-rust#a433f638c872be73c773bda7c30c4fd1b2395c03" dependencies = [ "build_id", "findshlibs", @@ -2307,7 +2307,7 @@ dependencies = [ [[package]] name = "sentry-types" version = "0.27.0" -source = "git+https://github.com/getsentry/sentry-rust#bb81c88d308213c6b9ebfdd19cedd4cf444e7795" +source = "git+https://github.com/getsentry/sentry-rust#a433f638c872be73c773bda7c30c4fd1b2395c03" dependencies = [ "debugid", "getrandom 0.2.7", diff --git a/src/commands/debug_files/bundle_sources.rs b/src/commands/debug_files/bundle_sources.rs index 85986e0ca2..cdbda87a40 100644 --- a/src/commands/debug_files/bundle_sources.rs +++ b/src/commands/debug_files/bundle_sources.rs @@ -67,69 +67,56 @@ fn get_canonical_path>(path: P) -> Result { } pub fn execute(matches: &ArgMatches) -> Result<()> { - #[cfg(feature = "profiling")] - let transaction = sentry::start_transaction( - sentry::TransactionContext::new("bundle_sources", "create source bundle for debug file") - ); + let output_path = matches.value_of("output").map(Path::new); - let command = || -> Result<()>{ + for orig_path in matches.values_of("paths").unwrap() { + let canonical_path = get_canonical_path(orig_path)?; - let output_path = matches.value_of("output").map(Path::new); + let archive = match DifFile::open_path(&canonical_path, None)? { + DifFile::Archive(archive) => archive, + _ => { + warn!("Cannot build source bundles from {}", orig_path); + continue; + } + }; + + // At this point we can be sure that we're dealing with a file + let parent_path = get_sane_parent(&canonical_path); + let filename = canonical_path.file_name().unwrap(); - for orig_path in matches.values_of("paths").unwrap() { - let canonical_path = get_canonical_path(orig_path)?; + for (index, object) in archive.get().objects().enumerate() { + let object = object?; + if object.has_sources() { + eprintln!("skipped {} (no source info)", orig_path); + continue; + } - let archive = match DifFile::open_path(&canonical_path, None)? { - DifFile::Archive(archive) => archive, - _ => { - warn!("Cannot build source bundles from {}", orig_path); - continue; - } + let mut out = output_path.unwrap_or(parent_path).join(filename); + match index { + 0 => out.set_extension("src.zip"), + index => out.set_extension(&format!("{}.src.zip", index)), }; - // At this point we can be sure that we're dealing with a file - let parent_path = get_sane_parent(&canonical_path); - let filename = canonical_path.file_name().unwrap(); - - for (index, object) in archive.get().objects().enumerate() { - let object = object?; - if object.has_sources() { - eprintln!("skipped {} (no source info)", orig_path); - continue; - } - - let mut out = output_path.unwrap_or(parent_path).join(filename); - match index { - 0 => out.set_extension("src.zip"), - index => out.set_extension(&format!("{}.src.zip", index)), - }; - - fs::create_dir_all(out.parent().unwrap())?; - let writer = SourceBundleWriter::create(&out)?; - - // Resolve source files from the object and write their contents into the archive. Skip to - // upload this bundle if no source could be written. This can happen if there is no file or - // line information in the object file, or if none of the files could be resolved. - let written = writer.write_object_with_filter( - &object, - &filename.to_string_lossy(), - filter_bad_sources, - )?; - - if !written { - eprintln!("skipped {} (no files found)", orig_path); - fs::remove_file(&out)?; - continue; - } else { - println!("{}", out.display()); - } + fs::create_dir_all(out.parent().unwrap())?; + let writer = SourceBundleWriter::create(&out)?; + + // Resolve source files from the object and write their contents into the archive. Skip to + // upload this bundle if no source could be written. This can happen if there is no file or + // line information in the object file, or if none of the files could be resolved. + let written = writer.write_object_with_filter( + &object, + &filename.to_string_lossy(), + filter_bad_sources, + )?; + + if !written { + eprintln!("skipped {} (no files found)", orig_path); + fs::remove_file(&out)?; + continue; + } else { + println!("{}", out.display()); } } - Ok(()) - }; - let command_result = command(); - #[cfg(feature = "profiling")] - transaction.finish(); - - command_result + } + Ok(()) } diff --git a/src/commands/debug_files/check.rs b/src/commands/debug_files/check.rs index bc06a37e11..572bbed04f 100644 --- a/src/commands/debug_files/check.rs +++ b/src/commands/debug_files/check.rs @@ -40,71 +40,58 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { - #[cfg(feature = "profiling")] - let transaction = sentry::start_transaction( - sentry::TransactionContext::new("check_files", "check which debug information files can be used by sentry") - ); + let path = Path::new(matches.value_of("path").unwrap()); - let command = || -> Result<()>{ - let path = Path::new(matches.value_of("path").unwrap()); + // which types should we consider? + let ty = matches.value_of("type").map(|t| t.parse().unwrap()); + let dif = DifFile::open_path(path, ty)?; - // which types should we consider? - let ty = matches.value_of("type").map(|t| t.parse().unwrap()); - let dif = DifFile::open_path(path, ty)?; + if matches.is_present("json") { + serde_json::to_writer_pretty(&mut io::stdout(), &dif)?; + println!(); + } - if matches.is_present("json") { - serde_json::to_writer_pretty(&mut io::stdout(), &dif)?; - println!(); - } + if matches.is_present("json") || is_quiet_mode() { + return if dif.is_usable() { + Ok(()) + } else { + Err(QuietExit(1).into()) + }; + } - if matches.is_present("json") || is_quiet_mode() { - return if dif.is_usable() { - Ok(()) - } else { - Err(QuietExit(1).into()) - }; - } + println!("{}", style("Debug Info File Check").dim().bold()); + match dif.kind() { + Some(class) => println!( + " Type: {} {:#}", + style(dif.ty()).cyan(), + style(class).cyan() + ), + None => println!(" Type: {}", style(dif.ty()).cyan()), + } - println!("{}", style("Debug Info File Check").dim().bold()); - match dif.kind() { - Some(class) => println!( - " Type: {} {:#}", - style(dif.ty()).cyan(), - style(class).cyan() - ), - None => println!(" Type: {}", style(dif.ty()).cyan()), + println!(" Contained debug identifiers:"); + for variant in dif.variants() { + println!(" > Debug ID: {}", style(variant.debug_id).dim()); + if let Some(code_id) = variant.code_id { + println!(" Code ID: {}", style(code_id).dim()); } - - println!(" Contained debug identifiers:"); - for variant in dif.variants() { - println!(" > Debug ID: {}", style(variant.debug_id).dim()); - if let Some(code_id) = variant.code_id { - println!(" Code ID: {}", style(code_id).dim()); - } - if let Some(arch) = variant.arch { - println!(" Arch: {}", style(arch).dim()); - } + if let Some(arch) = variant.arch { + println!(" Arch: {}", style(arch).dim()); } + } - println!(" Contained debug information:"); - println!(" > {}", dif.features()); - - if let Some(msg) = dif.get_note() { - println!(" Note: {}", msg); - } - - if let Some(prob) = dif.get_problem() { - println!(" Usable: {} ({})", style("no").red(), prob); - Err(QuietExit(1).into()) - } else { - println!(" Usable: {}", style("yes").green()); - Ok(()) - } - }; + println!(" Contained debug information:"); + println!(" > {}", dif.features()); - let command_result = command(); - #[cfg(feature = "profiling")] - transaction.finish(); + if let Some(msg) = dif.get_note() { + println!(" Note: {}", msg); + } - command_result + if let Some(prob) = dif.get_problem() { + println!(" Usable: {} ({})", style("no").red(), prob); + Err(QuietExit(1).into()) + } else { + println!(" Usable: {}", style("yes").green()); + Ok(()) + } } diff --git a/src/commands/debug_files/find.rs b/src/commands/debug_files/find.rs index c9e64371ae..6591fe8e0b 100644 --- a/src/commands/debug_files/find.rs +++ b/src/commands/debug_files/find.rs @@ -316,79 +316,66 @@ fn extract_remaining_ids( } pub fn execute(matches: &ArgMatches) -> Result<()> { - #[cfg(feature = "profiling")] - let transaction = sentry::start_transaction( - sentry::TransactionContext::new("locate_debug_file", "locate debug information files") - ); - - let command = || -> Result<()> { - let mut paths = HashSet::new(); - let mut types = HashSet::new(); - let mut ids = HashSet::new(); - - // which types should we consider? - if let Some(t) = matches.values_of("types") { - for ty in t { - types.insert(ty.parse().unwrap()); - } - } else { - types.insert(DifType::Dsym); - types.insert(DifType::Pdb); - types.insert(DifType::Pe); - types.insert(DifType::Proguard); - types.insert(DifType::SourceBundle); - types.insert(DifType::Breakpad); + let mut paths = HashSet::new(); + let mut types = HashSet::new(); + let mut ids = HashSet::new(); + + // which types should we consider? + if let Some(t) = matches.values_of("types") { + for ty in t { + types.insert(ty.parse().unwrap()); } + } else { + types.insert(DifType::Dsym); + types.insert(DifType::Pdb); + types.insert(DifType::Pe); + types.insert(DifType::Proguard); + types.insert(DifType::SourceBundle); + types.insert(DifType::Breakpad); + } - let with_well_known = !matches.is_present("no_well_known"); - let with_cwd = !matches.is_present("no_cwd"); - - // start adding well known locations - if_chain! { - if with_well_known; - if types.contains(&DifType::Dsym); - if let Some(path) = dirs::home_dir().map(|x| x.join("Library/Developer/Xcode/DerivedData")); - if path.is_dir(); - then { - paths.insert(path); - } - } + let with_well_known = !matches.is_present("no_well_known"); + let with_cwd = !matches.is_present("no_cwd"); - // current folder if wanted - if_chain! { - if with_cwd; - if let Ok(path) = env::current_dir(); - then { - paths.insert(path); - } + // start adding well known locations + if_chain! { + if with_well_known; + if types.contains(&DifType::Dsym); + if let Some(path) = dirs::home_dir().map(|x| x.join("Library/Developer/Xcode/DerivedData")); + if path.is_dir(); + then { + paths.insert(path); } + } - // extra paths - if let Some(p) = matches.values_of("paths") { - for path in p { - paths.insert(PathBuf::from(path)); - } + // current folder if wanted + if_chain! { + if with_cwd; + if let Ok(path) = env::current_dir(); + then { + paths.insert(path); } + } - // which ids are we looking for? - if let Some(i) = matches.values_of("ids") { - for id in i { - ids.insert(id.parse().unwrap()); - } - } else { - return Ok(()); + // extra paths + if let Some(p) = matches.values_of("paths") { + for path in p { + paths.insert(PathBuf::from(path)); } + } - if !find_ids(&paths, &types, &ids, matches.is_present("json"))? { - return Err(QuietExit(1).into()); + // which ids are we looking for? + if let Some(i) = matches.values_of("ids") { + for id in i { + ids.insert(id.parse().unwrap()); } + } else { + return Ok(()); + } - Ok(()) - }; - - let command_result = command(); - #[cfg(feature = "profiling")] - transaction.finish(); + if !find_ids(&paths, &types, &ids, matches.is_present("json"))? { + return Err(QuietExit(1).into()); + } - command_result + Ok(()) } diff --git a/src/commands/debug_files/mod.rs b/src/commands/debug_files/mod.rs index eb6530170c..93a9af5598 100644 --- a/src/commands/debug_files/mod.rs +++ b/src/commands/debug_files/mod.rs @@ -40,7 +40,17 @@ pub fn execute(matches: &ArgMatches) -> Result<()> { if let Some(sub_matches) = matches.subcommand_matches(&stringify!($name).replace('_', "-")) { - return crate::commands::debug_files::$name::execute(&sub_matches); + #[cfg(feature = "profiling")] + let transaction = sentry::start_transaction( + sentry::TransactionContext::new("bundle_sources", format!("running `{}` command", stringify!($name)).as_str()) + ); + + let res = crate::commands::debug_files::$name::execute(&sub_matches); + + #[cfg(feature = "profiling")] + transaction.finish(); + + return res; } }}; } diff --git a/src/commands/debug_files/upload.rs b/src/commands/debug_files/upload.rs index ab9dc39382..bb6fd9efd1 100644 --- a/src/commands/debug_files/upload.rs +++ b/src/commands/debug_files/upload.rs @@ -170,179 +170,166 @@ pub fn make_command(command: Command) -> Command { } pub fn execute(matches: &ArgMatches) -> Result<()> { - #[cfg(feature = "profiling")] - let transaction = sentry::start_transaction( - sentry::TransactionContext::new("upload_debug_file", "upload debugging information files") - ); - - let command = || -> Result<()> { - let config = Config::current(); - let (org, project) = config.get_org_and_project(matches)?; + let config = Config::current(); + let (org, project) = config.get_org_and_project(matches)?; - let ids = matches - .values_of("ids") - .unwrap_or_default() - .filter_map(|s| DebugId::from_str(s).ok()); + let ids = matches + .values_of("ids") + .unwrap_or_default() + .filter_map(|s| DebugId::from_str(s).ok()); - info!( - "Issuing a command for Organization: {} Project: {}", - org, project - ); + info!( + "Issuing a command for Organization: {} Project: {}", + org, project + ); - // Build generic upload parameters - let mut upload = DifUpload::new(org.clone(), project.clone()); - upload - .wait(matches.is_present("wait")) - .search_paths(matches.values_of("paths").unwrap_or_default()) - .allow_zips(!matches.is_present("no_zips")) - .filter_ids(ids); + // Build generic upload parameters + let mut upload = DifUpload::new(org.clone(), project.clone()); + upload + .wait(matches.is_present("wait")) + .search_paths(matches.values_of("paths").unwrap_or_default()) + .allow_zips(!matches.is_present("no_zips")) + .filter_ids(ids); - // Restrict symbol types, if specified by the user - for ty in matches.values_of("types").unwrap_or_default() { - match ty { - "dsym" => upload.filter_format(DifFormat::Object(FileFormat::MachO)), - "elf" => upload.filter_format(DifFormat::Object(FileFormat::Elf)), - "breakpad" => upload.filter_format(DifFormat::Object(FileFormat::Breakpad)), - "pdb" => upload.filter_format(DifFormat::Object(FileFormat::Pdb)), - "pe" => upload.filter_format(DifFormat::Object(FileFormat::Pe)), - "sourcebundle" => upload.filter_format(DifFormat::Object(FileFormat::SourceBundle)), - "bcsymbolmap" => { - upload.filter_format(DifFormat::BcSymbolMap); - upload.filter_format(DifFormat::PList) - } - other => bail!("Unsupported type: {}", other), - }; - } + // Restrict symbol types, if specified by the user + for ty in matches.values_of("types").unwrap_or_default() { + match ty { + "dsym" => upload.filter_format(DifFormat::Object(FileFormat::MachO)), + "elf" => upload.filter_format(DifFormat::Object(FileFormat::Elf)), + "breakpad" => upload.filter_format(DifFormat::Object(FileFormat::Breakpad)), + "pdb" => upload.filter_format(DifFormat::Object(FileFormat::Pdb)), + "pe" => upload.filter_format(DifFormat::Object(FileFormat::Pe)), + "sourcebundle" => upload.filter_format(DifFormat::Object(FileFormat::SourceBundle)), + "bcsymbolmap" => { + upload.filter_format(DifFormat::BcSymbolMap); + upload.filter_format(DifFormat::PList) + } + other => bail!("Unsupported type: {}", other), + }; + } - upload.filter_features(ObjectDifFeatures { - // Allow stripped debug symbols. These are dSYMs, ELF binaries generated - // with `objcopy --only-keep-debug` or Breakpad symbols. As a fallback, - // we also upload all files with a public symbol table. - debug: !matches.is_present("no_debug"), - symtab: !matches.is_present("no_debug"), - // Allow executables and dynamic/shared libraries, but not object files. - // They are guaranteed to contain unwind info, for instance `eh_frame`, - // and may optionally contain debugging information such as DWARF. - unwind: !matches.is_present("no_unwind"), - sources: !matches.is_present("no_sources"), - }); + upload.filter_features(ObjectDifFeatures { + // Allow stripped debug symbols. These are dSYMs, ELF binaries generated + // with `objcopy --only-keep-debug` or Breakpad symbols. As a fallback, + // we also upload all files with a public symbol table. + debug: !matches.is_present("no_debug"), + symtab: !matches.is_present("no_debug"), + // Allow executables and dynamic/shared libraries, but not object files. + // They are guaranteed to contain unwind info, for instance `eh_frame`, + // and may optionally contain debugging information such as DWARF. + unwind: !matches.is_present("no_unwind"), + sources: !matches.is_present("no_sources"), + }); - upload.include_sources(matches.is_present("include_sources")); - upload.il2cpp_mapping(matches.is_present("il2cpp_mapping")); + upload.include_sources(matches.is_present("include_sources")); + upload.il2cpp_mapping(matches.is_present("il2cpp_mapping")); - // Configure BCSymbolMap resolution, if possible - if let Some(symbol_map) = matches.value_of("symbol_maps") { - upload - .symbol_map(symbol_map) - .map_err(|_| format_err!("--symbol-maps requires Apple dsymutil to be available."))?; - } + // Configure BCSymbolMap resolution, if possible + if let Some(symbol_map) = matches.value_of("symbol_maps") { + upload + .symbol_map(symbol_map) + .map_err(|_| format_err!("--symbol-maps requires Apple dsymutil to be available."))?; + } - // Add a path to XCode's DerivedData, if configured - if matches.is_present("derived_data") { - let derived_data = dirs::home_dir().map(|x| x.join(DERIVED_DATA_FOLDER)); - if let Some(path) = derived_data { - if path.is_dir() { - upload.search_path(path); - } + // Add a path to XCode's DerivedData, if configured + if matches.is_present("derived_data") { + let derived_data = dirs::home_dir().map(|x| x.join(DERIVED_DATA_FOLDER)); + if let Some(path) = derived_data { + if path.is_dir() { + upload.search_path(path); } } + } - // Try to resolve the Info.plist either by path or from Xcode - let info_plist = match matches.value_of("info_plist") { - Some(path) => Some(InfoPlist::from_path(path)?), - None => InfoPlist::discover_from_env()?, - }; + // Try to resolve the Info.plist either by path or from Xcode + let info_plist = match matches.value_of("info_plist") { + Some(path) => Some(InfoPlist::from_path(path)?), + None => InfoPlist::discover_from_env()?, + }; - if matches.is_present("no_upload") { - println!("{} skipping upload.", style(">").dim()); - return Ok(()); - } + if matches.is_present("no_upload") { + println!("{} skipping upload.", style(">").dim()); + return Ok(()); + } - MayDetach::wrap("Debug symbol upload", |handle| { - // Optionally detach if run from Xcode - if !matches.is_present("force_foreground") { - handle.may_detach()?; - } + MayDetach::wrap("Debug symbol upload", |handle| { + // Optionally detach if run from Xcode + if !matches.is_present("force_foreground") { + handle.may_detach()?; + } - // Execute the upload - let (uploaded, has_processing_errors) = upload.upload()?; - let api = Api::current(); + // Execute the upload + let (uploaded, has_processing_errors) = upload.upload()?; + let api = Api::current(); - // Associate the dSYMs with the Info.plist data, if available - if let Some(ref info_plist) = info_plist { - let progress_style = ProgressStyle::default_spinner() - .template("{spinner} Associating dSYMs with {msg}..."); + // Associate the dSYMs with the Info.plist data, if available + if let Some(ref info_plist) = info_plist { + let progress_style = ProgressStyle::default_spinner() + .template("{spinner} Associating dSYMs with {msg}..."); - let pb = ProgressBar::new_spinner(); - pb.enable_steady_tick(100); - pb.set_style(progress_style); - pb.set_message(&info_plist.to_string()); + let pb = ProgressBar::new_spinner(); + pb.enable_steady_tick(100); + pb.set_style(progress_style); + pb.set_message(&info_plist.to_string()); - let checksums = uploaded.iter().map(|dif| dif.checksum.clone()).collect(); - let response = api.associate_apple_dsyms(&org, &project, info_plist, checksums)?; - pb.finish_and_clear(); + let checksums = uploaded.iter().map(|dif| dif.checksum.clone()).collect(); + let response = api.associate_apple_dsyms(&org, &project, info_plist, checksums)?; + pb.finish_and_clear(); - if let Some(association) = response { - if association.associated_dsyms.is_empty() { - println!("{} No new debug symbols to associate.", style(">").dim()); - } else { - println!( - "{} Associated {} debug symbols with the build.", - style(">").dim(), - style(association.associated_dsyms.len()).yellow() - ); - } + if let Some(association) = response { + if association.associated_dsyms.is_empty() { + println!("{} No new debug symbols to associate.", style(">").dim()); } else { - info!("Server does not support dSYM associations. Ignoring."); + println!( + "{} Associated {} debug symbols with the build.", + style(">").dim(), + style(association.associated_dsyms.len()).yellow() + ); } + } else { + info!("Server does not support dSYM associations. Ignoring."); } + } - // Trigger reprocessing only if requested by user - if matches.is_present("no_reprocessing") { - println!("{} skipped reprocessing", style(">").dim()); - } else if !api.trigger_reprocessing(&org, &project)? { - println!("{} Server does not support reprocessing.", style(">").dim()); - } + // Trigger reprocessing only if requested by user + if matches.is_present("no_reprocessing") { + println!("{} skipped reprocessing", style(">").dim()); + } else if !api.trigger_reprocessing(&org, &project)? { + println!("{} Server does not support reprocessing.", style(">").dim()); + } - // Did we miss explicitly requested symbols? - if matches.is_present("require_all") { - let required_ids: BTreeSet<_> = matches - .values_of("ids") - .unwrap_or_default() - .filter_map(|s| DebugId::from_str(s).ok()) - .collect(); + // Did we miss explicitly requested symbols? + if matches.is_present("require_all") { + let required_ids: BTreeSet<_> = matches + .values_of("ids") + .unwrap_or_default() + .filter_map(|s| DebugId::from_str(s).ok()) + .collect(); - let found_ids = uploaded.into_iter().map(|dif| dif.id()).collect(); - let missing_ids: Vec<_> = required_ids.difference(&found_ids).collect(); + let found_ids = uploaded.into_iter().map(|dif| dif.id()).collect(); + let missing_ids: Vec<_> = required_ids.difference(&found_ids).collect(); - if !missing_ids.is_empty() { - eprintln!(); - eprintln!("{}", style("Error: Some symbols could not be found!").red()); - eprintln!("The following symbols are still missing:"); - for id in missing_ids { - println!(" {}", id); - } - - return Err(QuietExit(1).into()); - } - } - - - - // report a non 0 status code if the server encountered issues. - if has_processing_errors { + if !missing_ids.is_empty() { eprintln!(); - eprintln!("{}", style("Error: some symbols did not process correctly")); + eprintln!("{}", style("Error: Some symbols could not be found!").red()); + eprintln!("The following symbols are still missing:"); + for id in missing_ids { + println!(" {}", id); + } + return Err(QuietExit(1).into()); } + } - Ok(()) - }) - }; + - let command_result = command(); - #[cfg(feature = "profiling")] - transaction.finish(); + // report a non 0 status code if the server encountered issues. + if has_processing_errors { + eprintln!(); + eprintln!("{}", style("Error: some symbols did not process correctly")); + return Err(QuietExit(1).into()); + } - command_result + Ok(()) + }) } From e68b3f7bdaaafe6c61c7843c2cf48cfd67a75e5a Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 27 Sep 2022 14:15:54 +0200 Subject: [PATCH 12/15] Customize error message in case SENTRY_DSN env variable is missing --- src/commands/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 9b1be9d484..298de06482 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -249,7 +249,7 @@ pub fn execute() -> Result<()> { #[cfg(feature = "profiling")] let _guard = sentry::init(( - env!("SENTRY_DSN").to_string(), + env!("SENTRY_DSN", "Environment variable 'SENTRY_DSN' is required for 'profiling' feature").to_string(), sentry::ClientOptions { release: sentry::release_name!(), user_agent: crate::constants::USER_AGENT.into(), From e64e60c8ee8446671bf0f7de7b3395f267d4a61d Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 27 Sep 2022 14:16:53 +0200 Subject: [PATCH 13/15] Formatting with cargo fmt --- src/commands/mod.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 298de06482..bbb057b018 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -249,7 +249,11 @@ pub fn execute() -> Result<()> { #[cfg(feature = "profiling")] let _guard = sentry::init(( - env!("SENTRY_DSN", "Environment variable 'SENTRY_DSN' is required for 'profiling' feature").to_string(), + env!( + "SENTRY_DSN", + "Environment variable 'SENTRY_DSN' is required for 'profiling' feature" + ) + .to_string(), sentry::ClientOptions { release: sentry::release_name!(), user_agent: crate::constants::USER_AGENT.into(), From eef84e140a608f1e4d20cc29a6138608112b0c17 Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 27 Sep 2022 14:35:36 +0200 Subject: [PATCH 14/15] Reverts to the shortcut [target."cfg(unix)".dependencies] --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 38c7e7a120..9cf28ac91c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,7 +83,7 @@ unix-daemonize = "0.1.2" #[target.'cfg(target_family = "unix")'] -[target.'cfg(target_family = "unix")'.dependencies] +[target."cfg(unix)".dependencies] openssl-probe = "0.1.5" signal-hook = "0.3.14" crossbeam-channel = "0.5.5" From 5656e6e7357d807935419a38fba5ea04dac7947c Mon Sep 17 00:00:00 2001 From: Francesco Vigliaturo Date: Tue, 27 Sep 2022 14:54:20 +0200 Subject: [PATCH 15/15] Run cargo update --- Cargo.lock | 306 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 175 insertions(+), 131 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4dd0975ba..0599085524 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -70,9 +70,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9a8f622bcf6ff3df478e9deba3e03e4e04b300f8e6a139e192c05fa3490afc7" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" dependencies = [ "backtrace", ] @@ -374,15 +374,15 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.20" +version = "3.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b71c3ce99b7611011217b366d923f1d0a7e07a92bb2dbf1e84508c673ca3bd" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" dependencies = [ "bitflags", "clap_lex", "indexmap", "strsim", - "terminal_size", + "terminal_size 0.2.1", "textwrap", ] @@ -442,7 +442,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "terminal_size", + "terminal_size 0.1.17", "unicode-width", "winapi 0.3.9", ] @@ -580,9 +580,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.57+curl-7.85.0" +version = "0.4.56+curl-7.83.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f5c209fdc3b856c446c52a1f9e90db20ea2b1bbbbd60bc18239174fa6eae70" +checksum = "6093e169dd4de29e468fa649fbae11cdcd5551c81fe5bf1b0677adad7ef3d26f" dependencies = [ "cc", "libc", @@ -611,9 +611,9 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] name = "digest" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer", "crypto-common", @@ -691,6 +691,15 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "elementtree" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e91f812124e4fc7f82605feda4da357307185a4619baee415ae0b7f6d5e031" +dependencies = [ + "string_cache", +] + [[package]] name = "elsa" version = "1.7.0" @@ -770,6 +779,27 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "failure" version = "0.1.8" @@ -845,11 +875,10 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", "percent-encoding", ] @@ -1046,25 +1075,23 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.47" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c495f162af0bf17656d0014a0eded5f3cd2f365fdd204548c2869db89359dc7" +checksum = "fd911b35d940d2bd0bea0f9100068e5b97b51a1cbe13d13382f132e0365257a0" dependencies = [ "android_system_properties", "core-foundation-sys", "js-sys", - "once_cell", "wasm-bindgen", "winapi 0.3.9", ] [[package]] name = "idna" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] @@ -1132,9 +1159,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.19.1" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc61e98be01e89296f3343a878e9f8ca75a494cb5aaf29df65ef55734aeb85f5" +checksum = "58a931b01c76064c5be919faa2ef0dc570e9a889dcd1e5fef08a8ca6eb4d6c0b" dependencies = [ "console", "linked-hash-map", @@ -1155,11 +1182,17 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "io-lifetimes" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ea37f355c05dde75b84bba2d767906ad522e97cd9e2eef2be7a4ab7fb442c06" + [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -1189,9 +1222,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" dependencies = [ "libc", ] @@ -1204,9 +1237,9 @@ checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] @@ -1225,9 +1258,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.132" +version = "0.2.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" [[package]] name = "libgit2-sys" @@ -1268,11 +1301,17 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-raw-sys" +version = "0.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" + [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", @@ -1305,12 +1344,6 @@ dependencies = [ "libc", ] -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "maybe-owned" version = "0.3.4" @@ -1504,9 +1537,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "opaque-debug" @@ -1516,9 +1549,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "open" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23a407004a1033f53e93f9b45580d14de23928faad187384f891507c9b0c045" +checksum = "b4a3100141f1733ea40b53381b0ae3117330735ef22309a190ac57b9576ea716" dependencies = [ "pathdiff", "windows-sys", @@ -1541,9 +1574,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.75" +version = "0.9.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" dependencies = [ "autocfg", "cc", @@ -1686,15 +1719,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4" +checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" dependencies = [ "thiserror", "ucd-trie", @@ -1702,9 +1735,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91" +checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1" dependencies = [ "pest", "pest_generator", @@ -1712,9 +1745,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad" +checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c" dependencies = [ "pest", "pest_meta", @@ -1725,13 +1758,13 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04" +checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6" dependencies = [ "once_cell", "pest", - "sha-1", + "sha1", ] [[package]] @@ -1843,9 +1876,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "7bd7356a8122b6c4a24a82b278680c73357984ca2fc79a0f9fa6dea7dced7c58" dependencies = [ "unicode-ident", ] @@ -1921,9 +1954,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.7", ] @@ -2079,6 +2112,20 @@ dependencies = [ "semver 0.9.0", ] +[[package]] +name = "rustix" +version = "0.35.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af895b90e5c071badc3136fc10ff0bcfc98747eadbaf43ed8f214e07ba8f8477" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys", +] + [[package]] name = "ryu" version = "1.0.11" @@ -2176,9 +2223,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" [[package]] name = "semver-parser" @@ -2235,7 +2282,7 @@ dependencies = [ "curl", "dirs 4.0.0", "dotenv", - "elementtree", + "elementtree 0.7.0", "encoding", "flate2", "git2", @@ -2266,7 +2313,7 @@ dependencies = [ "regex", "runas", "rust-ini", - "semver 1.0.13", + "semver 1.0.14", "sentry", "serde", "serde_json", @@ -2322,18 +2369,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ "proc-macro2", "quote", @@ -2363,22 +2410,11 @@ dependencies = [ "serde", ] -[[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.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -2396,9 +2432,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", @@ -2450,9 +2486,9 @@ checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "snapbox" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d199ccf8f606592df2d145db26f2aa45344e23c64b074cc5a4047f1d99b0f7" +checksum = "f98a96656eecd1621c5830831b48eb6903a9f86aaeb61b9f358a9bd462414ddd" dependencies = [ "concolor", "content_inspector", @@ -2470,9 +2506,9 @@ dependencies = [ [[package]] name = "snapbox-macros" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a253e6f894cfa440cba00600a249fa90869d8e0ec45ab274a456e043a0ce8f2" +checksum = "485e65c1203eb37244465e857d15a26d3a85a5410648ccb53b18bd44cb3a7336" [[package]] name = "socket2" @@ -2541,9 +2577,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "symbolic" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88dc71d44a86d4ae9e3c9b6d36c6c3664f19afe1b863f1563548c69969596b43" +checksum = "a25d209528aa05da204db74a60a04c3a7afd2b36c51c252eaf58b2b7e0cdf4a8" dependencies = [ "symbolic-common", "symbolic-debuginfo", @@ -2553,9 +2589,9 @@ dependencies = [ [[package]] name = "symbolic-common" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e555b2c3ebd97b963c8a3e94ce5e5137ba42da4a26687f81c700d8de1c997f0" +checksum = "d431a4117e17192ca2d46b9261919bc34561b7dd2dcba4ab4c93801826fcbd33" dependencies = [ "debugid", "memmap2", @@ -2566,13 +2602,13 @@ dependencies = [ [[package]] name = "symbolic-debuginfo" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be6fd1cf9ae6cbcc162b19199da2e2e10e9944d58bf8e32226eeadbad5303de" +checksum = "084052554bfcf55a5df749b0bf98209cdc3b48e584229f41431a45809c13f179" dependencies = [ "bitvec", "dmsort", - "elementtree", + "elementtree 1.2.2", "elsa", "fallible-iterator", "flate2", @@ -2597,9 +2633,9 @@ dependencies = [ [[package]] name = "symbolic-demangle" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a1425bccf0a24c68c9faea6c4f1f84b4865a3dd5976454d8a796c80216e38a" +checksum = "93b77867bcc7fb2a4e9fc02b58b965858f5e4c35ad86da89ec6d9b2a00b64ece" dependencies = [ "rustc-demangle", "symbolic-common", @@ -2607,9 +2643,9 @@ dependencies = [ [[package]] name = "symbolic-il2cpp" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "179a82ef0b185eaf8c97dccd32859c299eefd4ff3c9c48da7f002e6b211e07d7" +checksum = "f241a432cc325fd6324d6b34c991cd00b67b5b036d8d81d1406de5e610c8556f" dependencies = [ "indexmap", "serde_json", @@ -2619,12 +2655,10 @@ dependencies = [ [[package]] name = "symbolic-symcache" -version = "9.1.1" +version = "9.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "362385aa2245eeb8ebbe0391c45bb929a53d1cdf37c09564500472f86a6c0dc8" +checksum = "438d1b2f67a390fd1f899030254e70d9fc9a52746e77f814c8840344effc5e33" dependencies = [ - "dmsort", - "fnv", "indexmap", "symbolic-common", "symbolic-debuginfo", @@ -2635,9 +2669,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.99" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2" dependencies = [ "proc-macro2", "quote", @@ -2695,29 +2729,39 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "terminal_size" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8440c860cf79def6164e4a0a983bcc2305d82419177a0e0c71930d049e3ac5a1" +dependencies = [ + "rustix", + "windows-sys", +] + [[package]] name = "textwrap" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" dependencies = [ - "terminal_size", + "terminal_size 0.2.1", ] [[package]] name = "thiserror" -version = "1.0.34" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1b05ca9d106ba7d2e31a9dab4a64e7be2cce415321966ea3132c49a656e252" +checksum = "0a99cb8c4b9a8ef0e7907cd3b617cc8dc04d571c4e73c8ae403d80ac160bb122" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.34" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8f2591983642de85c921015f3f070c665a197ed69e417af436115e3a1407487" +checksum = "3a891860d3c8d66fec8e73ddb3765f90082374dbaaa833407b904a94f1a7eb43" dependencies = [ "proc-macro2", "quote", @@ -2823,9 +2867,9 @@ dependencies = [ [[package]] name = "trycmd" -version = "0.13.6" +version = "0.13.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac9fa73959e252e7c5a4e6260544b952f5bf3989e0b7ad229f4fd6f14671b02" +checksum = "a5377b33cbe8bb69d97da63e2a2266065a642a47cc9bb3d783c28279d0029fea" dependencies = [ "glob", "humantime", @@ -2867,24 +2911,24 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unix-daemonize" @@ -2897,9 +2941,9 @@ dependencies = [ [[package]] name = "url" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", "idna", @@ -2992,9 +3036,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3002,9 +3046,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", "log", @@ -3017,9 +3061,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3027,9 +3071,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", @@ -3040,15 +3084,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasmparser" -version = "0.85.0" +version = "0.90.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570460c58b21e9150d2df0eaaedbb7816c34bcec009ae0dcc976e40ba81463e7" +checksum = "b62c8d843f4423efee314dc75a1049886deba3214f7e7f9ff0e4e58b4d618581" dependencies = [ "indexmap", ]