summaryrefslogtreecommitdiff
path: root/user/rust/APKBUILD
blob: 2cb95de2825b00803c0f882f017b4f291b0642b6 (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
# 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.34.2
_bootcargover=0.34.0
_bootver=1.33.0
_llvmver=8
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-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
	0008-Correct-minimum-system-LLVM-version-in-tests.patch
	0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
	0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
	0011-Ignore-broken-and-non-applicable-tests.patch
	0012-Link-stage-2-tools-dynamically-to-libstd.patch
	0013-Move-debugger-scripts-to-usr-share-rust.patch
	0014-Add-foxkit-target-specs.patch
	0020-bootstrap-rustdoc.patch
	0030-libc-linkage.patch
	0031-typenum-pmmx.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 = true
		debuginfo-tools = true
		backtrace = true
		channel = "stable"
		rpath = false
		jemalloc = 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 \
	python3 x.py build -j ${JOBS:-2}
}

check() {
	cd "$builddir"

	RUST_BACKTRACE=1 \
	python3 x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \
		src/test/codegen \
		src/test/codegen-units \
		src/test/compile-fail \
		src/test/incremental \
		src/test/mir-opt \
		src/test/pretty \
		src/test/run-fail \
		src/test/run-fail/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" python3 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/bin/rust-gdbgui "$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="f1bd2b226d90aae8a4657e6117b9a8451d4ce8129f79cc0fce0da7613a3b7800e690bc0ede8fec20a2f5f32c13fa8e22ac97d3838e0d36936793535a75d9c381  rustc-1.34.2-src.tar.xz
74e83fec744c8d11b4a6136b3fb5a17f7464b40488da03052646ac7ac4aa505a69c9f557c8f25ae0d7dce38d62ef759fc7f6bb77e7cb36e7e7d8baf893b55d1b  cargo-0.34.0-powerpc64-foxkit-linux-musl.tar.xz
a05f52932883ac7bd5637540ede6435c481d9f53921767b890589e5e562753afc0636a44847a2fc61939f3c89923d7e2361ec5d3d8b406c494c9be547a51b278  rust-std-1.33.0-powerpc64-foxkit-linux-musl.tar.xz
8654ac1c53e3220ed7dd350e57e2df563cf0849196c1cd63be61cd31666c5ac91b146740690b6b47451e34041bfd9109e9c0faec29ee7c7579503da3469979cd  rustc-1.33.0-powerpc64-foxkit-linux-musl.tar.xz
7d7bc8050be0eed5f5d99e13d0e20e28d49f4a04ce6b3ab8092498bb88e130d1331b09cf6a5c783b41c54b6a8003df91fd06788c02d5ae6a1f4d31e7ee40f1ca  0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
afb07e4cd986e83ad96e80b8d961b39a203d62275d21466014331953ae1ff48112138d3393a32e21da77b469f4cf91a91da770112588820585e8ba784efce2ab  0002-Fix-LLVM-build.patch
3346ae2b1c3918f95a9eda766ff7aa94afed4cc6219997d0ca2d2c711c81a6639f682bdc4be17b033dbebe2a95ccce58ce4975946d0eee8a66acef2634747f77  0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
2ccb3991bde11a6b84363bdb838fb2c6b0bbffa7464e415abdd9a1786ef8fcbd6bc8da53cb5a3fc2a886ed0b91e661beb38fdc866aeed42f5fba2f8bb3c2f16f  0004-Require-static-native-libraries-when-linking-static-.patch
752d06412050839eeabd7cd39b818636474e927cce6de130527af9bf3b1015f89bf05a09e43cb26ed8aaf8f51219fdaf4d7d434e1c6fd567b9314d8c4e791700  0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
b588abcdf8adc220dc2f4d0719db67e24625ed7f67fd6de7249cc7ebea532b226a77309c8b9b7bc6678e3934056f0db75157b21185f8687113fc0b932af9c654  0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
c3ae8541c150506ea8321da4333e1ac070e64757065718b59aeb0b56f0d8633a1b82c7bde939809a38c2bd23ee504b0015a4b3be836f3602714d2317999c627b  0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
4158215ba30307bebed8df251b593a1558b854951e43ada373f9c3a05c247aa9c2842da4e67c4ec715ea0533ea58843a563a932d61e150a16870856c66bb7a43  0008-Correct-minimum-system-LLVM-version-in-tests.patch
3d28550681e1e6a81fa132d34a0200f3d1802e3165c68b9dd0dd8e13f81d347c7c5a100b4ad7f539d456e3dab601f6983266047c8f7a1fe42d8c058151ff8ddd  0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
0190a8b85ecf710c645f4bf8f6ae96cbafbcce26f6254596bde8a1ae2031ed4fdf5f36330464571a1131f8e174f856de0f3c16cc5b11d454219433e120bdb752  0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
7a8a371edae0b3af198d0b85a6fb13e4b68f55e756d3b2d8a60b9e244b377861116dfb9af1110e7669d4e338fa7e1ba608881708ee616336f4b4937c9424f827  0011-Ignore-broken-and-non-applicable-tests.patch
7c5ff39d875eee3f68d6c6c83af930962041139b4e4c3a6bc2bab754063b5ee5439dfb5d2777e902e70535c7863a8406d149e7330e9eb27ebe0d4d5eee2479a6  0012-Link-stage-2-tools-dynamically-to-libstd.patch
69ed8b4ba346fbd283abb06b7979a0c5b3597650ac68169d81a218e3e79e2dd872f5ed969fcf233aa989daf3af09197584cc9035d43b1fb3982a805235d88ac3  0013-Move-debugger-scripts-to-usr-share-rust.patch
dd988e59b8be1bbb297e4484fd98a0c6cbd61fa86fd3956c9dd55d5e21a59f790422744b534f95683b217ed30c32186701117d47e59af7417d51074fd3dac81c  0014-Add-foxkit-target-specs.patch
15a20249250aacc9792b7edc0bdcc9b49f25231b4e28070991c9af821b1a78debe2d4c27a1c60976abd137fa25ed010e0796b107ba162d190a48791adedab3bc  0020-bootstrap-rustdoc.patch
95b5f807cf5f0d47b6d329b34685a329dfb7f3b394aa4acc4147ecd3cd6b62299558df6526d661e1dfade76e147a4e9b00d2d9340268b89fdaabedf42c27e6d0  0030-libc-linkage.patch
e3ef894dfd77270f3ab34c5b694d96f43e91f2d01ccdf7a3685ee6d930a279dda378251422d432c25a30dc15a2e44356353e2c0cf952e8339ec8f82942fb6cbf  0040-rls-atomics.patch"