9 |
9 |
# >=1.8.2 still sits on LLVM 13, bug: https://bugs.gentoo.org/876184
|
10 |
10 |
MY_LLVM_V=13.0.1
|
11 |
11 |
|
12 |
|
inherit flag-o-matic pax-utils toolchain-funcs optfeature
|
|
12 |
PYTHON_COMPAT=( python3_{9..11} )
|
|
13 |
|
|
14 |
inherit check-reqs flag-o-matic optfeature pax-utils python-any-r1 toolchain-funcs
|
13 |
15 |
|
14 |
16 |
DESCRIPTION="High-performance programming language for technical computing"
|
15 |
17 |
HOMEPAGE="https://julialang.org/
|
16 |
18 |
https://github.com/JuliaLang/julia/"
|
17 |
|
SRC_URI="https://github.com/JuliaLang/julia/releases/download/v${PV}/${P}-full.tar.gz"
|
|
19 |
SRC_URI="
|
|
20 |
https://github.com/JuliaLang/julia/releases/download/v${PV}/${P}-full.tar.gz
|
|
21 |
https://github.com/JuliaLang/julia/commit/0b211609.patch
|
|
22 |
-> ${PN}-0b211609.patch
|
|
23 |
https://github.com/JuliaLang/julia/commit/a48ad530.patch
|
|
24 |
-> ${PN}-a48ad530.patch
|
|
25 |
"
|
18 |
26 |
|
19 |
27 |
LICENSE="MIT"
|
20 |
28 |
SLOT="0"
|
21 |
29 |
KEYWORDS="~amd64 ~x86"
|
|
30 |
PROPERTIES="test_network"
|
|
31 |
RESTRICT="test"
|
22 |
32 |
|
23 |
33 |
RDEPEND="
|
|
34 |
>=dev-libs/libutf8proc-2.6.1:0=[-cjk]
|
|
35 |
>=dev-util/patchelf-0.13
|
|
36 |
>=net-libs/mbedtls-2.2
|
|
37 |
>=sci-mathematics/dsfmt-2.2.4
|
|
38 |
>=sys-libs/libunwind-1.1:0=
|
|
39 |
>=virtual/blas-3.6
|
24 |
40 |
app-arch/p7zip
|
25 |
41 |
app-misc/ca-certificates
|
26 |
42 |
dev-libs/gmp:0=
|
27 |
43 |
dev-libs/libgit2:0
|
28 |
44 |
dev-libs/mpfr:0=
|
29 |
|
>=dev-libs/libutf8proc-2.6.1:0=[-cjk]
|
30 |
|
>=dev-util/patchelf-0.13
|
31 |
|
>=net-libs/mbedtls-2.2
|
32 |
45 |
net-misc/curl[http2,ssh]
|
33 |
46 |
sci-libs/amd:0=
|
34 |
47 |
sci-libs/arpack:0=
|
... | ... | |
40 |
53 |
sci-libs/openlibm:0=
|
41 |
54 |
sci-libs/spqr:0=
|
42 |
55 |
sci-libs/umfpack:0=
|
43 |
|
>=sci-mathematics/dsfmt-2.2.4
|
44 |
|
>=sys-libs/libunwind-1.1:0=
|
45 |
56 |
sys-libs/zlib:0=
|
46 |
|
>=virtual/blas-3.6
|
47 |
57 |
virtual/lapack
|
48 |
58 |
"
|
49 |
59 |
DEPEND="${RDEPEND}"
|
50 |
60 |
BDEPEND="
|
|
61 |
${PYTHON_DEPS}
|
51 |
62 |
dev-util/cmake
|
52 |
63 |
virtual/pkgconfig
|
53 |
64 |
"
|
54 |
65 |
|
55 |
|
PATCHES=( "${FILESDIR}"/${PN}-1.8.0-llvm-no-bindings.patch )
|
|
66 |
CHECKREQS_DISK_BUILD="4G"
|
|
67 |
PATCHES=(
|
|
68 |
"${DISTDIR}"/${PN}-0b211609.patch
|
|
69 |
"${DISTDIR}"/${PN}-a48ad530.patch
|
|
70 |
"${FILESDIR}"/${PN}-1.8.0-llvm-no-bindings.patch
|
|
71 |
"${FILESDIR}"/${PN}-1.8.3-gcc13.patch
|
|
72 |
)
|
|
73 |
QA_FLAGS_IGNORED+='usr/.*/julia/sys.so' # Julia sysimage generated by bootstrapping.
|
56 |
74 |
|
57 |
75 |
# Huge thanks to Arch Linux developers for the patches.
|
58 |
76 |
archlinux_uri="https://raw.githubusercontent.com/archlinux/svntogit-community/packages/julia/trunk/"
|
59 |
77 |
archlinux_patches=(
|
60 |
|
074d761f.patch
|
61 |
|
ed9851b0.patch
|
62 |
|
julia-hardcoded-libs.patch
|
63 |
|
julia-libunwind-1.6.patch
|
64 |
|
julia-llvm-14.patch
|
65 |
|
julia-system-cblas.patch
|
66 |
|
make-install-no-build.patch
|
|
78 |
074d761f.patch # wanted
|
|
79 |
0db596e6.patch # secondary
|
|
80 |
190565c2.patch # secondary
|
|
81 |
23f39f83.patch # secondary
|
|
82 |
3423639d.patch # secondary
|
|
83 |
68adc00e.patch # secondary
|
|
84 |
700c69b1.patch # secondary
|
|
85 |
ed9851b0.patch # wanted
|
|
86 |
julia-hardcoded-libs.patch # wanted
|
|
87 |
julia-libunwind-1.6.patch # wanted
|
|
88 |
julia-mpfr-4.2.patch # secondary
|
|
89 |
julia-system-cblas.patch # wanted
|
67 |
90 |
)
|
68 |
91 |
for archlinux_patch in ${archlinux_patches[@]} ; do
|
69 |
92 |
archlinux_patch_name="${PN}-1.8.0-${archlinux_patch}"
|
... | ... | |
74 |
97 |
PATCHES+=( "${DISTDIR}/${archlinux_patch_name}" )
|
75 |
98 |
done
|
76 |
99 |
|
|
100 |
pkg_setup() {
|
|
101 |
check-reqs_pkg_setup
|
|
102 |
python-any-r1_pkg_setup
|
|
103 |
}
|
|
104 |
|
77 |
105 |
src_unpack() {
|
78 |
|
local tounpack=( ${A} )
|
|
106 |
local -a tounpack=( ${A} )
|
79 |
107 |
# the main source tree, followed by deps
|
80 |
108 |
unpack "${tounpack[0]}"
|
81 |
109 |
|
82 |
110 |
mkdir -p "${S}/deps/srccache/"
|
|
111 |
local i
|
83 |
112 |
for i in "${tounpack[@]:1}"; do
|
84 |
113 |
cp "${DISTDIR}/${i}" "${S}/deps/srccache/${i#julia-}" || die
|
85 |
114 |
done
|
|
115 |
|
|
116 |
# Extract tarballs for patching.
|
|
117 |
cd "${S}/deps/srccache/" || die
|
|
118 |
tar xf llvm-julia-13.0.1-3.tar.gz || die
|
86 |
119 |
}
|
87 |
120 |
|
88 |
121 |
src_prepare() {
|
... | ... | |
103 |
136 |
|
104 |
137 |
# disable doc install starting git fetching
|
105 |
138 |
sed -i -e 's~install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index.html~install: $(build_depsbindir)/stringreplace~' Makefile || die
|
|
139 |
|
|
140 |
# Blank the tarball checksum check script.
|
|
141 |
echo "#!/bin/sh" > deps/tools/jlchecksum || die
|
|
142 |
|
|
143 |
# Repack tarballs.
|
|
144 |
cd "${S}/deps/srccache/" || die
|
|
145 |
tar czf llvm-julia-13.0.1-3.tar.gz JuliaLang-llvm-project-8a2ae8c || die
|
106 |
146 |
}
|
107 |
147 |
|
108 |
148 |
src_configure() {
|
... | ... | |
113 |
153 |
# Fails to compile with libpcre2 on split-usr, bug #893336
|
114 |
154 |
# USE_SYSTEM_LIBM=0 implies using external openlibm
|
115 |
155 |
cat <<-EOF > Make.user
|
116 |
|
LOCALBASE:="${EPREFIX}/usr"
|
117 |
|
override prefix:="${EPREFIX}/usr"
|
118 |
|
override libdir:="\$(prefix)/$(get_libdir)"
|
|
156 |
LOCALBASE:=${EPREFIX}/usr
|
|
157 |
override prefix:=${EPREFIX}/usr
|
|
158 |
override libdir:=\$(prefix)/$(get_libdir)
|
119 |
159 |
override CC:=$(tc-getCC)
|
120 |
160 |
override CXX:=$(tc-getCXX)
|
121 |
161 |
override AR:=$(tc-getAR)
|
122 |
162 |
|
123 |
163 |
BUNDLE_DEBUG_LIBS:=0
|
124 |
164 |
USE_BINARYBUILDER:=0
|
|
165 |
USE_INTEL_JITEVENTS=0
|
125 |
166 |
USE_SYSTEM_CSL:=1
|
126 |
167 |
USE_SYSTEM_LLVM:=0
|
127 |
168 |
USE_SYSTEM_LIBUNWIND:=1
|
... | ... | |
150 |
191 |
}
|
151 |
192 |
|
152 |
193 |
src_compile() {
|
153 |
|
# Julia accesses /proc/self/mem on Linux
|
|
194 |
# Julia accesses /proc/self/mem on Linux.
|
154 |
195 |
addpredict /proc/self/mem
|
155 |
196 |
|
156 |
197 |
emake
|
... | ... | |
162 |
203 |
dodoc CONTRIBUTING.md HISTORY.md NEWS.md README.md THIRDPARTY.md
|
163 |
204 |
|
164 |
205 |
local llvmslot=$(ver_cut 1 ${MY_LLVM_V})
|
165 |
|
cp "${S}/usr/lib/libLLVM-${llvmslot}jl.so" "${ED}/usr/$(get_libdir)/julia/" || die
|
166 |
|
cp "${S}/usr/lib/libLLVM-${MY_LLVM_V}jl.so" "${ED}/usr/$(get_libdir)/julia/" || die
|
|
206 |
cp "${S}"/usr/lib/libLLVM-${llvmslot}jl.so "${ED}"/usr/$(get_libdir)/julia/ || die
|
|
207 |
cp "${S}"/usr/lib/libLLVM-${MY_LLVM_V}jl.so "${ED}"/usr/$(get_libdir)/julia/ || die
|
167 |
208 |
|
168 |
209 |
mv "${ED}"/usr/etc/julia "${ED}"/etc || die
|
169 |
210 |
rmdir "${ED}"/usr/etc || die
|
... | ... | |
175 |
216 |
|
176 |
217 |
# Link ca-certificates.crt, bug: https://bugs.gentoo.org/888978
|
177 |
218 |
dosym -r /etc/ssl/certs/ca-certificates.crt /usr/share/julia/cert.pem
|
|
219 |
|
|
220 |
# Julia always searches for "sys.so" inside "/usr/lib/julia",
|
|
221 |
# bug: https://github.com/JuliaLang/julia/issues/49574
|
|
222 |
if [[ $(get_libdir) == "lib64" ]] ; then
|
|
223 |
insinto /usr/lib/julia
|
|
224 |
doins "${ED}"/usr/$(get_libdir)/julia/sys.so
|
|
225 |
fi
|
178 |
226 |
}
|
179 |
227 |
|
180 |
228 |
pkg_postinst() {
|