summaryrefslogtreecommitdiff
path: root/user/rust/APKBUILD
blob: a239a96d1e9768e367322ec8d65b17845f2d5312 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Shiz <hi@shiz.me>
# Contributor: Jeizsm <jeizsm@gmail.com>
# Maintainer: Samuel Holland <samuel@sholland.org>
pkgname=rust
pkgver=1.29.0
_bootcargover=0.30.0
_bootver=1.29.0
_llvmver=6
pkgrel=0
pkgdesc="The Rust Programming Language"
url="https://www.rust-lang.org"
arch="all"
license="(Apache-2.0 OR MIT) AND (NCSA OR MIT) AND BSD-2-Clause AND BSD-3-Clause"
depends="$pkgname-stdlib=$pkgver-r$pkgrel gcc musl-dev"
makedepends="
	curl-dev
	libgit2-dev
	libssh2-dev
	llvm$_llvmver-dev
	llvm$_llvmver-test-utils
	openssl-dev
	python3
	zlib-dev
	"
subpackages="
	$pkgname-dbg
	$pkgname-stdlib
	$pkgname-analysis
	$pkgname-doc
	$pkgname-gdb::noarch
	$pkgname-lldb::noarch
	$pkgname-src::noarch
	cargo
	cargo-clippy:_cargo_clippy
	cargo-fmt:_cargo_fmt
	cargo-doc:_cargo_doc:noarch
	cargo-bash-completion:_cargo_bashcomp:noarch
	cargo-zsh-completion:_cargo_zshcomp:noarch
	rls
	rustfmt
	"
source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz
	https://mirrormaster.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz
	https://mirrormaster.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz
	https://mirrormaster.adelielinux.org/source/rust/rustc-$_bootver-$CBUILD.tar.xz
	0001-Require-static-native-libraries-when-linking-static-.patch
	0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
	0003-Fix-LLVM-build.patch
	0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
	0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
	0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
	0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
	0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
	0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
	0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
	0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
	0012-Add-powerpc-unknown-linux-musl-target.patch
	0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
	0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch
	0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
	0018-Add-powerpc64-unknown-linux-musl-target.patch
	0019-run-pass-const-endianness-negate-before-to_le.patch
	0020-Fix-double_check-tests-on-big-endian-targets.patch
	0021-x.py-Use-python3-instead-of-python.patch
	0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
	0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
	0024-Ignore-broken-and-non-applicable-tests.patch
	0025-Move-debugger-scripts-to-usr-share-rust.patch
	0026-Add-foxkit-target-specs.patch
	0027-Add-foxkit-target-specs-for-OpenSSL.patch
	0028-Link-stage-2-tools-dynamically-to-libstd.patch
	0030-liblibc-linkage.patch
	0031-liblibc-dcff154781e4.patch
	0032-liblibc-90c01fa6b0f4.patch
	0033-liblibc-checksums.patch
	0034-rls-atomics.patch
	"
builddir="$srcdir/rustc-$pkgver-src"
_rlibdir="/usr/lib/rustlib/$CTARGET/lib"

prepare() {
	cd "$builddir"

	default_prepare

	$srcdir/cargo-$_bootcargover-$CBUILD/install.sh \
		--destdir=$srcdir/prebuilt \
		--prefix=/ \
		--disable-ldconfig
	$srcdir/rust-std-$_bootver-$CBUILD/install.sh \
		--destdir=$srcdir/prebuilt \
		--prefix=/ \
		--disable-ldconfig
	$srcdir/rustc-$_bootver-$CBUILD/install.sh \
		--destdir=$srcdir/prebuilt \
		--prefix=/ \
		--disable-ldconfig
}

