aboutsummaryrefslogtreecommitdiffstats
path: root/community/julia/APKBUILD
blob: ef621d8f1da44965135f59aa8b5102fda6434893 (plain)
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
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Shiz <hi@shiz.me>
# Maintainer: Shiz <hi@shiz.me>
pkgname=julia
pkgver=0.6.2
# Keep in sync with deps/libuv.version.
_libuv_ver=d8ab1c6a33e77bf155facb54215dd8798e13825d
_llvm_ver=3.9
pkgrel=1
pkgdesc="A high-level, high-performance dynamic language for technical computing"
url="http://julialang.org"
# x86: no libunwind package
arch="x86_64"
license="MIT"
depends="arpack
	dsfmt
	fftw>=3.3
	gmp>=5.0
	libgit2>=0.21
	mpfr3
	openblas
	openlibm
	openspecfun>=0.4
	pcre2>=10.0
	suitesparse>=4.1
	"
depends_dev="arpack-dev
	curl-dev
	dsfmt-dev
	fftw-dev
	gmp-dev
	libgit2-dev
	libssh2-dev
	libunwind-dev
	llvm$_llvm_ver-dev
	mbedtls-dev
	mpfr-dev
	openblas-dev
	openlibm-dev
	openspecfun-dev
	pcre2-dev
	suitesparse-dev
	utf8proc-dev>=2
	"
makedepends="$depends_dev
	bash
	cmake
	gfortran
	linux-headers
	libressl-dev
	paxmark
	perl
	"
# FIXME: -tests should be noarch, but for unknown reason it fails on builder
# (arch-specific binaries are found)...
subpackages="$pkgname-tests $pkgname-doc $pkgname-dev $pkgname-dbg"
source="https://github.com/JuliaLang/julia/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
	libuv-$_libuv_ver.tar.gz::https://api.github.com/repos/JuliaLang/libuv/tarball/$_libuv_ver
	UnicodeData.txt-9.0.0::http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt
	find-syslibs
	0001-hardened.patch
	0002-verbose-build.patch
	0003-no-clean-docs.patch
	0005-fix-rpath-issues.patch
	0008-ldconfig-compat.patch
	fix-or-disable-broken-tests.patch
	test-disable-tests-using-fake_pty.patch
	test-libgit2-skip-SSL_CERT_FILE.patch
	test-repl-disable-22176-20482.patch
	makefile-dont-rebuild-docs.patch
	"
builddir="$srcdir/$pkgname-$pkgver"
ldpath="/usr/lib/julia"

prepare() {
	cd "$builddir"

	# Julia needs patched libuv.
	mkdir deps/srccache
	cp "$srcdir"/libuv-$_libuv_ver.tar.gz deps/srccache

	# Prevent fetching of unicode data.
	cp "$srcdir"/UnicodeData.txt-9.0.0 doc/UnicodeData.txt

	# Prevent fetching of bundled stuff in the build and package phase.
	cat > deps/tools/jldownload <<-'EOF'
		#!/bin/sh
		echo "!!! Downloading of $2 to $1 disabled !!!"
		echo "Abuild should not fetch any files in the build phase."
		echo "Add all the needed files to the APKBUILD's source=."
		exit 1
	EOF

	cat > Make.user <<-EOF
		prefix=/usr
		libexecdir=/usr/lib
		sysconfdir=/etc
		DESTDIR="$pkgdir"
		LIBBLAS=-lopenblas
		LIBBLASNAME=libopenblas
		LIBLAPACK=-lopenblas
		LIBLAPACKNAME=libopenblas
		LLVM_CONFIG=/usr/lib/llvm$_llvm_ver/bin/llvm-config
		LLVM_VER=$_llvm_ver
		NO_GIT=1
		USE_SYSTEM_LLVM=1
		USE_SYSTEM_LIBUNWIND=1
		USE_SYSTEM_PCRE=1
		USE_SYSTEM_LIBM=1
		USE_SYSTEM_OPENLIBM=1
		USE_SYSTEM_OPENSPECFUN=1
		USE_SYSTEM_DSFMT=1
		USE_SYSTEM_BLAS=1
		USE_SYSTEM_LAPACK=1
		USE_SYSTEM_FFTW=1
		USE_SYSTEM_GMP=1
		USE_SYSTEM_MPFR=1
		USE_SYSTEM_ARPACK=1
		USE_SYSTEM_SUITESPARSE=1
		USE_SYSTEM_LIBUV=0
		USE_SYSTEM_UTF8PROC=1
		USE_SYSTEM_MBEDTLS=1
		USE_SYSTEM_LIBSSH2=1
		USE_SYSTEM_CURL=1
		USE_SYSTEM_LIBGIT2=1
		USE_SYSTEM_PATCHELF=1
		USE_LLVM_SHLIB=1
		VERBOSE=1
	EOF

	# Pre-SSE2 CPU targets are not supported;
	# create a generic 32-bit x86 binary.
	if [ "$CARCH" = x86 ]; then
		echo "MARCH=i686" >> Make.user
		echo "JULIA_CPU_TARGET=pentium4" >> Make.user
	else
		echo "MARCH=${CARCH/_/-}" >> Make.user
	fi

	default_prepare
}

