aboutsummaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authoramano.kenji <amano.kenji@proton.me>2023-02-02 12:16:53 +0000
committeramano.kenji <amano.kenji@proton.me>2023-02-02 12:16:53 +0000
commit78362dcc305297b6b7be0f32c664775bcbb10398 (patch)
tree909b892c088e831dbdb1c920a949b0d6fc7e664f /eclass
parentapp-doc/ford: disable py3.11 (diff)
downloadguru-78362dcc305297b6b7be0f32c664775bcbb10398.tar.gz
guru-78362dcc305297b6b7be0f32c664775bcbb10398.tar.bz2
guru-78362dcc305297b6b7be0f32c664775bcbb10398.zip
Add rakudo.eclass and dev-raku/*
rakudo.eclass requires install-dist.raku installed by a modified version of dev-lang/rakudo. Gentoo overlay's dev-lang/rakudo doesn't install install-dist.raku. rakudo.eclass is minimal and elegant. dev-raku/* packages depend on rakudo.eclass. Signed-off-by: amano.kenji <amano.kenji@proton.me>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/rakudo.eclass55
1 files changed, 55 insertions, 0 deletions
diff --git a/eclass/rakudo.eclass b/eclass/rakudo.eclass
new file mode 100644
index 000000000..5d5119e98
--- /dev/null
+++ b/eclass/rakudo.eclass
@@ -0,0 +1,55 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rakudo.eclass
+# @MAINTAINER:
+# amano.kenji <amano.kenji@proton.me>
+# @BLURB: An eclass for raku modules
+
+EXPORT_FUNCTIONS src_compile src_install src_test
+
+# @ECLASS_VARIABLE: rakudo_test_deps
+# @DESCRIPTION:
+# Packages that shouldn't run tests with dev-raku/App-Prove6
+# @INTERNAL
+declare -A rakudo_test_deps
+rakudo_test_deps[dev-raku/App-Prove6]=1
+rakudo_test_deps[dev-raku/Getopt-Long]=1
+rakudo_test_deps[dev-raku/TAP]=1
+
+if [ ${rakudo_test_deps[${CATEGORY}/${PN}]} ]; then
+ BDEPEND="dev-lang/rakudo:="
+else
+ BDEPEND="dev-lang/rakudo:=
+ test? ( dev-raku/App-Prove6 )"
+ IUSE="test"
+ RESTRICT="!test? ( test )"
+fi
+RDEPEND="dev-lang/rakudo:="
+
+# @FUNCTION: rakudo_symlink_bin
+# @USAGE: <executable-in-/usr/share/perl6/vendor/bin>
+# @DESCRIPTION:
+# Make a symlink to /usr/share/perl6/vendor/bin/executable in /usr/bin
+rakudo_symlink_bin() {
+ dosym "/usr/share/perl6/vendor/bin/$1" "/usr/bin/$1" || die
+}
+
+rakudo_src_compile() {
+ env RAKUDO_RERESOLVE_DEPENDENCIES=0 \
+ /usr/share/perl6/core/tools/install-dist.raku --only-build --from=. \
+ || die
+}
+
+rakudo_src_install() {
+ einstalldocs
+ env RAKUDO_RERESOLVE_DEPENDENCIES=0 \
+ /usr/share/perl6/core/tools/install-dist.raku \
+ --to="${D}/usr/share/perl6/vendor" --for=vendor --from=. --build=False \
+ || die
+}
+
+rakudo_src_test() {
+ [ ${rakudo_test_deps[${CATEGORY}/${PN}]} ] && return
+ prove6 --lib t/ || die
+}