build() {
	cd "$builddir"

	cat > config.toml <<- EOF
		[build]
		build = "$CBUILD"
		host = [ "$CHOST" ]
		target = [ "$CTARGET" ]
		cargo = "$srcdir/prebuilt/bin/cargo"
		rustc = "$srcdir/prebuilt/bin/rustc"
		submodules = false
		python = "python3"
		locked-deps = true
		vendor = true
		extended = true
		tools = [ "analysis", "cargo", "clippy", "rls", "rustfmt", "src" ]
		[install]
		prefix = "/usr"
		[rust]
		codegen-units = 1
		debuginfo = true
		debuginfo-lines = true
		debuginfo-only-std = false
		debuginfo-tools = true
		use-jemalloc = false
		backtrace = true
		channel = "stable"
		rpath = false
		[target.$CTARGET]
		cc = "$CTARGET-gcc"
		cxx = "$CTARGET-g++"
		linker = "$CTARGET-gcc"
		llvm-config = "/usr/lib/llvm$_llvmver/bin/llvm-config"
		crt-static = false
	EOF

	LIBGIT2_SYS_USE_PKG_CONFIG=1 \
	LLVM_LINK_SHARED=1 \
	RUST_BACKTRACE=1 \
	./x.py build -j ${JOBS:-2}
}

check() {
	cd "$builddir"

	./x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \
		src/test/codegen \
		src/test/codegen-units \
		src/test/compile-fail \
		src/test/compile-fail-fulldeps \
		src/test/debuginfo \
		src/test/incremental \
		src/test/incremental-fulldeps \
		src/test/mir-opt \
		src/test/parse-fail \
		src/test/pretty \
		src/test/run-fail \
		src/test/run-fail/pretty \
		src/test/run-fail-fulldeps \
		src/test/run-fail-fulldeps/pretty \
		src/test/run-make \
		src/test/run-make-fulldeps \
		src/test/run-pass \
		src/test/run-pass/pretty \
		src/test/run-pass-fulldeps \
		src/test/run-pass-fulldeps/pretty \
		src/test/ui \
		src/test/ui-fulldeps
}

