-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[0.2] Migrate to Rust edition 2021 #4155
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
Merged
Merged
Conversation
This file contains hidden or 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 ]
Collaborator
|
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 ]
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