build() {
	cd "$builddir"

	# If debug is not built here, it is built during make install.
	make release debug
}

check() {
	cd "$builddir"

	# TMPDIR=... is needed to prevent the tests from trying to write
	# into /tmp, which will fail.
	mkdir -p "$builddir"/tmp
	TMPDIR="$builddir"/tmp make test
}

package() {
	cd "$builddir"

	make install
	install -D "$srcdir"/find-syslibs "$pkgdir"/usr/share/julia/find-syslibs
	# re-apply lost PaX markings
	paxmark m "$pkgdir"/usr/bin/julia "$pkgdir"/usr/bin/julia-debug

	rm -Rf "$pkgdir"/usr/share/julia/site
}

tests() {
	pkgdesc="$pkgdesc (tests)"
	replaces="$pkgname"  # for backward compatibility

	mkdir -p "$subpkgdir"/usr/share/julia
	mv "$pkgdir"/usr/share/julia/test "$subpkgdir"/usr/share/julia
}

# Note: Julia builds somehow special debug binaries, so we need to bypass
# default_dbg and just copy them as-is.
dbg() {
	pkgdesc="$pkgdesc (debug build)"
	depends="$pkgname=$pkgver-r$pkgrel"
	replaces="$pkgname-debug"

	install -d "$subpkgdir"/usr/bin
	mv "$pkgdir"/usr/bin/*-debug "$subpkgdir"/usr/bin/

	install -d "$subpkgdir"/usr/lib/julia
	mv "$pkgdir"/usr/lib/*[.-]debug* "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/julia/*[.-]debug* "$subpkgdir"/usr/lib/julia/
}

sha512sums="679050463ed5825d34c477bd44cd91cfecc7d1735a2f52cc70b509afd9883cb60902861643266ecac5ba6cbb03f8fcdd12fc2e87dc41b9ed0eef813fa40610f1  julia-0.6.2.tar.gz
272e3cc7b1290ef19cc941c3b3e6dd39dba7dcb26f0aea8e667c48c56288aa9266020504e0cc90074f02881521b3352079416f564c7eb24ab444326a8f04ca64  libuv-d8ab1c6a33e77bf155facb54215dd8798e13825d.tar.gz
43eaf66d9cb3748012b2dfd77da1b41f667c5c7602a56bea8186b796b215bde82d555d79ab053378c2222521396354dcce5cf23a78fa3b1456062c47771c8433  UnicodeData.txt-9.0.0
0283c7b0ff7dd99ae79f6ddac63513ce7d58ba31de506a3fee07af9b8882ddc275d0f9cb002381ba1e304bcacf252612fa16b21b85667422477e6b945b725899  find-syslibs
f812b05b7712975eaef0bf071dd2c1cd0b21c68b18d6a513878bb8fe877bfcadf9f4b9dd8cd27b6809378de5b250a010301e7a90169677d155ad2ba377e8b428  0001-hardened.patch
52bbaff51c7d0299e875294b43e23773bcdbe1bc7d02b670814d051bb4f1224bba507182944dc739adb07acd10d3d7f5a0ac7c270c28d3a760d36d90520a2f16  0002-verbose-build.patch
04ab09428c299ca1cc7f162d2344763d9b9136c209a6718df62689f421b4925af20a7b739513965dcbdcbf191577b15d48ece08d63c6db21f8742c02d56a2ea0  0003-no-clean-docs.patch
e1257c42b819bbdcdca74c7b912c1e0e43d6ba70c5e8625d6141bb2dcc49abbab5a8690046bf6cc14cb058b972a74cb60eea6162a48f280035f69154cd25d657  0005-fix-rpath-issues.patch
251b3b8f9d5292afbff5816f48f6595b61da95322f5fa137260cde5b0e578aa08c2b8fc28d8031cace306403637b21f80d30edca79978ae5493b170a0db7143c  0008-ldconfig-compat.patch
e989a1f39a68de3378cedd6d009ae07af1888eb7a39b2f18c2441c06b75305f0cff90d8bef28bb2d0d84422435713060ffe07f244994a2941d591c66ac1cb131  fix-or-disable-broken-tests.patch
8d4608dd90735ffdbdb04e1dc27fc9702624e45969ab379401d5b605cccf78dea9a79d713995358b552532ae938212ee0f032e5ce7e6c28edb30c49c02b58e7b  test-disable-tests-using-fake_pty.patch
87267dd0402d8e70dd511bd79c7edfc3d1b5db7dbbdc9618832adb73ab7d34c6eed2c347fe74bf93757cc6b4f573ed7918d733b3bbf3653eab06f65a74428ff4  test-libgit2-skip-SSL_CERT_FILE.patch
fc5eef406d84b60fdf1c837aa1f5bd0e7a205c311853d0ae8b2b237e2eb750d7da2152632d866d372174918a3953746620f2bf130596ab2b027ca389a6816edd  test-repl-disable-22176-20482.patch
98a25c49465771e72c1c0d114602c6937dbddac3e81255b310a0309083b4b365c35eb37f7a7c6128b3369dd1a071cc5c16c18aa9628dd355defd0fcb0f289706  makefile-dont-rebuild-docs.patch"