blob: acc07f686ab72daf7d53780e29e011a65ce5c342 (
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
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs toolchain-funcs
DESCRIPTION="Purely functional programming language with first class types"
HOMEPAGE="https://idris-lang.org/"
if [[ "${PV}" == *9999* ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/idris-lang/${PN^}.git"
else
SRC_URI="https://github.com/idris-lang/${PN^}/archive/v${PV}.tar.gz
-> ${P}.tar.gz"
S="${WORKDIR}/${PN^}-${PV}"
KEYWORDS="~amd64 ~x86"
fi
LICENSE="BSD"
SLOT="0"
IUSE="+chez doc racket test-full"
REQUIRED_USE="^^ ( chez racket )"
RDEPEND="
dev-libs/gmp:=
chez? (
dev-scheme/chez:=[threads]
)
racket? (
dev-scheme/racket:=[threads]
)
"
DEPEND="
${RDEPEND}
"
BDEPEND="
doc? (
dev-python/sphinx-rtd-theme
)
test-full? (
dev-scheme/chez[threads]
dev-scheme/racket[threads]
net-libs/nodejs
)
"
CHECKREQS_DISK_BUILD="800M"
PATCHES=( "${FILESDIR}/${PN}-0.7.0-disable-allbackends-tests.patch" )
# Generated via "SCHEME", not CC
QA_FLAGS_IGNORED="
usr/lib/idris2/bin/idris2_app/idris2
usr/lib/idris2/bin/idris2_app/idris2-boot
"
QA_PRESTRIPPED="${QA_FLAGS_IGNORED}"
src_prepare() {
# Clean up environment of Idris and Racket variables
unset IDRIS2_DATA IDRIS2_INC_CGS IDRIS2_LIBS IDRIS2_PACKAGE_PATH
unset IDRIS2_PATH IDRIS2_PREFIX
unset PLTUSERHOME
tc-export AR CC CXX LD RANLIB
export CFLAGS
sed -i '/^CFLAGS/d' ./support/*/Makefile || die
# Fix "PREFIX"
sed -i 's|$(HOME)/.idris2|/usr/lib/idris2|g' ./config.mk || die
# Bad tests
local -a bad_tests=(
allschemes/channels006
chez/futures001
refc/args
refc/buffer
refc/clock
refc/doubles
refc/garbageCollect
refc/integers
refc/issue1778
refc/issue2424
refc/refc002
refc/refc003
refc/strings
)
local bad_test
for bad_test in "${bad_tests[@]}" ; do
rm -r "tests/${bad_test}" || die
done
default
}
src_configure() {
export IDRIS2_VERSION="${PV}"
export SCHEME="$(usex chez chezscheme racket)"
if use chez ; then
export IDRIS2_CG=chez
export BOOTSTRAP_TARGET=bootstrap
elif use racket ; then
export IDRIS2_CG=racket
export BOOTSTRAP_TARGET=bootstrap-racket
else
die 'Neither "chez" nor "racket" was chosen'
fi
}
src_compile() {
# > jobserver unavailable
# This is caused by Makefile using a script which in turn calls make
# https://github.com/idris-lang/Idris2/issues/2152
emake SCHEME="${SCHEME}" "${BOOTSTRAP_TARGET}" -j1
use doc && emake -C ./docs html
}
src_test() {
emake SCHEME="${SCHEME}" bootstrap-test
}
src_install() {
# "DESTDIR" variable is not respected, use "PREFIX" instead
emake IDRIS2_PREFIX="${ED}/usr/lib/idris2" PREFIX="${ED}/usr/lib/idris2" install
dosym "../lib/${PN}/bin/${PN}" "/usr/bin/${PN}"
# Install documentation
use doc && dodoc -r ./docs/build/html
einstalldocs
}
|