summaryrefslogtreecommitdiff
path: root/user/rust/APKBUILD
blob: aa155ac3b5f6dc40e456230f036536f23427cb58 (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
# 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.30.1
_bootcargover=0.30.0
_bootver=1.29.2
_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://distfiles.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz
	https://distfiles.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz
	https://distfiles.adelielinux.org/source/rust/rustc-$_bootver-$CBUILD.tar.xz
	0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
	0002-Fix-LLVM-build.patch
	0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
	0004-Require-static-native-libraries-when-linking-static-.patch
	0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
	0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
	0007-Add-powerpc-unknown-linux-musl-target.patch
	0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
	0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
	0010-Add-powerpc64-unknown-linux-musl-target.patch
	0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
	0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
	0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
	0014-Fix-double_check-tests-on-big-endian-targets.patch
	0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
	0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
	0017-x.py-Use-python3-instead-of-python.patch
	0018-test-target-feature-gate-Only-run-on-relevant-target.patch
	0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
	0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
	0021-Ignore-broken-and-non-applicable-tests.patch
	0022-Link-stage-2-tools-dynamically-to-libstd.patch
	0023-Move-debugger-scripts-to-usr-share-rust.patch
	0024-Add-foxkit-target-specs.patch
	0030-liblibc-linkage.patch
	0031-liblibc-1b130d4c349d.patch
	0040-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/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="e466db81b9a82239670c48b876dc7390fcdda28c6390308691ddf2e0c12a39b57bd5ddb18322d1b4cd58165f69a666c7d83bee6573049da3b94e401657459bf5  rustc-1.30.1-src.tar.xz
0f7c92e69f15cb014a1a6c263df2d0675842db9a3789467aa0d8811130adb1ffb3e0a344cfb59c069f5aa0f99b1f2422536ec96064b71374a3077b3a2a02d0fa  cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
95f447bd698177732f4105ddcf4e60d5695a4345f6eb49d5d49ff2402de6d28199ca1aba1a630088beee40b8063477bed4dd47532c53cbb72de3ee5687a9c689  rust-std-1.29.2-powerpc64-foxkit-linux-musl.tar.xz
a140b9f524205a756192fed740492bbc01205ce77196dd44244752a99d8e6ede03cb9b8ef0d986e23ea882ebf24e773d6e426054c5840989379d81427ad37f07  rustc-1.29.2-powerpc64-foxkit-linux-musl.tar.xz
efab6cffae2569ea022f099a461629bdfc01604772baf0fc56a03b63954c0540f1f2039b364ed06bfac4e6a3a3e86e5bd6aadcbf90cac769c74f810f9a19cdd9  0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
92b3c418ae96e97049c3c9bf5aef0ba85f6d95bc82262f902ae48af25c02e2f06a5e270136dee3fc6c56ec4f80e44c2575d2ab61d626ab2cc460081458caecd2  0002-Fix-LLVM-build.patch
069bb3809eb3a5ff364e45ed0625cf70038f866ea24328b1d7f6b163ad02a00a23c9dad02799acff0b78ca79a68df7f59a49b68ad30df033741f482cd4141d83  0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
1ac789ff4bc5f73d707fd36bcabf7c51077d31355ed1d4de2d1bbd6445fb2cfaeaf93aaf789493959df47faafdd04acc17d7212b2dd157e0865be9c55f919e37  0004-Require-static-native-libraries-when-linking-static-.patch
d14d322141964d3b80e29ad195e9df8ea62c88bc3890fc00dabea3ec7de4b4e4c796a7b1f1fc2014356724d6d5b631e92a72446a7c05c6b06a4e250be0f83b45  0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
21267b1d2408d08324864453f08d7bb26008f7799da08d24ed0dccbb02ae0d8f40a894bc77cc45bf8dee7fbc655aa3a8ee9bc7e5fcf1bdc3a9b46b363d6dfaa5  0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
a50fb08f4e52213fef4e8303a3978661b43cd58c36676ed35c79b05767c2b02a3ac9416f7a3229f14821c433d2a47b38bc03bf419d70ae597a4f5145de2ed20b  0007-Add-powerpc-unknown-linux-musl-target.patch
35e93fcc03d3afee55ab0c9a6c3b832e74ee0ff5e9e37f0d134ac934ed70afc2b485e141103715e661aff280b9513d02e1802ff4829d0c7283600e047306f4d8  0008-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
4bcef503d82b1f5676cd2d4f3deaac606abebd68002586e0e64b5c6c3c2846c473fa3f23a9227451ca42b971542dea2384b29d7c4e7543549e00fbc4d0039458  0009-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
6ff6d6014a4e64486aef97239520239adf9b755f9e16309e4b529d6be5fab845ad9c9b943036db5c29125b4d58870911cf124d61b235f4e4ed81d9b182f9b5e9  0010-Add-powerpc64-unknown-linux-musl-target.patch
4f74438f47c42e205934c96d4e0920eacd9e3829c77d9253b7a12188c134de8c9ad79f6453c7bd49b71f5bfd3ce95864401b947275f8d73f0028374236694985  0011-Add-missing-OpenSSL-configurations-for-musl-targets.patch
352f77e0480a9762b7520fabbec9a0adea15783044ae16ec383cede1b714fb10594c7a6a26d3d59cea33980e1fd38836987eeb99828e33b1a26111274df7e84e  0012-rustc_data_structures-use-libc-types-constants-in-fl.patch
3da23479210496db34dae495b7b98c44aad24363650e35e887b97e9d3b90084f4d57dd2fc0ae0b69de2bd42dc920d6d2829b9b190b16f4c6acd072c8b7cb2988  0013-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
a170e78757e3d31eb0d6869ca082bcd1b919bc192cb1b9c4940c12b09e4948956bf0c06e63261484c2f868320fbc69a9156f4477bf3ccefad334dab495ea758e  0014-Fix-double_check-tests-on-big-endian-targets.patch
7e4fdbe3d4c12dc1bdd1f2c9bae01999cc50949628a61f210599f146c2a29ea3450b242cac8fced0fef7334b825a1114da9b632b2e8020dbae085d8a1d2c5168  0015-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
35abfcfc12781870b1b3d58afb4a40ba3ed4873a171defec6af170f9b671e46e0daefd258a29fa546aba8b62b80cbae4365d4b4ffc4864a90ec21eac0cca03fe  0016-test-linkage-visibility-Ensure-symbols-are-visible-t.patch
3efd92224b2bddd1c539b578fcc1f13d69f66bcfef678502f2b2f34a0b44307ac92a87854f136234af860e787048835047aab24428a867aefa16784c6b553673  0017-x.py-Use-python3-instead-of-python.patch
b19e6f892bc428c577b6bbaed8f764072e320fa03fcab509b2ac1c3e9284dcd0f62ac43fddb71b2fe756de47bbc158d815e37b735d55585071bcf0d6bce40c5f  0018-test-target-feature-gate-Only-run-on-relevant-target.patch
315a325ae6dbfbfefb237f17843c6dfbedb244378fb9118d441208d879ee6913d2c99e8fe519d3924485bd74f2d95d1b68804e290311eab58fcc50631d4e6f7a  0019-test-use-extern-for-plugins-Don-t-assume-multilib.patch
285220c4c2faace1abcbc5c4e96f18435fcd2203736240cffc107737f4b424132052b62a9ffa790de4c88323d4b20ccbf61607104d773a385cd3c83c0d2b056a  0020-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
05eb137c7f6fc00e40f55c24e8191fd42a0d39dc1758d40779624ba4c1654bf97383b6ababcc36f5850e1fe10dedb47cfad7a176b2ac4fd0b8659bf3cf969a58  0021-Ignore-broken-and-non-applicable-tests.patch
02a15f2ad61acbea8dbba54e78f4c4343bbc4f26fc3f48e522f19ef79287e83d3d45b338ae4820fd770677f6cd0f52b0d38050318c60d9d2d3d2e57b196379bf  0022-Link-stage-2-tools-dynamically-to-libstd.patch
9d6d1761b6348d2e6ec7773d14cce2a6b1bc579ba4f2689ff245017d399e24895128617376ed26f009ebe5e9a0ba1a79bb71bc95373c3565e88d4f1a78a47161  0023-Move-debugger-scripts-to-usr-share-rust.patch
4837e36aacffd82fcc5cb63e971b02de906087b5865331c6d61f5ab112bf728ec55d9481d328b5462a08142167e8fad2f5e7cbd24700948a04c4d8de9d281324  0024-Add-foxkit-target-specs.patch
f94abe390798b968bccfba1c908ab5895220ed0d167314b790a9c28b10cac81fb2e3b08760b4e8551ad5a5d02cd052d3d0d647ad8f8634e97f4d3b0470a21c42  0030-liblibc-linkage.patch
875f0b676c61c1ec67894fc7866233869ced8fc975960b8b99585bad370066f9a6bf591590a745c73a0bcc93b9f7fda74a703829c50d04b80846aecc92ae725a  0031-liblibc-1b130d4c349d.patch
41ab9d6f361ee2fba267c9836c1a382dc86101d1bfb59cd942be8e8fc526ad65d845c9395cba7f760808d345d107f32e75af9057d67c450b8fbdd8a73636fb2e  0040-rls-atomics.patch"