diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b0e930c1..02ddad9ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,10 +39,12 @@ jobs: cargo-deny: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - with: - ref: ${{ inputs.checkout-ref }} - - uses: EmbarkStudios/cargo-deny-action@v1 + - uses: actions/checkout@v3 + with: + ref: ${{ inputs.checkout-ref }} + - uses: EmbarkStudios/cargo-deny-action@v1 + with: + rust-version: "1.89.0" fmt: runs-on: ubuntu-latest @@ -74,7 +76,7 @@ jobs: - uses: ./.github/actions/setup-rust with: components: clippy - toolchain: 1.77.2 # MSRV, Minimally Supported Rust Version. Make sure to update README.md and clippy.toml + toolchain: 1.89.0 # MSRV, Minimally Supported Rust Version. Make sure to update README.md and clippy.toml - name: Run clippy run: cargo clippy --locked --all-targets --all-features --workspace -- -D warnings test: @@ -402,7 +404,22 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} conclusion: - needs: [shellcheck, fmt, clippy, test, generate-matrix, build, publish, check, remote, bisect, docker-in-docker, foreign, podman] + needs: + [ + shellcheck, + fmt, + clippy, + test, + generate-matrix, + build, + publish, + check, + remote, + bisect, + docker-in-docker, + foreign, + podman, + ] if: always() runs-on: ubuntu-latest steps: diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index dde87c401..9966d8f87 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -35,3 +35,5 @@ jobs: steps: - uses: actions/checkout@v3 - uses: EmbarkStudios/cargo-deny-action@v1 + with: + rust-version: "1.89.0" diff --git a/.gitmodules b/.gitmodules index ca49da821..284b30c71 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "docker/cross-toolchains"] path = docker/cross-toolchains - url = https://github.com/cross-rs/cross-toolchains.git + url = https://github.com/cross-rs/cross-toolchains diff --git a/Cargo.lock b/Cargo.lock index 09b806d03..d59ecfd3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -43,68 +43,58 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "autocfg" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" @@ -123,21 +113,15 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bstr" -version = "1.9.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "serde", @@ -151,9 +135,12 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "cc" -version = "1.0.96" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" @@ -161,6 +148,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.38" @@ -177,9 +170,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" dependencies = [ "clap_builder", "clap_derive", @@ -187,9 +180,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" dependencies = [ "anstream", "anstyle", @@ -199,9 +192,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" dependencies = [ "heck", "proc-macro2", @@ -211,15 +204,15 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "color-eyre" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" dependencies = [ "backtrace", "color-spantrace", @@ -232,9 +225,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" dependencies = [ "once_cell", "owo-colors", @@ -244,25 +237,25 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "const-sha1" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb58b6451e8c2a812ad979ed1d83378caa5e927eef2622017a45f251457c2c9d" +checksum = "0d8a42181e0652c2997ae4d217f25b63c5337a52fd2279736e97b832fa0a3cff" [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cross" -version = "0.2.5" +version = "0.2.6" dependencies = [ "clap", "color-eyre", @@ -289,9 +282,8 @@ dependencies = [ "signal-hook", "tempfile", "thiserror", - "toml", - "walkdir", - "which", + "toml 0.9.5", + "which 8.0.0", "winapi", ] @@ -316,41 +308,48 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "directories" -version = "4.0.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "env_home" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" [[package]] name = "equivalent" @@ -360,12 +359,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -380,19 +379,31 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -403,9 +414,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", @@ -416,9 +427,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -428,33 +439,24 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -475,9 +477,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", @@ -497,9 +499,9 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.2.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown", @@ -507,13 +509,13 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -522,32 +524,39 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.168" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libredox" @@ -555,53 +564,60 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags", "libc", ] [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "nix" -version = "0.26.4" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 1.3.2", + "bitflags", "cfg-if", + "cfg_aliases", "libc", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -617,59 +633,72 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "option-ext" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "owo-colors" -version = "3.5.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" dependencies = [ - "supports-color", + "supports-color 2.1.0", + "supports-color 3.0.2", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "redox_users" -version = "0.4.5" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -679,9 +708,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -690,43 +719,56 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ - "bitflags 2.5.0", + "bitflags", "errno", "libc", - "linux-raw-sys", - "windows-sys", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -739,24 +781,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.199" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.199" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -765,29 +807,39 @@ dependencies = [ [[package]] name = "serde_ignored" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" +checksum = "b516445dac1e3535b6d658a7b528d771153dfb272ed4180ca4617a20550365ff" dependencies = [ "serde", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" dependencies = [ "serde", ] @@ -813,11 +865,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" dependencies = [ "libc", "signal-hook-registry", @@ -840,19 +898,28 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "supports-color" -version = "1.3.1" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89" +dependencies = [ + "is-terminal", + "is_ci", +] + +[[package]] +name = "supports-color" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6f" +checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" dependencies = [ - "atty", "is_ci", ] [[package]] name = "syn" -version = "2.0.60" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -861,30 +928,31 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", - "rustix", - "windows-sys", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.8", + "windows-sys 0.59.0", ] [[package]] name = "thiserror" -version = "1.0.59" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227" dependencies = [ "proc-macro2", "quote", @@ -908,16 +976,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", - "serde_spanned", - "toml_datetime", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", "toml_edit", ] +[[package]] +name = "toml" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +dependencies = [ + "indexmap", + "serde", + "serde_spanned 1.0.0", + "toml_datetime 0.7.0", + "toml_parser", + "toml_writer", + "winnow 0.7.12", +] + [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" dependencies = [ "serde", ] @@ -930,16 +1022,31 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "serde", - "serde_spanned", - "toml_datetime", - "winnow", + "serde_spanned 0.6.8", + "toml_datetime 0.6.8", + "winnow 0.5.40", ] +[[package]] +name = "toml_parser" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +dependencies = [ + "winnow 0.7.12", +] + +[[package]] +name = "toml_writer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" + [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-core", @@ -947,9 +1054,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -957,9 +1064,9 @@ dependencies = [ [[package]] name = "tracing-error" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", "tracing-subscriber", @@ -967,9 +1074,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "sharded-slab", "thread_local", @@ -978,15 +1085,15 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -1010,21 +1117,31 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", @@ -1037,9 +1154,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1047,9 +1164,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", @@ -1060,9 +1177,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "which" @@ -1073,14 +1190,25 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.41", +] + +[[package]] +name = "which" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" +dependencies = [ + "env_home", + "rustix 1.0.8", + "winsafe", ] [[package]] name = "wildmatch" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "939e59c1bc731542357fdaad98b209ef78c8743d652bb61439d16b16a79eb025" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" [[package]] name = "winapi" @@ -1100,11 +1228,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1131,11 +1259,20 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1149,51 +1286,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -1204,6 +1341,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" + +[[package]] +name = "winsafe" +version = "0.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + [[package]] name = "xtask" version = "0.0.0-dev.0" @@ -1218,8 +1376,8 @@ dependencies = [ "serde", "serde_json", "shell-words", - "toml", + "toml 0.7.8", "walkdir", - "which", + "which 4.4.2", "wildmatch", ] diff --git a/Cargo.toml b/Cargo.toml index 81216c9e1..0976fb3a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,8 @@ keywords = ["cross", "compilation", "testing", "tool"] license = "MIT OR Apache-2.0" name = "cross" repository = "https://github.com/cross-rs/cross" -version = "0.2.5" -edition = "2021" +version = "0.2.6" +edition = "2024" include = [ "src/**/*", "docs/*.md", @@ -17,7 +17,7 @@ include = [ "README.md", "assets/*", ] -rust-version = "1.77.2" +rust-version = "1.89.0" [features] default = [] @@ -27,31 +27,31 @@ dev = [] members = ["xtask"] [dependencies] -is-terminal = "0.4.2" -clap = { version = "4.1.4", features = ["derive"] } -color-eyre = { version = "0.6.2", default-features = false, features = ["track-caller"] } -eyre = "0.6.8" -thiserror = "1.0.38" -home = "0.5.4" -rustc_version = "0.4.0" -toml = "0.7.0" -which = { version = "4.4.0", default-features = false } +is-terminal = "0.4.16" +clap = { version = "4.5.45", features = ["derive"] } +color-eyre = { version = "0.6.5", default-features = false, features = ["track-caller"] } +eyre = "0.6.12" +thiserror = "2.0.14" +home = "0.5.11" +rustc_version = "0.4.1" +toml = "0.9.5" +which = { version = "8.0.0", default-features = false, features = ["real-sys"] } shell-escape = "0.1.5" -serde = { version = "1.0.152", features = ["derive"] } -serde_json = { version = "1.0.91", features = ["raw_value"] } -serde_ignored = "0.1.7" +serde = { version = "1.0.219", features = ["derive"] } +serde_json = { version = "1.0.142", features = ["raw_value"] } +serde_ignored = "0.1.12" shell-words = "1.1.0" -const-sha1 = "0.2.0" -signal-hook = { version = "0.3.15" } -directories = "4.0.1" -walkdir = { version = "2.3.2", optional = true } -tempfile = "3.3.0" -owo-colors = { version = "3.5.0", features = ["supports-colors"] } -semver = "1.0.16" -is_ci = "1.1.1" +const-sha1 = "0.3.0" +signal-hook = { version = "0.3.18" } +directories = "6.0.0" +#walkdir = { version = "2.3.2", optional = true } +tempfile = "3.20.0" +owo-colors = { version = "4.2.2", features = ["supports-colors"] } +semver = "1.0.26" +is_ci = "1.2.0" [target.'cfg(not(windows))'.dependencies] -nix = { version = "0.26.2", default-features = false, features = ["user"] } +nix = { version = "0.30.1", default-features = false, features = ["user"] } libc = "0.2.139" [target.'cfg(windows)'.dependencies] @@ -62,9 +62,9 @@ dunce = "1.0.3" lto = true [dev-dependencies] -regex = "1.7.1" -once_cell = "1.17.0" -ignore = "0.4.20" +regex = "1.11.1" +once_cell = "1.21.3" +ignore = "0.4.23" [package.metadata.release] push = false diff --git a/README.md b/README.md index 289971889..c14260ea7 100644 --- a/README.md +++ b/README.md @@ -320,11 +320,14 @@ $ QEMU_STRACE=1 cross run --target aarch64-unknown-linux-gnu ## Minimum Supported Rust Version (MSRV) -This crate is guaranteed to compile on stable Rust 1.77.2 and up. It *might* -compile with older versions but that may change in any new patch release. +This crate is guaranteed to compile on stable Rust 1.89.0 and up. It *might* +compile with older versions, but that may change in any new patch release. -Some cross-compilation targets require a later Rust version, and using Xargo -requires a nightly Rust toolchain. +Some cross-compilation targets require a later Rust version. + +### Xargo +"Xargo" is no longer supported since its maintenance was stopped a long time ago, +and its compilation is now problematic. ## License diff --git a/clippy.toml b/clippy.toml index fe7b17498..c5055e3b0 100644 --- a/clippy.toml +++ b/clippy.toml @@ -2,4 +2,4 @@ disallowed-methods = [ { path = "std::path::Path::display", reason = "incorrect handling of non-Unicode paths, use path.to_utf8() or debug (`{path:?}`) instead" }, ] allow-unwrap-in-tests = true -msrv = "1.77.2" +msrv = "1.89.0" diff --git a/deny.toml b/deny.toml index 0df3b2d50..80f84f7d6 100644 --- a/deny.toml +++ b/deny.toml @@ -41,8 +41,10 @@ allow = [ "0BSD", "BSD-2-Clause", "BSD-3-Clause", + "MPL-2.0", "Unlicense", "Unicode-DFS-2016", + "Unicode-3.0", ] [licenses.private] diff --git a/docker/Dockerfile.aarch64-linux-android b/docker/Dockerfile.aarch64-linux-android index 220e5bc00..ca8b6c5ab 100644 --- a/docker/Dockerfile.aarch64-linux-android +++ b/docker/Dockerfile.aarch64-linux-android @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / @@ -74,3 +71,5 @@ ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc \ CROSS_CMAKE_SYSTEM_PROCESSOR=aarch64 \ CROSS_CMAKE_CRT=android \ CROSS_CMAKE_OBJECT_FLAGS="-DANDROID -ffunction-sections -fdata-sections -fPIC" + +COPY ubuntu.sources /etc/apt/sources.list.d/ diff --git a/docker/Dockerfile.aarch64-unknown-freebsd b/docker/Dockerfile.aarch64-unknown-freebsd index a1895d3c3..fdb4c800f 100644 --- a/docker/Dockerfile.aarch64-unknown-freebsd +++ b/docker/Dockerfile.aarch64-unknown-freebsd @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN echo "export ARCH=aarch64" > /freebsd-arch.sh @@ -42,3 +39,5 @@ ENV CARGO_TARGET_AARCH64_UNKNOWN_FREEBSD_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc.sh CROSS_CMAKE_SYSTEM_PROCESSOR=amd64 \ CROSS_CMAKE_CRT=freebsd \ CROSS_CMAKE_OBJECT_FLAGS="-ffunction-sections -fdata-sections -fPIC -m64" + +COPY ubuntu.sources /etc/apt/sources.list.d/ diff --git a/docker/Dockerfile.aarch64-unknown-linux-gnu b/docker/Dockerfile.aarch64-unknown-linux-gnu index 546a827b7..eb86a7978 100644 --- a/docker/Dockerfile.aarch64-unknown-linux-gnu +++ b/docker/Dockerfile.aarch64-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ @@ -54,3 +51,5 @@ ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc \ CROSS_CMAKE_OBJECT_FLAGS="-ffunction-sections -fdata-sections -fPIC" RUN sed -e "s#@DEFAULT_QEMU_LD_PREFIX@#$QEMU_LD_PREFIX#g" -i /linux-runner + +COPY ubuntu.sources /etc/apt/sources.list.d/ diff --git a/docker/Dockerfile.aarch64-unknown-linux-gnu.centos b/docker/Dockerfile.aarch64-unknown-linux-gnu.centos index 7ad494afb..1e9e1faf8 100644 --- a/docker/Dockerfile.aarch64-unknown-linux-gnu.centos +++ b/docker/Dockerfile.aarch64-unknown-linux-gnu.centos @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS base +FROM ubuntu:24.04 AS base COPY lib.sh / COPY linux-image.sh / @@ -18,9 +18,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - COPY qemu.sh / RUN /qemu.sh aarch64 softmmu @@ -54,3 +51,5 @@ ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc \ CROSS_CMAKE_OBJECT_FLAGS="-ffunction-sections -fdata-sections -fPIC" RUN sed -e "s#@DEFAULT_QEMU_LD_PREFIX@#$QEMU_LD_PREFIX#g" -i /linux-runner + +COPY ubuntu.sources /etc/apt/sources.list.d/ diff --git a/docker/Dockerfile.aarch64-unknown-linux-musl b/docker/Dockerfile.aarch64-unknown-linux-musl index 80ce9b64f..f22c48631 100644 --- a/docker/Dockerfile.aarch64-unknown-linux-musl +++ b/docker/Dockerfile.aarch64-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / @@ -51,3 +48,5 @@ ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc. CROSS_BUILTINS_PATCHED_MINOR_VERSION=48 RUN sed -e "s#@DEFAULT_QEMU_LD_PREFIX@#$QEMU_LD_PREFIX#g" -i /qemu-runner + +COPY ubuntu.sources /etc/apt/sources.list.d/ diff --git a/docker/Dockerfile.arm-linux-androideabi b/docker/Dockerfile.arm-linux-androideabi index 2f990abd1..1a9e37a00 100644 --- a/docker/Dockerfile.arm-linux-androideabi +++ b/docker/Dockerfile.arm-linux-androideabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-gnueabi b/docker/Dockerfile.arm-unknown-linux-gnueabi index 8c05bb8c9..57e8a6d20 100644 --- a/docker/Dockerfile.arm-unknown-linux-gnueabi +++ b/docker/Dockerfile.arm-unknown-linux-gnueabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.arm-unknown-linux-gnueabihf b/docker/Dockerfile.arm-unknown-linux-gnueabihf index 8fd0a4cb4..bdea14baa 100644 --- a/docker/Dockerfile.arm-unknown-linux-gnueabihf +++ b/docker/Dockerfile.arm-unknown-linux-gnueabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build ARG VERBOSE diff --git a/docker/Dockerfile.arm-unknown-linux-musleabi b/docker/Dockerfile.arm-unknown-linux-musleabi index bc1390766..de7d77f29 100644 --- a/docker/Dockerfile.arm-unknown-linux-musleabi +++ b/docker/Dockerfile.arm-unknown-linux-musleabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.arm-unknown-linux-musleabihf b/docker/Dockerfile.arm-unknown-linux-musleabihf index 0d19ecc74..b77c1d644 100644 --- a/docker/Dockerfile.arm-unknown-linux-musleabihf +++ b/docker/Dockerfile.arm-unknown-linux-musleabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.armv5te-unknown-linux-gnueabi b/docker/Dockerfile.armv5te-unknown-linux-gnueabi index 0d8cb2ffc..a2a1e17c7 100644 --- a/docker/Dockerfile.armv5te-unknown-linux-gnueabi +++ b/docker/Dockerfile.armv5te-unknown-linux-gnueabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.armv5te-unknown-linux-musleabi b/docker/Dockerfile.armv5te-unknown-linux-musleabi index acba21450..360de4f83 100644 --- a/docker/Dockerfile.armv5te-unknown-linux-musleabi +++ b/docker/Dockerfile.armv5te-unknown-linux-musleabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.armv7-linux-androideabi b/docker/Dockerfile.armv7-linux-androideabi index edcfab357..b3537bca1 100644 --- a/docker/Dockerfile.armv7-linux-androideabi +++ b/docker/Dockerfile.armv7-linux-androideabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.armv7-unknown-linux-gnueabi b/docker/Dockerfile.armv7-unknown-linux-gnueabi index c4fd68ab7..5f7dff2a4 100644 --- a/docker/Dockerfile.armv7-unknown-linux-gnueabi +++ b/docker/Dockerfile.armv7-unknown-linux-gnueabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.armv7-unknown-linux-gnueabihf b/docker/Dockerfile.armv7-unknown-linux-gnueabihf index 2f63560f9..c62df712f 100644 --- a/docker/Dockerfile.armv7-unknown-linux-gnueabihf +++ b/docker/Dockerfile.armv7-unknown-linux-gnueabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.armv7-unknown-linux-musleabi b/docker/Dockerfile.armv7-unknown-linux-musleabi index c998e260f..2996384c5 100644 --- a/docker/Dockerfile.armv7-unknown-linux-musleabi +++ b/docker/Dockerfile.armv7-unknown-linux-musleabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.armv7-unknown-linux-musleabihf b/docker/Dockerfile.armv7-unknown-linux-musleabihf index f1008bf88..3fbbd64b0 100644 --- a/docker/Dockerfile.armv7-unknown-linux-musleabihf +++ b/docker/Dockerfile.armv7-unknown-linux-musleabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.asmjs-unknown-emscripten b/docker/Dockerfile.asmjs-unknown-emscripten index 2b0a725d5..0da5c9b13 100644 --- a/docker/Dockerfile.asmjs-unknown-emscripten +++ b/docker/Dockerfile.asmjs-unknown-emscripten @@ -8,9 +8,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ libxml2 \ python diff --git a/docker/Dockerfile.cross b/docker/Dockerfile.cross index c836cabf6..5a286976e 100644 --- a/docker/Dockerfile.cross +++ b/docker/Dockerfile.cross @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS rust +FROM ubuntu:24.04 AS rust ENV DEBIAN_FRONTEND=noninteractive COPY docker/lib.sh docker/cross.sh / COPY ./ /project @@ -6,7 +6,7 @@ RUN /cross.sh /project # we build our images in 2 steps, to ensure we have a compact # image, since we want to add our current subdirectory -FROM ubuntu:20.04 AS base +FROM ubuntu:24.04 AS base COPY --from=rust /root/.cargo /root/.cargo COPY --from=rust /root/.rustup /root/.rustup diff --git a/docker/Dockerfile.i586-unknown-linux-gnu b/docker/Dockerfile.i586-unknown-linux-gnu index e52bc04ee..e1adc6ad0 100644 --- a/docker/Dockerfile.i586-unknown-linux-gnu +++ b/docker/Dockerfile.i586-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.i586-unknown-linux-musl b/docker/Dockerfile.i586-unknown-linux-musl index 7288fa3a1..8c84502b0 100644 --- a/docker/Dockerfile.i586-unknown-linux-musl +++ b/docker/Dockerfile.i586-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY musl.sh / diff --git a/docker/Dockerfile.i686-linux-android b/docker/Dockerfile.i686-linux-android index 5992b701d..aa87f3048 100644 --- a/docker/Dockerfile.i686-linux-android +++ b/docker/Dockerfile.i686-linux-android @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build # We could supposedly directly run i686 binaries like we do for x86_64, but diff --git a/docker/Dockerfile.i686-pc-windows-gnu b/docker/Dockerfile.i686-pc-windows-gnu index 39cd101f5..e0268c3e4 100644 --- a/docker/Dockerfile.i686-pc-windows-gnu +++ b/docker/Dockerfile.i686-pc-windows-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN dpkg --add-architecture i386 && apt-get update && \ diff --git a/docker/Dockerfile.i686-unknown-freebsd b/docker/Dockerfile.i686-unknown-freebsd index b4c6b8676..5b6e27d2e 100644 --- a/docker/Dockerfile.i686-unknown-freebsd +++ b/docker/Dockerfile.i686-unknown-freebsd @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN echo "export ARCH=i686" > /freebsd-arch.sh diff --git a/docker/Dockerfile.i686-unknown-linux-gnu b/docker/Dockerfile.i686-unknown-linux-gnu index f76bf1843..bdcd74899 100644 --- a/docker/Dockerfile.i686-unknown-linux-gnu +++ b/docker/Dockerfile.i686-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.i686-unknown-linux-musl b/docker/Dockerfile.i686-unknown-linux-musl index bf51fb542..436c982ee 100644 --- a/docker/Dockerfile.i686-unknown-linux-musl +++ b/docker/Dockerfile.i686-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY musl.sh / diff --git a/docker/Dockerfile.loongarch64-unknown-linux-gnu b/docker/Dockerfile.loongarch64-unknown-linux-gnu index eb79ff43b..e73a8d1af 100644 --- a/docker/Dockerfile.loongarch64-unknown-linux-gnu +++ b/docker/Dockerfile.loongarch64-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build ARG VERBOSE diff --git a/docker/Dockerfile.loongarch64-unknown-linux-musl b/docker/Dockerfile.loongarch64-unknown-linux-musl index e7bd8891d..bac09003f 100644 --- a/docker/Dockerfile.loongarch64-unknown-linux-musl +++ b/docker/Dockerfile.loongarch64-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build ARG VERBOSE diff --git a/docker/Dockerfile.mips-unknown-linux-gnu b/docker/Dockerfile.mips-unknown-linux-gnu index 5d5cb2f14..77771da86 100644 --- a/docker/Dockerfile.mips-unknown-linux-gnu +++ b/docker/Dockerfile.mips-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.mips-unknown-linux-musl b/docker/Dockerfile.mips-unknown-linux-musl index 045f4f519..5da4e3fdb 100644 --- a/docker/Dockerfile.mips-unknown-linux-musl +++ b/docker/Dockerfile.mips-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.mips64-unknown-linux-gnuabi64 b/docker/Dockerfile.mips64-unknown-linux-gnuabi64 index 70cc20b42..66524384b 100644 --- a/docker/Dockerfile.mips64-unknown-linux-gnuabi64 +++ b/docker/Dockerfile.mips64-unknown-linux-gnuabi64 @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.mips64-unknown-linux-muslabi64 b/docker/Dockerfile.mips64-unknown-linux-muslabi64 index a8a0b373b..72419861c 100644 --- a/docker/Dockerfile.mips64-unknown-linux-muslabi64 +++ b/docker/Dockerfile.mips64-unknown-linux-muslabi64 @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 b/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 index cc8da8e1a..fd16a5b7c 100644 --- a/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 +++ b/docker/Dockerfile.mips64el-unknown-linux-gnuabi64 @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.mips64el-unknown-linux-muslabi64 b/docker/Dockerfile.mips64el-unknown-linux-muslabi64 index 56cf1c46f..a0cf9dc92 100644 --- a/docker/Dockerfile.mips64el-unknown-linux-muslabi64 +++ b/docker/Dockerfile.mips64el-unknown-linux-muslabi64 @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.mipsel-unknown-linux-gnu b/docker/Dockerfile.mipsel-unknown-linux-gnu index 30e12758d..698c17c43 100644 --- a/docker/Dockerfile.mipsel-unknown-linux-gnu +++ b/docker/Dockerfile.mipsel-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.mipsel-unknown-linux-musl b/docker/Dockerfile.mipsel-unknown-linux-musl index 6db436743..88b4f8648 100644 --- a/docker/Dockerfile.mipsel-unknown-linux-musl +++ b/docker/Dockerfile.mipsel-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.native b/docker/Dockerfile.native index e32319e30..fc693e534 100644 --- a/docker/Dockerfile.native +++ b/docker/Dockerfile.native @@ -1,5 +1,5 @@ # This dockerfile is used when the target matches the images platform in `build-docker-image` -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -8,9 +8,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build ARG TARGETARCH diff --git a/docker/Dockerfile.native.centos b/docker/Dockerfile.native.centos index 15c8dd468..fa39f7373 100644 --- a/docker/Dockerfile.native.centos +++ b/docker/Dockerfile.native.centos @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS base +FROM ubuntu:24.04 AS base ENV DEBIAN_FRONTEND=noninteractive ARG TARGETARCH @@ -23,9 +23,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - # these need to be present in **both** FROM sections ARG TARGETARCH ARG TARGETVARIANT diff --git a/docker/Dockerfile.powerpc-unknown-linux-gnu b/docker/Dockerfile.powerpc-unknown-linux-gnu index 0086fcdaa..ce1834fb8 100644 --- a/docker/Dockerfile.powerpc-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.powerpc64-unknown-linux-gnu b/docker/Dockerfile.powerpc64-unknown-linux-gnu index 9ecb2b970..85f076162 100644 --- a/docker/Dockerfile.powerpc64-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc64-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.powerpc64le-unknown-linux-gnu b/docker/Dockerfile.powerpc64le-unknown-linux-gnu index adb254ab2..405ecda6f 100644 --- a/docker/Dockerfile.powerpc64le-unknown-linux-gnu +++ b/docker/Dockerfile.powerpc64le-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.riscv64gc-unknown-linux-gnu b/docker/Dockerfile.riscv64gc-unknown-linux-gnu index 002b84ae3..6721a553a 100644 --- a/docker/Dockerfile.riscv64gc-unknown-linux-gnu +++ b/docker/Dockerfile.riscv64gc-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install -y --no-install-recommends \ diff --git a/docker/Dockerfile.riscv64gc-unknown-linux-musl b/docker/Dockerfile.riscv64gc-unknown-linux-musl index 99e295416..c90736922 100644 --- a/docker/Dockerfile.riscv64gc-unknown-linux-musl +++ b/docker/Dockerfile.riscv64gc-unknown-linux-musl @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install -y --no-install-recommends \ diff --git a/docker/Dockerfile.s390x-unknown-linux-gnu b/docker/Dockerfile.s390x-unknown-linux-gnu index 52917e80d..7fc86f2bb 100644 --- a/docker/Dockerfile.s390x-unknown-linux-gnu +++ b/docker/Dockerfile.s390x-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.sparc64-unknown-linux-gnu b/docker/Dockerfile.sparc64-unknown-linux-gnu index 9b6c2d730..1146b8ed0 100644 --- a/docker/Dockerfile.sparc64-unknown-linux-gnu +++ b/docker/Dockerfile.sparc64-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.sparcv9-sun-solaris b/docker/Dockerfile.sparcv9-sun-solaris index 23e490ff1..1d45728c0 100644 --- a/docker/Dockerfile.sparcv9-sun-solaris +++ b/docker/Dockerfile.sparcv9-sun-solaris @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY solaris.sh / diff --git a/docker/Dockerfile.thumbv6m-none-eabi b/docker/Dockerfile.thumbv6m-none-eabi index 089fe8e0c..727c16a47 100644 --- a/docker/Dockerfile.thumbv6m-none-eabi +++ b/docker/Dockerfile.thumbv6m-none-eabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv7em-none-eabi b/docker/Dockerfile.thumbv7em-none-eabi index 244de742f..37e155a94 100644 --- a/docker/Dockerfile.thumbv7em-none-eabi +++ b/docker/Dockerfile.thumbv7em-none-eabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv7em-none-eabihf b/docker/Dockerfile.thumbv7em-none-eabihf index 0e19328f2..cab5475c4 100644 --- a/docker/Dockerfile.thumbv7em-none-eabihf +++ b/docker/Dockerfile.thumbv7em-none-eabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv7m-none-eabi b/docker/Dockerfile.thumbv7m-none-eabi index 88d0907b6..7c44e3a3d 100644 --- a/docker/Dockerfile.thumbv7m-none-eabi +++ b/docker/Dockerfile.thumbv7m-none-eabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv7neon-linux-androideabi b/docker/Dockerfile.thumbv7neon-linux-androideabi index e79eea9bd..8b7a0c92b 100644 --- a/docker/Dockerfile.thumbv7neon-linux-androideabi +++ b/docker/Dockerfile.thumbv7neon-linux-androideabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY qemu.sh / diff --git a/docker/Dockerfile.thumbv7neon-unknown-linux-gnueabihf b/docker/Dockerfile.thumbv7neon-unknown-linux-gnueabihf index 3fd110ef6..e455739ee 100644 --- a/docker/Dockerfile.thumbv7neon-unknown-linux-gnueabihf +++ b/docker/Dockerfile.thumbv7neon-unknown-linux-gnueabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv8m.base-none-eabi b/docker/Dockerfile.thumbv8m.base-none-eabi index 500ddae4d..19d69c046 100644 --- a/docker/Dockerfile.thumbv8m.base-none-eabi +++ b/docker/Dockerfile.thumbv8m.base-none-eabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv8m.main-none-eabi b/docker/Dockerfile.thumbv8m.main-none-eabi index 851dca251..c77aee49b 100644 --- a/docker/Dockerfile.thumbv8m.main-none-eabi +++ b/docker/Dockerfile.thumbv8m.main-none-eabi @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.thumbv8m.main-none-eabihf b/docker/Dockerfile.thumbv8m.main-none-eabihf index 62891d9a2..2201c7c3f 100644 --- a/docker/Dockerfile.thumbv8m.main-none-eabihf +++ b/docker/Dockerfile.thumbv8m.main-none-eabihf @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.wasm32-unknown-emscripten b/docker/Dockerfile.wasm32-unknown-emscripten index 65b6f9095..93f68f5bc 100644 --- a/docker/Dockerfile.wasm32-unknown-emscripten +++ b/docker/Dockerfile.wasm32-unknown-emscripten @@ -8,9 +8,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ libxml2 \ python diff --git a/docker/Dockerfile.x86_64-linux-android b/docker/Dockerfile.x86_64-linux-android index 445f26b45..d7829d048 100644 --- a/docker/Dockerfile.x86_64-linux-android +++ b/docker/Dockerfile.x86_64-linux-android @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build # Using qemu allows older host cpus (without sse4) to execute the target binaries diff --git a/docker/Dockerfile.x86_64-pc-solaris b/docker/Dockerfile.x86_64-pc-solaris index 475b8adbf..c76575752 100644 --- a/docker/Dockerfile.x86_64-pc-solaris +++ b/docker/Dockerfile.x86_64-pc-solaris @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY solaris.sh / diff --git a/docker/Dockerfile.x86_64-pc-windows-gnu b/docker/Dockerfile.x86_64-pc-windows-gnu index 86a752d58..7b3f32aa8 100644 --- a/docker/Dockerfile.x86_64-pc-windows-gnu +++ b/docker/Dockerfile.x86_64-pc-windows-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN dpkg --add-architecture i386 && apt-get update && \ diff --git a/docker/Dockerfile.x86_64-unknown-dragonfly b/docker/Dockerfile.x86_64-unknown-dragonfly index a7195511f..513ede268 100644 --- a/docker/Dockerfile.x86_64-unknown-dragonfly +++ b/docker/Dockerfile.x86_64-unknown-dragonfly @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY dragonfly.sh / diff --git a/docker/Dockerfile.x86_64-unknown-freebsd b/docker/Dockerfile.x86_64-unknown-freebsd index 292f2dd6c..4f0b13d51 100644 --- a/docker/Dockerfile.x86_64-unknown-freebsd +++ b/docker/Dockerfile.x86_64-unknown-freebsd @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN echo "export ARCH=x86_64" > /freebsd-arch.sh diff --git a/docker/Dockerfile.x86_64-unknown-illumos b/docker/Dockerfile.x86_64-unknown-illumos index f2c3fa0eb..ae165035c 100644 --- a/docker/Dockerfile.x86_64-unknown-illumos +++ b/docker/Dockerfile.x86_64-unknown-illumos @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY illumos.sh / diff --git a/docker/Dockerfile.x86_64-unknown-linux-gnu b/docker/Dockerfile.x86_64-unknown-linux-gnu index 9c2f5404e..c54ac4a5d 100644 --- a/docker/Dockerfile.x86_64-unknown-linux-gnu +++ b/docker/Dockerfile.x86_64-unknown-linux-gnu @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build RUN apt-get update && apt-get install --assume-yes --no-install-recommends \ diff --git a/docker/Dockerfile.x86_64-unknown-linux-gnu.centos b/docker/Dockerfile.x86_64-unknown-linux-gnu.centos index 54f159c86..324021841 100644 --- a/docker/Dockerfile.x86_64-unknown-linux-gnu.centos +++ b/docker/Dockerfile.x86_64-unknown-linux-gnu.centos @@ -1,3 +1,3 @@ # HACK: this file is currently never used and only exists for usage with `Dockerfile.native.centos` # it will be supported for aarch64 hosts, see #751 and #975 -FROM ubuntu:20.04 AS base +FROM ubuntu:24.04 AS base diff --git a/docker/Dockerfile.x86_64-unknown-linux-musl b/docker/Dockerfile.x86_64-unknown-linux-musl index 226738b68..85f74cab7 100644 --- a/docker/Dockerfile.x86_64-unknown-linux-musl +++ b/docker/Dockerfile.x86_64-unknown-linux-musl @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY musl.sh / diff --git a/docker/Dockerfile.x86_64-unknown-netbsd b/docker/Dockerfile.x86_64-unknown-netbsd index ecae9e9e8..c7c71420c 100644 --- a/docker/Dockerfile.x86_64-unknown-netbsd +++ b/docker/Dockerfile.x86_64-unknown-netbsd @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build COPY netbsd.sh / diff --git a/docker/Dockerfile.zig b/docker/Dockerfile.zig index 75fc26d72..209b9c390 100644 --- a/docker/Dockerfile.zig +++ b/docker/Dockerfile.zig @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS cross-base +FROM ubuntu:24.04 AS cross-base ENV DEBIAN_FRONTEND=noninteractive COPY common.sh lib.sh / @@ -7,9 +7,6 @@ RUN /common.sh COPY cmake.sh / RUN /cmake.sh -COPY xargo.sh / -RUN /xargo.sh - FROM cross-base AS build ARG TARGETPLATFORM diff --git a/docker/android-ndk.sh b/docker/android-ndk.sh index 6f4852236..b7e1e9275 100755 --- a/docker/android-ndk.sh +++ b/docker/android-ndk.sh @@ -11,7 +11,7 @@ main() { # python3 is still needed for newer NDK versions, just since it # simplifies making symlinks even though the toolchain is prebuilt - install_packages curl python python3 + install_packages curl python3 get_ndk_info if [[ "${NDK_VERSION}" -le 9 ]]; then install_packages bzip2 diff --git a/docker/common.sh b/docker/common.sh index 283949418..61160f85a 100755 --- a/docker/common.sh +++ b/docker/common.sh @@ -42,6 +42,8 @@ if_centos install_packages \ pkgconfig if_ubuntu install_packages \ + bzip2 \ + adduser \ g++ \ gfortran \ libc6-dev \ diff --git a/docker/cross-toolchains b/docker/cross-toolchains deleted file mode 160000 index 5504d9293..000000000 --- a/docker/cross-toolchains +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5504d9293334744cf2555286707d9907b89afbfb diff --git a/docker/crosstool-config/arm-unknown-linux-gnueabihf.config b/docker/crosstool-config/arm-unknown-linux-gnueabihf.config index f5b04faaa..453f61ed5 100644 --- a/docker/crosstool-config/arm-unknown-linux-gnueabihf.config +++ b/docker/crosstool-config/arm-unknown-linux-gnueabihf.config @@ -8,7 +8,7 @@ CT_ARCH_FLOAT_HW=y CT_KERNEL_LINUX=y CT_LINUX_V_4_19=y # CT_LINUX_NO_VERSIONS is not set -CT_LINUX_VERSION="4.19.287" +CT_LINUX_VERSION="4.19.21" CT_LINUX_later_than_4_8=y CT_LINUX_4_8_or_later=y CT_LINUX_later_than_3_7=y @@ -16,15 +16,30 @@ CT_LINUX_3_7_or_later=y CT_LINUX_later_than_3_2=y CT_LINUX_3_2_or_later=y CT_BINUTILS_V_2_32=y -CT_GLIBC_V_2_31=y +CT_GLIBC_V_2_17=y # CT_GLIBC_NO_VERSIONS is not set -CT_GLIBC_VERSION="2.31" +CT_GLIBC_VERSION="2.17" +CT_GLIBC_2_29_or_older=y +CT_GLIBC_older_than_2_29=y +CT_GLIBC_2_27_or_older=y +CT_GLIBC_older_than_2_27=y +CT_GLIBC_2_26_or_older=y +CT_GLIBC_older_than_2_26=y +CT_GLIBC_2_25_or_older=y +CT_GLIBC_older_than_2_25=y +CT_GLIBC_2_24_or_older=y +CT_GLIBC_older_than_2_24=y +CT_GLIBC_2_23_or_older=y +CT_GLIBC_older_than_2_23=y +CT_GLIBC_2_20_or_older=y +CT_GLIBC_older_than_2_20=y CT_GLIBC_2_17_or_later=y +CT_GLIBC_2_17_or_older=y CT_GLIBC_later_than_2_14=y CT_GLIBC_2_14_or_later=y CT_GCC_V_8=y # CT_GCC_NO_VERSIONS is not set -CT_GCC_VERSION="8.5.0" +CT_GCC_VERSION="8.3.0" CT_GCC_later_than_7=y CT_GCC_7_or_later=y CT_GCC_later_than_6=y diff --git a/docker/crosstool-config/loongarch64-unknown-linux-gnu.config b/docker/crosstool-config/loongarch64-unknown-linux-gnu.config index 7de2835c4..f16066f34 100644 --- a/docker/crosstool-config/loongarch64-unknown-linux-gnu.config +++ b/docker/crosstool-config/loongarch64-unknown-linux-gnu.config @@ -6,24 +6,39 @@ CT_ARCH_LOONGARCH=y CT_ARCH_USE_MMU=y CT_ARCH_ARCH="loongarch64" CT_KERNEL_LINUX=y -CT_LINUX_V_5_19=y +CT_LINUX_V_4_19=y # CT_LINUX_NO_VERSIONS is not set -CT_LINUX_VERSION="5.19.16" +CT_LINUX_VERSION="4.19.21" CT_LINUX_later_than_4_8=y CT_LINUX_4_8_or_later=y CT_LINUX_later_than_3_7=y CT_LINUX_3_7_or_later=y CT_LINUX_later_than_3_2=y CT_LINUX_3_2_or_later=y -CT_GLIBC_V_2_36=y +CT_GLIBC_V_2_17=y # CT_GLIBC_NO_VERSIONS is not set -CT_GLIBC_VERSION="2.36" +CT_GLIBC_VERSION="2.17" +CT_GLIBC_2_29_or_older=y +CT_GLIBC_older_than_2_29=y +CT_GLIBC_2_27_or_older=y +CT_GLIBC_older_than_2_27=y +CT_GLIBC_2_26_or_older=y +CT_GLIBC_older_than_2_26=y +CT_GLIBC_2_25_or_older=y +CT_GLIBC_older_than_2_25=y +CT_GLIBC_2_24_or_older=y +CT_GLIBC_older_than_2_24=y +CT_GLIBC_2_23_or_older=y +CT_GLIBC_older_than_2_23=y +CT_GLIBC_2_20_or_older=y +CT_GLIBC_older_than_2_20=y CT_GLIBC_2_17_or_later=y +CT_GLIBC_2_17_or_older=y CT_GLIBC_later_than_2_14=y CT_GLIBC_2_14_or_later=y -CT_GCC_V_14=y +CT_GCC_V_8=y # CT_GCC_NO_VERSIONS is not set -CT_GCC_VERSION="14.2.0" +CT_GCC_VERSION="8.3.0" CT_GCC_later_than_7=y CT_GCC_7_or_later=y CT_GCC_later_than_6=y diff --git a/docker/crosstool-config/loongarch64-unknown-linux-musl.config b/docker/crosstool-config/loongarch64-unknown-linux-musl.config index b284ed73a..1511175a3 100644 --- a/docker/crosstool-config/loongarch64-unknown-linux-musl.config +++ b/docker/crosstool-config/loongarch64-unknown-linux-musl.config @@ -6,9 +6,9 @@ CT_ARCH_LOONGARCH=y CT_ARCH_USE_MMU=y CT_ARCH_ARCH="loongarch64" CT_KERNEL_LINUX=y -CT_LINUX_V_5_19=y +CT_LINUX_V_4_19=y # CT_LINUX_NO_VERSIONS is not set -CT_LINUX_VERSION="5.19.16" +CT_LINUX_VERSION="4.19.21" CT_LINUX_later_than_4_8=y CT_LINUX_4_8_or_later=y CT_LINUX_later_than_3_7=y @@ -16,12 +16,12 @@ CT_LINUX_3_7_or_later=y CT_LINUX_later_than_3_2=y CT_LINUX_3_2_or_later=y CT_LIBC_MUSL=y -CT_MUSL_V_1_2_5=y +CT_MUSL_V_1_1_24=y # CT_MUSL_NO_VERSIONS is not set -CT_MUSL_VERSION="1.2.5" -CT_GCC_V_14=y +CT_MUSL_VERSION="1.1.24" +CT_GCC_V_8=y # CT_GCC_NO_VERSIONS is not set -CT_GCC_VERSION="14.2.0" +CT_GCC_VERSION="8.3.0" CT_GCC_later_than_7=y CT_GCC_7_or_later=y CT_GCC_later_than_6=y diff --git a/docker/linux-image.sh b/docker/linux-image.sh index 86b5d012f..f739553bc 100755 --- a/docker/linux-image.sh +++ b/docker/linux-image.sh @@ -57,17 +57,17 @@ max_kernel_version() { main() { # arch in the rust target local arch="${1}" \ - kversion=5.10.0-34 + kversion=6.12.41+deb13 - local debsource="deb http://http.debian.net/debian/ bullseye main" - debsource="${debsource}\ndeb http://security.debian.org/ bullseye-security main" + local debsource="deb http://http.debian.net/debian/ trixie main" + debsource="${debsource}\ndeb http://security.debian.org/ trixie-security main" local dropbear="dropbear-bin" local -a deps local kernel= local libgcc="libgcc-s1" - local ncurses= + # local ncurses= # select debian arch and kernel version case "${arch}" in @@ -78,7 +78,7 @@ main() { ;; armv7) arch=armhf - kernel='5.*-armmp' + kernel='6.*-armmp' deps=(libcrypt1:"${arch}") ;; i686) @@ -92,14 +92,14 @@ main() { debsource="deb http://http.debian.net/debian/ buster main" debsource="${debsource}\ndeb http://security.debian.org/ buster/updates main" kernel='4.*-4kc-malta' - ncurses="=6.1*" + # ncurses="=6.1*" ;; mipsel) - kernel='5.*-4kc-malta' + kernel='6.*-4kc-malta' deps=(libcrypt1:"${arch}") ;; mips64el) - kernel='5.*-5kc-malta' + kernel='6.*-5kc-malta' deps=(libcrypt1:"${arch}") ;; powerpc) @@ -132,7 +132,7 @@ main() { ;; powerpc64le) arch=ppc64el - kernel='5.*-powerpc64le' + kernel='6.*-powerpc64le' deps=(libcrypt1:"${arch}") ;; riscv64) @@ -142,7 +142,7 @@ main() { ;; s390x) arch=s390x - kernel='5.*-s390x' + kernel='6.*-s390x' deps=(libcrypt1:"${arch}") ;; sparc64) @@ -198,9 +198,9 @@ main() { dpkg --add-architecture "${arch}" || echo "foreign-architecture ${arch}" >/etc/dpkg/dpkg.cfg.d/multiarch # Add Debian keys. - curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/archive-key-{7.0,8,9,10,11,12}.asc' -O - curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/archive-key-{8,9,10,11,12}-security.asc' -O - curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/release-{7,8,9,10,11,12}.asc' -O + curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/archive-key-{7.0,8,9,10,11,12,13}.asc' -O + curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/archive-key-{8,9,10,11,12,13}-security.asc' -O + curl --retry 3 -sSfL 'https://ftp-master.debian.org/keys/release-{7,8,9,10,11,12,13}.asc' -O curl --retry 3 -sSfL 'https://www.ports.debian.org/archive_{2020,2021,2022,2023,2024,2025}.key' -O for key in *.asc *.key; do @@ -240,8 +240,8 @@ main() { "libgmp10:${arch}" \ "libc6:${arch}" \ "linux-image-${kernel}:${arch}" \ - ncurses-base"${ncurses}" \ "zlib1g:${arch}" + # "ncurses-base:all" \ if [[ "${arch}" != "${dpkg_arch}" ]]; then apt-get -d --no-install-recommends download "${libgcc_packages[@]}" diff --git a/docker/qemu.sh b/docker/qemu.sh index 9c15c5b7e..bfe4e9bb9 100755 --- a/docker/qemu.sh +++ b/docker/qemu.sh @@ -19,7 +19,7 @@ build_static_libffi () { tar --strip-components=1 -xzf "v${version}.tar.gz" ./configure --prefix="$td"/lib --disable-builddir --disable-shared --enable-static make "-j$(nproc)" - install -m 644 ./.libs/libffi.a /usr/local/lib/ + install -m 644 ./.libs/libffi.a /usr/lib/ popd @@ -42,7 +42,7 @@ build_static_libmount () { tar --strip-components=1 -xJf "util-linux-${version_spec}.tar.xz" ./configure --disable-shared --enable-static --without-ncurses make "-j$(nproc)" mount blkid - install -m 644 ./.libs/*.a /usr/local/lib/ + install -m 644 ./.libs/*.a /usr/lib/ popd @@ -67,7 +67,7 @@ build_static_libattr() { ./configure make "-j$(nproc)" - install -m 644 ./libattr/.libs/libattr.a /usr/local/lib/ + install -m 644 ./libattr/.libs/libattr.a /usr/lib/ yum remove -y gettext @@ -87,7 +87,7 @@ build_static_libcap() { curl --retry 3 -sSfL "https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-${version}.tar.xz" -O tar --strip-components=1 -xJf "libcap-${version}.tar.xz" make "-j$(nproc)" - install -m 644 libcap/libcap.a /usr/local/lib/ + install -m 644 libcap/libcap.a /usr/lib/ popd @@ -106,7 +106,7 @@ build_static_pixman() { tar --strip-components=1 -xzf "pixman-${version}.tar.gz" ./configure make "-j$(nproc)" - install -m 644 ./pixman/.libs/libpixman-1.a /usr/local/lib/ + install -m 644 ./pixman/.libs/libpixman-1.a /usr/lib/ popd @@ -125,7 +125,7 @@ build_static_slirp() { tar -xzf "libslirp-v${version}.tar.gz" meson setup -Ddefault_library=static libslirp-v${version} build ninja -C build - install -m 644 ./build/libslirp.a /usr/local/lib/ + install -m 644 ./build/libslirp.a /usr/lib/ popd diff --git a/docker/ubuntu.sources b/docker/ubuntu.sources new file mode 100644 index 000000000..46bd732b0 --- /dev/null +++ b/docker/ubuntu.sources @@ -0,0 +1,20 @@ +Types: deb deb-src +URIs: http://security.ubuntu.com/ubuntu +Suites: noble-security +Architectures: amd64 i386 +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +Types: deb deb-src +URIs: http://ports.ubuntu.com/ubuntu-ports +Suites: noble noble-updates noble-security +Architectures: arm64 +Components: main restricted universe multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +Types: deb deb-src +URIs: http://archive.ubuntu.com/ubuntu +Suites: noble +Architectures: amd64 i386 +Components: universe main multiverse restricted +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg diff --git a/src/bin/commands/containers.rs b/src/bin/commands/containers.rs index 530a3a8d9..a21461d01 100644 --- a/src/bin/commands/containers.rs +++ b/src/bin/commands/containers.rs @@ -4,7 +4,7 @@ use clap::{Args, Subcommand}; use cross::docker::ImagePlatform; use cross::rustc::{QualifiedToolchain, Toolchain}; use cross::shell::{MessageInfo, Stream}; -use cross::{docker, CommandExt, TargetTriple}; +use cross::{CommandExt, TargetTriple, docker}; #[derive(Args, Debug)] pub struct ListVolumes { @@ -327,7 +327,7 @@ pub fn create_persistent_volume( docker.arg("--rm"); docker.args(["-v", &format!("{}:{}", volume_id, mount_prefix)]); docker.arg("-d"); - let is_tty = io::Stdin::is_atty() && io::Stdout::is_atty() && io::Stderr::is_atty(); + let is_tty = /* io::Stdin::is_atty() && */ io::Stdout::is_atty() && io::Stderr::is_atty(); if is_tty { docker.arg("-t"); } diff --git a/src/bin/commands/images.rs b/src/bin/commands/images.rs index 490af4bb9..8b96f3e61 100644 --- a/src/bin/commands/images.rs +++ b/src/bin/commands/images.rs @@ -215,15 +215,13 @@ fn get_image_target( } else if image .repository .starts_with(CROSS_CUSTOM_DOCKERFILE_IMAGE_PREFIX) - { - if let Some(target) = target_list + && let Some(target) = target_list .triples .iter() .find(|target| image.tag.starts_with(target.as_str())) .cloned() - { - return Ok(target); - } + { + return Ok(target); } let mut command = engine.subcommand("inspect"); command.args([ diff --git a/src/bin/commands/run.rs b/src/bin/commands/run.rs index 836a90bd0..9bc3e03ad 100644 --- a/src/bin/commands/run.rs +++ b/src/bin/commands/run.rs @@ -2,8 +2,8 @@ use clap::Args as ClapArgs; use cross::config::Config; use cross::shell::{MessageInfo, Verbosity}; use cross::{ - cargo_metadata_with_args, cli::Args, docker, rustc, setup, toml, CommandVariant, CrossSetup, - Target, + CommandVariant, CrossSetup, Target, cargo_metadata_with_args, cli::Args, docker, rustc, setup, + toml, }; use eyre::Context; diff --git a/src/bin/cross-util.rs b/src/bin/cross-util.rs index a90c6f92a..628413cd0 100644 --- a/src/bin/cross-util.rs +++ b/src/bin/cross-util.rs @@ -79,9 +79,7 @@ fn get_container_engine( } macro_rules! get_engine { - ($args:ident, $docker_in_docker:expr, $msg_info: ident) => {{ - get_container_engine($args.engine(), $docker_in_docker, &mut $msg_info) - }}; + ($args:ident, $docker_in_docker:expr, $msg_info: ident) => {{ get_container_engine($args.engine(), $docker_in_docker, &mut $msg_info) }}; } pub fn main() -> cross::Result<()> { diff --git a/src/bin/cross.rs b/src/bin/cross.rs index ba66146fb..4502868d4 100644 --- a/src/bin/cross.rs +++ b/src/bin/cross.rs @@ -6,9 +6,8 @@ use std::{ }; use cross::{ - cargo, cli, rustc, + OutputExt, Subcommand, cargo, cli, rustc, shell::{self, Verbosity}, - OutputExt, Subcommand, }; pub fn main() -> cross::Result<()> { diff --git a/src/build.rs b/src/build.rs index 11bbcc80c..dcf998963 100644 --- a/src/build.rs +++ b/src/build.rs @@ -24,6 +24,9 @@ fn main() { .write_all(commit_info().as_bytes()) .unwrap(); + // Add "cross_sandboxed" to list of approved cfgs + println!("cargo::rustc-check-cfg=cfg(cross_sandboxed)"); + if env::var("CROSS_SANDBOXED").is_ok() { println!("cargo:rustc-cfg=cross_sandboxed"); } diff --git a/src/cargo.rs b/src/cargo.rs index 010c655ef..92fb6a775 100644 --- a/src/cargo.rs +++ b/src/cargo.rs @@ -50,7 +50,7 @@ impl Subcommand { } } -impl<'a> From<&'a str> for Subcommand { +impl From<&str> for Subcommand { fn from(s: &str) -> Subcommand { match s { "b" | "build" => Subcommand::Build, diff --git a/src/cli.rs b/src/cli.rs index 982ebde66..936447eb1 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,12 +1,12 @@ use std::env; use std::path::{Path, PathBuf}; +use crate::Target; use crate::cargo::Subcommand; use crate::errors::Result; -use crate::file::{absolute_path, PathExt}; +use crate::file::{PathExt, absolute_path}; use crate::rustc::TargetList; use crate::shell::{self, MessageInfo}; -use crate::Target; #[derive(Debug)] pub struct Args { diff --git a/src/config.rs b/src/config.rs index cd62b73c7..ff73b4722 100644 --- a/src/config.rs +++ b/src/config.rs @@ -185,7 +185,7 @@ impl Environment { fn custom_toolchain(&self) -> bool { self.get_var("CROSS_CUSTOM_TOOLCHAIN") - .map_or(false, |s| bool_from_envvar(&s)) + .is_some_and(|s| bool_from_envvar(&s)) } fn custom_toolchain_compat(&self) -> Option { @@ -259,12 +259,9 @@ impl Config { for mentioned_target in keys { let mentioned_target_norm = mentioned_target .to_string() - .replace(|c| c == '-' || c == '_', "") - .to_lowercase(); - let target_norm = target - .to_string() - .replace(|c| c == '-' || c == '_', "") + .replace(['-', '_'], "") .to_lowercase(); + let target_norm = target.to_string().replace(['-', '_'], "").to_lowercase(); if mentioned_target != target && mentioned_target_norm == target_norm { msg_info.warn(format_args!("a target named \"{mentioned_target}\" is mentioned in the Cross configuration, but the current specified target is \"{target}\"."))?; msg_info.status(" > Is the target misspelled in the Cross configuration?")?; diff --git a/src/cross_toml.rs b/src/cross_toml.rs index 40ae74317..f4385da38 100644 --- a/src/cross_toml.rs +++ b/src/cross_toml.rs @@ -6,15 +6,16 @@ //! [1]: https://github.com/cross-rs/cross/blob/main/docs/config_file.md use crate::config::ConfVal; -use crate::docker::custom::PreBuild; use crate::docker::PossibleImage; +use crate::docker::custom::PreBuild; use crate::shell::MessageInfo; -use crate::{config, errors::*}; use crate::{Target, TargetList}; +use crate::{config, errors::*}; use serde::de::DeserializeOwned; use serde::{Deserialize, Deserializer, Serialize}; use std::collections::{BTreeSet, HashMap}; use std::str::FromStr; +use toml::de::Error; /// Environment configuration #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)] @@ -156,8 +157,13 @@ impl CrossToml { source: Option<&str>, msg_info: &mut MessageInfo, ) -> Result<(Self, BTreeSet)> { - let tomld = toml::Deserializer::new(toml_str); - Self::parse_from_deserializer(tomld, source, msg_info) + let toml_d: std::result::Result, Error> = + toml::Deserializer::parse(toml_str); + if let Ok(toml_d) = toml_d { + Self::parse_from_deserializer(toml_d, source, msg_info) + } else { + Err(toml_d.err().expect("This err-field must be set").into()) + } } /// Parses the [`CrossToml`] from a string containing the Cargo.toml contents diff --git a/src/docker/custom.rs b/src/docker/custom.rs index 4e2a4245e..1858bea46 100644 --- a/src/docker/custom.rs +++ b/src/docker/custom.rs @@ -4,12 +4,12 @@ use std::str::FromStr; use crate::docker::{self, DockerOptions, DockerPaths}; use crate::shell::MessageInfo; -use crate::{errors::*, file, CommandExt, ToUtf8}; use crate::{CargoMetadata, TargetTriple}; +use crate::{CommandExt, ToUtf8, errors::*, file}; use super::{ - create_target_dir, get_image_name, path_hash, BuildCommandExt, BuildResultExt, Engine, - ImagePlatform, + BuildCommandExt, BuildResultExt, Engine, ImagePlatform, create_target_dir, get_image_name, + path_hash, }; pub const CROSS_CUSTOM_DOCKERFILE_IMAGE_PREFIX: &str = "localhost/cross-rs/cross-custom-"; @@ -138,15 +138,14 @@ impl<'a> Dockerfile<'a> { } }; - if matches!(self, Dockerfile::File { .. }) { - if let Ok(cross_base_image) = + if matches!(self, Dockerfile::File { .. }) + && let Ok(cross_base_image) = self::get_image_name(&options.config, &options.target, uses_zig) - { - docker_build.args([ - "--build-arg", - &format!("CROSS_BASE_IMAGE={cross_base_image}"), - ]); - } + { + docker_build.args([ + "--build-arg", + &format!("CROSS_BASE_IMAGE={cross_base_image}"), + ]); } docker_build.args(["--file".into(), path]); @@ -155,9 +154,10 @@ impl<'a> Dockerfile<'a> { docker_build.args(Engine::parse_opts(&build_opts)?); } - let has_output = options.config.build_opts().map_or(false, |opts| { - opts.contains("--load") || opts.contains("--output") - }); + let has_output = options + .config + .build_opts() + .is_some_and(|opts| opts.contains("--load") || opts.contains("--output")); if options.engine.kind.is_docker() && !has_output { docker_build.args(["--output", "type=docker"]); }; @@ -266,7 +266,7 @@ fn docker_tag_name(file_name: &str) -> String { // in case our result ends in an invalid last char `-` or `.` // we remove - result = result.trim_end_matches(&['.', '-']).to_owned(); + result = result.trim_end_matches(['.', '-']).to_owned(); // in case all characters were invalid or we had all non-ASCII // characters followed by a `-` or `.`, we use a non-empty filename diff --git a/src/docker/engine.rs b/src/docker/engine.rs index 0e42cb3f1..12e161b1d 100644 --- a/src/docker/engine.rs +++ b/src/docker/engine.rs @@ -5,7 +5,7 @@ use std::process::Command; use crate::config::bool_from_envvar; use crate::extensions::CommandExt; use crate::shell::MessageInfo; -use crate::{errors::*, OutputExt}; +use crate::{OutputExt, errors::*}; use super::{Architecture, ContainerOs}; @@ -175,7 +175,9 @@ fn is_docker_rootless(ce: &Path, msg_info: &mut MessageInfo) -> bool { fn various_is_rootless_configs() { let var = "CROSS_ROOTLESS_CONTAINER_ENGINE"; let old = env::var(var); - env::remove_var(var); + unsafe { + env::remove_var(var); + } assert!(!is_rootless(EngineType::Docker).unwrap_or(false)); assert!(is_rootless(EngineType::Docker).unwrap_or(true)); @@ -185,27 +187,33 @@ fn various_is_rootless_configs() { assert_eq!(is_rootless(EngineType::PodmanRemote), Some(true)); assert_eq!(is_rootless(EngineType::Other), Some(true)); - env::set_var(var, "0"); + unsafe { + env::set_var(var, "0"); + } assert_eq!(is_rootless(EngineType::Docker), Some(false)); assert_eq!(is_rootless(EngineType::Podman), Some(false)); assert_eq!(is_rootless(EngineType::PodmanRemote), Some(false)); assert_eq!(is_rootless(EngineType::Other), Some(false)); - env::set_var(var, "1"); + unsafe { + env::set_var(var, "1"); + } assert_eq!(is_rootless(EngineType::Docker), Some(true)); assert_eq!(is_rootless(EngineType::Podman), Some(true)); assert_eq!(is_rootless(EngineType::PodmanRemote), Some(true)); assert_eq!(is_rootless(EngineType::Other), Some(true)); - env::set_var(var, "auto"); + unsafe { + env::set_var(var, "auto"); + } assert_eq!(is_rootless(EngineType::Docker), None); assert_eq!(is_rootless(EngineType::Podman), Some(true)); assert_eq!(is_rootless(EngineType::PodmanRemote), Some(true)); assert_eq!(is_rootless(EngineType::Other), Some(true)); match old { - Ok(v) => env::set_var(var, v), - Err(_) => env::remove_var(var), + Ok(v) => unsafe { env::set_var(var, v) }, + Err(_) => unsafe { env::remove_var(var) }, } } diff --git a/src/docker/image.rs b/src/docker/image.rs index 6749fe86d..3e6224b74 100644 --- a/src/docker/image.rs +++ b/src/docker/image.rs @@ -3,10 +3,10 @@ use std::str::FromStr; use serde::{Deserialize, Serialize}; use crate::{ + TargetTriple, docker::{CROSS_IMAGE, DEFAULT_IMAGE_VERSION}, errors::*, shell::MessageInfo, - TargetTriple, }; use super::Engine; @@ -229,8 +229,8 @@ impl std::str::FromStr for ImagePlatform { // [os/arch[/variant]=]toolchain fn from_str(s: &str) -> Result { use serde::de::{ - value::{Error as SerdeError, StrDeserializer}, IntoDeserializer, + value::{Error as SerdeError, StrDeserializer}, }; // Try to match the docker platform string first diff --git a/src/docker/local.rs b/src/docker/local.rs index f7d0507d7..6af3c1062 100644 --- a/src/docker/local.rs +++ b/src/docker/local.rs @@ -136,7 +136,9 @@ pub(crate) fn run( ]); } - if io::Stdin::is_atty() && io::Stdout::is_atty() && io::Stderr::is_atty() { + if + /* io::Stdin::is_atty() && */ + io::Stdout::is_atty() && io::Stderr::is_atty() { docker.arg("-t"); } @@ -165,6 +167,7 @@ pub(crate) fn run( // terminate or it may be a known interrupt return status (130, 137, 143). // simpler: just test if the program termination handler was called. // SAFETY: an atomic load. + #[allow(static_mut_refs)] let is_terminated = unsafe { crate::errors::TERMINATED.load(Ordering::SeqCst) }; if !is_terminated { ChildContainer::exit_static(); diff --git a/src/docker/remote.rs b/src/docker/remote.rs index b8c9ee803..06d9087d3 100644 --- a/src/docker/remote.rs +++ b/src/docker/remote.rs @@ -8,6 +8,7 @@ use eyre::Context; use super::engine::Engine; use super::shared::*; +use crate::TargetTriple; use crate::config::bool_from_envvar; use crate::errors::Result; use crate::extensions::CommandExt; @@ -15,7 +16,6 @@ use crate::file::{self, PathExt, ToUtf8}; use crate::rustc::{self, QualifiedToolchain, VersionMetaExt}; use crate::shell::{MessageInfo, Stream}; use crate::temp; -use crate::TargetTriple; // prevent further commands from running if we handled // a signal earlier, and the volume is exited. @@ -73,22 +73,21 @@ impl<'a, 'b, 'c> ContainerDataVolume<'a, 'b, 'c> { mount_prefix: &str, msg_info: &mut MessageInfo, ) -> Result { - if let Some((_, rel)) = reldst.rsplit_once('/') { - if msg_info.cross_debug - && src.is_dir() - && !src.to_string_lossy().ends_with("/.") - && rel - == src - .file_name() - .expect("filename should be defined as we are a directory") - { - msg_info.warn(format_args!( - "source is pointing to a directory instead of its contents: {} -> {}\nThis might be a bug. {}", - src.as_posix_relative()?, - reldst, - std::panic::Location::caller() - ))?; - } + if let Some((_, rel)) = reldst.rsplit_once('/') + && msg_info.cross_debug + && src.is_dir() + && !src.to_string_lossy().ends_with("/.") + && rel + == src + .file_name() + .expect("filename should be defined as we are a directory") + { + msg_info.warn(format_args!( + "source is pointing to a directory instead of its contents: {} -> {}\nThis might be a bug. {}", + src.as_posix_relative()?, + reldst, + std::panic::Location::caller() + ))?; } subcommand_or_exit(self.engine, "cp")? .arg("-a") @@ -386,10 +385,10 @@ impl<'a, 'b, 'c> ContainerDataVolume<'a, 'b, 'c> { self.copy_rust_base(mount_prefix, msg_info)?; self.copy_rust_manifest(mount_prefix, msg_info)?; self.copy_rust_triple(dirs.host_target(), mount_prefix, false, msg_info)?; - if let Some(target_triple) = target_triple { - if target_triple.triple() != dirs.host_target().triple() { - self.copy_rust_triple(target_triple, mount_prefix, false, msg_info)?; - } + if let Some(target_triple) = target_triple + && target_triple.triple() != dirs.host_target().triple() + { + self.copy_rust_triple(target_triple, mount_prefix, false, msg_info)?; } Ok(()) @@ -613,7 +612,7 @@ impl Fingerprint { let to_copy: Vec<&str> = current .map .iter() - .filter(|(k, v1)| self.map.get(*k).map_or(true, |v2| v1 != &v2)) + .filter(|(k, v1)| self.map.get(*k).is_none_or(|v2| v1 != &v2)) .map(|(k, _)| k.as_str()) .collect(); let to_remove: Vec<&str> = self @@ -774,7 +773,7 @@ pub(crate) fn run( } docker.arg("-d"); - let is_tty = io::Stdin::is_atty() && io::Stdout::is_atty() && io::Stderr::is_atty(); + let is_tty = /* io::Stdin::is_atty() && */ io::Stdout::is_atty() && io::Stderr::is_atty(); if is_tty { docker.arg("-t"); } @@ -924,7 +923,7 @@ pub(crate) fn run( final_args.push(arg); } } - if !has_target_dir && subcommand.map_or(true, |s| s.needs_target_in_command()) { + if !has_target_dir && subcommand.is_none_or(|s| s.needs_target_in_command()) { final_args.push("--target-dir".to_owned()); final_args.push(target_dir.clone()); } @@ -1001,15 +1000,14 @@ symlink_recurse \"${{prefix}}\" { subcommand_or_exit(engine, "cp")? .arg("-a") - .arg(&format!("{container_id}:{mount_target_dir}",)) + .arg(format!("{container_id}:{mount_target_dir}",)) .arg( package_dirs .target() .parent() .expect("target directory should have a parent"), ) - .run_and_get_status(msg_info, false) - .map_err::(Into::into)?; + .run_and_get_status(msg_info, false)?; } ChildContainer::finish_static(is_tty, msg_info); diff --git a/src/docker/shared.rs b/src/docker/shared.rs index 005f53cb4..aaf904dad 100644 --- a/src/docker/shared.rs +++ b/src/docker/shared.rs @@ -1,13 +1,13 @@ -use super::custom::{Dockerfile, PreBuild}; -use super::image::PossibleImage; use super::Image; use super::PROVIDED_IMAGES; -use super::{engine::*, ProvidedImage}; +use super::custom::{Dockerfile, PreBuild}; +use super::image::PossibleImage; +use super::{ProvidedImage, engine::*}; use crate::cargo::CargoMetadata; use crate::config::Config; use crate::errors::*; use crate::extensions::{CommandExt, SafeCommand}; -use crate::file::{self, write_file, PathExt, ToUtf8}; +use crate::file::{self, PathExt, ToUtf8, write_file}; use crate::id; use crate::rustc::QualifiedToolchain; use crate::shell::{ColorChoice, MessageInfo, Verbosity}; @@ -30,7 +30,7 @@ pub const CROSS_IMAGE: &str = { }; // note: this is the most common base image for our images -pub const UBUNTU_BASE: &str = "ubuntu:20.04"; +pub const UBUNTU_BASE: &str = "ubuntu:24.04"; pub const DEFAULT_IMAGE_VERSION: &str = if crate::commit_info().is_empty() { env!("CARGO_PKG_VERSION") } else { @@ -554,6 +554,7 @@ pub(crate) struct ChildContainerInfo { // that the drop only gets called once, even if we have // the signal handle invoked multiple times or it fails. #[allow(missing_debug_implementations)] +#[derive(Default)] pub struct ChildContainer { info: Option, exists: AtomicBool, @@ -570,6 +571,7 @@ impl ChildContainer { pub fn create(engine: Engine, name: String) -> Result<()> { // SAFETY: guarded by an atomic swap unsafe { + #[allow(static_mut_refs)] if !CHILD_CONTAINER.exists.swap(true, Ordering::SeqCst) { CHILD_CONTAINER.info = Some(ChildContainerInfo { engine, @@ -594,7 +596,10 @@ impl ChildContainer { pub fn exists_static() -> bool { // SAFETY: an atomic load. - unsafe { CHILD_CONTAINER.exists() } + #[allow(static_mut_refs)] + unsafe { + CHILD_CONTAINER.exists() + } } // when the `docker run` command finished. @@ -605,6 +610,7 @@ impl ChildContainer { pub fn exit_static() { // SAFETY: an atomic store. + #[allow(static_mut_refs)] unsafe { CHILD_CONTAINER.exit(); } @@ -631,6 +637,7 @@ impl ChildContainer { pub fn finish_static(is_tty: bool, msg_info: &mut MessageInfo) { // SAFETY: internally guarded by an atomic load. + #[allow(static_mut_refs)] unsafe { CHILD_CONTAINER.finish(is_tty, msg_info); } @@ -690,7 +697,7 @@ pub enum VolumeId { impl VolumeId { pub fn mount(&self, mount_prefix: &str) -> String { match self { - VolumeId::Keep(ref id) => format!("{id}:{mount_prefix}"), + VolumeId::Keep(id) => format!("{id}:{mount_prefix}"), VolumeId::Discard => mount_prefix.to_owned(), } } @@ -1239,11 +1246,7 @@ pub enum GetImageError { } fn get_target_name(target: &Target, uses_zig: bool) -> &str { - if uses_zig { - "zig" - } else { - target.triple() - } + if uses_zig { "zig" } else { target.triple() } } fn get_user_image( @@ -1396,14 +1399,14 @@ fn docker_inspect_self(engine: &Engine, msg_info: &mut MessageInfo) -> Result(&out.stdout); - if let Ok(val) = val { - if let Some(array) = val.as_array() { - // `docker inspect` completed but returned an empty array, most - // likely indicating that the hostname isn't a valid container ID. - if array.is_empty() { - msg_info.debug("docker inspect found no containers matching HOSTNAME, retrying using mountinfo")?; - return docker_inspect_self_mountinfo(engine, msg_info); - } + if let Ok(val) = val + && let Some(array) = val.as_array() + { + // `docker inspect` completed but returned an empty array, most + // likely indicating that the hostname isn't a valid container ID. + if array.is_empty() { + msg_info.debug("docker inspect found no containers matching HOSTNAME, retrying using mountinfo")?; + return docker_inspect_self_mountinfo(engine, msg_info); } } @@ -1523,7 +1526,7 @@ impl MountFinder { if cfg!(target_os = "windows") && host { // On Windows, we can not mount the directory name directly. // Instead, we convert the path to a linux compatible path. - return path.to_utf8().map(ToOwned::to_owned); + path.to_utf8().map(ToOwned::to_owned) } else if cfg!(target_os = "windows") { path.as_posix_absolute() } else { @@ -1540,8 +1543,8 @@ pub const PATH_HASH_SHORT: usize = 5; pub const PATH_HASH_UNIQUE: usize = 10; fn path_digest(path: &Path) -> Result { - let buffer = const_sha1::ConstBuffer::from_slice(path.to_utf8()?.as_bytes()); - Ok(const_sha1::sha1(&buffer)) + let buffer = const_sha1::ConstSlice::from_slice(path.to_utf8()?.as_bytes()); + Ok(const_sha1::sha1_from_const_slice(&buffer)) } pub fn path_hash(path: &Path, count: usize) -> Result { @@ -1581,7 +1584,9 @@ mod tests { fn test_docker_userns() { let var = "CROSS_CONTAINER_USER_NAMESPACE"; let old = env::var(var); - env::remove_var(var); + unsafe { + env::remove_var(var); + } let host = "\"engine\" \"--userns\" \"host\"".to_owned(); let custom = "\"engine\" \"--userns\" \"custom\"".to_owned(); @@ -1594,21 +1599,31 @@ mod tests { }; test(&host); - env::set_var(var, "auto"); + unsafe { + env::set_var(var, "auto"); + } test(&host); - env::set_var(var, "none"); + unsafe { + env::set_var(var, "none"); + } test(&none); - env::set_var(var, "host"); + unsafe { + env::set_var(var, "host"); + } test(&host); - env::set_var(var, "custom"); + unsafe { + env::set_var(var, "custom"); + } test(&custom); - match old { - Ok(v) => env::set_var(var, v), - Err(_) => env::remove_var(var), + unsafe { + match old { + Ok(v) => env::set_var(var, v), + Err(_) => env::remove_var(var), + } } } @@ -1667,7 +1682,9 @@ mod tests { let envvars = ["CARGO_HOME", "XARGO_HOME", "NIX_STORE"]; for var in envvars { result.push((var, env::var(var).ok())); - env::remove_var(var); + unsafe { + env::remove_var(var); + } } result @@ -1676,7 +1693,9 @@ mod tests { fn reset_env(vars: Vec<(&'static str, Option)>) { for (var, value) in vars { if let Some(value) = value { - env::set_var(var, value); + unsafe { + env::set_var(var, value); + } } } } @@ -1892,7 +1911,9 @@ mod tests { }, }])).unwrap(); let want = MountDetail { - source: PathBuf::from("/var/lib/docker/overlay2/f107af83b37bc0a182d3d2661f3d84684f0fffa1a243566b338a388d5e54bef4/merged"), + source: PathBuf::from( + "/var/lib/docker/overlay2/f107af83b37bc0a182d3d2661f3d84684f0fffa1a243566b338a388d5e54bef4/merged", + ), destination: PathBuf::from("/"), }; assert_eq!(want, actual); diff --git a/src/errors.rs b/src/errors.rs index bcb4d3595..f177ab22f 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -24,8 +24,11 @@ unsafe fn termination_handler() { // we can delete files, since fdopendir is thread-safe, and // `openat`, `unlinkat`, and `lstat` are signal-safe. // https://man7.org/linux/man-pages/man7/signal-safety.7.html - if !TERMINATED.swap(true, Ordering::SeqCst) && temp::has_tempfiles() { - temp::clean(); + #[allow(static_mut_refs)] + unsafe { + if !TERMINATED.swap(true, Ordering::SeqCst) && temp::has_tempfiles() { + temp::clean(); + } } // tl;dr this is a long explanation to say this is thread-safe. @@ -102,7 +105,10 @@ unsafe fn termination_handler() { // however, we'd need to store the engine path and the argument list as // a global CString and `Vec`, respectively. this atomic guard // makes this safe regardless. - docker::CHILD_CONTAINER.terminate(); + #[allow(static_mut_refs)] + unsafe { + docker::CHILD_CONTAINER.terminate(); + } // all termination exit codes are 128 + signal code. the exit code is // 130 for Ctrl+C or SIGINT (signal code 2) for linux, macos, and windows. diff --git a/src/extensions.rs b/src/extensions.rs index 992eb8d46..0ab23e053 100644 --- a/src/extensions.rs +++ b/src/extensions.rs @@ -97,9 +97,9 @@ impl CommandExt for Command { let msg_info = &mut msg_info; let mut string = String::new(); if let Some(caller) = msg_info.caller() { - write!(string, "[{}] ->\n+ ", caller).unwrap(); + write!(string, "[{}] ->\n+ ", caller).expect("Writing to string should not fail"); } else { - write!(string, "+ ").unwrap(); + write!(string, "+ ").expect("Writing to string should not fail"); }; if let Some(cwd) = self.get_current_dir() { write!( @@ -108,14 +108,14 @@ impl CommandExt for Command { cwd, msg_info.as_verbose(|info| self.command_pretty(info, |_| false)) ) - .unwrap(); + .expect("Writing to string should not fail"); } else { write!( string, "{}", msg_info.as_verbose(|info| self.command_pretty(info, |_| false)) ) - .unwrap(); + .expect("Writing to string should not fail"); } string } diff --git a/src/id.rs b/src/id.rs index d1cd6dd24..3442536ae 100644 --- a/src/id.rs +++ b/src/id.rs @@ -1,6 +1,6 @@ #[cfg(not(target_os = "windows"))] use nix::{ - errno::{errno, Errno}, + errno::Errno, unistd::{Gid, Uid}, }; #[cfg(not(target_os = "windows"))] @@ -63,13 +63,13 @@ pub fn username() -> Result> { let passwd = libc::getpwuid(Uid::current().as_raw()); if passwd.is_null() { - let errno = errno(); + let errno = Errno::last_raw(); if errno == 0 { return Ok(None); } - return Err(Errno::from_i32(errno)).wrap_err("could not get username"); + return Err(Errno::from_raw(errno)).wrap_err("could not get username"); } CStr::from_ptr((*passwd).pw_name) diff --git a/src/interpreter.rs b/src/interpreter.rs index 0968093c0..12cc9ddf4 100644 --- a/src/interpreter.rs +++ b/src/interpreter.rs @@ -1,8 +1,8 @@ use std::path::Path; +use crate::Target; use crate::errors::*; use crate::file; -use crate::Target; /// Checks if the interpreters have been registered in the host system pub fn is_registered(target: &Target) -> Result { diff --git a/src/lib.rs b/src/lib.rs index a65668e17..4e50916fa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -59,14 +59,14 @@ use rustc::{QualifiedToolchain, Toolchain}; use rustc_version::Channel; use serde::{Deserialize, Serialize, Serializer}; -pub use self::cargo::{cargo_command, cargo_metadata_with_args, CargoMetadata, Subcommand}; +pub use self::cargo::{CargoMetadata, Subcommand, cargo_command, cargo_metadata_with_args}; use self::cross_toml::CrossToml; use self::errors::Context; use self::shell::{MessageInfo, Verbosity}; -pub use self::errors::{install_panic_hook, install_termination_hook, Result}; +pub use self::errors::{Result, install_panic_hook, install_termination_hook}; pub use self::extensions::{CommandExt, OutputExt, SafeCommand}; -pub use self::file::{pretty_path, ToUtf8}; +pub use self::file::{ToUtf8, pretty_path}; pub use self::rustc::{TargetList, VersionMetaExt}; pub const CROSS_LABEL_DOMAIN: &str = "org.cross-rs"; @@ -181,15 +181,13 @@ impl TargetTriple { // variable `CROSS_COMPATIBILITY_VERSION`. Ok("0.2.1") => match self { TargetTriple::X86_64AppleDarwin | TargetTriple::Aarch64AppleDarwin => { - target.map_or(false, |t| t.needs_docker()) + target.is_some_and(|t| t.needs_docker()) } TargetTriple::X86_64UnknownLinuxGnu | TargetTriple::Aarch64UnknownLinuxGnu | TargetTriple::X86_64UnknownLinuxMusl - | TargetTriple::Aarch64UnknownLinuxMusl => { - target.map_or(true, |t| t.needs_docker()) - } - TargetTriple::X86_64PcWindowsMsvc => target.map_or(false, |t| { + | TargetTriple::Aarch64UnknownLinuxMusl => target.is_none_or(|t| t.needs_docker()), + TargetTriple::X86_64PcWindowsMsvc => target.is_some_and(|t| { t.triple() != TargetTriple::X86_64PcWindowsMsvc.triple() && t.needs_docker() }), TargetTriple::Other(_) => false, @@ -204,7 +202,7 @@ impl TargetTriple { // example to test custom docker images. Cross should not try to recognize if host and // target are equal, it's a user decision and if user wants to bypass cross he can call // cargo directly or omit the `--target` option. - _ => target.map_or(false, |t| t.needs_docker()), + _ => target.is_some_and(|t| t.needs_docker()), } } @@ -223,7 +221,7 @@ impl TargetTriple { } } -impl<'a> From<&'a str> for TargetTriple { +impl From<&str> for TargetTriple { fn from(s: &str) -> TargetTriple { match s { "x86_64-apple-darwin" => TargetTriple::X86_64AppleDarwin, @@ -601,7 +599,7 @@ pub fn run( let needs_docker = args .subcommand .clone() - .map_or(false, |sc| sc.needs_docker(is_remote)); + .is_some_and(|sc| sc.needs_docker(is_remote)); if target.needs_docker() && needs_docker { let paths = docker::DockerPaths::create( &engine, @@ -645,7 +643,7 @@ pub fn run( return Ok(None); }; - let needs_host = args.subcommand.map_or(false, |sc| sc.needs_host(is_remote)); + let needs_host = args.subcommand.is_some_and(|sc| sc.needs_host(is_remote)); if !status.success() { warn_on_failure(&target, &toolchain, msg_info)?; } @@ -669,7 +667,7 @@ pub fn install_interpreter_if_needed( let needs_interpreter = args .subcommand .clone() - .map_or(false, |sc| sc.needs_interpreter()); + .is_some_and(|sc| sc.needs_interpreter()); if host_version_meta.needs_interpreter() && needs_interpreter @@ -694,7 +692,7 @@ pub fn get_filtered_args( let mut filtered_args = if args .subcommand .clone() - .map_or(false, |s| !s.needs_target_in_command()) + .is_some_and(|s| !s.needs_target_in_command()) { let mut filtered_args = Vec::new(); let mut args_iter = args.cargo_args.clone().into_iter(); @@ -737,7 +735,7 @@ pub fn get_filtered_args( let is_test = args .subcommand .clone() - .map_or(false, |sc| sc == Subcommand::Test); + .is_some_and(|sc| sc == Subcommand::Test); if is_test && config.doctests().unwrap_or_default() && is_nightly { filtered_args.push("-Zdoctest-xcompile".to_owned()); } diff --git a/src/rustc.rs b/src/rustc.rs index ef50475d2..8f6cbd3c0 100644 --- a/src/rustc.rs +++ b/src/rustc.rs @@ -4,11 +4,11 @@ use std::process::Command; use rustc_version::{Version, VersionMeta}; use serde::Deserialize; +use crate::TargetTriple; use crate::docker::ImagePlatform; use crate::errors::*; -use crate::extensions::{env_program, CommandExt}; +use crate::extensions::{CommandExt, env_program}; use crate::shell::MessageInfo; -use crate::TargetTriple; #[derive(Debug)] pub struct TargetList { @@ -70,15 +70,15 @@ pub fn hash_from_version_string(version: &str, index: usize) -> String { .and_then(|meta| meta.strip_prefix('(')) .and_then(|meta| meta.strip_suffix(')')) .and_then(|meta| meta.split_once(' ')) + && is_hash(commit) + && is_date(date) { - if is_hash(commit) && is_date(date) { - return short_commit_hash(commit); - } + return short_commit_hash(commit); } // fallback: can't extract the hash. just create a hash of the version string. - let buffer = const_sha1::ConstBuffer::from_slice(version.as_bytes()); - short_commit_hash(&const_sha1::sha1(&buffer).to_string()) + let buffer = const_sha1::ConstSlice::from_slice(version.as_bytes()); + short_commit_hash(&const_sha1::sha1_from_const_slice(&buffer).to_string()) } #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] diff --git a/src/rustup.rs b/src/rustup.rs index 11f04b7ab..cea7f1570 100644 --- a/src/rustup.rs +++ b/src/rustup.rs @@ -3,11 +3,11 @@ use std::process::Command; use rustc_version::{Channel, Version}; +use crate::Target; use crate::errors::*; pub use crate::extensions::{CommandExt, OutputExt}; use crate::rustc::QualifiedToolchain; use crate::shell::{MessageInfo, Verbosity}; -use crate::Target; #[derive(Debug)] pub struct AvailableTargets { @@ -296,7 +296,7 @@ pub fn setup_components( if args .subcommand .clone() - .map_or(false, |sc| sc == crate::Subcommand::Clippy) + .is_some_and(|sc| sc == crate::Subcommand::Clippy) && !component_is_installed("clippy", toolchain, msg_info)? { install_component("clippy", toolchain, msg_info)?; diff --git a/src/shell.rs b/src/shell.rs index 8c88430c6..023210207 100644 --- a/src/shell.rs +++ b/src/shell.rs @@ -461,14 +461,14 @@ pub trait Stream { } } -impl Stream for io::Stdin { - type TTY = io::Stdin; - const OWO: owo_colors::Stream = owo_colors::Stream::Stdin; - - fn is_atty() -> bool { - io::stdin().is_terminal() - } -} +// impl Stream for io::Stdin { +// type TTY = io::Stdin; +// const OWO: owo_colors::Stream = owo_colors::Stream::Stdin; +// +// fn is_atty() -> bool { +// io::stdin().is_terminal() +// } +// } impl Stream for io::Stdout { type TTY = io::Stdout; diff --git a/src/temp.rs b/src/temp.rs index f9a180d2d..dca374c36 100644 --- a/src/temp.rs +++ b/src/temp.rs @@ -19,7 +19,10 @@ pub fn dir() -> Result { pub(crate) fn has_tempfiles() -> bool { // SAFETY: safe, since we only check if the stack is empty. - unsafe { !FILES.is_empty() || !DIRS.is_empty() } + #[allow(static_mut_refs)] + unsafe { + !FILES.is_empty() || !DIRS.is_empty() + } } /// # Safety @@ -28,8 +31,14 @@ pub(crate) unsafe fn clean() { // don't expose FILES or DIRS outside this module, // so we can only add or remove from the stack using // our wrappers, guaranteeing add/remove in order. - FILES.clear(); - DIRS.clear(); + #[allow(static_mut_refs)] + unsafe { + FILES.clear(); + } + #[allow(static_mut_refs)] + unsafe { + DIRS.clear(); + } } /// # Safety @@ -38,14 +47,23 @@ unsafe fn push_tempfile() -> Result<&'static mut tempfile::NamedTempFile> { let parent = dir()?; fs::create_dir_all(&parent).ok(); let file = tempfile::NamedTempFile::new_in(&parent)?; - FILES.push(file); - Ok(FILES.last_mut().expect("file list should not be empty")) + #[allow(static_mut_refs)] + unsafe { + FILES.push(file); + } + #[allow(static_mut_refs)] + unsafe { + Ok(FILES.last_mut().expect("file list should not be empty")) + } } /// # Safety /// Safe as long as we have single-threaded execution. unsafe fn pop_tempfile() -> Option { - FILES.pop() + #[allow(static_mut_refs)] + unsafe { + FILES.pop() + } } #[derive(Debug)] @@ -58,7 +76,7 @@ impl TempFile { /// Safe as long as we have single-threaded execution. pub unsafe fn new() -> Result { Ok(Self { - file: push_tempfile()?, + file: unsafe { push_tempfile()? }, }) } @@ -87,14 +105,21 @@ unsafe fn push_tempdir() -> Result<&'static Path> { let parent = dir()?; fs::create_dir_all(&parent).ok(); let dir = tempfile::TempDir::new_in(&parent)?; - DIRS.push(dir); - Ok(DIRS.last().expect("should not be empty").path()) + #[allow(static_mut_refs)] + unsafe { + DIRS.push(dir); + } + #[allow(static_mut_refs)] + Ok(unsafe { DIRS.last().expect("should not be empty").path() }) } /// # Safety /// Safe as long as we have single-threaded execution. unsafe fn pop_tempdir() -> Option { - DIRS.pop() + #[allow(static_mut_refs)] + unsafe { + DIRS.pop() + } } #[derive(Debug)] @@ -107,7 +132,7 @@ impl TempDir { /// Safe as long as we have single-threaded execution. pub unsafe fn new() -> Result { Ok(Self { - path: push_tempdir()?, + path: unsafe { push_tempdir()? }, }) } diff --git a/src/tests.rs b/src/tests.rs index 7a22907d4..41298ee28 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -8,7 +8,7 @@ use std::{ use once_cell::sync::OnceCell; use rustc_version::VersionMeta; -use crate::{docker::ImagePlatform, rustc::QualifiedToolchain, TargetTriple, ToUtf8}; +use crate::{TargetTriple, ToUtf8, docker::ImagePlatform, rustc::QualifiedToolchain}; static WORKSPACE: OnceCell = OnceCell::new(); @@ -38,7 +38,7 @@ pub fn walk_dir<'a>( .any(|dir| e.file_name() == dir) { return false; - } else if e.file_type().map_or(false, |f| f.is_dir()) { + } else if e.file_type().is_some_and(|f| f.is_dir()) { return true; } ext(e.path().extension()) @@ -48,7 +48,7 @@ pub fn walk_dir<'a>( #[test] pub fn target_mismatch() { - use crate::{warn_host_version_mismatch, VersionMatch}; + use crate::{VersionMatch, warn_host_version_mismatch}; fn make_meta(input: &str) -> VersionMeta { let mut split = input.split(' '); @@ -140,7 +140,7 @@ release: {version} fn check_newlines() -> crate::Result<()> { for file in walk_dir(get_cargo_workspace(), &[".git", "target"], |_| true) { let file = file?; - if !file.file_type().map_or(true, |f| f.is_file()) { + if !file.file_type().is_none_or(|f| f.is_file()) { continue; } eprintln!("File: {:?}", file.path()); diff --git a/src/tests/toml.rs b/src/tests/toml.rs index 161b1e7dc..469f092e5 100644 --- a/src/tests/toml.rs +++ b/src/tests/toml.rs @@ -30,7 +30,7 @@ fn toml_check() -> Result<(), Box> { for dir_entry in walk { let dir_entry = dir_entry?; - if dir_entry.file_type().map_or(true, |f| f.is_dir()) { + if dir_entry.file_type().is_none_or(|f| f.is_dir()) { continue; } eprintln!("File: {:?}", dir_entry.path()); @@ -89,7 +89,7 @@ pub fn text_line_no(text: &str, index: usize) -> usize { let mut count = 0; for line in text.split('\n') { line_no += 1; - count += line.as_bytes().len() + 1; + count += line.len() + 1; if count >= index { break; } diff --git a/xtask/src/changelog.rs b/xtask/src/changelog.rs index 8a83a6acf..3ea79b396 100644 --- a/xtask/src/changelog.rs +++ b/xtask/src/changelog.rs @@ -358,7 +358,7 @@ fn read_changes(changes_dir: &Path) -> cross::Result { let file_name = entry.file_name(); let path = entry.path(); let ext = path.extension(); - if file_type.is_file() && ext.map_or(false, |v| v == "json") { + if file_type.is_file() && ext.is_some_and(|v| v == "json") { let stem = file_stem(&path)?; let id = IdType::parse_stem(stem)?; let contents = fs::read_to_string(path)?; @@ -433,7 +433,7 @@ fn delete_changes(root: &Path) -> cross::Result<()> { let file_type = entry.file_type()?; let srcpath = entry.path(); let ext = srcpath.extension(); - if file_type.is_file() && ext.map_or(false, |v| v == "json") { + if file_type.is_file() && ext.is_some_and(|v| v == "json") { fs::remove_file(srcpath)?; } } @@ -519,7 +519,7 @@ pub fn validate_changelog( if files.is_empty() { files = fs::read_dir(&changes_dir)? .filter_map(|x| x.ok()) - .filter(|x| x.file_type().map_or(false, |v| v.is_file())) + .filter(|x| x.file_type().is_ok_and(|v| v.is_file())) .filter_map(|x| { if x.path() .extension() diff --git a/xtask/src/ci/target_matrix.rs b/xtask/src/ci/target_matrix.rs index 4b8a518c3..e238e3e6e 100644 --- a/xtask/src/ci/target_matrix.rs +++ b/xtask/src/ci/target_matrix.rs @@ -204,7 +204,7 @@ fn has_no_ci_tests_label(pr: &str) -> cross::Result { /// Convert a `GITHUB_REF` into it's merge group pr fn process_merge_group(ref_: &str) -> cross::Result<&str> { ref_.split('/') - .last() + .next_back() .unwrap_or_default() .strip_prefix("pr-") .ok_or_else(|| eyre::eyre!("merge group ref must start last / segment with \"pr-\""))? @@ -338,14 +338,13 @@ impl TargetMatrixArgs { let matrix_target = m.to_image_target(); let matrix_string = matrix_target.to_string(); - return self - .target + self.target .iter() .any(|t| t.parse::().unwrap() == matrix_target) || self .target .iter() - .any(|t| wildmatch::WildMatch::new(t).matches(&matrix_string)); + .any(|t| wildmatch::WildMatch::new(t).matches(&matrix_string)) }) }; if let Some(std) = self.std {