package() {
	cd "$builddir"

	DESTDIR="$pkgdir" ./x.py install

	rm "$pkgdir"/usr/lib/*.so \
	   "$pkgdir"/usr/lib/rustlib/components \
	   "$pkgdir"/usr/lib/rustlib/install.log \
	   "$pkgdir"/usr/lib/rustlib/manifest-* \
	   "$pkgdir"/usr/lib/rustlib/rust-installer-version \
	   "$pkgdir"/usr/lib/rustlib/uninstall.sh \
	   "$pkgdir"/usr/share/doc/rust/*.old
}

stdlib() {
	pkgdesc="Standard library for Rust"
	depends="musl-utils"

	_mv "$pkgdir"$_rlibdir/*.so "$subpkgdir"$_rlibdir

	mkdir -p "$subpkgdir"/etc/ld.so.conf.d
	echo "$_rlibdir" > "$subpkgdir"/etc/ld.so.conf.d/$pkgname.conf
}

analysis() {
	pkgdesc="Compiler analysis data for the Rust standard library"
	depends="$pkgname=$pkgver-r$pkgrel $pkgname-stdlib=$pkgver-r$pkgrel"

	_mv "$pkgdir"${_rlibdir%/*}/analysis "$subpkgdir"${_rlibdir%/*}
}

gdb() {
	pkgdesc="GDB pretty printers for Rust"
	license="Apache-2.0 OR MIT"
	depends="$pkgname gdb"
	install_if="$pkgname=$pkgver-r$pkgrel gdb"

	_mv "$pkgdir"/usr/bin/rust-gdb "$subpkgdir"/usr/bin
	_mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust || true
}

lldb() {
	pkgdesc="LLDB pretty printers for Rust"
	license="Apache-2.0 OR MIT"
	depends="$pkgname lldb py3-lldb"
	install_if="$pkgname=$pkgver-r$pkgrel lldb"

	_mv "$pkgdir"/usr/bin/rust-lldb "$subpkgdir"/usr/bin
	_mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust || true
}

src() {
	pkgdesc="$pkgdesc (source code)"
	depends=""

	_mv "$pkgdir"/usr/lib/rustlib/src/rust "$subpkgdir"/usr/src
	rmdir -p "$pkgdir"/usr/lib/rustlib/src 2>/dev/null || true

	mkdir -p "$subpkgdir"/usr/lib/rustlib/src
	ln -s ../../../src/rust "$subpkgdir"/usr/lib/rustlib/src/rust
}

cargo() {
	pkgdesc="The Rust package manager"
	depends="$pkgname-stdlib=$pkgver-r$pkgrel $pkgname"

	_mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin
}

_cargo_clippy() {
	pkgdesc="A collection of Rust lints (cargo plugin)"
	depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo"

	_mv "$pkgdir"/usr/bin/cargo-clippy \
	    "$pkgdir"/usr/bin/clippy-driver \
	    "$subpkgdir"/usr/bin
}

_cargo_fmt() {
	pkgdesc="Format Rust code (cargo plugin)"
	depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo rustfmt"
	install_if="cargo=$pkgver-r$pkgrel rustfmt=$pkgver-r$pkgrel"

	_mv "$pkgdir"/usr/bin/cargo-fmt "$subpkgdir"/usr/bin
}

_cargo_bashcomp() {
	pkgdesc="Bash completion for cargo"
	license="Apache-2.0 OR MIT"
	depends=""
	install_if="cargo=$pkgver-r$pkgrel bash-completion"

	_mv "$pkgdir"/etc/bash_completion.d/cargo \
	    "$subpkgdir"/usr/share/bash-completion/completions
	rmdir -p "$pkgdir"/etc/bash_completion.d 2>/dev/null || true
}

_cargo_zshcomp() {
	pkgdesc="ZSH completion for cargo"
	license="Apache-2.0 OR MIT"
	depends=""
	install_if="cargo=$pkgver-r$pkgrel zsh"

	_mv "$pkgdir"/usr/share/zsh/site-functions/_cargo \
	    "$subpkgdir"/usr/share/zsh/site-functions/_cargo
	rmdir -p "$pkgdir"/usr/share/zsh/site-functions 2>/dev/null || true
}

_cargo_doc() {
	pkgdesc="The Rust package manager (documentation)"
	license="Apache-2.0 OR MIT"
	depends=""
	install_if="cargo=$pkgver-r$pkgrel docs"

	# XXX: This is hackish!
	_mv "$pkgdir"/../$pkgname-doc/usr/share/man/man1/cargo* \
	    "$subpkgdir"/usr/share/man/man1
}

rls() {
	pkgdesc="The Rust language server"
	license="Apache-2.0 OR MIT"
	depends="$pkgname-stdlib=$pkgver-r$pkgrel"

	_mv "$pkgdir"/usr/bin/rls "$subpkgdir"/usr/bin
}

rustfmt() {
	pkgdesc="Format Rust code"
	depends="$pkgname-stdlib=$pkgver-r$pkgrel"

	_mv "$pkgdir"/usr/bin/rustfmt "$subpkgdir"/usr/bin
}

_mv() {
	local dest; for dest; do true; done  # get last argument
	mkdir -p "$dest"
	mv "$@"
}
sha512sums="87f416c76db2967c0ce2b39ee2d2c2fcad875bbe13cfa507f5483e170827c131f3af4400c11785ed836143b2732aaf32bc0291fcd93bbfb96b266a198c926a5b  rustc-1.29.0-src.tar.xz
1e67f3b28ca5d6e8ed06df36145abcfeecedb8c8b5370023e7de4a19b850b690efefdd583b42fc484c1167a5c301f6779745c12efb065475acf956d9934cb02b  cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
92f250086aa8cc1528359fbf9e9413bc86857acb6e9f0bb3a045a3a1770dd3a4eda5b499c1cd1946bb9f0937d402b73bf46c7e1de8d419efdd0ffbc278239a81  rust-std-1.29.0-powerpc64-foxkit-linux-musl.tar.xz
1fedd316a05f16947e8288f194cf55b9d9e29667096a50b4f2ecd9c2031e00fbf9a8c14c01968bb047e3f3aac18a036606092749de467b152169eb218360ecbe  rustc-1.29.0-powerpc64-foxkit-linux-musl.tar.xz
23540d67f2774f007ffea65e3475b0003193a28503f302dbbf7fa741c0e53dd14d110a3eb88374c2fc1a29b7c8add4c41300fe1c187b2d2ead8e35740cabaaa8  0001-Require-static-native-libraries-when-linking-static-.patch
3e10a597f35470b31da178dad3af956d395f4245470f7c2821a78f1e7411acd8758c13c686a342eb362850a736b2887293203847e38c89f40a61498282d29c69  0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
d6b293f13dccbe5bdbcc13c2b18e610c271ab49acc0eb5658489388b371431a522f454308af20d2fdb8c68ce99203cfa8455b7c36cc47c8d1f5722b739c3b3fc  0003-Fix-LLVM-build.patch
38f5380a3e7c8454de62ed75e807ad034f1ef3521a88706d3a24d4de09140147ff298c8e36de14d21f0b458d8c1bf82dd8e3924c7dcef0a16d8cd07ff49f06ea  0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
660283864cbd7a98246c3a6d5634b99032c90fcd98eab6f2477786ab49078505f59f2a88f2b87729850e0b07bef18dd5b93c458e947ae876aac3dca3742dff73  0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
75a7d5f67e315ef69f6c5114b80523858b528c6ef80ec10fba7d1f1afce97e6053670a8a7473c6948931d2f013e77646b7b30635f12f5b5f6dd12a29f6f4925e  0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
7256275df428ea13028731e91dccbba90f7e9f2a611ce9265447831cc60a9284b8d78573da50143b2e7fe4f3f6dc360eddf0be94a01de4b8745d7930144b2365  0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
45c7342c9b901f3d96e293e189773b22e0c7f240e79ffd661e4010f798a6d622304ad16fab22ebb81e92e473c98f93f39505e79dbfb341ec7e29efbcd366594b  0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
d48b2653265de8e331afe8fb8ec48b3170845d95eb54ea1fad77cc8ac617cab193b3e797c2753794addcb3f3edb5de99ebdd6de1ad31613a08485b4ad9a8878f  0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
abbefe8cbdb1b0cefe9cecfe5b5fad88b868d838617bf1fc1e0da782844ca9f28fb5edd8052115e9667ff21eca90e768caea1ce6c8bf23981162e1da93a70c59  0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
e9c4c6d9029029abc806da48ba85fb3ce5ca2aa0dd748012f8cd89620b3a5646b06a3295b1d001c3e651ffebf7a23d16d074c7a146cc585b9347f16b2c147743  0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
cf5cb5827a836f2fc155ba5f9caf24d2811e143fa178d64c2cd2c6cd0ba8c121dacd657be7a631f1d2532f3bd6f244c371361afddf65f057acf15f0de1d4b8bd  0012-Add-powerpc-unknown-linux-musl-target.patch
9e47df4cd5f9590e526be1617efa6c96b80cc9220f819a0b86a6b48a229786b860fff4c2dc5451f7098aa5f250e35285d65cfa0012c15110eab612d585a1f6d7  0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
36f07adaef870b90590a7513b1bde0f37793bbd6b773b41bf0cf2b791add51c0c8e22a55b5f8266a04e82f8c60f8a89eb0597cdb23b6f595e787a6a57cd869c0  0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch
63fb44a61ee59e916bbaf78dc95cdb73a77671671db10280e8a8fde08324604f1b2560a648f25b088558c3fd198f855a8056dcb14997c0747f05957c51643aba  0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
bd16a8c9d79c495677d1d59a5a806a46d807447ef9be85b20fb2d8150775f24a233d00dea4c5a3b505054b299982fe00d64d1a9a9da26c320e804a8f3840e48b  0018-Add-powerpc64-unknown-linux-musl-target.patch
41f272bc925d2800fde0f663d300572ab27d4de275b4802de7adb89c2d6582b1aec3cd456ae2c0d115f1104f9de97489da86df101eefbaead374c5d5b20c95d8  0019-run-pass-const-endianness-negate-before-to_le.patch
e146e9205f22f10fcdd6b8b77ee76a7b2cab0f38368a793cdd15a2dd5b1432c7e9d0ea9ae5cda55ff91edfbea20941fe49836707bb238c84b74ec0330490b4c8  0020-Fix-double_check-tests-on-big-endian-targets.patch
ed4f07e005a9ee7b117c48961c0285cb5a8f1bf5c1480343d617630af56837fb177cf8e5f564b0795ed063ede485d8478a44c7c257511aaa05d4abf4c316d898  0021-x.py-Use-python3-instead-of-python.patch
12e6f6dbeefaeee6190a8ed25336836bec23d92778a2b01921f1191e4ac9fb8259b7b99d6bebe52b9e390eb3b4dca40c61e9498cdc222d5019843ef31b82146e  0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
d9b2234fdc3e2fac9462f0be8ce8988d50573d1149c496ef7b439596303a34e540824a5a6ab23cb15be1a6c1d15d857662d6dae740abd77084375b276b84f4dd  0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
7cff0eb0f947e009326cbd96dae0d74d1f5fb9fbd1cd62544aa5b52c44fdc8f40094856d44dc5b4d55fd2c35308f37fa64656d614ae16d42d71e59a7a8cdb531  0024-Ignore-broken-and-non-applicable-tests.patch
de5c3b3ca532328957b550cf02cbdc851bacd7740bbdd4512e03d2eb4d916034d2bd026710f2f734d7a31ca67eda3f34e2577a0cd39a4901d0808a1815095064  0025-Move-debugger-scripts-to-usr-share-rust.patch
6a1c997e5e280b9575857d5dca5cff22ea17fc878389bb0d852139bb113fe64082dfd1298958a78e10d4a8faf58358bc8c221516e248c929c399d327559ef030  0026-Add-foxkit-target-specs.patch
6b1723c2e4672e394374419fcc136a851078b4a4c538c7c1d86847e6915c5fb3ddc1f81971ded1a73a3090766d103c3cc79c60b8e39999947be625e0e17e1249  0027-Add-foxkit-target-specs-for-OpenSSL.patch
74618287fe0bdcbedb23b2343e88885496d346c68a6b76109f613c5a13f7e09623ece11cb9c784f1ae6779005c9ec4def0351810718afd80285d1912c0040c9a  0028-Link-stage-2-tools-dynamically-to-libstd.patch
f94abe390798b968bccfba1c908ab5895220ed0d167314b790a9c28b10cac81fb2e3b08760b4e8551ad5a5d02cd052d3d0d647ad8f8634e97f4d3b0470a21c42  0030-liblibc-linkage.patch
48a2ea6beb5f333d646fcc7aa15405d24f52f48e82b8f9cd09737dbfef16df0679246b30a28871595d13414b44c316122e0c969e1ae555b7ab18b692057c0d67  0031-liblibc-dcff154781e4.patch
fcfdd6b2702b8b23d8fd339ceb23b75a6e9814a388f00d226c8101be46a0f29835c77b75ab665e36972fde14364d762816ea2dcf3c1d90dd1e574fb8f6c33c80  0032-liblibc-90c01fa6b0f4.patch
1e1e1f485abd8e3e283aa69b3b5c6f11901d0cc14527834a6490ed70c043512aa207ff4f9ef4bbdef884697120fab59d23ec1faf3b02b3d3d77a060789275cd4  0033-liblibc-checksums.patch
9182408b7a87fc2f01dc12a36440e43a721f7693da00310806f6306e711c04b34d43b6ab348ae523656937f61389adb6a5a2b8ff46dec5424ad20c29652d4edf  0034-rls-atomics.patch"