-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[0.2] Migrate to Rust edition 2021 #4155
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… `crate::` with `::` This is needed because ctest2 cannot parse `crate::` in paths (backport <rust-lang#4132>) (cherry picked from commit fda6017)
(backport <rust-lang#4132>) (cherry picked from commit 65e7837)
Migration script: ```sh set -ex git restore Cargo.toml src for file in $(find src -name "*.rs"); do perl -pi -077 -e 's/(?<!\w)::(Option|Copy|Clone)\b/$1/g' "$file" done implicit_c_long_ulong_char=( src/fuchsia/mod.rs src/solid/mod.rs src/unix/aix/mod.rs src/unix/bsd/apple/mod.rs src/unix/bsd/freebsdlike/freebsd/mod.rs src/unix/bsd/freebsdlike/mod.rs src/unix/bsd/netbsdlike/netbsd/mod.rs src/unix/bsd/netbsdlike/openbsd/mod.rs src/unix/bsd/netbsdlike/mod.rs src/unix/bsd/mod.rs src/unix/haiku/mod.rs src/unix/hurd/mod.rs src/unix/linux_like/android/b32/mod.rs src/unix/linux_like/android/b64/mod.rs src/unix/linux_like/android/mod.rs src/unix/linux_like/linux/gnu/b32/mod.rs src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs src/unix/linux_like/linux/gnu/b64/mod.rs src/unix/linux_like/linux/gnu/mod.rs src/unix/linux_like/linux/musl/mod.rs src/unix/linux_like/linux/uclibc/mips/mod.rs src/unix/linux_like/linux/uclibc/mod.rs src/unix/linux_like/linux/mod.rs src/unix/linux_like/mod.rs src/unix/newlib/mod.rs src/unix/nto/mod.rs src/unix/mod.rs src/vxworks/mod.rs ) for file in "${implicit_c_long_ulong_char[@]}"; do perl -pi -077 -e 's/(?<!\w)::(c_long|c_ulong|c_char)\b/$1/g' "$file" done implicit_off_t=( src/unix/linux_like/linux/gnu/mod.rs src/unix/linux_like/linux/mod.rs src/unix/linux_like/mod.rs src/unix/mod.rs ) for file in "${implicit_off_t[@]}"; do perl -pi -077 -e 's/(?<!\w)::(off_t)\b/$1/g' "$file" done implicit_off64_t=( src/unix/linux_like/android/mod.rs src/unix/linux_like/mod.rs ) for file in "${implicit_off64_t[@]}"; do perl -pi -077 -e 's/(?<!\w)::(off64_t)\b/$1/g' "$file" done implicit_Ioctl=( src/unix/linux_like/linux/mod.rs ) for file in "${implicit_Ioctl[@]}"; do perl -pi -077 -e 's/(?<!\w)::(Ioctl)\b/$1/g' "$file" done perl -pi -077 -e 's/(?<!\w)::(__u8|__u16|__u32|__s16|__s32)\b/$1/g' src/unix/linux_like/linux/mod.rs perl -pi -077 -e 's/(?<!\w)::(SIG[A-Z]+)\b/$1/g' src/unix/solarish/mod.rs perl -pi -077 -e 's/(?<!\w)::c_ulong\b/crate::c_ulong/g' src/unix/newlib/generic.rs perl -pi -077 -e 's/(?<!\w)::c_ulong\b/crate::c_ulong/g' src/unix/linux_like/linux/arch/generic/mod.rs perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/linux/gnu/b64/mod.rs perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/linux/mod.rs perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/mod.rs perl -pi -077 -e 's/(?<!\w)::c_short\b/crate::c_short/g' src/unix/linux_like/linux/gnu/b32/mod.rs perl -pi -077 -e 's/(?<!\w)::c_short\b/crate::c_short/g' src/unix/newlib/mod.rs perl -pi -077 -e 's/(?<!\w)::c_float\b/c_float/g' src/unix/linux_like/linux/gnu/b64/s390x.rs perl -pi -077 -e 's/(?<!\w)::c_float\b/c_float/g' src/unix/linux_like/linux/musl/b64/s390x.rs function handle_type() { type="$1" uses_type="$(rg -l "[^\w]::$type\b" src || echo)" has_type_def="$(rg -l "(type|struct) $type " src || echo)" has_type_import="$(rg -l "use ([0-9a-zA-Z_]+::)*$type;" src || echo)" add_import=($(comm -3 <(echo "$uses_type" | sort) <(printf "%s\n%s" "$has_type_def" "$has_type_import" | sort) | cut -f1)) for file in "${add_import[@]}"; do # Split the file into two parts: module-level attributes and rest # Imports will be added after module-level attributes awk '/^#!|^\/\/!/ {found=NR} {lines[NR]=$0} END {for (i=1; i<=found; i++) print lines[i]}' \ "$file" > "$file.attrs" awk '/^#!|^\/\/!/ {found=NR} END {if (found) {for (i=found+1; i<=NR; i++) print lines[i]} else {for (i=1; i<=NR; i++) print lines[i]}} {lines[NR]=$0}' \ "$file" > "$file.rest" cat "$file.attrs" > "$file" echo >> "$file" echo 'use crate::'"$type"';' >> "$file" echo >> "$file" cat "$file.rest" >> "$file" rm "$file.attrs" "$file.rest" done for file in $uses_type; do perl -pi -077 -e 's/(?<!\w)::('"$type"')\b/$1/g' "$file" done } handle_type c_void handle_type c_int handle_type c_uint handle_type c_char handle_type c_schar handle_type c_uchar handle_type c_short handle_type c_ushort handle_type c_long handle_type c_ulong handle_type c_longlong handle_type c_ulonglong handle_type c_float handle_type c_double handle_type size_t handle_type ssize_t handle_type intptr_t handle_type ptrdiff_t handle_type off_t handle_type off64_t handle_type Ioctl handle_type cmsghdr # To avoid "line formatted, but exceeded maximum width" targets=( aarch64-apple-darwin aarch64-apple-ios aarch64-apple-ios-macabi aarch64-apple-ios-sim aarch64-apple-tvos aarch64-apple-tvos-sim aarch64-apple-visionos aarch64-apple-visionos-sim aarch64-apple-watchos aarch64-apple-watchos-sim aarch64-kmc-solid_asp3 aarch64-linux-android aarch64-nintendo-switch-freestanding aarch64-pc-windows-gnullvm aarch64-pc-windows-msvc aarch64-unknown-freebsd aarch64-unknown-fuchsia aarch64-unknown-hermit aarch64-unknown-illumos aarch64-unknown-linux-gnu aarch64-unknown-linux-gnu_ilp32 aarch64-unknown-linux-musl aarch64-unknown-linux-ohos aarch64-unknown-netbsd aarch64-unknown-none aarch64-unknown-none-softfloat aarch64-unknown-nto-qnx700 aarch64-unknown-nto-qnx710 aarch64-unknown-openbsd aarch64-unknown-redox #aarch64-unknown-teeos aarch64-unknown-trusty aarch64-unknown-uefi aarch64-uwp-windows-msvc aarch64-wrs-vxworks aarch64_be-unknown-linux-gnu aarch64_be-unknown-linux-gnu_ilp32 aarch64_be-unknown-netbsd arm-linux-androideabi arm-unknown-linux-gnueabi arm-unknown-linux-gnueabihf arm-unknown-linux-musleabi arm-unknown-linux-musleabihf arm64_32-apple-watchos arm64e-apple-darwin arm64e-apple-ios arm64e-apple-tvos arm64ec-pc-windows-msvc armeb-unknown-linux-gnueabi armebv7r-none-eabi armebv7r-none-eabihf armv4t-none-eabi armv4t-unknown-linux-gnueabi armv5te-none-eabi armv5te-unknown-linux-gnueabi armv5te-unknown-linux-musleabi armv5te-unknown-linux-uclibceabi armv6-unknown-freebsd armv6-unknown-netbsd-eabihf armv6k-nintendo-3ds armv7-linux-androideabi armv7-rtems-eabihf armv7-sony-vita-newlibeabihf armv7-unknown-freebsd armv7-unknown-linux-gnueabi armv7-unknown-linux-gnueabihf armv7-unknown-linux-musleabi armv7-unknown-linux-musleabihf armv7-unknown-linux-ohos armv7-unknown-linux-uclibceabi armv7-unknown-linux-uclibceabihf armv7-unknown-netbsd-eabihf armv7-unknown-trusty armv7-wrs-vxworks-eabihf armv7a-kmc-solid_asp3-eabi armv7a-kmc-solid_asp3-eabihf armv7a-none-eabi armv7a-none-eabihf armv7k-apple-watchos armv7r-none-eabi armv7r-none-eabihf armv7s-apple-ios armv8r-none-eabihf #avr-unknown-gnu-atmega328 bpfeb-unknown-none bpfel-unknown-none csky-unknown-linux-gnuabiv2 csky-unknown-linux-gnuabiv2hf hexagon-unknown-linux-musl #hexagon-unknown-none-elf i386-apple-ios #i586-pc-nto-qnx700 i586-pc-windows-msvc i586-unknown-linux-gnu i586-unknown-linux-musl i586-unknown-netbsd i686-apple-darwin i686-linux-android i686-pc-windows-gnu i686-pc-windows-gnullvm i686-pc-windows-msvc i686-unknown-freebsd i686-unknown-haiku i686-unknown-hurd-gnu i686-unknown-linux-gnu i686-unknown-linux-musl i686-unknown-netbsd i686-unknown-openbsd i686-unknown-redox i686-unknown-uefi i686-uwp-windows-gnu i686-uwp-windows-msvc i686-win7-windows-msvc i686-wrs-vxworks loongarch64-unknown-linux-gnu loongarch64-unknown-linux-musl loongarch64-unknown-linux-ohos loongarch64-unknown-none loongarch64-unknown-none-softfloat #m68k-unknown-linux-gnu mips-unknown-linux-gnu mips-unknown-linux-musl mips-unknown-linux-uclibc mips64-openwrt-linux-musl mips64-unknown-linux-gnuabi64 mips64-unknown-linux-muslabi64 mips64el-unknown-linux-gnuabi64 mips64el-unknown-linux-muslabi64 mipsel-sony-psp mipsel-sony-psx mipsel-unknown-linux-gnu mipsel-unknown-linux-musl mipsel-unknown-linux-uclibc mipsel-unknown-netbsd mipsel-unknown-none mipsisa32r6-unknown-linux-gnu mipsisa32r6el-unknown-linux-gnu mipsisa64r6-unknown-linux-gnuabi64 mipsisa64r6el-unknown-linux-gnuabi64 msp430-none-elf nvptx64-nvidia-cuda powerpc-unknown-freebsd powerpc-unknown-linux-gnu powerpc-unknown-linux-gnuspe powerpc-unknown-linux-musl powerpc-unknown-linux-muslspe powerpc-unknown-netbsd powerpc-unknown-openbsd powerpc-wrs-vxworks powerpc-wrs-vxworks-spe powerpc64-ibm-aix powerpc64-unknown-freebsd powerpc64-unknown-linux-gnu powerpc64-unknown-linux-musl powerpc64-unknown-openbsd powerpc64-wrs-vxworks powerpc64le-unknown-freebsd powerpc64le-unknown-linux-gnu powerpc64le-unknown-linux-musl riscv32-wrs-vxworks riscv32e-unknown-none-elf riscv32em-unknown-none-elf riscv32emc-unknown-none-elf riscv32gc-unknown-linux-gnu riscv32gc-unknown-linux-musl riscv32i-unknown-none-elf riscv32im-risc0-zkvm-elf riscv32im-unknown-none-elf riscv32ima-unknown-none-elf riscv32imac-esp-espidf riscv32imac-unknown-none-elf riscv32imac-unknown-nuttx-elf riscv32imac-unknown-xous-elf riscv32imafc-esp-espidf riscv32imafc-unknown-none-elf riscv32imafc-unknown-nuttx-elf riscv32imc-esp-espidf riscv32imc-unknown-none-elf riscv32imc-unknown-nuttx-elf riscv64-linux-android riscv64-wrs-vxworks riscv64gc-unknown-freebsd riscv64gc-unknown-fuchsia riscv64gc-unknown-hermit riscv64gc-unknown-linux-gnu riscv64gc-unknown-linux-musl #riscv64gc-unknown-netbsd riscv64gc-unknown-none-elf riscv64gc-unknown-nuttx-elf riscv64gc-unknown-openbsd riscv64imac-unknown-none-elf riscv64imac-unknown-nuttx-elf s390x-unknown-linux-gnu s390x-unknown-linux-musl sparc-unknown-linux-gnu sparc-unknown-none-elf sparc64-unknown-linux-gnu sparc64-unknown-netbsd sparc64-unknown-openbsd sparcv9-sun-solaris thumbv4t-none-eabi thumbv5te-none-eabi thumbv6m-none-eabi thumbv6m-nuttx-eabi thumbv7a-pc-windows-msvc thumbv7a-uwp-windows-msvc thumbv7em-none-eabi thumbv7em-none-eabihf thumbv7em-nuttx-eabi thumbv7em-nuttx-eabihf thumbv7m-none-eabi thumbv7m-nuttx-eabi thumbv7neon-linux-androideabi thumbv7neon-unknown-linux-gnueabihf thumbv7neon-unknown-linux-musleabihf thumbv8m.base-none-eabi thumbv8m.base-nuttx-eabi thumbv8m.main-none-eabi thumbv8m.main-none-eabihf thumbv8m.main-nuttx-eabi thumbv8m.main-nuttx-eabihf wasm32-unknown-emscripten wasm32-unknown-unknown wasm32-wasip1 wasm32-wasip1-threads wasm32-wasip2 wasm32v1-none wasm64-unknown-unknown x86_64-apple-darwin x86_64-apple-ios x86_64-apple-ios-macabi x86_64-apple-tvos x86_64-apple-watchos-sim x86_64-fortanix-unknown-sgx x86_64-linux-android x86_64-pc-nto-qnx710 x86_64-pc-solaris x86_64-pc-windows-gnu x86_64-pc-windows-gnullvm x86_64-pc-windows-msvc x86_64-unikraft-linux-musl x86_64-unknown-dragonfly x86_64-unknown-freebsd x86_64-unknown-fuchsia x86_64-unknown-haiku x86_64-unknown-hermit x86_64-unknown-hurd-gnu x86_64-unknown-illumos x86_64-unknown-l4re-uclibc x86_64-unknown-linux-gnu x86_64-unknown-linux-gnux32 x86_64-unknown-linux-musl #x86_64-unknown-linux-none x86_64-unknown-linux-ohos x86_64-unknown-netbsd x86_64-unknown-none x86_64-unknown-openbsd x86_64-unknown-redox x86_64-unknown-trusty x86_64-unknown-uefi x86_64-uwp-windows-gnu x86_64-uwp-windows-msvc x86_64-win7-windows-msvc x86_64-wrs-vxworks x86_64h-apple-darwin #xtensa-esp32-espidf #xtensa-esp32-none-elf #xtensa-esp32s2-espidf #xtensa-esp32s2-none-elf #xtensa-esp32s3-espidf #xtensa-esp32s3-none-elf ) for target in "${targets[@]}"; do echo "Migrating 2015 -> 2018 target $target" cargo fix --target "$target" -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib done freebsd_versions=(freebsd13 freebsd14 freebsd15) for ver in "${freebsd_versions[@]}"; do echo "Migrating 2015 -> 2018 $ver" RUSTFLAGS="--cfg $ver" cargo fix --target i686-unknown-freebsd -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib RUSTFLAGS="--cfg $ver" cargo fix --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib done perl -pi -077 -e 's/edition = "2015"/edition = "2018"/' Cargo.toml for target in "${targets[@]}"; do echo "Migrating 2018 -> 2021 target $target" cargo fix --target "$target" -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib done perl -pi -077 -e 's/edition = "2018"/edition = "2021"/' Cargo.toml for target in "${targets[@]}"; do echo "Checking target $target" cargo check --target "$target" -Zbuild-std=core --features extra_traits --lib || { echo "Failed for target $target" exit 1 } done for ver in "${freebsd_versions[@]}"; do echo "Checking $ver" RUSTFLAGS="--cfg $ver" cargo check --target i686-unknown-freebsd -Zbuild-std=core --features extra_traits --lib || { echo "Failed for i686 $freebsd_versions" exit 1 } RUSTFLAGS="--cfg $ver" cargo check --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits || --lib { echo "Failed for x86_64 $freebsd_versions" exit 1 } done ci/style.sh ``` (backport <rust-lang#4132>) (cherry picked from commit 20f6aa4) [ applied by rerunning the script rather than resolving conflicts. Also updated the script to fail on error and to pass `--lib` so `cargo fix` doesn't try to upgrade anything that requires `std`. -Trevor ]
r? @JohnTitor rustbot has assigned @JohnTitor. Use |
Ignore 643182f ("Automatic migration to Rust edition 2021") since this performed a lot of trivial changes to a large percent of the repository. (backport <rust-lang#4154>) (cherry picked from commit d694a4d) [ adjusted the commit hash to be relevant to this branch - Trevor ]
github-merge-queue
bot
removed this pull request from the merge queue due to no response for status checks
Nov 27, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport #4132