Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Automatic migration to Rust edition 2021
Migration script: ```sh #!/usr/bin/env bash git restore Cargo.toml src # Handle leading `::` in common types 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 # These are used only in `cfg`ed items or comments, `use ::<type>;` would cause warnings on some targets 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)" has_type_def="$(rg -l "(type|struct) $type " src)" has_type_import="$(rg -l "use ([0-9a-zA-Z_]+::)*$type;" src)" 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 time_t # Produces deprecation warnings handle_type Ioctl handle_type cmsghdr # To avoid "line formatted, but exceeded maximum width" # Commented targets failed to `cargo check -Zbuild-std=core` 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 ) # Migrate to 2018 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 2> /dev/null done # Handle freebsd versions 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 2> /dev/null RUSTFLAGS="--cfg $ver" cargo fix --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code 2> /dev/null done perl -pi -077 -e 's/edition = "2015"/edition = "2018"/' Cargo.toml # Migrate to 2021 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 2> /dev/null done perl -pi -077 -e 's/edition = "2018"/edition = "2021"/' Cargo.toml # Check for target in "${targets[@]}"; do echo "Checking target $target" cargo check --target "$target" -Zbuild-std=core --features extra_traits || { 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 || { echo "Failed for i686 $freebsd_versions" exit 1 } RUSTFLAGS="--cfg $ver" cargo check --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits || { echo "Failed for x86_64 $freebsd_versions" exit 1 } done # Fix formatting ci/style.sh ```
- Loading branch information