From: "Florian Schmaus" <flow@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/proj/guru:master commit in: eclass/
Date: Wed, 29 Jun 2022 15:38:00 +0000 (UTC) [thread overview]
Message-ID: <1656503546.d34b616bfc616418be86dab44d53f9397665a7bc.flow@gentoo> (raw)
commit: d34b616bfc616418be86dab44d53f9397665a7bc
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Jun 29 07:13:20 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 11:52:26 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d34b616b
eclass/nim-utils.eclass: new eclass
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 115 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
new file mode 100644
index 000000000..12b077452
--- /dev/null
+++ b/eclass/nim-utils.eclass
@@ -0,0 +1,115 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: nim-utils.eclass
+# @MAINTAINER:
+# Anna Vyalkova <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna Vyalkova <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: utility functions for Nim packages
+# @DESCRIPTION:
+# A utility eclass providing functions to call and configure Nim.
+#
+# This eclass does not set any metadata variables nor export any phase
+# functions. It can be inherited safely.
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+if [[ ! ${_NIM_UTILS_ECLASS} ]]; then
+
+# @ECLASS_VARIABLE: NIMFLAGS
+# @USER_VARIABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Flags for the Nim compiler.
+
+# @ECLASS_VARIABLE: TESTAMENT_DISABLE_MEGATEST
+# @USER_VARIABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# If set, pass '--megatest:off' to testament.
+
+# @VARIABLE: ETESTAMENT_DESELECT
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Specifies an array of test files to be deselected via testament's --skipFrom
+# parameter, when calling etestament.
+
+inherit multiprocessing toolchain-funcs xdg-utils
+
+# @FUNCTION: enim
+# @USAGE: [<args>...]
+# @DESCRIPTION:
+# Call nim, passing the supplied arguments.
+# This function dies if nim fails. It also supports being called via 'nonfatal'.
+# If you need to call nim directly in your ebuilds, this is the way it should
+# be done.
+enim() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ set -- nim "${@}"
+ echo "$@" >&2
+ "$@" || die -n "${*} failed"
+}
+
+# @FUNCTION: etestament
+# @USAGE: [<args>...]
+# @DESCRIPTION:
+# Call testament, passing the supplied arguments.
+# This function dies if testament fails.
+etestament() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local -a testament_args=()
+ [[ ${TESTAMENT_DISABLE_MEGATEST} ]] && \
+ testament_args+=( --megatest:off )
+
+ [[ "${NOCOLOR}" == true || "${NOCOLOR}" == yes ]] && \
+ testament_args+=( --colors:off )
+
+ if [[ ${ETESTAMENT_DESELECT} ]]; then
+ local skipfile="${T}"/testament.skipfile
+ for t in "${ETESTAMENT_DESELECT[@]}"; do
+ echo "${t}" >> "${skipfile}"
+ done
+ testament_args+=( --skipFrom:"${skipfile}" )
+ fi
+
+ set -- testament "${testament_args[@]}" "${@}"
+ echo "$@" >&2
+ "$@" || die -n "${*} failed"
+}
+
+# @FUNCTION: nim_gen_config
+# @USAGE:
+# @DESCRIPTION:
+# Generate the ${WORKDIR}/nim.cfg to respect user's toolchain and preferences.
+nim_gen_config() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ xdg_environment_reset
+
+ cat > "${WORKDIR}/nim.cfg" <<- EOF || die "Failed to create Nim config"
+ cc:"gcc"
+ gcc.exe:"$(tc-getCC)"
+ gcc.linkerexe:"$(tc-getCC)"
+ gcc.cpp.exe:"$(tc-getCXX)"
+ gcc.cpp.linkerexe:"$(tc-getCXX)"
+ gcc.options.always:"${CFLAGS} ${CPPFLAGS}"
+ gcc.options.linker:"${LDFLAGS}"
+ gcc.cpp.options.always:"${CFLAGS} ${CPPFLAGS}"
+ gcc.cpp.options.linker:"${LDFLAGS}"
+
+ $([[ "${NOCOLOR}" == true || "${NOCOLOR}" == yes ]] && echo '--colors:"off"')
+ -d:"release"
+ --parallelBuild:"$(makeopts_jobs)"
+ $(printf "%s\n" ${NIMFLAGS})
+ EOF
+}
+
+_NIM_UTILS_ECLASS=1
+fi
next reply other threads:[~2022-06-29 15:38 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-29 15:38 Florian Schmaus [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-11-27 14:34 [gentoo-commits] repo/proj/guru:master commit in: eclass/ David Roman
2024-10-19 0:05 David Roman
2024-07-14 17:47 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2024-07-14 17:47 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-14 15:27 Haelwenn Monnier
2024-07-01 13:50 David Roman
2024-04-27 11:10 David Roman
2024-04-01 11:32 Julien Roy
2024-03-31 17:57 Julien Roy
2024-03-31 17:49 [gentoo-commits] repo/proj/guru:dev " Julien Roy
2024-03-31 17:57 ` [gentoo-commits] repo/proj/guru:master " Julien Roy
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-02-05 11:57 David Roman
2024-01-20 22:13 David Roman
2024-01-03 15:20 David Roman
2023-10-05 14:25 Viorel Munteanu
2023-10-05 6:18 Viorel Munteanu
2023-08-30 5:30 [gentoo-commits] repo/proj/guru:dev " Viorel Munteanu
2023-08-30 5:36 ` [gentoo-commits] repo/proj/guru:master " Viorel Munteanu
2023-08-07 12:51 David Roman
2023-08-07 12:51 David Roman
2023-08-04 7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2023-08-04 7:26 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2023-08-04 7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
2023-08-04 7:26 ` [gentoo-commits] repo/proj/guru:master " Florian Schmaus
2023-07-17 14:24 Florian Schmaus
2023-06-26 11:24 Andrew Ammerlaan
2023-05-22 5:17 Viorel Munteanu
2023-05-22 5:17 Viorel Munteanu
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-05-11 14:32 Andrew Ammerlaan
2023-04-13 7:02 Florian Schmaus
2023-04-01 21:30 Haelwenn Monnier
2023-04-01 21:30 Haelwenn Monnier
2023-04-01 21:30 Haelwenn Monnier
2023-02-27 15:06 Florian Schmaus
2023-02-27 15:06 Florian Schmaus
2023-01-08 10:27 Florian Schmaus
2022-12-09 16:26 Ronny Gutbrod
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-26 10:54 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-16 19:33 Florian Schmaus
2022-11-05 15:26 Arthur Zamarin
2022-07-20 9:35 Andrew Ammerlaan
2022-07-20 9:35 Andrew Ammerlaan
2022-07-20 9:35 Andrew Ammerlaan
2022-07-20 9:35 Andrew Ammerlaan
2022-07-20 9:35 Andrew Ammerlaan
2022-07-11 6:54 Andrew Ammerlaan
2022-06-30 17:39 Florian Schmaus
2022-06-29 15:38 Florian Schmaus
2022-06-14 18:35 Haelwenn Monnier
2022-06-14 18:35 Haelwenn Monnier
2022-06-14 18:35 Haelwenn Monnier
2022-05-12 9:14 Andrew Ammerlaan
2022-05-05 14:42 Haelwenn Monnier
2022-05-05 14:42 Haelwenn Monnier
2022-05-05 14:42 Haelwenn Monnier
2022-04-15 20:58 Haelwenn Monnier
2022-04-15 20:58 Haelwenn Monnier
2022-04-14 13:31 Andrew Ammerlaan
2022-04-12 19:35 Ronny Gutbrod
2022-04-12 19:35 Ronny Gutbrod
2022-04-12 19:35 Ronny Gutbrod
2022-02-20 8:46 Florian Schmaus
2022-02-20 8:46 Florian Schmaus
2021-10-06 1:13 Theo Anderson
2021-09-30 19:39 Arthur Zamarin
2021-09-08 15:20 Arthur Zamarin
2021-07-26 14:05 Andrew Ammerlaan
2021-06-02 16:00 Andrew Ammerlaan
2021-05-24 22:25 Haelwenn Monnier
2021-05-17 19:11 Andrew Ammerlaan
2021-03-16 10:49 Andrew Ammerlaan
2021-03-15 10:58 Andrew Ammerlaan
2021-03-15 10:58 Andrew Ammerlaan
2020-12-06 10:46 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-12-06 10:49 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-05-07 11:13 Andrew Ammerlaan
2020-05-07 11:13 Andrew Ammerlaan
2020-05-01 15:39 Andrew Ammerlaan
2020-04-28 8:01 Andrew Ammerlaan
2020-04-28 7:44 Andrew Ammerlaan
2020-04-21 10:23 Andrew Ammerlaan
2020-04-21 10:20 Andrew Ammerlaan
2020-04-07 7:42 Andrew Ammerlaan
2020-04-07 7:42 Andrew Ammerlaan
2020-04-07 7:27 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07 7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-04-07 7:16 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07 7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
2020-04-06 18:26 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
2020-04-07 7:42 ` [gentoo-commits] repo/proj/guru:master " Andrew Ammerlaan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1656503546.d34b616bfc616418be86dab44d53f9397665a7bc.flow@gentoo \
--to=flow@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox