summaryrefslogtreecommitdiff
path: root/dev-lang/idris2/idris2-0.7.0.ebuild
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
}