@@ -17,7 +17,7 @@ pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
17
17
$( [[ ${CARCH} == i686 ]] || echo " ${MINGW_PACKAGE_PREFIX} -rust-wasm" )
18
18
" ${MINGW_PACKAGE_PREFIX} -rust-src" )
19
19
pkgver=1.83.0
20
- pkgrel=3
20
+ pkgrel=4
21
21
pkgdesc=" Systems programming language focused on safety, speed and concurrency (mingw-w64)"
22
22
arch=(' any' )
23
23
mingw_arch=(' mingw32' ' mingw64' ' ucrt64' ' clang64' ' clangarm64' )
@@ -86,15 +86,15 @@ apply_patch_with_msg() {
86
86
# =========================================== #
87
87
88
88
prepare () {
89
- plain " Extracting ${_realname} c-${pkgver} -src.tar.gz"
90
- tar -xzf ${_realname} c-${pkgver} -src.tar.gz || true
89
+ plain " Extracting ${_realname} c-${pkgver} -src.tar.gz to ${MSYSTEM} directory"
90
+ mkdir -p " ${MSYSTEM} " && tar -xzf ${_realname} c-${pkgver} -src.tar.gz -C " ${MSYSTEM} " || true
91
+ cd " ${MSYSTEM} /${_realname} c-${pkgver} -src"
91
92
92
93
# use latest version of psm to fix arm4 build
93
- rm -r ${_realname} c- ${pkgver} -src/ vendor/psm-0.1.23
94
- mv psm-0.1.24 ${_realname} c- ${pkgver} -src/ vendor/psm-0.1.24
94
+ rm -r vendor/psm-0.1.23
95
+ mv ${srcdir} / psm-0.1.24 vendor/psm-0.1.24
95
96
96
97
# 0008-disable-self-contained-for-gnu-targets.patch allows self-contained for non-windows-gnu targets
97
- cd ${_realname} c-${pkgver} -src
98
98
apply_patch_with_msg \
99
99
0001-rustc-llvm-fix-libs.patch \
100
100
0008-disable-self-contained-for-gnu-targets.patch
@@ -109,7 +109,7 @@ prepare() {
109
109
}
110
110
111
111
build () {
112
- mkdir -p " ${MSYSTEM} " && cd " ${MSYSTEM} "
112
+ cd " ${MSYSTEM} / ${_realname} c- ${pkgver} -src "
113
113
114
114
# hack to inject the bootstrap compiler
115
115
if [[ $_bootstrapping != " no" && $MINGW_PACKAGE_PREFIX == * -clang-aarch64 ]]; then
@@ -153,31 +153,36 @@ build() {
153
153
export MSYS2_ENV_CONV_EXCL=' INSTALL_PREFIX'
154
154
export INSTALL_PREFIX=" ${MINGW_PREFIX} "
155
155
export PKGREL=" ${pkgrel} "
156
- envsubst < .. /config.toml > " ../ ${_realname} c- ${pkgver} -src/ config.toml"
156
+ envsubst < " ${srcdir} /config.toml" > config.toml
157
157
158
158
if [ " ${_bootstrapping} " = " no" ]; then
159
- sed -i ' /^\[build\]/,/^$/ s|^#||g' " ../ ${_realname} c- ${pkgver} -src/ config.toml"
159
+ sed -i ' /^\[build\]/,/^$/ s|^#||g' config.toml
160
160
fi
161
161
# generate debuginfo only for non-i686 targets
162
162
if check_option " debug" " y" && [ " ${CARCH} " != i686 ]; then
163
- sed -i ' s/^#debug/debug/g' " ../ ${_realname} c- ${pkgver} -src/ config.toml"
163
+ sed -i ' s/^#debug/debug/g' config.toml
164
164
fi
165
165
166
166
# Add target wasm32-*
167
167
if [[ ${CARCH} != i686 ]]; then
168
- sed -i ' /target = \[/a\ "wasm32-unknown-unknown", "wasm32-wasip1", "wasm32-wasip1-threads", "wasm32-wasip2",' " ../ ${_realname} c- ${pkgver} -src/ config.toml"
168
+ sed -i ' /target = \[/a\ "wasm32-unknown-unknown", "wasm32-wasip1", "wasm32-wasip1-threads", "wasm32-wasip2",' config.toml
169
169
fi
170
170
171
- # Building out of tree is not officially supported so we have to workaround some things like vendored deps
172
- cp -r ../${_realname} c-${pkgver} -src/.cargo .
173
- sed -i " s|directory = \" vendor\" |directory = \" ../${_realname} c-${pkgver} -src/vendor\" |" .cargo/config.toml
174
-
175
- local -a _rust_build=()
176
- _rust_build+=(" --stage" " 2" )
177
- # _rust_build+=("--verbose")
178
-
179
- # create the install at a temporary directory
180
- DESTDIR=" $PWD " /dest-rust python ../${_realname} c-${pkgver} -src/x.py install " ${_rust_build[@]} "
171
+ if [[ ${CARCH} == x86_64 ]]; then
172
+ # build opt-dist tool which manages PGO build
173
+ python x.py build opt-dist --target=" $OSTYPE "
174
+
175
+ # run opt-dist to get rustc optimized with PGO
176
+ ./build/$OSTYPE /stage0-tools-bin/opt-dist local \
177
+ --target-triple=" $OSTYPE " \
178
+ --checkout-dir=" $PWD " \
179
+ --llvm-dir=" ${MINGW_PREFIX} " \
180
+ --python=" ${MINGW_PREFIX} /bin/python.exe" -- \
181
+ DESTDIR=" $PWD " /dest-rust python x.py install --stage 2
182
+ else
183
+ # create the install at a temporary directory
184
+ DESTDIR=" $PWD " /dest-rust python x.py install --stage 2
185
+ fi
181
186
182
187
if [[ ${CARCH} != i686 ]]; then
183
188
# move wasm32-* targets out of the way for splitting
@@ -192,8 +197,8 @@ build() {
192
197
}
193
198
194
199
check () {
195
- cd " ${MSYSTEM} "
196
- python ../ ${_realname} c- ${pkgver} -src/ x.py test --stage 2 --exclude src/test/debuginfo
200
+ cd " ${MSYSTEM} / ${_realname} c- ${pkgver} -src "
201
+ python x.py test --stage 2 --exclude src/test/debuginfo
197
202
}
198
203
199
204
package_rust () {
@@ -208,7 +213,7 @@ package_rust() {
208
213
conflicts=(" ${MINGW_PACKAGE_PREFIX} -rust-docs" )
209
214
replaces=(" ${MINGW_PACKAGE_PREFIX} -rust-docs" )
210
215
211
- cd " ${MSYSTEM} "
216
+ cd " ${MSYSTEM} / ${_realname} c- ${pkgver} -src "
212
217
213
218
cp -a dest-rust/* " ${pkgdir} "
214
219
@@ -233,21 +238,19 @@ package_rust-wasm() {
233
238
# object files provided for wasm32-* targets can't be stripped with MSYS2 toolchain
234
239
options=(' !strip' )
235
240
236
- cd " ${MSYSTEM} "
241
+ cd " ${MSYSTEM} / ${_realname} c- ${pkgver} -src "
237
242
238
243
cp -a dest-wasm/* " ${pkgdir} "
239
- install -Dm644 ../${_realname} c-${pkgver} -src/LICENSE-{APACHE,MIT} -t \
240
- " ${pkgdir}${MINGW_PREFIX} /share/licenses/${_realname} -wasm/"
244
+ install -Dm644 LICENSE-{APACHE,MIT} -t " ${pkgdir}${MINGW_PREFIX} /share/licenses/${_realname} -wasm/"
241
245
}
242
246
243
247
package_rust-src () {
244
248
pkgdesc=' Source code for the Rust standard library (mingw-w64)'
245
249
depends=(" ${MINGW_PACKAGE_PREFIX} -rust" )
246
250
247
- cd " ${MSYSTEM} "
251
+ cd " ${MSYSTEM} / ${_realname} c- ${pkgver} -src "
248
252
249
- install -Dm644 ../${_realname} c-${pkgver} -src/LICENSE-{APACHE,MIT} -t \
250
- " ${pkgdir}${MINGW_PREFIX} /share/licenses/${_realname} -src/"
253
+ install -Dm644 LICENSE-{APACHE,MIT} -t " ${pkgdir}${MINGW_PREFIX} /share/licenses/${_realname} -src/"
251
254
252
255
install -d " ${pkgdir}${MINGW_PREFIX} /lib/rustlib/"
253
256
cp -a dest-src " ${pkgdir}${MINGW_PREFIX} /lib/rustlib/src"
0 commit comments