@@ -30,11 +30,11 @@ jobs:
3030 ~/.cargo/registry
3131 ~/.cargo/git
3232 target
33- key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
33+ key : ${{ runner.os }}-cargo-stable- ${{ hashFiles('**/Cargo.lock') }}
3434 restore-keys : |
3535 ${{ runner.os }}-cargo-
3636
37- - name : Install stable toolchain
37+ - name : Install toolchain
3838 uses : dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e
3939 with :
4040 toolchain : stable
@@ -63,27 +63,59 @@ jobs:
6363 linux : true
6464 pkg_config_libdir : " "
6565 multilib : false
66+ toolchain : stable
67+ build_std_flag : " "
68+ install_target : true
6669 - runner : windows-latest
6770 target : x86_64-pc-windows-msvc
6871 archive : zip
6972 rustflags : " "
7073 linux : false
7174 pkg_config_libdir : " "
7275 multilib : false
76+ toolchain : stable
77+ build_std_flag : " "
78+ install_target : true
79+ - runner : windows-latest
80+ target : x86_64-win7-windows-msvc
81+ archive : zip
82+ rustflags : " "
83+ linux : false
84+ pkg_config_libdir : " "
85+ multilib : false
86+ toolchain : nightly
87+ build_std_flag : " -Z build-std"
88+ install_target : false
7389 - runner : ubuntu-latest
7490 target : i686-unknown-linux-gnu
7591 archive : tar.gz
7692 rustflags : " "
7793 linux : true
7894 pkg_config_libdir : " /usr/lib/i386-linux-gnu/pkgconfig"
7995 multilib : true
96+ toolchain : stable
97+ build_std_flag : " "
98+ install_target : true
8099 - runner : windows-latest
81100 target : i686-pc-windows-msvc
82101 archive : zip
83102 rustflags : " "
84103 linux : false
85104 pkg_config_libdir : " "
86105 multilib : false
106+ toolchain : stable
107+ build_std_flag : " "
108+ install_target : true
109+ - runner : windows-latest
110+ target : i686-win7-windows-msvc
111+ archive : zip
112+ rustflags : " "
113+ linux : false
114+ pkg_config_libdir : " "
115+ multilib : false
116+ toolchain : nightly
117+ build_std_flag : " -Z build-std"
118+ install_target : false
87119 runs-on : ${{ matrix.runner }}
88120 env :
89121 TARGET : ${{ matrix.target }}
@@ -93,15 +125,30 @@ jobs:
93125 - name : Checkout
94126 uses : actions/checkout@v6
95127
96- - name : Set safe ref name
128+ - name : Set safe ref name (Windows)
129+ if : runner.os == 'Windows'
130+ shell : pwsh
131+ run : |
132+ $safe = $env:GITHUB_REF_NAME -replace '/', '-'
133+ Add-Content -Path $env:GITHUB_ENV -Value "SAFE_REF=$safe"
134+
135+ - name : Set safe ref name (Unix)
136+ if : runner.os != 'Windows'
97137 shell : bash
98138 run : echo "SAFE_REF=${GITHUB_REF_NAME//\//-}" >> "$GITHUB_ENV"
99139
100- - name : Install stable toolchain
101- uses : dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
140+ - name : Install toolchain
141+ uses : dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e
102142 with :
103- toolchain : stable
104- target : ${{ matrix.target }}
143+ toolchain : ${{ matrix.toolchain }}
144+
145+ - name : Add target
146+ if : matrix.install_target
147+ run : rustup target add ${{ matrix.target }} --toolchain ${{ matrix.toolchain }}
148+
149+ - name : Add rust-src component
150+ if : matrix.build_std_flag != ''
151+ run : rustup component add rust-src --toolchain ${{ matrix.toolchain }}
105152
106153 - name : Install Linux build deps
107154 if : matrix.linux
@@ -131,18 +178,18 @@ jobs:
131178 ~/.cargo/registry
132179 ~/.cargo/git
133180 target
134- key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
181+ key : ${{ runner.os }}-cargo-${{ matrix.toolchain }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
135182 restore-keys : |
136183 ${{ runner.os }}-cargo-
137184
138185 - name : Build release
139- run : cargo build --release --target ${{ matrix.target }}
186+ run : cargo +${{ matrix.toolchain }} build ${{ matrix.build_std_flag }} --release --target ${{ matrix.target }}
140187
141188 - name : Package artifact (Linux)
142189 if : matrix.archive == 'tar.gz'
143190 run : |
144191 bin_path=target/$TARGET/release/elnpack
145- pkg_dir=package-linux
192+ pkg_dir=package-${{ runner.os }}
146193 mkdir -p "$pkg_dir"
147194 cp "$bin_path" "$pkg_dir/"
148195 cp README.md LICENSE "$pkg_dir/"
@@ -153,7 +200,7 @@ jobs:
153200 shell : pwsh
154201 run : |
155202 $binPath = "target/${env:TARGET}/release/elnpack.exe"
156- $pkgDir = "package-windows "
203+ $pkgDir = "package-${env:RUNNER_OS} "
157204 New-Item -ItemType Directory -Force -Path $pkgDir | Out-Null
158205 Copy-Item $binPath "$pkgDir/"
159206 Copy-Item "README.md","LICENSE" "$pkgDir/"
0 commit comments