* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2020-04-06 18:26 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
@ 2020-04-07 7:42 ` Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-07 7:42 UTC (permalink / raw
To: gentoo-commits
commit: 86aaf699516ed9815f3f8df4ae232603d8b6dadd
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Mon Apr 6 18:13:07 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Mon Apr 6 18:13:07 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=86aaf699
eclass/docs: WIP: mkdocs/sphinx doc building
A small eclass for building documentation. Currently supports
building documentation with mkdocs or sphinx. Should work
togheter with distutils-r1 eclass, though this is not required.
The aim is to make it easy to add additional doc builders to the
eclass, just add an setup and compile function for it.
Distutils-r1 eclass also supports sphinx doc building, but this
eclass should also allow sphinx doc building for non-python
packages.
Please feel free to test this eclass on your ebuilds that
use mkdocs doc building or non-pyhton sphinx doc building.
See the in-file documentation on how to use it. That being
said this is still experimental: If the documentation is
unclear, or if you encouter issues, please let me know.
Package-Manager: Portage-2.3.96, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 306 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 306 insertions(+)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
new file mode 100644
index 0000000..618d8a5
--- /dev/null
+++ b/eclass/docs.eclass
@@ -0,0 +1,306 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: docs.eclass
+# @MAINTAINER:
+# Andrew Ammerlaan <andrewammerlaan@riseup.net>
+# @AUTHOR:
+# Author: Andrew Ammerlaan <andrewammerlaan@riseup.net>
+# Based on the work of: Michał Górny <mgorny@gentoo.org>
+# @SUPPORTED_EAPIS: 5 6 7
+# @BLURB: A simple eclass to build documentation.
+# @DESCRIPTION:
+# A simple eclass providing functions to build documentation.
+#
+# Please note that docs sets RDEPEND and DEPEND unconditionally
+# for you.
+#
+# This eclass also appends "doc" to IUSE, and sets HTML_DOCS
+# to the location of the compiled documentation
+#
+# The aim of this eclass is to make it easy to add additional
+# doc builders. To do this, add a <DOCBUILDER>-setup and
+# <DOCBUILDER>-build function for your doc builder.
+# For python based doc builders you can use the
+# python_append_deps function to append [${PYTHON_USEDEP}]
+# automatically to additional dependencies
+#
+# For more information, please see the Python Guide:
+# https://dev.gentoo.org/~mgorny/python-guide/
+
+case "${EAPI:-0}" in
+ 0|1|2|3|4)
+ die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
+ ;;
+ 5|6|7)
+ ;;
+ *)
+ die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
+ ;;
+esac
+
+# @ECLASS-VARIABLE: DOCBUILDER
+# @REQUIRED
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Sets the doc builder to use, currently supports
+# sphinx and mkdocs
+
+# @ECLASS-VARIABLE: DOCDIR
+# @DESCRIPTION:
+# Sets the location of the doc builder config file.
+#
+# For sphinx this is the location of "conf.py"
+# For mkdocs this is the location of "mkdocs.yml"
+#
+# Note that mkdocs.yml often does not reside
+# in the same directory as the actual doc files
+#
+# Defaults to ${S}
+
+# @ECLASS-VARIABLE: DOCDEPEND
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Sets additional dependencies to build docs.
+# For sphinx and mkdocs these dependencies should
+# be specified without [${PYTHON_USEDEP}], this
+# is added by the eclass. E.g. to depend on mkdocs-material:
+#
+# DOCDEPEND="dev-python/mkdocs-material"
+
+# @ECLASS-VARIABLE: AUTODOC
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Sets whether to use sphinx.ext.autodoc/mkautodoc
+# Defaults to 1 (True) for sphinx, and 0 (False) for mkdocs
+
+# @ECLASS-VARIABLE: OUTDIR
+# @DESCRIPTION:
+# Sets where the compiled files will be put.
+# There's no real reason to change this, but this
+# variable is useful if you want to overwrite the HTML_DOCS
+# added by this eclass. E.g.:
+#
+# HTML_DOCS=( "${yourdocs}" "${OUTDIR}/." )
+#
+# Defaults to ${DOCDIR}/_build/html
+
+# If PYHTON_COMPAT is not defined this is not a python
+# package, if it is defined, odds are that either
+# distutils-r1 or python-r1 is inherited as well
+# in this case we cannot inherit python-any-r1
+# because these eclasses are incompatible.
+# We also need to set 'something' to be able
+# to inherit python-any-r1 at all
+if [[ ! ${PYTHON_COMPAT} ]]; then
+ PYTHON_COMPAT=( python3_{6,7,8} )
+ inherit python-any-r1
+else
+ inherit python-r1
+fi
+
+# @FUNCTION: python_check_deps
+# @DESCRIPTION:
+# Check if the dependencies are valid
+python_check_deps() {
+ debug-print-function ${FUNCNAME}
+ use doc || return 0
+
+ local dep
+ for dep in ${DOCDEPEND[@]}; do
+ has_version "${dep}[${PYTHON_USEDEP}]" || return 1
+ done
+}
+
+# @FUNCTION: python_append_dep
+# @DESCRIPTION:
+# Appends [\${PYTHON_USEDEP}] to all dependencies
+# for python based DOCBUILDERs such as mkdocs or
+# sphinx.
+python_append_deps() {
+ debug-print-function ${FUNCNAME}
+
+ local temp=()
+ local dep
+ for dep in ${DOCDEPEND[@]}; do
+ temp+=" ${dep}"
+ done
+ DOCDEPEND=${temp}
+}
+
+# @FUNCTION: sphinx_setup
+# @DESCRIPTION:
+# Sets dependencies for sphinx
+sphinx_setup() {
+ debug-print-function ${FUNCNAME}
+
+ : ${AUTODOC:=1}
+
+ if [[ ! ${AUTODOC} == 1 && -n ${DEPS} ]]; then
+ die "${FUNCNAME}: do not set autodoc to 0 if external plugins are used"
+ fi
+ if [[ ${AUTODOC} == 1 ]]; then
+ deps="$(python_gen_any_dep "
+ dev-python/sphinx[\${PYTHON_USEDEP}]
+ ${DOCDEPEND}")"
+
+ else
+ deps="dev-python/sphinx"
+ fi
+}
+
+# @FUNCTION: sphinx_compile
+# @DESCRIPTION:
+# Calls sphinx to build docs.
+#
+# If you overwrite src_compile or python_compile_all
+# do not call this function, call docs_compile instead
+sphinx_compile() {
+ debug-print-function ${FUNCNAME}
+ use doc || return
+
+ local confpy=${DOCDIR}/conf.py
+ [[ -f ${confpy} ]] ||
+ die "${confpy} not found, distutils_enable_sphinx call wrong"
+
+ if [[ ${AUTODOC} == 0 ]]; then
+ if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
+ die "distutils_enable_sphinx: autodoc disabled but sphinx.ext.autodoc found in ${confpy}"
+ fi
+ elif [[ -z ${DEPS[@]} ]]; then
+ if ! grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
+ die "distutils_enable_sphinx: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
+ fi
+ fi
+
+ sed -i -e 's:^intersphinx_mapping:disabled_&:' \
+ "${DOCDIR}"/conf.py || die
+ # not all packages include the Makefile in pypi tarball
+ sphinx-build -b html -d "${DOCDIR}"/_build/doctrees "${DOCDIR}" \
+ "${OUTDIR}" || die
+}
+
+# @FUNCTION: mkdocs_setup
+# @DESCRIPTION:
+# Sets dependencies for mkdocs
+mkdocs_setup() {
+ debug-print-function ${FUNCNAME}
+
+ : ${AUTODOC:=0}
+
+ if [[ ${AUTODOC} == 1 ]]; then
+ deps="$(python_gen_any_dep "
+ dev-python/mkdocs[\${PYTHON_USEDEP}]
+ dev-python/mkautodoc[\${PYTHON_USEDEP}]
+ ${DOCDEPEND}")"
+ else
+ deps="$(python_gen_any_dep "
+ dev-python/mkdocs[\${PYTHON_USEDEP}]
+ ${DOCDEPEND}")"
+ fi
+}
+
+# @FUNCTION: mkdocs_compile
+# @DESCRIPTION:
+# Calls mkdocs to build docs.
+#
+# If you overwrite src_compile or python_compile_all
+# do not call this function, call docs_compile instead
+mkdocs_compile() {
+ debug-print-function ${FUNCNAME}
+ use doc || return
+
+ local mkdocsyml=${DOCDIR}/mkdocs.yml
+ [[ -f ${mkdocsyml} ]] ||
+ die "${mkdocsyml} not found, distutils_enable_mkdocs call wrong"
+
+ pushd "${DOCDIR}"
+ mkdocs build -d "${OUTDIR}" || die
+ popd
+
+ # remove generated .gz variants
+ # mkdocs currently has no option to disable this
+ # and portage complains: "Colliding files found by ecompress"
+ rm "${OUTDIR}"/*.gz || die
+}
+
+# @FUNCTION: docs_compile
+# @DESCRIPTION:
+# Calls DOCBUILDER and sets HTML_DOCS
+#
+# This function must be called in global scope. Take care not to
+# overwrite the variables set by it. Has support for distutils-r1
+# eclass, but only if this eclass is inherited *after*
+# distutils-r1. If you need to extend src_compile() or
+# python_compile_all(), you can call the original implementation
+# as docs_compile.
+docs_compile() {
+ debug-print-function ${FUNCNAME}
+ use doc || return
+
+ # Set a sensible default as DOCDIR
+ : ${DOCDIR:="${S}"}
+
+ # Where to put the compiled files?
+ : ${OUTDIR:="${DOCDIR}/_build/html"}
+
+ case "${DOCBUILDER}" in
+ "sphinx")
+ sphinx_compile
+ ;;
+ "mkdocs")
+ mkdocs_compile
+ ;;
+ "")
+ die "DOCBUILDER unset, should be set to use ${ECLASS}"
+ ;;
+ *)
+ die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
+ ;;
+ esac
+
+ HTML_DOCS+=( "${OUTDIR}/." )
+
+ # we need to ensure successful return in case we're called last,
+ # otherwise Portage may wrongly assume sourcing failed
+ return 0
+}
+
+
+# This is where we setup the USE/(B)DEPEND variables
+# and call the doc builder specific setup functions
+IUSE+=" doc"
+
+# Call the correct setup function
+case "${DOCBUILDER}" in
+ "sphinx")
+ python_append_deps
+ sphinx_setup
+ ;;
+ "mkdocs")
+ python_append_deps
+ mkdocs_setup
+ ;;
+ "")
+ die "DOCBUILDER unset, should be set to use ${ECLASS}"
+ ;;
+ *)
+ die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
+ ;;
+esac
+
+if [[ ${EAPI} == [56] ]]; then
+ DEPEND+=" doc? ( ${deps} )"
+else
+ BDEPEND+=" doc? ( ${deps} )"
+fi
+
+# If this is a python package using distutils-r1
+# then put the compile function in the specific
+# python function, else just put it in src_compile
+if [[ ${DISTUTILS_USE_SETUPTOOLS} ]]; then
+ python_compile_all() { docs_compile; }
+else
+ src_compile() { docs_compile; }
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-07 7:42 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-07 7:42 UTC (permalink / raw
To: gentoo-commits
commit: fc93a7a89a63b07e103b38e640185b510c18b7c3
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Mon Apr 6 18:44:36 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Mon Apr 6 18:44:36 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=fc93a7a8
eclass/docs: small fixes
Package-Manager: Portage-2.3.96, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index 618d8a5..e3eaaa3 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -93,7 +93,7 @@ esac
# because these eclasses are incompatible.
# We also need to set 'something' to be able
# to inherit python-any-r1 at all
-if [[ ! ${PYTHON_COMPAT} ]]; then
+if [[ -z "${PYTHON_COMPAT}" ]]; then
PYTHON_COMPAT=( python3_{6,7,8} )
inherit python-any-r1
else
@@ -299,7 +299,7 @@ fi
# If this is a python package using distutils-r1
# then put the compile function in the specific
# python function, else just put it in src_compile
-if [[ ${DISTUTILS_USE_SETUPTOOLS} ]]; then
+if [[ -n "${DISTUTILS_USE_SETUPTOOLS}" ]]; then
python_compile_all() { docs_compile; }
else
src_compile() { docs_compile; }
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-07 7:42 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-07 7:42 UTC (permalink / raw
To: gentoo-commits
commit: 764e4b954b8df8d9f1393fe514425c736f03aaf6
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Mon Apr 6 19:35:11 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Mon Apr 6 19:35:47 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=764e4b95
eclass/docs: USE these handy _ECLASS variables
to check if python-(any)-r1 has been inherited
Package-Manager: Portage-2.3.96, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 38 +++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index e3eaaa3..2f243bd 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -86,18 +86,23 @@ esac
#
# Defaults to ${DOCDIR}/_build/html
-# If PYHTON_COMPAT is not defined this is not a python
-# package, if it is defined, odds are that either
-# distutils-r1 or python-r1 is inherited as well
-# in this case we cannot inherit python-any-r1
-# because these eclasses are incompatible.
-# We also need to set 'something' to be able
-# to inherit python-any-r1 at all
-if [[ -z "${PYTHON_COMPAT}" ]]; then
- PYTHON_COMPAT=( python3_{6,7,8} )
- inherit python-any-r1
-else
- inherit python-r1
+if [[ ! ${_DOCS} ]]; then
+
+# For the python based DOCBUILDERS we need to inherit python-any-r1
+if [[ "${DOCBUILDER}"=="sphinx" || "${DOCBUILDER}"=="mkdocs" ]]; then
+ # If this is not a python package then
+ # this is not already set, so we need
+ # to set this to inherit python-any-r1
+ if [[ -z "${PYTHON_COMPAT}" ]]; then
+ PYTHON_COMPAT=( python3_{6,7,8} )
+ fi
+
+ # Inherit python-any-r1 if neither python-any-r1 nor
+ # python-r1 have been inherited, because we need the
+ # python_gen_any_dep function
+ if [[ ! ${_PYTHON_R1} && ! ${_PYTHON_ANY_R1} ]]; then
+ inherit python-any-r1
+ fi
fi
# @FUNCTION: python_check_deps
@@ -162,7 +167,7 @@ sphinx_compile() {
local confpy=${DOCDIR}/conf.py
[[ -f ${confpy} ]] ||
- die "${confpy} not found, distutils_enable_sphinx call wrong"
+ die "${confpy} not found, DOCDIR=${DOCDIR} call wrong"
if [[ ${AUTODOC} == 0 ]]; then
if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
@@ -213,7 +218,7 @@ mkdocs_compile() {
local mkdocsyml=${DOCDIR}/mkdocs.yml
[[ -f ${mkdocsyml} ]] ||
- die "${mkdocsyml} not found, distutils_enable_mkdocs call wrong"
+ die "${mkdocsyml} not found, DOCDIR=${DOCDIR} wrong"
pushd "${DOCDIR}"
mkdocs build -d "${OUTDIR}" || die
@@ -299,8 +304,11 @@ fi
# If this is a python package using distutils-r1
# then put the compile function in the specific
# python function, else just put it in src_compile
-if [[ -n "${DISTUTILS_USE_SETUPTOOLS}" ]]; then
+if [[ ${_DISTUTILS_R1} ]]; then
python_compile_all() { docs_compile; }
else
src_compile() { docs_compile; }
fi
+
+_DOCS=1
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2020-04-07 7:16 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
@ 2020-04-07 7:42 ` Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-07 7:42 UTC (permalink / raw
To: gentoo-commits
commit: 316e8573d3edb2936364e24c4c02286453ba5cca
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 7 07:15:30 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 7 07:16:46 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=316e8573
eclass/docs: many fixes, should work now
Package-Manager: Portage-2.3.96, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 77 +++++++++++++++++++++++++++---------------------------
1 file changed, 39 insertions(+), 38 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index 2f243bd..6e4ceea 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -68,6 +68,9 @@ esac
# is added by the eclass. E.g. to depend on mkdocs-material:
#
# DOCDEPEND="dev-python/mkdocs-material"
+#
+# This eclass appends to this variable, so you can
+# call it later in your ebuild again if necessary.
# @ECLASS-VARIABLE: AUTODOC
# @PRE_INHERIT
@@ -89,21 +92,29 @@ esac
if [[ ! ${_DOCS} ]]; then
# For the python based DOCBUILDERS we need to inherit python-any-r1
-if [[ "${DOCBUILDER}"=="sphinx" || "${DOCBUILDER}"=="mkdocs" ]]; then
- # If this is not a python package then
- # this is not already set, so we need
- # to set this to inherit python-any-r1
- if [[ -z "${PYTHON_COMPAT}" ]]; then
- PYTHON_COMPAT=( python3_{6,7,8} )
- fi
+case "${DOCBUILDER}" in
+ "sphinx"|"mkdocs")
+ # If this is not a python package then
+ # this is not already set, so we need
+ # to set this to inherit python-any-r1
+ if [[ -z "${PYTHON_COMPAT}" ]]; then
+ PYTHON_COMPAT=( python3_{6,7,8} )
+ fi
- # Inherit python-any-r1 if neither python-any-r1 nor
- # python-r1 have been inherited, because we need the
- # python_gen_any_dep function
- if [[ ! ${_PYTHON_R1} && ! ${_PYTHON_ANY_R1} ]]; then
- inherit python-any-r1
- fi
-fi
+ # Inherit python-any-r1 if neither python-any-r1 nor
+ # python-r1 have been inherited, because we need the
+ # python_gen_any_dep function
+ if [[ ! ${_PYTHON_R1} && ! ${_PYTHON_ANY_R1} ]]; then
+ inherit python-any-r1
+ fi
+ ;;
+ "")
+ die "DOCBUILDER unset, should be set to use ${ECLASS}"
+ ;;
+ *)
+ die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
+ ;;
+esac
# @FUNCTION: python_check_deps
# @DESCRIPTION:
@@ -113,10 +124,12 @@ python_check_deps() {
use doc || return 0
local dep
- for dep in ${DOCDEPEND[@]}; do
+ for dep in ${check_deps[@]}; do
has_version "${dep}[${PYTHON_USEDEP}]" || return 1
done
}
+# Save this before we start manipulating it
+check_deps=${DOCDEPEND}
# @FUNCTION: python_append_dep
# @DESCRIPTION:
@@ -129,7 +142,7 @@ python_append_deps() {
local temp=()
local dep
for dep in ${DOCDEPEND[@]}; do
- temp+=" ${dep}"
+ temp+=" ${dep}[\${PYTHON_USEDEP}]"
done
DOCDEPEND=${temp}
}
@@ -142,16 +155,16 @@ sphinx_setup() {
: ${AUTODOC:=1}
- if [[ ! ${AUTODOC} == 1 && -n ${DEPS} ]]; then
+ if [[ ${AUTODOC} == 0 && -n "${DOCDEPEND}" ]]; then
die "${FUNCNAME}: do not set autodoc to 0 if external plugins are used"
fi
if [[ ${AUTODOC} == 1 ]]; then
- deps="$(python_gen_any_dep "
+ DOCDEPEND="$(python_gen_any_dep "
dev-python/sphinx[\${PYTHON_USEDEP}]
${DOCDEPEND}")"
else
- deps="dev-python/sphinx"
+ DOCDEPEND="dev-python/sphinx"
fi
}
@@ -171,11 +184,11 @@ sphinx_compile() {
if [[ ${AUTODOC} == 0 ]]; then
if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
- die "distutils_enable_sphinx: autodoc disabled but sphinx.ext.autodoc found in ${confpy}"
+ die "${FUNCNAME}: autodoc disabled but sphinx.ext.autodoc found in ${confpy}"
fi
- elif [[ -z ${DEPS[@]} ]]; then
+ elif [[ -z ${DOCDEPEND[@]} ]]; then
if ! grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
- die "distutils_enable_sphinx: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
+ die "${FUNCNAME}: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
fi
fi
@@ -195,12 +208,12 @@ mkdocs_setup() {
: ${AUTODOC:=0}
if [[ ${AUTODOC} == 1 ]]; then
- deps="$(python_gen_any_dep "
+ DOCDEPEND="$(python_gen_any_dep "
dev-python/mkdocs[\${PYTHON_USEDEP}]
dev-python/mkautodoc[\${PYTHON_USEDEP}]
${DOCDEPEND}")"
else
- deps="$(python_gen_any_dep "
+ DOCDEPEND="$(python_gen_any_dep "
dev-python/mkdocs[\${PYTHON_USEDEP}]
${DOCDEPEND}")"
fi
@@ -257,12 +270,6 @@ docs_compile() {
"mkdocs")
mkdocs_compile
;;
- "")
- die "DOCBUILDER unset, should be set to use ${ECLASS}"
- ;;
- *)
- die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
- ;;
esac
HTML_DOCS+=( "${OUTDIR}/." )
@@ -287,18 +294,12 @@ case "${DOCBUILDER}" in
python_append_deps
mkdocs_setup
;;
- "")
- die "DOCBUILDER unset, should be set to use ${ECLASS}"
- ;;
- *)
- die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
- ;;
esac
if [[ ${EAPI} == [56] ]]; then
- DEPEND+=" doc? ( ${deps} )"
+ DEPEND+=" doc? ( ${DOCDEPEND} )"
else
- BDEPEND+=" doc? ( ${deps} )"
+ BDEPEND+=" doc? ( ${DOCDEPEND} )"
fi
# If this is a python package using distutils-r1
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2020-04-07 7:27 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
@ 2020-04-07 7:42 ` Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-07 7:42 UTC (permalink / raw
To: gentoo-commits
commit: 94cae4d90a900be26cc13732bbc8c41cb2c47f20
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 7 07:27:24 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 7 07:27:24 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=94cae4d9
eclass/docs: one more bug fix
Package-Manager: Portage-2.3.96, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index 6e4ceea..c3fb6e3 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -186,7 +186,7 @@ sphinx_compile() {
if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
die "${FUNCNAME}: autodoc disabled but sphinx.ext.autodoc found in ${confpy}"
fi
- elif [[ -z ${DOCDEPEND[@]} ]]; then
+ elif [[ ${AUTODOC} == 1 ]]; then
if ! grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
die "${FUNCNAME}: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-21 10:20 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-21 10:20 UTC (permalink / raw
To: gentoo-commits
commit: 117147f43ceec694083a3c4749a6ecde64f76ade
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 21 10:18:08 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 21 10:18:08 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=117147f4
eclass/docs: add doxygen support
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 54 insertions(+), 1 deletion(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index c3fb6e3..b97f346 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -89,6 +89,15 @@ esac
#
# Defaults to ${DOCDIR}/_build/html
+# @ECLASS-VARIABLE: DOCS_CONFIG_NAME
+# @DESCRIPTION:
+# Name of the doc builder config file.
+#
+# Only relevant for doxygen, as it allows
+# config files with non-standard names
+#
+# Defaults to Doxyfile for doxygen
+
if [[ ! ${_DOCS} ]]; then
# For the python based DOCBUILDERS we need to inherit python-any-r1
@@ -108,6 +117,10 @@ case "${DOCBUILDER}" in
inherit python-any-r1
fi
;;
+ "doxygen")
+ # do not need to inherit anything for doxygen
+ true
+ ;;
"")
die "DOCBUILDER unset, should be set to use ${ECLASS}"
;;
@@ -243,6 +256,40 @@ mkdocs_compile() {
rm "${OUTDIR}"/*.gz || die
}
+# @FUNCTION: doxygen_setup
+# @DESCRIPTION:
+# Sets dependencies for doxygen
+doxygen_setup() {
+ debug-print-function ${FUNCNAME}
+
+ DOCDEPEND="app-doc/doxygen
+ ${DOCDEPEND}"
+}
+
+# @FUNCTION: mkdocs_compile
+# @DESCRIPTION:
+# Calls mkdocs to build docs.
+#
+# If you overwrite src_compile or python_compile_all
+# do not call this function, call docs_compile instead
+doxygen_compile() {
+ debug-print-function ${FUNCNAME}
+ use doc || return
+
+ : ${DOCS_CONFIG_NAME:="Doxyfile"}
+
+ local doxyfile=${DOCDIR}/${DOCS_CONFIG_NAME}
+ [[ -f ${doxyfile} ]] ||
+ die "${doxyfile} not found, DOCDIR=${DOCDIR} or DOCS_CONFIG_NAME=${DOCS_CONFIG_NAME} wrong"
+
+ # doxygen wants the HTML_OUTPUT dir to already exist
+ mkdir -p "${OUTDIR}"
+
+ pushd "${DOCDIR}"
+ (cat "${doxyfile}" ; echo "HTML_OUTPUT=${OUTDIR}") | doxygen - || die
+ popd
+}
+
# @FUNCTION: docs_compile
# @DESCRIPTION:
# Calls DOCBUILDER and sets HTML_DOCS
@@ -270,6 +317,9 @@ docs_compile() {
"mkdocs")
mkdocs_compile
;;
+ "doxygen")
+ doxygen_compile
+ ;;
esac
HTML_DOCS+=( "${OUTDIR}/." )
@@ -294,6 +344,9 @@ case "${DOCBUILDER}" in
python_append_deps
mkdocs_setup
;;
+ "doxygen")
+ doxygen_setup
+ ;;
esac
if [[ ${EAPI} == [56] ]]; then
@@ -305,7 +358,7 @@ fi
# If this is a python package using distutils-r1
# then put the compile function in the specific
# python function, else just put it in src_compile
-if [[ ${_DISTUTILS_R1} ]]; then
+if [[ ${_DISTUTILS_R1} && ( ${DOCBUILDER}="mkdocs" || ${DOCBUILDER}="sphinx" ) ]]; then
python_compile_all() { docs_compile; }
else
src_compile() { docs_compile; }
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-21 10:23 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-21 10:23 UTC (permalink / raw
To: gentoo-commits
commit: 5f91e34dcdf6a0bc0b893caccb03c389a1b163d6
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 21 10:22:03 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 21 10:22:03 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=5f91e34d
eclass/docs: fix comment
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index b97f346..e537447 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -266,9 +266,9 @@ doxygen_setup() {
${DOCDEPEND}"
}
-# @FUNCTION: mkdocs_compile
+# @FUNCTION: doxygen_compile
# @DESCRIPTION:
-# Calls mkdocs to build docs.
+# Calls doxygen to build docs.
#
# If you overwrite src_compile or python_compile_all
# do not call this function, call docs_compile instead
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-28 7:44 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-28 7:44 UTC (permalink / raw
To: gentoo-commits
commit: 624b0488addb5c3e1e2b4e700a40a9c7fb98637d
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 28 07:43:18 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 28 07:43:18 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=624b0488
eclass/docs: documentation fixes
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index e537447..f3d4eb2 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -23,10 +23,7 @@
# <DOCBUILDER>-build function for your doc builder.
# For python based doc builders you can use the
# python_append_deps function to append [${PYTHON_USEDEP}]
-# automatically to additional dependencies
-#
-# For more information, please see the Python Guide:
-# https://dev.gentoo.org/~mgorny/python-guide/
+# automatically to additional dependencies.
case "${EAPI:-0}" in
0|1|2|3|4)
@@ -48,7 +45,7 @@ esac
# @ECLASS-VARIABLE: DOCDIR
# @DESCRIPTION:
-# Sets the location of the doc builder config file.
+# Path containing the doc builder config file(s).
#
# For sphinx this is the location of "conf.py"
# For mkdocs this is the location of "mkdocs.yml"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-04-28 8:01 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-04-28 8:01 UTC (permalink / raw
To: gentoo-commits
commit: bedac61ec6083747cb9f8746f7270a89a0084bcb
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Tue Apr 28 07:59:59 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Apr 28 07:59:59 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=bedac61e
eclass/docs: more documentation fixes
Package-Manager: Portage-2.3.98, Repoman-2.3.22
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index f3d4eb2..b05145b 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -41,7 +41,7 @@ esac
# @PRE_INHERIT
# @DESCRIPTION:
# Sets the doc builder to use, currently supports
-# sphinx and mkdocs
+# sphinx, mkdocs and doxygen
# @ECLASS-VARIABLE: DOCDIR
# @DESCRIPTION:
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-05-01 15:39 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-05-01 15:39 UTC (permalink / raw
To: gentoo-commits
commit: fc06fbb6979e1cb303048b0770024af202897a4f
Author: Kurt Kanzenbach <kurt <AT> kmk-computers <DOT> de>
AuthorDate: Fri May 1 11:34:27 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Fri May 1 11:34:27 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=fc06fbb6
eclass: docs: Remove trailing whitespaces
Package-Manager: Portage-2.3.89, Repoman-2.3.20
Signed-off-by: Kurt Kanzenbach <kurt <AT> kmk-computers.de>
eclass/docs.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index b05145b..773c006 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -21,7 +21,7 @@
# The aim of this eclass is to make it easy to add additional
# doc builders. To do this, add a <DOCBUILDER>-setup and
# <DOCBUILDER>-build function for your doc builder.
-# For python based doc builders you can use the
+# For python based doc builders you can use the
# python_append_deps function to append [${PYTHON_USEDEP}]
# automatically to additional dependencies.
@@ -201,7 +201,7 @@ sphinx_compile() {
die "${FUNCNAME}: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
fi
fi
-
+
sed -i -e 's:^intersphinx_mapping:disabled_&:' \
"${DOCDIR}"/conf.py || die
# not all packages include the Makefile in pypi tarball
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-05-07 11:13 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-05-07 11:13 UTC (permalink / raw
To: gentoo-commits
commit: bdffb505eca41fccdac6625b586f7a7ed05159b4
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed May 6 23:28:47 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Wed May 6 23:35:55 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=bdffb505
new eclass for R packages, taken from the R_Overlay
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages-guru.eclass | 54 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/eclass/R-packages-guru.eclass b/eclass/R-packages-guru.eclass
new file mode 100644
index 0000000..e365b03
--- /dev/null
+++ b/eclass/R-packages-guru.eclass
@@ -0,0 +1,54 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+inherit eutils
+
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst
+
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="byte-compile"
+
+DEPEND="dev-lang/R"
+RDEPEND="${DEPEND}"
+
+R-packages-guru_src_unpack() {
+ unpack ${A}
+ if [[ -d "${PN//_/.}" ]] && [[ ! -d "${P}" ]]; then
+ mv ${PN//_/.} "${P}"
+ fi
+}
+
+if has "${EAPI:-0}" 0 1 2 3 4 5; then
+ R-packages-guru_src_prepare() {
+ epatch_user
+ }
+else
+ R-packages-guru_src_prepare() {
+ default
+ }
+fi
+
+R-packages-guru_src_compile() {
+ MAKEFLAGS="CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" \
+ R CMD INSTALL . -l "${WORKDIR}" $(use byte-compile && echo "--byte-compile")
+}
+
+R-packages-guru_src_install() {
+ insinto /usr/$(get_libdir)/R/site-library
+ doins -r "${WORKDIR}"/${PN//_/.}
+}
+
+R-packages-guru_pkg_postinst() {
+ if [[ "${_UNRESOLVABLE_PACKAGES:-}" ]]; then
+ # _UNRESOLVABLE_PACKAGES is only set if it has more than zero items
+ local _max=${#_UNRESOLVABLE_PACKAGES[*]} i=
+
+ einfo "Dependency(-ies):"
+ for (( i=0; i<"${_max}"; i++ )); do
+ einfo "- ${_UNRESOLVABLE_PACKAGES[$i]}"
+ done
+ einfo 'are (is) suggested by upstream but could not be found.'
+ einfo 'Please install it manually from the R interpreter if you need it.'
+ fi
+}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2020-05-07 11:13 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-05-07 11:13 UTC (permalink / raw
To: gentoo-commits
commit: fec5f391149ee6a33d09753127246374fafa7486
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed May 6 23:35:03 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Wed May 6 23:35:56 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=fec5f391
R-eclass-guru, update copyright
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages-guru.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/R-packages-guru.eclass b/eclass/R-packages-guru.eclass
index e365b03..0f28749 100644
--- a/eclass/R-packages-guru.eclass
+++ b/eclass/R-packages-guru.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
inherit eutils
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2020-12-06 10:46 [gentoo-commits] repo/proj/guru:dev " Andrew Ammerlaan
@ 2020-12-06 10:49 ` Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2020-12-06 10:49 UTC (permalink / raw
To: gentoo-commits
commit: bba19fbc646bdafc6a94e2ee6c40de85d6776175
Author: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
AuthorDate: Sun Dec 6 10:13:25 2020 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Sun Dec 6 10:45:49 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=bba19fbc
eclass/docs: moved to ::gentoo
Package-Manager: Portage-3.0.11, Repoman-3.0.2
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> riseup.net>
eclass/docs.eclass | 365 -----------------------------------------------------
1 file changed, 365 deletions(-)
diff --git a/eclass/docs.eclass b/eclass/docs.eclass
deleted file mode 100644
index 773c0065..00000000
--- a/eclass/docs.eclass
+++ /dev/null
@@ -1,365 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: docs.eclass
-# @MAINTAINER:
-# Andrew Ammerlaan <andrewammerlaan@riseup.net>
-# @AUTHOR:
-# Author: Andrew Ammerlaan <andrewammerlaan@riseup.net>
-# Based on the work of: Michał Górny <mgorny@gentoo.org>
-# @SUPPORTED_EAPIS: 5 6 7
-# @BLURB: A simple eclass to build documentation.
-# @DESCRIPTION:
-# A simple eclass providing functions to build documentation.
-#
-# Please note that docs sets RDEPEND and DEPEND unconditionally
-# for you.
-#
-# This eclass also appends "doc" to IUSE, and sets HTML_DOCS
-# to the location of the compiled documentation
-#
-# The aim of this eclass is to make it easy to add additional
-# doc builders. To do this, add a <DOCBUILDER>-setup and
-# <DOCBUILDER>-build function for your doc builder.
-# For python based doc builders you can use the
-# python_append_deps function to append [${PYTHON_USEDEP}]
-# automatically to additional dependencies.
-
-case "${EAPI:-0}" in
- 0|1|2|3|4)
- die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
- ;;
- 5|6|7)
- ;;
- *)
- die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
- ;;
-esac
-
-# @ECLASS-VARIABLE: DOCBUILDER
-# @REQUIRED
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Sets the doc builder to use, currently supports
-# sphinx, mkdocs and doxygen
-
-# @ECLASS-VARIABLE: DOCDIR
-# @DESCRIPTION:
-# Path containing the doc builder config file(s).
-#
-# For sphinx this is the location of "conf.py"
-# For mkdocs this is the location of "mkdocs.yml"
-#
-# Note that mkdocs.yml often does not reside
-# in the same directory as the actual doc files
-#
-# Defaults to ${S}
-
-# @ECLASS-VARIABLE: DOCDEPEND
-# @DEFAULT_UNSET
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Sets additional dependencies to build docs.
-# For sphinx and mkdocs these dependencies should
-# be specified without [${PYTHON_USEDEP}], this
-# is added by the eclass. E.g. to depend on mkdocs-material:
-#
-# DOCDEPEND="dev-python/mkdocs-material"
-#
-# This eclass appends to this variable, so you can
-# call it later in your ebuild again if necessary.
-
-# @ECLASS-VARIABLE: AUTODOC
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Sets whether to use sphinx.ext.autodoc/mkautodoc
-# Defaults to 1 (True) for sphinx, and 0 (False) for mkdocs
-
-# @ECLASS-VARIABLE: OUTDIR
-# @DESCRIPTION:
-# Sets where the compiled files will be put.
-# There's no real reason to change this, but this
-# variable is useful if you want to overwrite the HTML_DOCS
-# added by this eclass. E.g.:
-#
-# HTML_DOCS=( "${yourdocs}" "${OUTDIR}/." )
-#
-# Defaults to ${DOCDIR}/_build/html
-
-# @ECLASS-VARIABLE: DOCS_CONFIG_NAME
-# @DESCRIPTION:
-# Name of the doc builder config file.
-#
-# Only relevant for doxygen, as it allows
-# config files with non-standard names
-#
-# Defaults to Doxyfile for doxygen
-
-if [[ ! ${_DOCS} ]]; then
-
-# For the python based DOCBUILDERS we need to inherit python-any-r1
-case "${DOCBUILDER}" in
- "sphinx"|"mkdocs")
- # If this is not a python package then
- # this is not already set, so we need
- # to set this to inherit python-any-r1
- if [[ -z "${PYTHON_COMPAT}" ]]; then
- PYTHON_COMPAT=( python3_{6,7,8} )
- fi
-
- # Inherit python-any-r1 if neither python-any-r1 nor
- # python-r1 have been inherited, because we need the
- # python_gen_any_dep function
- if [[ ! ${_PYTHON_R1} && ! ${_PYTHON_ANY_R1} ]]; then
- inherit python-any-r1
- fi
- ;;
- "doxygen")
- # do not need to inherit anything for doxygen
- true
- ;;
- "")
- die "DOCBUILDER unset, should be set to use ${ECLASS}"
- ;;
- *)
- die "Unsupported DOCBUILDER=${DOCBUILDER} (unknown) for ${ECLASS}"
- ;;
-esac
-
-# @FUNCTION: python_check_deps
-# @DESCRIPTION:
-# Check if the dependencies are valid
-python_check_deps() {
- debug-print-function ${FUNCNAME}
- use doc || return 0
-
- local dep
- for dep in ${check_deps[@]}; do
- has_version "${dep}[${PYTHON_USEDEP}]" || return 1
- done
-}
-# Save this before we start manipulating it
-check_deps=${DOCDEPEND}
-
-# @FUNCTION: python_append_dep
-# @DESCRIPTION:
-# Appends [\${PYTHON_USEDEP}] to all dependencies
-# for python based DOCBUILDERs such as mkdocs or
-# sphinx.
-python_append_deps() {
- debug-print-function ${FUNCNAME}
-
- local temp=()
- local dep
- for dep in ${DOCDEPEND[@]}; do
- temp+=" ${dep}[\${PYTHON_USEDEP}]"
- done
- DOCDEPEND=${temp}
-}
-
-# @FUNCTION: sphinx_setup
-# @DESCRIPTION:
-# Sets dependencies for sphinx
-sphinx_setup() {
- debug-print-function ${FUNCNAME}
-
- : ${AUTODOC:=1}
-
- if [[ ${AUTODOC} == 0 && -n "${DOCDEPEND}" ]]; then
- die "${FUNCNAME}: do not set autodoc to 0 if external plugins are used"
- fi
- if [[ ${AUTODOC} == 1 ]]; then
- DOCDEPEND="$(python_gen_any_dep "
- dev-python/sphinx[\${PYTHON_USEDEP}]
- ${DOCDEPEND}")"
-
- else
- DOCDEPEND="dev-python/sphinx"
- fi
-}
-
-# @FUNCTION: sphinx_compile
-# @DESCRIPTION:
-# Calls sphinx to build docs.
-#
-# If you overwrite src_compile or python_compile_all
-# do not call this function, call docs_compile instead
-sphinx_compile() {
- debug-print-function ${FUNCNAME}
- use doc || return
-
- local confpy=${DOCDIR}/conf.py
- [[ -f ${confpy} ]] ||
- die "${confpy} not found, DOCDIR=${DOCDIR} call wrong"
-
- if [[ ${AUTODOC} == 0 ]]; then
- if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
- die "${FUNCNAME}: autodoc disabled but sphinx.ext.autodoc found in ${confpy}"
- fi
- elif [[ ${AUTODOC} == 1 ]]; then
- if ! grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then
- die "${FUNCNAME}: sphinx.ext.autodoc not found in ${confpy}, set AUTODOC=0"
- fi
- fi
-
- sed -i -e 's:^intersphinx_mapping:disabled_&:' \
- "${DOCDIR}"/conf.py || die
- # not all packages include the Makefile in pypi tarball
- sphinx-build -b html -d "${DOCDIR}"/_build/doctrees "${DOCDIR}" \
- "${OUTDIR}" || die
-}
-
-# @FUNCTION: mkdocs_setup
-# @DESCRIPTION:
-# Sets dependencies for mkdocs
-mkdocs_setup() {
- debug-print-function ${FUNCNAME}
-
- : ${AUTODOC:=0}
-
- if [[ ${AUTODOC} == 1 ]]; then
- DOCDEPEND="$(python_gen_any_dep "
- dev-python/mkdocs[\${PYTHON_USEDEP}]
- dev-python/mkautodoc[\${PYTHON_USEDEP}]
- ${DOCDEPEND}")"
- else
- DOCDEPEND="$(python_gen_any_dep "
- dev-python/mkdocs[\${PYTHON_USEDEP}]
- ${DOCDEPEND}")"
- fi
-}
-
-# @FUNCTION: mkdocs_compile
-# @DESCRIPTION:
-# Calls mkdocs to build docs.
-#
-# If you overwrite src_compile or python_compile_all
-# do not call this function, call docs_compile instead
-mkdocs_compile() {
- debug-print-function ${FUNCNAME}
- use doc || return
-
- local mkdocsyml=${DOCDIR}/mkdocs.yml
- [[ -f ${mkdocsyml} ]] ||
- die "${mkdocsyml} not found, DOCDIR=${DOCDIR} wrong"
-
- pushd "${DOCDIR}"
- mkdocs build -d "${OUTDIR}" || die
- popd
-
- # remove generated .gz variants
- # mkdocs currently has no option to disable this
- # and portage complains: "Colliding files found by ecompress"
- rm "${OUTDIR}"/*.gz || die
-}
-
-# @FUNCTION: doxygen_setup
-# @DESCRIPTION:
-# Sets dependencies for doxygen
-doxygen_setup() {
- debug-print-function ${FUNCNAME}
-
- DOCDEPEND="app-doc/doxygen
- ${DOCDEPEND}"
-}
-
-# @FUNCTION: doxygen_compile
-# @DESCRIPTION:
-# Calls doxygen to build docs.
-#
-# If you overwrite src_compile or python_compile_all
-# do not call this function, call docs_compile instead
-doxygen_compile() {
- debug-print-function ${FUNCNAME}
- use doc || return
-
- : ${DOCS_CONFIG_NAME:="Doxyfile"}
-
- local doxyfile=${DOCDIR}/${DOCS_CONFIG_NAME}
- [[ -f ${doxyfile} ]] ||
- die "${doxyfile} not found, DOCDIR=${DOCDIR} or DOCS_CONFIG_NAME=${DOCS_CONFIG_NAME} wrong"
-
- # doxygen wants the HTML_OUTPUT dir to already exist
- mkdir -p "${OUTDIR}"
-
- pushd "${DOCDIR}"
- (cat "${doxyfile}" ; echo "HTML_OUTPUT=${OUTDIR}") | doxygen - || die
- popd
-}
-
-# @FUNCTION: docs_compile
-# @DESCRIPTION:
-# Calls DOCBUILDER and sets HTML_DOCS
-#
-# This function must be called in global scope. Take care not to
-# overwrite the variables set by it. Has support for distutils-r1
-# eclass, but only if this eclass is inherited *after*
-# distutils-r1. If you need to extend src_compile() or
-# python_compile_all(), you can call the original implementation
-# as docs_compile.
-docs_compile() {
- debug-print-function ${FUNCNAME}
- use doc || return
-
- # Set a sensible default as DOCDIR
- : ${DOCDIR:="${S}"}
-
- # Where to put the compiled files?
- : ${OUTDIR:="${DOCDIR}/_build/html"}
-
- case "${DOCBUILDER}" in
- "sphinx")
- sphinx_compile
- ;;
- "mkdocs")
- mkdocs_compile
- ;;
- "doxygen")
- doxygen_compile
- ;;
- esac
-
- HTML_DOCS+=( "${OUTDIR}/." )
-
- # we need to ensure successful return in case we're called last,
- # otherwise Portage may wrongly assume sourcing failed
- return 0
-}
-
-
-# This is where we setup the USE/(B)DEPEND variables
-# and call the doc builder specific setup functions
-IUSE+=" doc"
-
-# Call the correct setup function
-case "${DOCBUILDER}" in
- "sphinx")
- python_append_deps
- sphinx_setup
- ;;
- "mkdocs")
- python_append_deps
- mkdocs_setup
- ;;
- "doxygen")
- doxygen_setup
- ;;
-esac
-
-if [[ ${EAPI} == [56] ]]; then
- DEPEND+=" doc? ( ${DOCDEPEND} )"
-else
- BDEPEND+=" doc? ( ${DOCDEPEND} )"
-fi
-
-# If this is a python package using distutils-r1
-# then put the compile function in the specific
-# python function, else just put it in src_compile
-if [[ ${_DISTUTILS_R1} && ( ${DOCBUILDER}="mkdocs" || ${DOCBUILDER}="sphinx" ) ]]; then
- python_compile_all() { docs_compile; }
-else
- src_compile() { docs_compile; }
-fi
-
-_DOCS=1
-fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-03-15 10:58 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-03-15 10:58 UTC (permalink / raw
To: gentoo-commits
commit: c061b7e28839e7747df90df1cb77aee61cd53849
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Sun Mar 14 22:57:48 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Sun Mar 14 22:57:48 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=c061b7e2
eclass: no live ebuilds, dodoc, minor style things, || die
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 43 +++++++++++++++++--------------------------
1 file changed, 17 insertions(+), 26 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index d5492e89..8a7fe039 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -11,15 +11,10 @@
# the octave-forge category of the package.
OCTAVEFORGE_CAT="${OCTAVEFORGE_CAT:-main}"
-
REPO_URI="http://svn.code.sf.net/p/octave/code/trunk/octave-forge"
-if [[ "${PV}" = 9999* ]]; then
- inherit subversion autotools
- ESVN_REPO_URI="${REPO_URI}/${OCTAVEFORGE_CAT}/${PN}"
-else
- inherit autotools
- SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
-fi
+
+inherit autotools
+SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
SRC_URI="
${SRC_URI}
@@ -39,22 +34,21 @@ octaveforge_src_unpack() {
default
if [ ! -d "${WORKDIR}/${P}" ]; then
S="${WORKDIR}/${PN}"
- cd "${S}"
+ cd "${S}" || die
fi
}
octaveforge_src_prepare() {
- [[ "${PV}" = 9999* ]] && subversion_src_prepare
for filename in Makefile configure; do
- cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}"
+ cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}" || die
done
#octave_config_info is deprecated in octave5
sed -i 's|octave_config_info|__octave_config_info__|g' Makefile || die
- chmod 0755 "${S}/configure"
- if [ -e "${S}"/src/autogen.sh ]; then
- cd "${S}"/src && ./autogen.sh || die 'failed to run autogen.sh'
+ chmod 0755 "${S}/configure" || die
+ if [ -e "${S}/src/autogen.sh" ]; then
+ cd "${S}/src" && ./autogen.sh || die 'failed to run autogen.sh'
fi
if [ -e "${S}/src/Makefile" ]; then
sed -i 's/ -s / /g' "${S}/src/Makefile" || die 'sed failed.'
@@ -65,16 +59,14 @@ octaveforge_src_prepare() {
octaveforge_src_install() {
emake DESTDIR="${D}" DISTPKG='Gentoo' install
if [ -d doc/ ]; then
- insinto "/usr/share/doc/${PF}"
- doins -r doc/* || die 'failed to install the docs'
+ dodoc -r doc/*
fi
}
octaveforge_pkg_postinst() {
einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
- [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}"
- "${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" \
- &> /dev/null || die 'failed to register the package.'
+ [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}" || die
+ "${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" &> /dev/null || die 'failed to register the package.'
}
octaveforge_pkg_prerm() {
@@ -86,10 +78,10 @@ octaveforge_pkg_prerm() {
disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
"
)
- rm -f "${pkgdir}"/packinfo/on_uninstall.m
- if [ -e "${pkgdir}"/packinfo/on_uninstall.m.orig ]; then
- mv "$pkgdir"/packinfo/on_uninstall.m{.orig,}
- cd "$pkgdir"/packinfo
+ rm -f "${pkgdir}/packinfo/on_uninstall.m" || die
+ if [ -e "${pkgdir}/packinfo/on_uninstall.m.orig" ]; then
+ mv "$pkgdir"/packinfo/on_uninstall.m{.orig,} || die
+ cd "$pkgdir/packinfo" || die
"${OCT_BIN}" -H -q --no-site-file --eval "
l = pkg('list');
on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
@@ -99,7 +91,6 @@ octaveforge_pkg_prerm() {
octaveforge_pkg_postrm() {
einfo 'Rebuilding the Octave package database.'
- [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}"
- "${OCT_BIN}" -H --silent --eval 'pkg rebuild' \
- &> /dev/null || die 'failed to rebuild the package database'
+ [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}" || die
+ "${OCT_BIN}" -H --silent --eval 'pkg rebuild' &> /dev/null || die 'failed to rebuild the package database'
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-03-15 10:58 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-03-15 10:58 UTC (permalink / raw
To: gentoo-commits
commit: 2f3797d95a55a13ae749f9050d17438a460f0049
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Sun Mar 14 22:48:48 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Sun Mar 14 22:48:48 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=2f3797d9
eclass: old g-octave eclass
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 105 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 105 insertions(+)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
new file mode 100644
index 00000000..d5492e89
--- /dev/null
+++ b/eclass/octaveforge.eclass
@@ -0,0 +1,105 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+#
+# Original Author: Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# Purpose: octaveforge helper eclass.
+#
+
+# @ECLASS-VARIABLE: OCTAVEFORGE_CAT
+# @DESCRIPTION:
+# the octave-forge category of the package.
+OCTAVEFORGE_CAT="${OCTAVEFORGE_CAT:-main}"
+
+
+REPO_URI="http://svn.code.sf.net/p/octave/code/trunk/octave-forge"
+if [[ "${PV}" = 9999* ]]; then
+ inherit subversion autotools
+ ESVN_REPO_URI="${REPO_URI}/${OCTAVEFORGE_CAT}/${PN}"
+else
+ inherit autotools
+ SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
+fi
+
+SRC_URI="
+ ${SRC_URI}
+ ${REPO_URI}/packages/package_Makefile.in -> octaveforge_Makefile
+ ${REPO_URI}/packages/package_configure.in -> octaveforge_configure
+"
+SLOT="0"
+
+# defining some paths
+OCT_ROOT="/usr/share/octave"
+OCT_PKGDIR="${OCT_ROOT}/packages"
+OCT_BIN="$(type -p octave)"
+
+EXPORT_FUNCTIONS src_unpack src_prepare src_install pkg_postinst pkg_prerm pkg_postrm
+
+octaveforge_src_unpack() {
+ default
+ if [ ! -d "${WORKDIR}/${P}" ]; then
+ S="${WORKDIR}/${PN}"
+ cd "${S}"
+ fi
+}
+
+octaveforge_src_prepare() {
+ [[ "${PV}" = 9999* ]] && subversion_src_prepare
+ for filename in Makefile configure; do
+ cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}"
+ done
+
+ #octave_config_info is deprecated in octave5
+ sed -i 's|octave_config_info|__octave_config_info__|g' Makefile || die
+
+ chmod 0755 "${S}/configure"
+ if [ -e "${S}"/src/autogen.sh ]; then
+ cd "${S}"/src && ./autogen.sh || die 'failed to run autogen.sh'
+ fi
+ if [ -e "${S}/src/Makefile" ]; then
+ sed -i 's/ -s / /g' "${S}/src/Makefile" || die 'sed failed.'
+ fi
+ eapply_user
+}
+
+octaveforge_src_install() {
+ emake DESTDIR="${D}" DISTPKG='Gentoo' install
+ if [ -d doc/ ]; then
+ insinto "/usr/share/doc/${PF}"
+ doins -r doc/* || die 'failed to install the docs'
+ fi
+}
+
+octaveforge_pkg_postinst() {
+ einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
+ [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}"
+ "${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" \
+ &> /dev/null || die 'failed to register the package.'
+}
+
+octaveforge_pkg_prerm() {
+ einfo 'Running on_uninstall routines to prepare the package to remove.'
+ local pkgdir=$(
+ "${OCT_BIN}" -H -q --no-site-file --eval "
+ pkg('rebuild');
+ l = pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
+ "
+ )
+ rm -f "${pkgdir}"/packinfo/on_uninstall.m
+ if [ -e "${pkgdir}"/packinfo/on_uninstall.m.orig ]; then
+ mv "$pkgdir"/packinfo/on_uninstall.m{.orig,}
+ cd "$pkgdir"/packinfo
+ "${OCT_BIN}" -H -q --no-site-file --eval "
+ l = pkg('list');
+ on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
+ " &> /dev/null || die 'failed to remove the package'
+ fi
+}
+
+octaveforge_pkg_postrm() {
+ einfo 'Rebuilding the Octave package database.'
+ [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}"
+ "${OCT_BIN}" -H --silent --eval 'pkg rebuild' \
+ &> /dev/null || die 'failed to rebuild the package database'
+}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-03-16 10:49 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-03-16 10:49 UTC (permalink / raw
To: gentoo-commits
commit: 34cd25319d156c12ba87f238e3c3fe4ab495788e
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Tue Mar 16 00:54:37 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Tue Mar 16 00:55:18 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=34cd2531
eclass: install documentation in DOCDIR
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages-guru.eclass | 37 ++++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/eclass/R-packages-guru.eclass b/eclass/R-packages-guru.eclass
index 6419cfec..8475f975 100644
--- a/eclass/R-packages-guru.eclass
+++ b/eclass/R-packages-guru.eclass
@@ -11,6 +11,13 @@ IUSE="byte-compile"
DEPEND="dev-lang/R"
RDEPEND="${DEPEND}"
+dodocrm() {
+ if [ -e "${1}" ]; then
+ dodoc -r "${1}"
+ rm -rf "${1}" || die
+ fi
+}
+
R-packages-guru_src_unpack() {
unpack ${A}
if [[ -d "${PN//_/.}" ]] && [[ ! -d "${P}" ]]; then
@@ -18,15 +25,11 @@ R-packages-guru_src_unpack() {
fi
}
-if has "${EAPI:-0}" 0 1 2 3 4 5; then
- R-packages-guru_src_prepare() {
- epatch_user
- }
-else
- R-packages-guru_src_prepare() {
- default
- }
-fi
+R-packages-guru_src_prepare() {
+ rm -f LICENSE || die
+ default
+}
+
R-packages-guru_src_compile() {
MAKEFLAGS="CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" \
@@ -34,6 +37,22 @@ R-packages-guru_src_compile() {
}
R-packages-guru_src_install() {
+ cd "${WORKDIR}"/${PN//_/.} || die
+
+ dodocrm examples || die
+# dodocrm DESCRIPTION || die #keep this
+ dodocrm NEWS.md || die
+ dodocrm README.md || die
+ dodocrm html || die
+ docinto "${DOCSDIR}/html"
+ if [ -e doc ]; then
+ ls doc/*.html &>/dev/null && dodoc -r doc/*.html
+ rm -rf doc/*.html || die
+ docinto "${DOCSDIR}"
+ dodoc -r doc/.
+ rm -rf doc
+ fi
+
insinto /usr/$(get_libdir)/R/site-library
doins -r "${WORKDIR}"/${PN//_/.}
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-05-17 19:11 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-05-17 19:11 UTC (permalink / raw
To: gentoo-commits
commit: ca2efddff82c08b87f8936dec44e740846e51c06
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Mon May 17 10:07:08 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> riseup <DOT> net>
CommitDate: Mon May 17 10:16:27 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ca2efddf
Import go eclasses from go-overlay
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/golang-common.eclass | 1027 +++++++++++++++++++++++++++++++++++++++++++
eclass/golang-single.eclass | 180 ++++++++
2 files changed, 1207 insertions(+)
diff --git a/eclass/golang-common.eclass b/eclass/golang-common.eclass
new file mode 100644
index 000000000..85dac9d25
--- /dev/null
+++ b/eclass/golang-common.eclass
@@ -0,0 +1,1027 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: golang-utils.eclass
+# @MAINTAINER:
+#
+# @AUTHOR:
+# Mauro Toffanin <toffanin.mauro@gmail.com>
+# @BLURB: Base eclass for GoLang packages
+# @SUPPORTED_EAPIS: 7
+# @DESCRIPTION:
+# This eclass provides functionalities which are used by golang-single.eclass,
+# golang-live.eclass, and as well as from ebuilds.
+#
+# This eclass should not be inherited directly from an ebuild.
+# Instead, you should inherit golang-single or golang-live for GoLang packages.
+
+inherit eutils multiprocessing
+
+if [[ -z ${_GOLANG_BASE_ECLASS} ]]; then
+_GOLANG_BASE_ECLASS=1
+
+# Silences repoman warnings.
+case "${EAPI:-0}" in
+ 7)
+ case "${GOLANG_PKG_DEPEND_ON_GO_SUBSLOT:-yes}" in
+ yes)
+ GO_DEPEND="dev-lang/go:0="
+ ;;
+ *)
+ GO_DEPEND="dev-lang/go:*"
+ ;;
+ esac
+ ;;
+ *)
+ die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;;
+esac
+
+DEPEND+=" ${GO_DEPEND}"
+
+RESTRICT+=" strip"
+
+QA_FLAGS_IGNORED="
+ usr/bin/.*
+ usr/sbin/.*
+"
+QA_PRESTRIPPED="
+ usr/bin/.*
+ usr/sbin/.*
+"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_NAME
+# @DESCRIPTION:
+# Sets the GoLang name for the generated package.
+# GOLANG_PKG_NAME="${PN}"
+GOLANG_PKG_NAME="${GOLANG_PKG_NAME:-${PN}}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_VERSION
+# @DESCRIPTION:
+# Sets the GoLang version for the generated package.
+# GOLANG_PKG_VERSION="${PV}"
+GOLANG_PKG_VERSION="${GOLANG_PKG_VERSION:-${PV/_pre/.pre}}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_IMPORTPATH
+# @DESCRIPTION:
+# Sets the remote import path for the generated package.
+# GOLANG_PKG_IMPORTPATH="github.com/captObvious/"
+GOLANG_PKG_IMPORTPATH="${GOLANG_PKG_IMPORTPATH:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_IMPORTPATH_ALIAS
+# @DESCRIPTION:
+# Sets an alias of the remote import path for the generated package.
+# GOLANG_PKG_IMPORTPATH_ALIAS="privaterepo.com/captObvious/"
+GOLANG_PKG_IMPORTPATH_ALIAS="${GOLANG_PKG_IMPORTPATH_ALIAS:=${GOLANG_PKG_IMPORTPATH}}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_ARCHIVEPREFIX
+# @DESCRIPTION:
+# Sets the archive prefix for the file URI of the package.
+# Most projects hosted on GitHub's mirrors provide archives with prefix as
+# 'v' or 'source-', other hosted services offer different archive formats.
+# This eclass defaults to an empty prefix.
+GOLANG_PKG_ARCHIVEPREFIX="${GOLANG_PKG_ARCHIVEPREFIX:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_ARCHIVESUFFIX
+# @DESCRIPTION:
+# Sets the archive suffix for the file URI of the package.
+# Most projects hosted on GitHub's mirrors provide archives with suffix as
+# '.tar.gz' or '.zip', other hosted services offer different archive formats.
+# This eclass defaults to '.tar.gz'.
+GOLANG_PKG_ARCHIVESUFFIX="${GOLANG_PKG_ARCHIVESUFFIX:=".tar.gz"}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_OUTPUT_NAME
+# @DESCRIPTION:
+# Specifies the output file name of the package.
+# If not set, it derives from the name of the package, such as $GOLANG_PKG_NAME.
+# This eclass defaults to $PN.
+GOLANG_PKG_OUTPUT_NAME="${GOLANG_PKG_OUTPUT_NAME:=${PN}}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_BUILDPATH
+# @DESCRIPTION:
+# Specifies a go source file to be compiled as a single main package.
+# This eclass defaults to an empty value.
+# This eclass defaults to "/..." when the user declares GOLANG_PKG_IS_MULTIPLE=1
+GOLANG_PKG_BUILDPATH="${GOLANG_PKG_BUILDPATH:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_INSTALLPATH
+# @DESCRIPTION:
+# Sets the root path into which a binary, or a list of binaries, will be
+# installed (e.x.: ${GOLANG_PKG_INSTALLPATH}/bin).
+# This eclass defaults to "/usr"
+GOLANG_PKG_INSTALLPATH="${GOLANG_PKG_INSTALLPATH:="/usr"}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_INSTALLSUFFIX
+# @DESCRIPTION:
+# Sets a suffix to use in the name of the package installation directory.
+# This eclass defaults to an empty install suffix.
+GOLANG_PKG_INSTALLSUFFIX="${GOLANG_PKG_INSTALLSUFFIX:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_IS_MULTIPLE
+# @DESCRIPTION:
+# Set to enable the building of multiple packages from a single import path.
+
+# @ECLASS-VARIABLE: GOLANG_PKG_HAVE_TEST
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set to enable the execution of automated testing.
+
+# @ECLASS-VARIABLE: GOLANG_PKG_HAVE_TEST_RACE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set to enable the execution of automated testing with support for
+# data race detection.
+
+# @ECLASS-VARIABLE: GOLANG_PKG_USE_CGO
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set to enable the compilation of the package with CGO.
+
+# @ECLASS-VARIABLE: GOLANG_PKG_USE_GENERATE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set to run commands described by directives within existing golang files.
+
+# @ECLASS-VARIABLE: GOLANG_PKG_DEPEND_ON_GO_SUBSLOT
+# @DESCRIPTION:
+# Set to ensure the package does depend on the dev-lang/go subslot value.
+# Possible values: {yes,no}
+# This eclass defaults to "no"
+GOLANG_PKG_DEPEND_ON_GO_SUBSLOT=${GOLANG_PKG_DEPEND_ON_GO_SUBSLOT:="no"}
+
+# @ECLASS-VARIABLE: GOLANG_PKG_LDFLAGS
+# @DESCRIPTION:
+# Sets the linker arguments to pass to 5l, 6l, or 8l.
+# This eclass defaults to an empty list.
+GOLANG_PKG_LDFLAGS="${GOLANG_PKG_LDFLAGS:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_TAGS
+# @DESCRIPTION:
+# Sets the list of build tags during the build.
+# This eclass defaults to an empty list.
+GOLANG_PKG_TAGS="${GOLANG_PKG_TAGS:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_VENDOR
+# @DESCRIPTION:
+# Sets additional standard Go workspaces to be appended to the environment
+# variable GOPATH, as described in http://golang.org/doc/code.html.
+# This eclass defaults to an empty list.
+GOLANG_PKG_VENDOR=()
+
+# @ECLASS-VARIABLE: GOLANG_PKG_STATIK
+# @DESCRIPTION:
+# Sets the arguments to pass to dev-go/statik.
+# This eclass defaults to an empty list.
+GOLANG_PKG_STATIK="${GOLANG_PKG_STATIK:-}"
+
+# @ECLASS-VARIABLE: GOLANG_PKG_USE_MODULES
+# @DESCRIPTION:
+# Set to enable the compilation of the package with Go modules support.
+
+# @ECLASS-VARIABLE: GO
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# The absolute path to the current GoLang interpreter.
+#
+# This variable is set automatically after calling golang_setup().
+#
+# Default value:
+# @CODE
+# /usr/bin/go
+# @CODE
+
+# @ECLASS-VARIABLE: EGO
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# The executable name of the current GoLang interpreter.
+#
+# This variable is set automatically after calling golang_setup().
+#
+# Default value:
+# @CODE
+# go
+# @CODE
+
+# @ECLASS-VARIABLE: PATCHES
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Array variable containing all the patches to be applied. This variable
+# is expected to be defined in the global scope of ebuilds. Make sure to
+# specify the full path. This variable is used in src_prepare phase.
+#
+# Example:
+# @CODE
+# PATCHES=(
+# "${FILESDIR}/mypatch.patch"
+# "${FILESDIR}/mypatch2.patch"
+# )
+# @CODE
+
+# Adds gccgo as a compile-time dependency when GOLANG_PKG_USE_CGO is set.
+#[[ -n ${GOLANG_PKG_USE_CGO} ]] && DEPEND+=" >=sys-devel/gcc-4.8.4[go]"
+
+# Adds dev-go/statik as a compile-time dependency when GOLANG_PKG_STATIK is set.
+[[ -n ${GOLANG_PKG_STATIK} ]] && DEPEND+=" dev-go/statik"
+
+# Validates GOLANG_PKG_IMPORTPATH.
+if [[ -z ${GOLANG_PKG_IMPORTPATH} ]]; then
+ eerror "The remote import path for this package has not been declared"
+ die "Mandatory variable GOLANG_PKG_IMPORTPATH is unset"
+fi
+
+# Forces a multiple package build when user specifies GOLANG_PKG_IS_MULTIPLE=1.
+if [[ -n ${GOLANG_PKG_IS_MULTIPLE} && -z ${GOLANG_PKG_BUILDPATH} ]]; then
+ GOLANG_PKG_BUILDPATH="/..."
+fi
+
+# Validates use of GOLANG_PKG_BUILDPATH combined with GOLANG_PKG_IS_MULTIPLE
+# FIX: makes sure user isn't overriding GOLANG_PKG_BUILDPATH with inane values.
+if [[ -n ${GOLANG_PKG_IS_MULTIPLE} && ${GOLANG_PKG_BUILDPATH##*/} != "..." ]]; then
+ ewarn "Ebuild ${CATEGORY}/${PF} specifies GOLANG_PKG_IS_MULTIPLE=1,"
+ ewarn "but then GOLANG_PKG_BUILDPATH is overridden with \"${GOLANG_PKG_BUILDPATH}\"."
+ ewarn "Please, fix it by appending \"/...\" to your GOLANG_PKG_BUILDPATH."
+ ewarn "If in doubt, remove GOLANG_PKG_BUILDPATH entirely."
+fi
+
+# Even though xz-utils are in @system, they must still be added to DEPEND; see
+# http://archives.gentoo.org/gentoo-dev/msg_a0d4833eb314d1be5d5802a3b710e0a4.xml
+if [[ ${GOLANG_PKG_ARCHIVESUFFIX/.*} == "xz" ]]; then
+ DEPEND+=" app-arch/xz-utils"
+fi
+
+# Defines common USE flags
+IUSE="${IUSE} debug pie"
+# Enables USE 'test' when required by GOLANG_PKG_HAVE_TEST.
+if [[ -n ${GOLANG_PKG_HAVE_TEST} ]]; then
+ IUSE+=" test"
+fi
+
+# Defines HOMEPAGE.
+[ -z "$HOMEPAGE" ] && HOMEPAGE="https://${GOLANG_PKG_IMPORTPATH}/${PN}"
+
+# Defines SOURCE directory.
+S="${WORKDIR}/gopath/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
+
+
+# @FUNCTION: _factorize_dependency_entities
+# @INTERNAL
+# @DESCRIPTION:
+# Factorizes the dependency declaration in specific tokens such as the import
+# path, the import path alias, the host name, the author name, the project name,
+# and the revision tag.
+_factorize_dependency_entities() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local -A dependency=()
+ local key_list=(importpathalias importpath host project_name author_name revision)
+
+ # Strips all the white spaces from the supplied argument.
+ local raw_dependency="${1//\ /}"
+
+ # Determines the alias of the import path (if present).
+ dependency[importpathalias]="${raw_dependency##*->}"
+
+ # Strips the import path alias from the supplied argument.
+ raw_dependency="${raw_dependency%%->*}"
+
+ # Determines the import path.
+ dependency[importpath]="${raw_dependency%:*}"
+
+ # When the importpath alias is not specified, then this eclass sets the
+ # alias as equal to the import path minus the project name.
+ if [[ "${raw_dependency}" == "${dependency[importpathalias]}" ]]; then
+ dependency[importpathalias]="${dependency[importpath]%/*}"
+ fi
+
+ # Determines the host.
+ dependency[host]="${dependency[importpath]%%/*}"
+
+ # Determines the project name.
+ dependency[project_name]="${dependency[importpath]##*/}"
+
+ # Determines the author name.
+ dependency[author_name]="${dependency[importpath]#*/}"
+ dependency[author_name]="${dependency[author_name]%/*}"
+
+ # Determines the revision.
+ dependency[revision]="${raw_dependency#*:}"
+
+ # Exports all the dependency tokens as an associated list.
+ for key in ${key_list[@]}; do
+ echo "${key} ${dependency[${key}]}"
+ done
+}
+
+# @FUNCTION: golang_setup
+# @DESCRIPTION:
+# Determines where is the GoLang implementation and then set-up the
+# GoLang build environment.
+golang_setup() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ # NOTE: Keep /usr/bin/go as index [0] and never overwrite it,
+ # always append other binary paths after the index [0]
+ local GOLANG_BINS=(
+ /usr/bin/go
+ /usr/bin/gofmt
+ )
+
+ [[ -n ${GOLANG_PKG_STATIK} ]] && GOLANG_BINS+=(/usr/bin/statik)
+
+ # Reset GoLang environment variables
+ unset EGO
+ unset EGOFMT
+ unset ESTATIK
+ unset GO
+ unset GOPATH
+ unset GOBIN
+
+ # Determine is the GoLang interpreter is working
+ local IS_EXECUTABLE=1
+ for binary in "${GOLANG_BINS[@]}"; do
+ debug-print "${FUNCNAME}: Checking ... ${binary}"
+
+ [[ -x "${EPREFIX}/${binary}" ]] && continue
+ IS_EXECUTABLE=0
+ ewarn "It seems that the binary '${binary}' is not executable."
+ done
+
+ # dev-lang/go isn't installed or one of its binaries aren't executable.
+ # Either way, the Gentoo box is screwed; no need to set up the GoLang environment
+ [[ ${IS_EXECUTABLE} == 0 ]] && exit
+
+ # dev-lang/go is available and working.
+ # Exports GO/EGO/EGOFMT global variables.
+ export GO="${GOLANG_BINS[0]}"
+ export EGO="${GOLANG_BINS[0]##*/}"
+ export EGOFMT="${GOLANG_BINS[1]}"
+
+ # dev-go/statik is available and working.
+ # Exports ESTATIK global variable.
+ [[ -n ${GOLANG_PKG_STATIK} ]] && export ESTATIK="${GOLANG_BINS[2]##*/}"
+
+ debug-print "${FUNCNAME}: GO = ${GO}"
+ debug-print "${FUNCNAME}: EGO = ${EGO}"
+ debug-print "${FUNCNAME}: EGOFMT = ${EGOFMT}"
+ debug-print "${FUNCNAME}: ESTATIK = ${ESTATIK}"
+
+ # Determines go interpreter version.
+ GOLANG_VERSION="$( ${GO} version )"
+ GOLANG_VERSION="${GOLANG_VERSION/go\ version\ go}"
+ export GOLANG_VERSION="${GOLANG_VERSION%\ *}"
+ einfo "Found GoLang version: ${GOLANG_VERSION}"
+
+ # Determines statik interpreter version.
+ # TODO: add version detection when statik will provide a -version option.
+ if [[ -n ${GOLANG_PKG_STATIK} ]]; then
+ local STATIK_VERSION=""
+ einfo "Found statik version: ${STATIK_VERSION}"
+ fi
+
+ # Enable/Disable frame pointers
+ local GOEXPERIMENT="noframepointer"
+ use debug && GOEXPERIMENT="framepointer"
+
+ # Sets the build environment inside Portage's WORKDIR.
+ ebegin "Setting up GoLang build environment"
+
+ # Prepares CGO_ENABLED.
+ CGO_ENABLED=0
+ [[ -z ${GOLANG_PKG_USE_CGO} ]] || CGO_ENABLED=1
+ use pie && CGO_ENABLED=1 # PIE requires CGO
+
+ # Prepares gopath / gobin directories inside WORKDIR.
+ local _GOPATH="${WORKDIR}/gopath"
+ local _GOBIN="${WORKDIR}/gobin"
+ mkdir -p "${_GOBIN}" || die
+ mkdir -p "${_GOPATH}"/src || die
+
+ # Exports special env variable EGO_SRC.
+ export EGO_SRC="${_GOPATH}/src"
+
+ # Exports GoLang env variables.
+ export GOPATH="$_GOPATH"
+ export GOBIN="$_GOBIN"
+ export CGO_ENABLED
+ #export GOEXPERIMENT
+ #export GO15VENDOREXPERIMENT=0
+
+ GO111MODULE="off"
+ [[ -z ${GOLANG_PKG_USE_MODULES} ]] || GO111MODULE="on"
+ export GO111MODULE
+
+ debug-print "${FUNCNAME}: GOPATH = ${GOPATH}"
+ debug-print "${FUNCNAME}: GOBIN = ${GOBIN}"
+ debug-print "${FUNCNAME}: EGO_SRC = ${EGO_SRC}"
+ debug-print "${FUNCNAME}: CGO_ENABLED = ${CGO_ENABLED}"
+ eend
+}
+
+# @FUNCTION: golang-common_src_prepare
+# @DESCRIPTION:
+# Prepare source code.
+golang-common_src_prepare() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ pushd "${WORKDIR}" > /dev/null || die
+ einfo "Preparing GoLang build environment in ${GOPATH}/src"
+
+ # If the ebuild declares an importpath alias, then its path was
+ # already created during the src_unpack phase. That means the eclass
+ # needs to create the missing original import path (GOLANG_PKG_IMPORTPATH)
+ # as a simbolic link pointing to the alias.
+ if [[ "${GOLANG_PKG_IMPORTPATH}" != "${GOLANG_PKG_IMPORTPATH_ALIAS}" ]]; then
+
+ # If the ebuild declares a GOLANG_PKG_NAME different from PN, then
+ # the latter will be used as the simbolic link target.
+ local TARGET="${GOLANG_PKG_NAME}"
+ [[ "${PN}" != "${GOLANG_PKG_NAME}" ]] && TARGET="${PN}"
+
+ golang_fix_importpath_alias \
+ "${GOLANG_PKG_IMPORTPATH_ALIAS}/${TARGET}" \
+ "${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}"
+ fi
+
+ # If the ebuild declares some GoLang dependencies, then they need to be
+ # correctly installed into the sand-boxed GoLang build environment which
+ # was set up automatically during src_unpack) phase.
+ if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
+
+ for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
+
+ # Collects all the tokens of the dependency.
+ local -A DEPENDENCY=()
+ while read -r -d $'\n' key value; do
+ [[ -z ${key} ]] && continue
+ DEPENDENCY[$key]="${value}"
+ done <<-EOF
+ $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
+ EOF
+
+ # Debug
+ debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
+ debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
+ debug-print "${FUNCNAME}: importpathalias = ${DEPENDENCY[importpathalias]}"
+ debug-print "${FUNCNAME}: host = ${DEPENDENCY[host]}"
+ debug-print "${FUNCNAME}: author = ${DEPENDENCY[author_name]}"
+ debug-print "${FUNCNAME}: project = ${DEPENDENCY[project_name]}"
+ debug-print "${FUNCNAME}: revision = ${DEPENDENCY[revision]}"
+
+ local message="Importing ${DEPENDENCY[importpath]}"
+ local destdir
+
+ # Prepares GOPATH structure.
+ case ${DEPENDENCY[importpathalias]} in
+ gopkg.in*)
+ message+=" as ${DEPENDENCY[importpathalias]}"
+ destdir="${DEPENDENCY[importpathalias]}"
+
+ # Creates the import path in GOPATH.
+ mkdir -p "${GOPATH}/src/${DEPENDENCY[importpathalias]%/*}" || die
+ #einfo "\n${GOPATH}/src/${DEPENDENCY[importpathalias]%/*}"
+ ;;
+ *)
+ [[ "${DEPENDENCY[importpath]}" != "${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}" ]] && message+=" as ${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}"
+ destdir="${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}"
+
+ # Creates the import path in GOPATH.
+ mkdir -p "${GOPATH}/src/${DEPENDENCY[importpathalias]}" || die
+ #einfo "\n${GOPATH}/src/${DEPENDENCY[importpathalias]}"
+ ;;
+ esac
+
+ # Moves sources from WORKDIR into GOPATH.
+ case ${DEPENDENCY[host]} in
+ github*)
+ ebegin "${message}"
+ mv ${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
+ eend
+
+ # FIX: sometimes the source code inside an importpath alias
+ # (such as gopkg.in/mylib.v1) invokes imports from
+ # the original import path instead of using the alias,
+ # thus we need a symbolic link between the alias and
+ # the original import path to avoid compilation issues.
+ # Example: gopkg.in/Shopify/sarama.v1 erroneously
+ # invokes imports from github.com/shopify/sarama
+ if [[ ${destdir} != ${DEPENDENCY[importpath]} ]]; then
+ golang_fix_importpath_alias ${destdir} ${DEPENDENCY[importpath]}
+ fi
+ ;;
+ bitbucket*)
+ #einfo "path: ${DEPENDENCY[author_name]}-${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}"
+ ebegin "${message}"
+ mv ${DEPENDENCY[author_name]}-${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
+ eend
+ ;;
+ code.google*)
+ ebegin "${message}"
+ mv ${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
+ eend
+ ;;
+ *) die "Function 'golang-common_src_prepare' doesn't support '${DEPENDENCY[importpath]}'" ;;
+ esac
+ done
+
+ fi
+
+ popd > /dev/null || die
+
+ # Auto-detects the presence of Go's vendored
+ # dependencies inside $S/vendor.
+ local VENDOR="${S}/vendor"
+ if [[ -d "${VENDOR}" ]]; then
+ golang_add_vendor "${VENDOR}"
+ export GO15VENDOREXPERIMENT=1
+ fi
+
+ # Auto-detects the presence of Go's vendored
+ # dependencies inside $S/*/vendor
+ if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." ]]; then
+ while read -r -d $' ' path; do
+ # Trims leading slash (if any).
+ path="${path/\//}"
+
+ # Extracts the root path.
+ path="${path%%/*}"
+
+ # Ignores $path when it's empty or a string of white spaces.
+ [[ -n $path ]] || continue
+
+ local vendor="${S}/${path}/vendor"
+ if [[ -d "${vendor}" ]]; then
+ golang_add_vendor "${vendor}"
+ fi
+ done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
+ fi
+
+
+ # Auto-detects the presence of Godep's workspace
+ # (see github.com/tools/godep for more infos).
+ VENDOR="${S}/Godeps/_workspace"
+ if [[ -d "${VENDOR}" ]]; then
+ golang_add_vendor "${VENDOR}"
+ fi
+
+ # Evaluates PATCHES array.
+ default_src_prepare
+}
+
+# @FUNCTION: golang-common_src_configure
+# @DESCRIPTION:
+# Configure the package.
+golang-common_src_configure() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+ # Defines the level of verbosity.
+ local EGO_VERBOSE="-v"
+ [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
+
+ # GoLang doesn't have a configure phase,
+ # so instead this eclass prints the output of 'go env'.
+ local -a GOLANG_ENV=()
+ while read -r line; do
+ GOLANG_ENV+=("${line}")
+ done <<-EOF
+ $( ${GO} env )
+ EOF
+
+ # Prints an error when 'go env' output is missing.
+ if [[ ${#GOLANG_ENV[@]} -eq 1 ]]; then
+ eerror "Your GoLang environment should be more verbose"
+ fi
+
+ # Prints GoLang environment summary.
+ einfo " ${EGO} env"
+ for env in "${GOLANG_ENV[@]}"; do
+ einfo " - ${env}"
+ done
+
+
+ # Removes GoLang object files from package source directories (pkg/)
+ # and temporary directories (_obj/ _test*/).
+ local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
+ case $( ver_cut 1-2 ${GOLANG_VERSION} ) in
+ 1.4*) ;;
+ *)
+ EGO_SUBPACKAGES+="/..."
+ ;;
+ esac
+# einfo "${EGO} clean -i ${EGO_VERBOSE} ${EGO_SUBPACKAGES}"
+# ${EGO} clean -i \
+# ${EGO_VERBOSE} \
+# "${EGO_SUBPACKAGES}" \
+# || die
+
+ # Removes GoLang objects files from all the dependencies too.
+# if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
+#
+# for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
+#
+# # Collects all the tokens of the dependency.
+# local -A DEPENDENCY=()
+# while read -r -d $'\n' key value; do
+# [[ -z ${key} ]] && continue
+# DEPENDENCY[$key]="${value}"
+# done <<-EOF
+# $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
+# EOF
+#
+# [[ ! -d ${DEPENDENCY[importpath]} ]] && continue
+#
+# # Debug
+# debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
+# debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
+#
+# # Cleans object files of the dependency.
+# einfo "${EGO} clean -i ${EGO_VERBOSE} ${DEPENDENCY[importpath]}"
+# ${EGO} clean \
+# -i ${EGO_VERBOSE} \
+# "${DEPENDENCY[importpath]}" \
+# || die
+# done
+# fi
+
+ # Before to compile Godep's dependencies it's wise to wipe out
+ # all pre-built object files from Godep's package source directories.
+ if [[ -d "${S}"/Godeps/_workspace/pkg ]]; then
+ ebegin "Cleaning up pre-built object files in Godep workspace"
+ rm -r "${S}"/Godeps/_workspace/pkg || die
+ eend
+ fi
+ if [[ -d "${S}"/Godeps/_workspace/bin ]]; then
+ ebegin "Cleaning up executables in Godep workspace"
+ rm -r "${S}"/Godeps/_workspace/bin || die
+ eend
+ fi
+
+
+ # Executes 'go generate'.
+ # NOTE: generate should never run automatically. It must be run explicitly.
+ if [[ -n ${GOLANG_PKG_USE_GENERATE} ]]; then
+ pushd "${GOPATH}/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}" > /dev/null || die
+ einfo "${EGO} generate ${EGO_VERBOSE} ${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}/..."
+ ${EGO} generate \
+ ${EGO_VERBOSE} \
+ ./... \
+ || die
+ popd > /dev/null || die
+ fi
+
+
+ # Executes 'statik' when explicitly asked.
+ if [[ -n ${GOLANG_PKG_STATIK} ]]; then
+ ebegin "${ESTATIK} $GOLANG_PKG_STATIK"
+ ${ESTATIK} $GOLANG_PKG_STATIK || die
+ eend
+ fi
+}
+
+# @FUNCTION: golang-common_src_compile
+# @DESCRIPTION:
+# Compiles the package.
+golang-common_src_compile() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+ # Populates env variable GOPATH with vendored workspaces (if present).
+ if [[ -n ${GOLANG_PKG_VENDOR} ]]; then
+ einfo "Using vendored dependencies from:"
+
+ for path in "${GOLANG_PKG_VENDOR[@]}"; do
+ [ -d ${path} ] || continue
+
+ if [[ ${path//${S}\//} == "vendor" ]]; then
+ einfo "- vendor/ (native vendoring support)"
+ continue
+ fi
+
+ debug-print "$FUNCNAME: GOPATH: Adding vendor path ${path}"
+ ebegin "- ${path//${S}\//}"
+ GOPATH="${GOPATH}:$( echo ${path} )"
+ eend
+ done
+
+ export GOPATH
+ fi
+
+ # Enables position-independent executables (PIE)
+ local EGO_PIE
+ use pie && EGO_PIE="-buildmode=pie"
+
+ # Defines the install suffix.
+ local EGO_INSTALLSUFFIX
+ [[ -z ${GOLANG_PKG_INSTALLSUFFIX} ]] || EGO_INSTALLSUFFIX="-installsuffix=${GOLANG_PKG_INSTALLSUFFIX}"
+
+ # Defines the level of verbosity.
+ local EGO_VERBOSE="-v"
+ [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
+
+ # Defines the number of builds that can be run in parallel.
+ local EGO_PARALLEL="-p $(makeopts_jobs)"
+
+ # Defines extra options.
+ local EGO_EXTRA_OPTIONS="-a"
+
+ # Prepares build flags for the go toolchain.
+ local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} ) $( echo ${EGO_PIE} )"
+ [[ -n ${EGO_INSTALLSUFFIX} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_INSTALLSUFFIX} )"
+
+ # Detects the total number of packages.
+ local pkgs=0 ifs_save=${IFS} IFS=$' '
+ for path in ${GOLANG_PKG_BUILDPATH[@]} ; do
+ pkgs=$(( $pkgs + 1 ))
+ done
+ [[ ${pkgs} -eq 0 ]] && pkgs=1 # there is always at least 1 package
+ IFS=${ifs_save}
+
+ # Builds the package
+ einfo "Compiling ${pkgs} package(s):"
+ if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." && ${pkgs} -gt 1 ]]; then
+
+ # NOTE: This eclass trims all leading and trailing white spaces from the
+ # input of the following 'while read' loop, then appends an extra
+ # trailing space; this is necessary to avoid undefined behaviours
+ # within the loop when GOLANG_PKG_BUILDPATH is populated with only
+ # a single element.
+ while read -r -d $' ' cmd; do
+ # Ignores $cmd when it's empty or a string of white spaces
+ #einfo "cmd: |$cmd| cmd: |${cmd##*/}|"
+ [[ -n $cmd ]] || continue
+
+ golang_do_build \
+ ${EGO_BUILD_FLAGS} \
+ -o "${GOBIN}/${cmd##*/}" \
+ "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}"
+ done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
+ else
+ # If the package is a multiple package (/...)
+ # then this eclass doesn't specify the output name.
+ [[ ${GOLANG_PKG_BUILDPATH##*/} != "..." ]] && EGO_BUILD_FLAGS+=" -o ${GOBIN}/${GOLANG_PKG_OUTPUT_NAME}"
+
+ golang_do_build \
+ ${EGO_BUILD_FLAGS} \
+ "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
+ fi
+}
+
+# @FUNCTION: golang-common_src_install
+# @DESCRIPTION:
+# Installs binaries and documents from DOCS or HTML_DOCS arrays.
+golang-common_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+ # Enables position-independent executables (PIE)
+ local EGO_PIE
+ use pie && EGO_PIE="-buildmode=pie"
+
+ # Defines the install suffix.
+ local EGO_INSTALLSUFFIX
+ [[ -z ${GOLANG_PKG_INSTALLSUFFIX} ]] || EGO_INSTALLSUFFIX="-installsuffix=${GOLANG_PKG_INSTALLSUFFIX}"
+
+ # Defines the level of verbosity.
+ local EGO_VERBOSE="-v"
+ [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
+
+ # Defines the number of builds that can be run in parallel.
+ local EGO_PARALLEL="-p $(makeopts_jobs)"
+
+ # Defines extra options.
+ local EGO_EXTRA_OPTIONS
+
+ # Prepares build flags for the go toolchain.
+ local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} ) $( echo ${EGO_PIE} )"
+ [[ -n ${EGO_INSTALLSUFFIX} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_INSTALLSUFFIX} )"
+
+ # Defines sub-packages.
+ local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
+
+ # Executes the pre-install phase (go install).
+ if [[ -n ${GOLANG_PKG_IS_MULTIPLE} ]]; then
+ einfo "${EGO} install -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${EGO_SUBPACKAGES}"
+ ${EGO} install \
+ -ldflags "${GOLANG_PKG_LDFLAGS}" \
+ -tags "${GOLANG_PKG_TAGS}" \
+ ${EGO_BUILD_FLAGS} \
+ "${EGO_SUBPACKAGES}" \
+ || die
+ fi
+
+ # Installs binaries.
+ into ${GOLANG_PKG_INSTALLPATH}
+ for bin in "${GOBIN}"/* ; do
+ dobin ${bin}
+ done
+
+ # Installs documentation.
+ einstalldocs
+}
+
+# @FUNCTION: golang-common_src_test
+# @DESCRIPTION:
+# Runs the unit tests for the main package.
+golang-common_src_test() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+ # Appends S and GOBIN to exported main paths.
+ # FIX: this is necessary for unit tests that need to invoke bins from
+ # $GOBIN or from within $S/bin.
+ export PATH="${S}/bin:${GOBIN}:${PATH}"
+
+ # Defines the level of verbosity.
+ local EGO_VERBOSE="-v"
+ [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
+
+ # Defines the number of builds that can be run in parallel.
+ local EGO_PARALLEL="-p $(makeopts_jobs)"
+
+ # Defines extra options.
+ #local EGO_EXTRA_OPTIONS="-a"
+
+ # Enables data race detection.
+ local EGO_RACE
+ [[ -n ${GOLANG_PKG_HAVE_TEST_RACE} ]] && EGO_RACE=" -race"
+
+ # Prepares build flags for the go toolchain.
+ local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} )"
+ [[ -n ${EGO_RACE} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_RACE} )"
+
+ # Sanitizes vars from entra white spaces.
+ GOLANG_PKG_LDFLAGS="$( echo ${GOLANG_PKG_LDFLAGS} )"
+ GOLANG_PKG_TAGS="$( echo ${GOLANG_PKG_TAGS} )"
+
+ # Defines sub-packages.
+ local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
+ [[ -z ${GOLANG_PKG_IS_MULTIPLE} ]] || EGO_SUBPACKAGES="./..."
+
+ # Detects the total number of packages.
+ local pkgs=0 ifs_save=${IFS} IFS=$' '
+ for path in ${GOLANG_PKG_BUILDPATH[@]} ; do
+ pkgs=$(( $pkgs + 1 ))
+ done
+ [[ ${pkgs} -eq 0 ]] && pkgs=1 # there is always at least 1 package
+ IFS=${ifs_save}
+
+ # Runs the Unit Tests
+ einfo "Testing ${pkgs} package(s):"
+ if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." && ${pkgs} -gt 1 ]]; then
+
+ # NOTE: This eclass trims all leading and trailing white spaces from the
+ # input of the following 'while read' loop, then appends an extra
+ # trailing space; this is necessary to avoid undefined behaviours
+ # within the loop when GOLANG_PKG_BUILDPATH is populated with only
+ # a single element.
+ while read -r -d $' ' cmd; do
+ # Ignores $cmd when it's empty or a string of white spaces
+ #einfo "cmd: |$cmd| cmd: |${cmd##*/}|"
+ [[ -n $cmd ]] || continue
+
+ einfo "${EGO} test -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}/..."
+ ${EGO} test \
+ -ldflags "${GOLANG_PKG_LDFLAGS}" \
+ -tags "${GOLANG_PKG_TAGS}" \
+ ${EGO_BUILD_FLAGS} \
+ "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}/..." \
+ || die
+ done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
+ else
+ # It's a single package
+ einfo "${EGO} test -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${EGO_SUBPACKAGES}"
+ ${EGO} test \
+ -ldflags "${GOLANG_PKG_LDFLAGS}" \
+ -tags "${GOLANG_PKG_TAGS}" \
+ ${EGO_BUILD_FLAGS} \
+ "${EGO_SUBPACKAGES}" \
+ || die
+ fi
+}
+
+# @FUNCTION: golang_do_build
+# @INTERNAL
+# @USAGE: <flags> <buildpath>
+# @DESCRIPTION:
+#
+# @CODE
+# Example:
+# GOLANG_PKG_LDFLAGS="-extldflags=-static"
+# GOLANG_PKG_TAGS="netgo"
+#
+# golang_do_build ${EGO_BUILD_FLAGS} ${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}
+# @CODE
+golang_do_build() {
+ debug-print-function ${FUNCNAME} $*
+
+ [[ ${GOLANG_VERSION} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+ # Filters "=" chars from ldflags declaration.
+ # NOTE: from go1.5+ linker syntax is no more compatible with <go1.4;
+ # this hack ensures that the old behaviour is honoured.
+ if [[ $( ver_cut 1-2 ${GOLANG_VERSION} ) == "1.4" ]]; then
+ GOLANG_PKG_LDFLAGS="${GOLANG_PKG_LDFLAGS//=/ }"
+ fi
+
+ # Disables debug symbols (DWARF) when not required.
+ if ! use debug; then
+ case "${GOLANG_PKG_LDFLAGS}" in
+ *-s*|*-w*)
+ # Do nothing
+ ;;
+ *)
+ GOLANG_PKG_LDFLAGS+=" -s -w"
+ esac
+ fi
+
+ # Sanitizes vars from entra white spaces.
+ GOLANG_PKG_LDFLAGS="$( echo ${GOLANG_PKG_LDFLAGS} )"
+ GOLANG_PKG_TAGS="$( echo ${GOLANG_PKG_TAGS} )"
+
+ einfo "${EGO} build -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' $*"
+ ${EGO} build \
+ -ldflags "${GOLANG_PKG_LDFLAGS}" \
+ -tags "${GOLANG_PKG_TAGS}" \
+ $( echo $* ) \
+ || die
+}
+
+# @FUNCTION: golang_add_vendor
+# @INTERNAL
+# @USAGE: <path>
+# @DESCRIPTION:
+#
+# @CODE
+# Example
+#
+# golang_add_vendor "${S}"/vendor
+# golang_add_vendor "${S}"/${PN}/vendor
+# @CODE
+golang_add_vendor() {
+ debug-print-function ${FUNCNAME} $*
+
+ [[ ${1} ]] || die "${FUNCNAME}: no paths given"
+
+ [[ ${GOLANG_VERSION} ]] || die "No Golang implementation set (golang_setup not called?)."
+
+ [[ ! -d "${1}" ]] && return
+
+ # NOTE: this hack is required by Go v1.4 and older versions.
+ #if [[ ! -d "${1}"/src ]]; then
+ # ebegin "Fixing $1"
+ # ln -s "${1}" "${1}"/src || die
+ # eend
+ #fi
+
+ GOLANG_PKG_VENDOR+=(${1})
+}
+
+
+# @FUNCTION: golang_fix_importpath_alias
+# @USAGE: <target> <alias>
+# @DESCRIPTION:
+# Helper functions for generating a symbolic link for import path <target> as
+# <alias>.
+#
+# WARNING: Use this function only if GOLANG_PKG_DEPENDENCIES declaration of
+# import path aliases doesn't work (e.g.: the package name differs from both the
+# import path and the alias, or if the package name is case sensitive but the
+# import path is not).
+#
+# @CODE
+# Example:
+#
+# src_prepare() {
+# golang-single_src_prepare
+#
+# golang_fix_importpath_alias \
+# "github.com/GoogleCloudPlatform/gcloud-golang" \
+# "google.golang.org/cloud"
+# }
+# @CODE
+golang_fix_importpath_alias() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${1} ]] || die "${FUNCNAME}: no target specified"
+ [[ ${2} ]] || die "${FUNCNAME}: no alias specified"
+
+ [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
+
+
+ local TARGET="${1}"
+ local ALIAS="${2}"
+
+ if [[ ${ALIAS%/*} != ${ALIAS} ]]; then
+ mkdir -p "${GOPATH}/src/${ALIAS%/*}" || die
+ fi
+ ebegin "Linking ${TARGET} as ${ALIAS}"
+ ln -s "${GOPATH}/src/${TARGET}" \
+ "${GOPATH}/src/${ALIAS}" \
+ || die
+ eend
+}
+
+fi
diff --git a/eclass/golang-single.eclass b/eclass/golang-single.eclass
new file mode 100644
index 000000000..692918bd9
--- /dev/null
+++ b/eclass/golang-single.eclass
@@ -0,0 +1,180 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: golang-single.eclass
+# @MAINTAINER:
+#
+# @AUTHOR:
+# Mauro Toffanin <toffanin.mauro@gmail.com>
+# @BLURB: An eclass for GoLang packages not installed inside GOPATH/GOBIN.
+# @DESCRIPTION:
+# This eclass allows to install arbitrary packages written in GoLang which
+# don't support being installed inside the Go environment.
+# This mostly includes traditional packages (C/C++/GUI) embedding tools written
+# in GoLang, and GoLang packages that need to be compiled with GCC instead of
+# the standard Go interpreter.
+#
+# @EXAMPLE:
+# Typical ebuild using golang-single.eclass:
+#
+# @CODE
+# EAPI=5
+#
+# GOLANG_PKG_IMPORTPATH="github.com/captObvious"
+# GOLANG_PKG_ARCHIVESUFFIX=".zip"
+# GOLANG_PKG_HAVE_TEST
+# inherit golang-single qt4-r2
+#
+# DESCRIPTION="Foo bar application"
+# HOMEPAGE="http://example.org/foo/"
+#
+# LICENSE="MIT"
+# KEYWORDS="~amd64 ~x86"
+# SLOT="0"
+# IUSE="doc qt4"
+#
+# CDEPEND="
+# qt4? (
+# dev-qt/qtcore:4
+# dev-qt/qtgui:4
+# )"
+# RDEPEND="${CDEPEND}
+# !media-gfx/bar"
+# DEPEND="${CDEPEND}
+# doc? ( app-doc/doxygen )"
+#
+# DOCS=(AUTHORS ChangeLog README "Read me.txt" TODO)
+#
+# PATCHES=(
+# "${FILESDIR}/${P}-qt4.patch" # bug 123458
+# "${FILESDIR}/${P}-as-needed.patch"
+# )
+#
+# src_install() {
+# use doc && HTML_DOCS=("${BUILD_DIR}/apidocs/html/")
+# autotools-utils_src_install
+# if use examples; then
+# dobin "${BUILD_DIR}"/foo_example{1,2,3} \\
+# || die 'dobin examples failed'
+# fi
+# }
+#
+# @CODE
+
+inherit golang-common
+
+EXPORT_FUNCTIONS src_prepare src_unpack src_configure src_compile src_install src_test
+
+if [[ -z ${_GOLANG_SINGLE_ECLASS} ]]; then
+_GOLANG_SINGLE_ECLASS=1
+
+# This eclass uses GOLANG_PKG_IMPORTPATH to populate SRC_URI.
+SRC_URI="${SRC_URI:="https://${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}/archive/${GOLANG_PKG_ARCHIVEPREFIX}${GOLANG_PKG_VERSION}${GOLANG_PKG_ARCHIVESUFFIX} -> ${P}${GOLANG_PKG_ARCHIVESUFFIX}"}"
+
+# This eclass uses GOLANG_PKG_DEPENDENCIES associative array to populate SRC_URI
+# with the required snapshots of the supplied GoLang dependencies.
+if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
+
+ for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
+
+ # Collects all the tokens of the dependency.
+ local -A DEPENDENCY=()
+ while read -d $'\n' key value; do
+ [[ -z ${key} ]] && continue
+ DEPENDENCY[$key]="${value}"
+ done <<-EOF
+ $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
+ EOF
+
+ # Debug
+ debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
+ debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
+ debug-print "${FUNCNAME}: revision = ${DEPENDENCY[revision]}"
+
+ # Downloads the archive.
+ case ${DEPENDENCY[importpath]} in
+ github*)
+ SRC_URI+=" https://${DEPENDENCY[importpath]}/archive/${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX} -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX}"
+ ;;
+ bitbucket*)
+ SRC_URI+=" https://${DEPENDENCY[importpath]}/get/${DEPENDENCY[revision]}.zip -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.zip"
+ ;;
+ code.google*)
+ SRC_URI+=" https://${DEPENDENCY[project_name]}.googlecode.com/archive/${DEPENDENCY[revision]}.tar.gz -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.tar.gz"
+ ;;
+ *) die "This eclass doesn't support '${DEPENDENCY[importpath]}'" ;;
+ esac
+
+ done
+fi
+
+# @FUNCTION: golang-single_src_unpack
+# @DESCRIPTION:
+# Unpack the source archive.
+golang-single_src_unpack() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ default
+
+ # Creates S.
+ mkdir -p "${S%/*}" || die
+
+ # Moves main GoLang package from WORKDIR into GOPATH.
+ if [[ "${GOLANG_PKG_IMPORTPATH}" != "${GOLANG_PKG_IMPORTPATH_ALIAS}" ]]; then
+ local alias_abspath="${WORKDIR}/gopath/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
+ mkdir -p "${alias_abspath%/*}" || die
+ mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${alias_abspath}"/ || die
+ else
+ mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${S}"/ || die
+ fi
+}
+
+# @FUNCTION: golang-single_src_prepare
+# @DESCRIPTION:
+# Prepare source code.
+golang-single_src_prepare() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ # Sets up GoLang build environment.
+ golang_setup
+
+ golang-common_src_prepare
+}
+
+# @FUNCTION: golang-single_src_configure
+# @DESCRIPTION:
+# Configure the package.
+golang-single_src_configure() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ golang-common_src_configure
+}
+
+# @FUNCTION: golang-single_src_compile
+# @DESCRIPTION:
+# Compiles the package.
+golang-single_src_compile() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ golang-common_src_compile
+}
+
+# @FUNCTION: golang-single_src_install
+# @DESCRIPTION:
+# Installs binaries and documents from DOCS or HTML_DOCS arrays.
+golang-single_src_install() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ golang-common_src_install
+}
+
+# @FUNCTION: golang-single_src_test
+# @DESCRIPTION:
+# Runs the unit tests for the main package.
+golang-single_src_test() {
+ debug-print-function ${FUNCNAME} "$@"
+
+ golang-common_src_test
+}
+
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-05-24 22:25 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2021-05-24 22:25 UTC (permalink / raw
To: gentoo-commits
commit: 55604b91a81e9e391253623c7b3ce40f57eec0b0
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Mon May 24 14:48:21 2021 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Mon May 24 14:49:55 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=55604b91
eclass: remove unused eclasses
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/golang-common.eclass | 1027 -------------------------------------------
eclass/golang-single.eclass | 180 --------
2 files changed, 1207 deletions(-)
diff --git a/eclass/golang-common.eclass b/eclass/golang-common.eclass
deleted file mode 100644
index 85dac9d25..000000000
--- a/eclass/golang-common.eclass
+++ /dev/null
@@ -1,1027 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: golang-utils.eclass
-# @MAINTAINER:
-#
-# @AUTHOR:
-# Mauro Toffanin <toffanin.mauro@gmail.com>
-# @BLURB: Base eclass for GoLang packages
-# @SUPPORTED_EAPIS: 7
-# @DESCRIPTION:
-# This eclass provides functionalities which are used by golang-single.eclass,
-# golang-live.eclass, and as well as from ebuilds.
-#
-# This eclass should not be inherited directly from an ebuild.
-# Instead, you should inherit golang-single or golang-live for GoLang packages.
-
-inherit eutils multiprocessing
-
-if [[ -z ${_GOLANG_BASE_ECLASS} ]]; then
-_GOLANG_BASE_ECLASS=1
-
-# Silences repoman warnings.
-case "${EAPI:-0}" in
- 7)
- case "${GOLANG_PKG_DEPEND_ON_GO_SUBSLOT:-yes}" in
- yes)
- GO_DEPEND="dev-lang/go:0="
- ;;
- *)
- GO_DEPEND="dev-lang/go:*"
- ;;
- esac
- ;;
- *)
- die "${ECLASS}: EAPI=${EAPI:-0} is not supported" ;;
-esac
-
-DEPEND+=" ${GO_DEPEND}"
-
-RESTRICT+=" strip"
-
-QA_FLAGS_IGNORED="
- usr/bin/.*
- usr/sbin/.*
-"
-QA_PRESTRIPPED="
- usr/bin/.*
- usr/sbin/.*
-"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_NAME
-# @DESCRIPTION:
-# Sets the GoLang name for the generated package.
-# GOLANG_PKG_NAME="${PN}"
-GOLANG_PKG_NAME="${GOLANG_PKG_NAME:-${PN}}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_VERSION
-# @DESCRIPTION:
-# Sets the GoLang version for the generated package.
-# GOLANG_PKG_VERSION="${PV}"
-GOLANG_PKG_VERSION="${GOLANG_PKG_VERSION:-${PV/_pre/.pre}}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_IMPORTPATH
-# @DESCRIPTION:
-# Sets the remote import path for the generated package.
-# GOLANG_PKG_IMPORTPATH="github.com/captObvious/"
-GOLANG_PKG_IMPORTPATH="${GOLANG_PKG_IMPORTPATH:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_IMPORTPATH_ALIAS
-# @DESCRIPTION:
-# Sets an alias of the remote import path for the generated package.
-# GOLANG_PKG_IMPORTPATH_ALIAS="privaterepo.com/captObvious/"
-GOLANG_PKG_IMPORTPATH_ALIAS="${GOLANG_PKG_IMPORTPATH_ALIAS:=${GOLANG_PKG_IMPORTPATH}}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_ARCHIVEPREFIX
-# @DESCRIPTION:
-# Sets the archive prefix for the file URI of the package.
-# Most projects hosted on GitHub's mirrors provide archives with prefix as
-# 'v' or 'source-', other hosted services offer different archive formats.
-# This eclass defaults to an empty prefix.
-GOLANG_PKG_ARCHIVEPREFIX="${GOLANG_PKG_ARCHIVEPREFIX:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_ARCHIVESUFFIX
-# @DESCRIPTION:
-# Sets the archive suffix for the file URI of the package.
-# Most projects hosted on GitHub's mirrors provide archives with suffix as
-# '.tar.gz' or '.zip', other hosted services offer different archive formats.
-# This eclass defaults to '.tar.gz'.
-GOLANG_PKG_ARCHIVESUFFIX="${GOLANG_PKG_ARCHIVESUFFIX:=".tar.gz"}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_OUTPUT_NAME
-# @DESCRIPTION:
-# Specifies the output file name of the package.
-# If not set, it derives from the name of the package, such as $GOLANG_PKG_NAME.
-# This eclass defaults to $PN.
-GOLANG_PKG_OUTPUT_NAME="${GOLANG_PKG_OUTPUT_NAME:=${PN}}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_BUILDPATH
-# @DESCRIPTION:
-# Specifies a go source file to be compiled as a single main package.
-# This eclass defaults to an empty value.
-# This eclass defaults to "/..." when the user declares GOLANG_PKG_IS_MULTIPLE=1
-GOLANG_PKG_BUILDPATH="${GOLANG_PKG_BUILDPATH:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_INSTALLPATH
-# @DESCRIPTION:
-# Sets the root path into which a binary, or a list of binaries, will be
-# installed (e.x.: ${GOLANG_PKG_INSTALLPATH}/bin).
-# This eclass defaults to "/usr"
-GOLANG_PKG_INSTALLPATH="${GOLANG_PKG_INSTALLPATH:="/usr"}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_INSTALLSUFFIX
-# @DESCRIPTION:
-# Sets a suffix to use in the name of the package installation directory.
-# This eclass defaults to an empty install suffix.
-GOLANG_PKG_INSTALLSUFFIX="${GOLANG_PKG_INSTALLSUFFIX:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_IS_MULTIPLE
-# @DESCRIPTION:
-# Set to enable the building of multiple packages from a single import path.
-
-# @ECLASS-VARIABLE: GOLANG_PKG_HAVE_TEST
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Set to enable the execution of automated testing.
-
-# @ECLASS-VARIABLE: GOLANG_PKG_HAVE_TEST_RACE
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Set to enable the execution of automated testing with support for
-# data race detection.
-
-# @ECLASS-VARIABLE: GOLANG_PKG_USE_CGO
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Set to enable the compilation of the package with CGO.
-
-# @ECLASS-VARIABLE: GOLANG_PKG_USE_GENERATE
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Set to run commands described by directives within existing golang files.
-
-# @ECLASS-VARIABLE: GOLANG_PKG_DEPEND_ON_GO_SUBSLOT
-# @DESCRIPTION:
-# Set to ensure the package does depend on the dev-lang/go subslot value.
-# Possible values: {yes,no}
-# This eclass defaults to "no"
-GOLANG_PKG_DEPEND_ON_GO_SUBSLOT=${GOLANG_PKG_DEPEND_ON_GO_SUBSLOT:="no"}
-
-# @ECLASS-VARIABLE: GOLANG_PKG_LDFLAGS
-# @DESCRIPTION:
-# Sets the linker arguments to pass to 5l, 6l, or 8l.
-# This eclass defaults to an empty list.
-GOLANG_PKG_LDFLAGS="${GOLANG_PKG_LDFLAGS:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_TAGS
-# @DESCRIPTION:
-# Sets the list of build tags during the build.
-# This eclass defaults to an empty list.
-GOLANG_PKG_TAGS="${GOLANG_PKG_TAGS:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_VENDOR
-# @DESCRIPTION:
-# Sets additional standard Go workspaces to be appended to the environment
-# variable GOPATH, as described in http://golang.org/doc/code.html.
-# This eclass defaults to an empty list.
-GOLANG_PKG_VENDOR=()
-
-# @ECLASS-VARIABLE: GOLANG_PKG_STATIK
-# @DESCRIPTION:
-# Sets the arguments to pass to dev-go/statik.
-# This eclass defaults to an empty list.
-GOLANG_PKG_STATIK="${GOLANG_PKG_STATIK:-}"
-
-# @ECLASS-VARIABLE: GOLANG_PKG_USE_MODULES
-# @DESCRIPTION:
-# Set to enable the compilation of the package with Go modules support.
-
-# @ECLASS-VARIABLE: GO
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# The absolute path to the current GoLang interpreter.
-#
-# This variable is set automatically after calling golang_setup().
-#
-# Default value:
-# @CODE
-# /usr/bin/go
-# @CODE
-
-# @ECLASS-VARIABLE: EGO
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# The executable name of the current GoLang interpreter.
-#
-# This variable is set automatically after calling golang_setup().
-#
-# Default value:
-# @CODE
-# go
-# @CODE
-
-# @ECLASS-VARIABLE: PATCHES
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Array variable containing all the patches to be applied. This variable
-# is expected to be defined in the global scope of ebuilds. Make sure to
-# specify the full path. This variable is used in src_prepare phase.
-#
-# Example:
-# @CODE
-# PATCHES=(
-# "${FILESDIR}/mypatch.patch"
-# "${FILESDIR}/mypatch2.patch"
-# )
-# @CODE
-
-# Adds gccgo as a compile-time dependency when GOLANG_PKG_USE_CGO is set.
-#[[ -n ${GOLANG_PKG_USE_CGO} ]] && DEPEND+=" >=sys-devel/gcc-4.8.4[go]"
-
-# Adds dev-go/statik as a compile-time dependency when GOLANG_PKG_STATIK is set.
-[[ -n ${GOLANG_PKG_STATIK} ]] && DEPEND+=" dev-go/statik"
-
-# Validates GOLANG_PKG_IMPORTPATH.
-if [[ -z ${GOLANG_PKG_IMPORTPATH} ]]; then
- eerror "The remote import path for this package has not been declared"
- die "Mandatory variable GOLANG_PKG_IMPORTPATH is unset"
-fi
-
-# Forces a multiple package build when user specifies GOLANG_PKG_IS_MULTIPLE=1.
-if [[ -n ${GOLANG_PKG_IS_MULTIPLE} && -z ${GOLANG_PKG_BUILDPATH} ]]; then
- GOLANG_PKG_BUILDPATH="/..."
-fi
-
-# Validates use of GOLANG_PKG_BUILDPATH combined with GOLANG_PKG_IS_MULTIPLE
-# FIX: makes sure user isn't overriding GOLANG_PKG_BUILDPATH with inane values.
-if [[ -n ${GOLANG_PKG_IS_MULTIPLE} && ${GOLANG_PKG_BUILDPATH##*/} != "..." ]]; then
- ewarn "Ebuild ${CATEGORY}/${PF} specifies GOLANG_PKG_IS_MULTIPLE=1,"
- ewarn "but then GOLANG_PKG_BUILDPATH is overridden with \"${GOLANG_PKG_BUILDPATH}\"."
- ewarn "Please, fix it by appending \"/...\" to your GOLANG_PKG_BUILDPATH."
- ewarn "If in doubt, remove GOLANG_PKG_BUILDPATH entirely."
-fi
-
-# Even though xz-utils are in @system, they must still be added to DEPEND; see
-# http://archives.gentoo.org/gentoo-dev/msg_a0d4833eb314d1be5d5802a3b710e0a4.xml
-if [[ ${GOLANG_PKG_ARCHIVESUFFIX/.*} == "xz" ]]; then
- DEPEND+=" app-arch/xz-utils"
-fi
-
-# Defines common USE flags
-IUSE="${IUSE} debug pie"
-# Enables USE 'test' when required by GOLANG_PKG_HAVE_TEST.
-if [[ -n ${GOLANG_PKG_HAVE_TEST} ]]; then
- IUSE+=" test"
-fi
-
-# Defines HOMEPAGE.
-[ -z "$HOMEPAGE" ] && HOMEPAGE="https://${GOLANG_PKG_IMPORTPATH}/${PN}"
-
-# Defines SOURCE directory.
-S="${WORKDIR}/gopath/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
-
-
-# @FUNCTION: _factorize_dependency_entities
-# @INTERNAL
-# @DESCRIPTION:
-# Factorizes the dependency declaration in specific tokens such as the import
-# path, the import path alias, the host name, the author name, the project name,
-# and the revision tag.
-_factorize_dependency_entities() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local -A dependency=()
- local key_list=(importpathalias importpath host project_name author_name revision)
-
- # Strips all the white spaces from the supplied argument.
- local raw_dependency="${1//\ /}"
-
- # Determines the alias of the import path (if present).
- dependency[importpathalias]="${raw_dependency##*->}"
-
- # Strips the import path alias from the supplied argument.
- raw_dependency="${raw_dependency%%->*}"
-
- # Determines the import path.
- dependency[importpath]="${raw_dependency%:*}"
-
- # When the importpath alias is not specified, then this eclass sets the
- # alias as equal to the import path minus the project name.
- if [[ "${raw_dependency}" == "${dependency[importpathalias]}" ]]; then
- dependency[importpathalias]="${dependency[importpath]%/*}"
- fi
-
- # Determines the host.
- dependency[host]="${dependency[importpath]%%/*}"
-
- # Determines the project name.
- dependency[project_name]="${dependency[importpath]##*/}"
-
- # Determines the author name.
- dependency[author_name]="${dependency[importpath]#*/}"
- dependency[author_name]="${dependency[author_name]%/*}"
-
- # Determines the revision.
- dependency[revision]="${raw_dependency#*:}"
-
- # Exports all the dependency tokens as an associated list.
- for key in ${key_list[@]}; do
- echo "${key} ${dependency[${key}]}"
- done
-}
-
-# @FUNCTION: golang_setup
-# @DESCRIPTION:
-# Determines where is the GoLang implementation and then set-up the
-# GoLang build environment.
-golang_setup() {
- debug-print-function ${FUNCNAME} "${@}"
-
- # NOTE: Keep /usr/bin/go as index [0] and never overwrite it,
- # always append other binary paths after the index [0]
- local GOLANG_BINS=(
- /usr/bin/go
- /usr/bin/gofmt
- )
-
- [[ -n ${GOLANG_PKG_STATIK} ]] && GOLANG_BINS+=(/usr/bin/statik)
-
- # Reset GoLang environment variables
- unset EGO
- unset EGOFMT
- unset ESTATIK
- unset GO
- unset GOPATH
- unset GOBIN
-
- # Determine is the GoLang interpreter is working
- local IS_EXECUTABLE=1
- for binary in "${GOLANG_BINS[@]}"; do
- debug-print "${FUNCNAME}: Checking ... ${binary}"
-
- [[ -x "${EPREFIX}/${binary}" ]] && continue
- IS_EXECUTABLE=0
- ewarn "It seems that the binary '${binary}' is not executable."
- done
-
- # dev-lang/go isn't installed or one of its binaries aren't executable.
- # Either way, the Gentoo box is screwed; no need to set up the GoLang environment
- [[ ${IS_EXECUTABLE} == 0 ]] && exit
-
- # dev-lang/go is available and working.
- # Exports GO/EGO/EGOFMT global variables.
- export GO="${GOLANG_BINS[0]}"
- export EGO="${GOLANG_BINS[0]##*/}"
- export EGOFMT="${GOLANG_BINS[1]}"
-
- # dev-go/statik is available and working.
- # Exports ESTATIK global variable.
- [[ -n ${GOLANG_PKG_STATIK} ]] && export ESTATIK="${GOLANG_BINS[2]##*/}"
-
- debug-print "${FUNCNAME}: GO = ${GO}"
- debug-print "${FUNCNAME}: EGO = ${EGO}"
- debug-print "${FUNCNAME}: EGOFMT = ${EGOFMT}"
- debug-print "${FUNCNAME}: ESTATIK = ${ESTATIK}"
-
- # Determines go interpreter version.
- GOLANG_VERSION="$( ${GO} version )"
- GOLANG_VERSION="${GOLANG_VERSION/go\ version\ go}"
- export GOLANG_VERSION="${GOLANG_VERSION%\ *}"
- einfo "Found GoLang version: ${GOLANG_VERSION}"
-
- # Determines statik interpreter version.
- # TODO: add version detection when statik will provide a -version option.
- if [[ -n ${GOLANG_PKG_STATIK} ]]; then
- local STATIK_VERSION=""
- einfo "Found statik version: ${STATIK_VERSION}"
- fi
-
- # Enable/Disable frame pointers
- local GOEXPERIMENT="noframepointer"
- use debug && GOEXPERIMENT="framepointer"
-
- # Sets the build environment inside Portage's WORKDIR.
- ebegin "Setting up GoLang build environment"
-
- # Prepares CGO_ENABLED.
- CGO_ENABLED=0
- [[ -z ${GOLANG_PKG_USE_CGO} ]] || CGO_ENABLED=1
- use pie && CGO_ENABLED=1 # PIE requires CGO
-
- # Prepares gopath / gobin directories inside WORKDIR.
- local _GOPATH="${WORKDIR}/gopath"
- local _GOBIN="${WORKDIR}/gobin"
- mkdir -p "${_GOBIN}" || die
- mkdir -p "${_GOPATH}"/src || die
-
- # Exports special env variable EGO_SRC.
- export EGO_SRC="${_GOPATH}/src"
-
- # Exports GoLang env variables.
- export GOPATH="$_GOPATH"
- export GOBIN="$_GOBIN"
- export CGO_ENABLED
- #export GOEXPERIMENT
- #export GO15VENDOREXPERIMENT=0
-
- GO111MODULE="off"
- [[ -z ${GOLANG_PKG_USE_MODULES} ]] || GO111MODULE="on"
- export GO111MODULE
-
- debug-print "${FUNCNAME}: GOPATH = ${GOPATH}"
- debug-print "${FUNCNAME}: GOBIN = ${GOBIN}"
- debug-print "${FUNCNAME}: EGO_SRC = ${EGO_SRC}"
- debug-print "${FUNCNAME}: CGO_ENABLED = ${CGO_ENABLED}"
- eend
-}
-
-# @FUNCTION: golang-common_src_prepare
-# @DESCRIPTION:
-# Prepare source code.
-golang-common_src_prepare() {
- debug-print-function ${FUNCNAME} "${@}"
-
- pushd "${WORKDIR}" > /dev/null || die
- einfo "Preparing GoLang build environment in ${GOPATH}/src"
-
- # If the ebuild declares an importpath alias, then its path was
- # already created during the src_unpack phase. That means the eclass
- # needs to create the missing original import path (GOLANG_PKG_IMPORTPATH)
- # as a simbolic link pointing to the alias.
- if [[ "${GOLANG_PKG_IMPORTPATH}" != "${GOLANG_PKG_IMPORTPATH_ALIAS}" ]]; then
-
- # If the ebuild declares a GOLANG_PKG_NAME different from PN, then
- # the latter will be used as the simbolic link target.
- local TARGET="${GOLANG_PKG_NAME}"
- [[ "${PN}" != "${GOLANG_PKG_NAME}" ]] && TARGET="${PN}"
-
- golang_fix_importpath_alias \
- "${GOLANG_PKG_IMPORTPATH_ALIAS}/${TARGET}" \
- "${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}"
- fi
-
- # If the ebuild declares some GoLang dependencies, then they need to be
- # correctly installed into the sand-boxed GoLang build environment which
- # was set up automatically during src_unpack) phase.
- if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
-
- for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
-
- # Collects all the tokens of the dependency.
- local -A DEPENDENCY=()
- while read -r -d $'\n' key value; do
- [[ -z ${key} ]] && continue
- DEPENDENCY[$key]="${value}"
- done <<-EOF
- $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
- EOF
-
- # Debug
- debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
- debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
- debug-print "${FUNCNAME}: importpathalias = ${DEPENDENCY[importpathalias]}"
- debug-print "${FUNCNAME}: host = ${DEPENDENCY[host]}"
- debug-print "${FUNCNAME}: author = ${DEPENDENCY[author_name]}"
- debug-print "${FUNCNAME}: project = ${DEPENDENCY[project_name]}"
- debug-print "${FUNCNAME}: revision = ${DEPENDENCY[revision]}"
-
- local message="Importing ${DEPENDENCY[importpath]}"
- local destdir
-
- # Prepares GOPATH structure.
- case ${DEPENDENCY[importpathalias]} in
- gopkg.in*)
- message+=" as ${DEPENDENCY[importpathalias]}"
- destdir="${DEPENDENCY[importpathalias]}"
-
- # Creates the import path in GOPATH.
- mkdir -p "${GOPATH}/src/${DEPENDENCY[importpathalias]%/*}" || die
- #einfo "\n${GOPATH}/src/${DEPENDENCY[importpathalias]%/*}"
- ;;
- *)
- [[ "${DEPENDENCY[importpath]}" != "${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}" ]] && message+=" as ${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}"
- destdir="${DEPENDENCY[importpathalias]}/${DEPENDENCY[project_name]}"
-
- # Creates the import path in GOPATH.
- mkdir -p "${GOPATH}/src/${DEPENDENCY[importpathalias]}" || die
- #einfo "\n${GOPATH}/src/${DEPENDENCY[importpathalias]}"
- ;;
- esac
-
- # Moves sources from WORKDIR into GOPATH.
- case ${DEPENDENCY[host]} in
- github*)
- ebegin "${message}"
- mv ${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
- eend
-
- # FIX: sometimes the source code inside an importpath alias
- # (such as gopkg.in/mylib.v1) invokes imports from
- # the original import path instead of using the alias,
- # thus we need a symbolic link between the alias and
- # the original import path to avoid compilation issues.
- # Example: gopkg.in/Shopify/sarama.v1 erroneously
- # invokes imports from github.com/shopify/sarama
- if [[ ${destdir} != ${DEPENDENCY[importpath]} ]]; then
- golang_fix_importpath_alias ${destdir} ${DEPENDENCY[importpath]}
- fi
- ;;
- bitbucket*)
- #einfo "path: ${DEPENDENCY[author_name]}-${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}"
- ebegin "${message}"
- mv ${DEPENDENCY[author_name]}-${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
- eend
- ;;
- code.google*)
- ebegin "${message}"
- mv ${DEPENDENCY[project_name]}-${DEPENDENCY[revision]}* "${GOPATH}"/src/${destdir} || die
- eend
- ;;
- *) die "Function 'golang-common_src_prepare' doesn't support '${DEPENDENCY[importpath]}'" ;;
- esac
- done
-
- fi
-
- popd > /dev/null || die
-
- # Auto-detects the presence of Go's vendored
- # dependencies inside $S/vendor.
- local VENDOR="${S}/vendor"
- if [[ -d "${VENDOR}" ]]; then
- golang_add_vendor "${VENDOR}"
- export GO15VENDOREXPERIMENT=1
- fi
-
- # Auto-detects the presence of Go's vendored
- # dependencies inside $S/*/vendor
- if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." ]]; then
- while read -r -d $' ' path; do
- # Trims leading slash (if any).
- path="${path/\//}"
-
- # Extracts the root path.
- path="${path%%/*}"
-
- # Ignores $path when it's empty or a string of white spaces.
- [[ -n $path ]] || continue
-
- local vendor="${S}/${path}/vendor"
- if [[ -d "${vendor}" ]]; then
- golang_add_vendor "${vendor}"
- fi
- done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
- fi
-
-
- # Auto-detects the presence of Godep's workspace
- # (see github.com/tools/godep for more infos).
- VENDOR="${S}/Godeps/_workspace"
- if [[ -d "${VENDOR}" ]]; then
- golang_add_vendor "${VENDOR}"
- fi
-
- # Evaluates PATCHES array.
- default_src_prepare
-}
-
-# @FUNCTION: golang-common_src_configure
-# @DESCRIPTION:
-# Configure the package.
-golang-common_src_configure() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
- # Defines the level of verbosity.
- local EGO_VERBOSE="-v"
- [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
-
- # GoLang doesn't have a configure phase,
- # so instead this eclass prints the output of 'go env'.
- local -a GOLANG_ENV=()
- while read -r line; do
- GOLANG_ENV+=("${line}")
- done <<-EOF
- $( ${GO} env )
- EOF
-
- # Prints an error when 'go env' output is missing.
- if [[ ${#GOLANG_ENV[@]} -eq 1 ]]; then
- eerror "Your GoLang environment should be more verbose"
- fi
-
- # Prints GoLang environment summary.
- einfo " ${EGO} env"
- for env in "${GOLANG_ENV[@]}"; do
- einfo " - ${env}"
- done
-
-
- # Removes GoLang object files from package source directories (pkg/)
- # and temporary directories (_obj/ _test*/).
- local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
- case $( ver_cut 1-2 ${GOLANG_VERSION} ) in
- 1.4*) ;;
- *)
- EGO_SUBPACKAGES+="/..."
- ;;
- esac
-# einfo "${EGO} clean -i ${EGO_VERBOSE} ${EGO_SUBPACKAGES}"
-# ${EGO} clean -i \
-# ${EGO_VERBOSE} \
-# "${EGO_SUBPACKAGES}" \
-# || die
-
- # Removes GoLang objects files from all the dependencies too.
-# if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
-#
-# for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
-#
-# # Collects all the tokens of the dependency.
-# local -A DEPENDENCY=()
-# while read -r -d $'\n' key value; do
-# [[ -z ${key} ]] && continue
-# DEPENDENCY[$key]="${value}"
-# done <<-EOF
-# $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
-# EOF
-#
-# [[ ! -d ${DEPENDENCY[importpath]} ]] && continue
-#
-# # Debug
-# debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
-# debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
-#
-# # Cleans object files of the dependency.
-# einfo "${EGO} clean -i ${EGO_VERBOSE} ${DEPENDENCY[importpath]}"
-# ${EGO} clean \
-# -i ${EGO_VERBOSE} \
-# "${DEPENDENCY[importpath]}" \
-# || die
-# done
-# fi
-
- # Before to compile Godep's dependencies it's wise to wipe out
- # all pre-built object files from Godep's package source directories.
- if [[ -d "${S}"/Godeps/_workspace/pkg ]]; then
- ebegin "Cleaning up pre-built object files in Godep workspace"
- rm -r "${S}"/Godeps/_workspace/pkg || die
- eend
- fi
- if [[ -d "${S}"/Godeps/_workspace/bin ]]; then
- ebegin "Cleaning up executables in Godep workspace"
- rm -r "${S}"/Godeps/_workspace/bin || die
- eend
- fi
-
-
- # Executes 'go generate'.
- # NOTE: generate should never run automatically. It must be run explicitly.
- if [[ -n ${GOLANG_PKG_USE_GENERATE} ]]; then
- pushd "${GOPATH}/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}" > /dev/null || die
- einfo "${EGO} generate ${EGO_VERBOSE} ${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}/..."
- ${EGO} generate \
- ${EGO_VERBOSE} \
- ./... \
- || die
- popd > /dev/null || die
- fi
-
-
- # Executes 'statik' when explicitly asked.
- if [[ -n ${GOLANG_PKG_STATIK} ]]; then
- ebegin "${ESTATIK} $GOLANG_PKG_STATIK"
- ${ESTATIK} $GOLANG_PKG_STATIK || die
- eend
- fi
-}
-
-# @FUNCTION: golang-common_src_compile
-# @DESCRIPTION:
-# Compiles the package.
-golang-common_src_compile() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
- # Populates env variable GOPATH with vendored workspaces (if present).
- if [[ -n ${GOLANG_PKG_VENDOR} ]]; then
- einfo "Using vendored dependencies from:"
-
- for path in "${GOLANG_PKG_VENDOR[@]}"; do
- [ -d ${path} ] || continue
-
- if [[ ${path//${S}\//} == "vendor" ]]; then
- einfo "- vendor/ (native vendoring support)"
- continue
- fi
-
- debug-print "$FUNCNAME: GOPATH: Adding vendor path ${path}"
- ebegin "- ${path//${S}\//}"
- GOPATH="${GOPATH}:$( echo ${path} )"
- eend
- done
-
- export GOPATH
- fi
-
- # Enables position-independent executables (PIE)
- local EGO_PIE
- use pie && EGO_PIE="-buildmode=pie"
-
- # Defines the install suffix.
- local EGO_INSTALLSUFFIX
- [[ -z ${GOLANG_PKG_INSTALLSUFFIX} ]] || EGO_INSTALLSUFFIX="-installsuffix=${GOLANG_PKG_INSTALLSUFFIX}"
-
- # Defines the level of verbosity.
- local EGO_VERBOSE="-v"
- [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
-
- # Defines the number of builds that can be run in parallel.
- local EGO_PARALLEL="-p $(makeopts_jobs)"
-
- # Defines extra options.
- local EGO_EXTRA_OPTIONS="-a"
-
- # Prepares build flags for the go toolchain.
- local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} ) $( echo ${EGO_PIE} )"
- [[ -n ${EGO_INSTALLSUFFIX} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_INSTALLSUFFIX} )"
-
- # Detects the total number of packages.
- local pkgs=0 ifs_save=${IFS} IFS=$' '
- for path in ${GOLANG_PKG_BUILDPATH[@]} ; do
- pkgs=$(( $pkgs + 1 ))
- done
- [[ ${pkgs} -eq 0 ]] && pkgs=1 # there is always at least 1 package
- IFS=${ifs_save}
-
- # Builds the package
- einfo "Compiling ${pkgs} package(s):"
- if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." && ${pkgs} -gt 1 ]]; then
-
- # NOTE: This eclass trims all leading and trailing white spaces from the
- # input of the following 'while read' loop, then appends an extra
- # trailing space; this is necessary to avoid undefined behaviours
- # within the loop when GOLANG_PKG_BUILDPATH is populated with only
- # a single element.
- while read -r -d $' ' cmd; do
- # Ignores $cmd when it's empty or a string of white spaces
- #einfo "cmd: |$cmd| cmd: |${cmd##*/}|"
- [[ -n $cmd ]] || continue
-
- golang_do_build \
- ${EGO_BUILD_FLAGS} \
- -o "${GOBIN}/${cmd##*/}" \
- "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}"
- done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
- else
- # If the package is a multiple package (/...)
- # then this eclass doesn't specify the output name.
- [[ ${GOLANG_PKG_BUILDPATH##*/} != "..." ]] && EGO_BUILD_FLAGS+=" -o ${GOBIN}/${GOLANG_PKG_OUTPUT_NAME}"
-
- golang_do_build \
- ${EGO_BUILD_FLAGS} \
- "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
- fi
-}
-
-# @FUNCTION: golang-common_src_install
-# @DESCRIPTION:
-# Installs binaries and documents from DOCS or HTML_DOCS arrays.
-golang-common_src_install() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
- # Enables position-independent executables (PIE)
- local EGO_PIE
- use pie && EGO_PIE="-buildmode=pie"
-
- # Defines the install suffix.
- local EGO_INSTALLSUFFIX
- [[ -z ${GOLANG_PKG_INSTALLSUFFIX} ]] || EGO_INSTALLSUFFIX="-installsuffix=${GOLANG_PKG_INSTALLSUFFIX}"
-
- # Defines the level of verbosity.
- local EGO_VERBOSE="-v"
- [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
-
- # Defines the number of builds that can be run in parallel.
- local EGO_PARALLEL="-p $(makeopts_jobs)"
-
- # Defines extra options.
- local EGO_EXTRA_OPTIONS
-
- # Prepares build flags for the go toolchain.
- local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} ) $( echo ${EGO_PIE} )"
- [[ -n ${EGO_INSTALLSUFFIX} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_INSTALLSUFFIX} )"
-
- # Defines sub-packages.
- local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
-
- # Executes the pre-install phase (go install).
- if [[ -n ${GOLANG_PKG_IS_MULTIPLE} ]]; then
- einfo "${EGO} install -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${EGO_SUBPACKAGES}"
- ${EGO} install \
- -ldflags "${GOLANG_PKG_LDFLAGS}" \
- -tags "${GOLANG_PKG_TAGS}" \
- ${EGO_BUILD_FLAGS} \
- "${EGO_SUBPACKAGES}" \
- || die
- fi
-
- # Installs binaries.
- into ${GOLANG_PKG_INSTALLPATH}
- for bin in "${GOBIN}"/* ; do
- dobin ${bin}
- done
-
- # Installs documentation.
- einstalldocs
-}
-
-# @FUNCTION: golang-common_src_test
-# @DESCRIPTION:
-# Runs the unit tests for the main package.
-golang-common_src_test() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
- # Appends S and GOBIN to exported main paths.
- # FIX: this is necessary for unit tests that need to invoke bins from
- # $GOBIN or from within $S/bin.
- export PATH="${S}/bin:${GOBIN}:${PATH}"
-
- # Defines the level of verbosity.
- local EGO_VERBOSE="-v"
- [[ -z ${PORTAGE_VERBOSE} ]] || EGO_VERBOSE+=" -x"
-
- # Defines the number of builds that can be run in parallel.
- local EGO_PARALLEL="-p $(makeopts_jobs)"
-
- # Defines extra options.
- #local EGO_EXTRA_OPTIONS="-a"
-
- # Enables data race detection.
- local EGO_RACE
- [[ -n ${GOLANG_PKG_HAVE_TEST_RACE} ]] && EGO_RACE=" -race"
-
- # Prepares build flags for the go toolchain.
- local EGO_BUILD_FLAGS="$( echo ${EGO_VERBOSE} ) $( echo ${EGO_PARALLEL} ) $( echo ${EGO_EXTRA_OPTIONS} )"
- [[ -n ${EGO_RACE} ]] && EGO_BUILD_FLAGS+=" $( echo ${EGO_RACE} )"
-
- # Sanitizes vars from entra white spaces.
- GOLANG_PKG_LDFLAGS="$( echo ${GOLANG_PKG_LDFLAGS} )"
- GOLANG_PKG_TAGS="$( echo ${GOLANG_PKG_TAGS} )"
-
- # Defines sub-packages.
- local EGO_SUBPACKAGES="${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}"
- [[ -z ${GOLANG_PKG_IS_MULTIPLE} ]] || EGO_SUBPACKAGES="./..."
-
- # Detects the total number of packages.
- local pkgs=0 ifs_save=${IFS} IFS=$' '
- for path in ${GOLANG_PKG_BUILDPATH[@]} ; do
- pkgs=$(( $pkgs + 1 ))
- done
- [[ ${pkgs} -eq 0 ]] && pkgs=1 # there is always at least 1 package
- IFS=${ifs_save}
-
- # Runs the Unit Tests
- einfo "Testing ${pkgs} package(s):"
- if [[ -n ${GOLANG_PKG_BUILDPATH} && ${GOLANG_PKG_BUILDPATH##*/} != "..." && ${pkgs} -gt 1 ]]; then
-
- # NOTE: This eclass trims all leading and trailing white spaces from the
- # input of the following 'while read' loop, then appends an extra
- # trailing space; this is necessary to avoid undefined behaviours
- # within the loop when GOLANG_PKG_BUILDPATH is populated with only
- # a single element.
- while read -r -d $' ' cmd; do
- # Ignores $cmd when it's empty or a string of white spaces
- #einfo "cmd: |$cmd| cmd: |${cmd##*/}|"
- [[ -n $cmd ]] || continue
-
- einfo "${EGO} test -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}/..."
- ${EGO} test \
- -ldflags "${GOLANG_PKG_LDFLAGS}" \
- -tags "${GOLANG_PKG_TAGS}" \
- ${EGO_BUILD_FLAGS} \
- "${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}${cmd}/..." \
- || die
- done <<< "$( echo ${GOLANG_PKG_BUILDPATH}) "
- else
- # It's a single package
- einfo "${EGO} test -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' ${EGO_BUILD_FLAGS} ${EGO_SUBPACKAGES}"
- ${EGO} test \
- -ldflags "${GOLANG_PKG_LDFLAGS}" \
- -tags "${GOLANG_PKG_TAGS}" \
- ${EGO_BUILD_FLAGS} \
- "${EGO_SUBPACKAGES}" \
- || die
- fi
-}
-
-# @FUNCTION: golang_do_build
-# @INTERNAL
-# @USAGE: <flags> <buildpath>
-# @DESCRIPTION:
-#
-# @CODE
-# Example:
-# GOLANG_PKG_LDFLAGS="-extldflags=-static"
-# GOLANG_PKG_TAGS="netgo"
-#
-# golang_do_build ${EGO_BUILD_FLAGS} ${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}${GOLANG_PKG_BUILDPATH}
-# @CODE
-golang_do_build() {
- debug-print-function ${FUNCNAME} $*
-
- [[ ${GOLANG_VERSION} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
- # Filters "=" chars from ldflags declaration.
- # NOTE: from go1.5+ linker syntax is no more compatible with <go1.4;
- # this hack ensures that the old behaviour is honoured.
- if [[ $( ver_cut 1-2 ${GOLANG_VERSION} ) == "1.4" ]]; then
- GOLANG_PKG_LDFLAGS="${GOLANG_PKG_LDFLAGS//=/ }"
- fi
-
- # Disables debug symbols (DWARF) when not required.
- if ! use debug; then
- case "${GOLANG_PKG_LDFLAGS}" in
- *-s*|*-w*)
- # Do nothing
- ;;
- *)
- GOLANG_PKG_LDFLAGS+=" -s -w"
- esac
- fi
-
- # Sanitizes vars from entra white spaces.
- GOLANG_PKG_LDFLAGS="$( echo ${GOLANG_PKG_LDFLAGS} )"
- GOLANG_PKG_TAGS="$( echo ${GOLANG_PKG_TAGS} )"
-
- einfo "${EGO} build -ldflags '$GOLANG_PKG_LDFLAGS' -tags '$GOLANG_PKG_TAGS' $*"
- ${EGO} build \
- -ldflags "${GOLANG_PKG_LDFLAGS}" \
- -tags "${GOLANG_PKG_TAGS}" \
- $( echo $* ) \
- || die
-}
-
-# @FUNCTION: golang_add_vendor
-# @INTERNAL
-# @USAGE: <path>
-# @DESCRIPTION:
-#
-# @CODE
-# Example
-#
-# golang_add_vendor "${S}"/vendor
-# golang_add_vendor "${S}"/${PN}/vendor
-# @CODE
-golang_add_vendor() {
- debug-print-function ${FUNCNAME} $*
-
- [[ ${1} ]] || die "${FUNCNAME}: no paths given"
-
- [[ ${GOLANG_VERSION} ]] || die "No Golang implementation set (golang_setup not called?)."
-
- [[ ! -d "${1}" ]] && return
-
- # NOTE: this hack is required by Go v1.4 and older versions.
- #if [[ ! -d "${1}"/src ]]; then
- # ebegin "Fixing $1"
- # ln -s "${1}" "${1}"/src || die
- # eend
- #fi
-
- GOLANG_PKG_VENDOR+=(${1})
-}
-
-
-# @FUNCTION: golang_fix_importpath_alias
-# @USAGE: <target> <alias>
-# @DESCRIPTION:
-# Helper functions for generating a symbolic link for import path <target> as
-# <alias>.
-#
-# WARNING: Use this function only if GOLANG_PKG_DEPENDENCIES declaration of
-# import path aliases doesn't work (e.g.: the package name differs from both the
-# import path and the alias, or if the package name is case sensitive but the
-# import path is not).
-#
-# @CODE
-# Example:
-#
-# src_prepare() {
-# golang-single_src_prepare
-#
-# golang_fix_importpath_alias \
-# "github.com/GoogleCloudPlatform/gcloud-golang" \
-# "google.golang.org/cloud"
-# }
-# @CODE
-golang_fix_importpath_alias() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ ${1} ]] || die "${FUNCNAME}: no target specified"
- [[ ${2} ]] || die "${FUNCNAME}: no alias specified"
-
- [[ ${EGO} ]] || die "No GoLang implementation set (golang_setup not called?)."
-
-
- local TARGET="${1}"
- local ALIAS="${2}"
-
- if [[ ${ALIAS%/*} != ${ALIAS} ]]; then
- mkdir -p "${GOPATH}/src/${ALIAS%/*}" || die
- fi
- ebegin "Linking ${TARGET} as ${ALIAS}"
- ln -s "${GOPATH}/src/${TARGET}" \
- "${GOPATH}/src/${ALIAS}" \
- || die
- eend
-}
-
-fi
diff --git a/eclass/golang-single.eclass b/eclass/golang-single.eclass
deleted file mode 100644
index 692918bd9..000000000
--- a/eclass/golang-single.eclass
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright 1999-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: golang-single.eclass
-# @MAINTAINER:
-#
-# @AUTHOR:
-# Mauro Toffanin <toffanin.mauro@gmail.com>
-# @BLURB: An eclass for GoLang packages not installed inside GOPATH/GOBIN.
-# @DESCRIPTION:
-# This eclass allows to install arbitrary packages written in GoLang which
-# don't support being installed inside the Go environment.
-# This mostly includes traditional packages (C/C++/GUI) embedding tools written
-# in GoLang, and GoLang packages that need to be compiled with GCC instead of
-# the standard Go interpreter.
-#
-# @EXAMPLE:
-# Typical ebuild using golang-single.eclass:
-#
-# @CODE
-# EAPI=5
-#
-# GOLANG_PKG_IMPORTPATH="github.com/captObvious"
-# GOLANG_PKG_ARCHIVESUFFIX=".zip"
-# GOLANG_PKG_HAVE_TEST
-# inherit golang-single qt4-r2
-#
-# DESCRIPTION="Foo bar application"
-# HOMEPAGE="http://example.org/foo/"
-#
-# LICENSE="MIT"
-# KEYWORDS="~amd64 ~x86"
-# SLOT="0"
-# IUSE="doc qt4"
-#
-# CDEPEND="
-# qt4? (
-# dev-qt/qtcore:4
-# dev-qt/qtgui:4
-# )"
-# RDEPEND="${CDEPEND}
-# !media-gfx/bar"
-# DEPEND="${CDEPEND}
-# doc? ( app-doc/doxygen )"
-#
-# DOCS=(AUTHORS ChangeLog README "Read me.txt" TODO)
-#
-# PATCHES=(
-# "${FILESDIR}/${P}-qt4.patch" # bug 123458
-# "${FILESDIR}/${P}-as-needed.patch"
-# )
-#
-# src_install() {
-# use doc && HTML_DOCS=("${BUILD_DIR}/apidocs/html/")
-# autotools-utils_src_install
-# if use examples; then
-# dobin "${BUILD_DIR}"/foo_example{1,2,3} \\
-# || die 'dobin examples failed'
-# fi
-# }
-#
-# @CODE
-
-inherit golang-common
-
-EXPORT_FUNCTIONS src_prepare src_unpack src_configure src_compile src_install src_test
-
-if [[ -z ${_GOLANG_SINGLE_ECLASS} ]]; then
-_GOLANG_SINGLE_ECLASS=1
-
-# This eclass uses GOLANG_PKG_IMPORTPATH to populate SRC_URI.
-SRC_URI="${SRC_URI:="https://${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}/archive/${GOLANG_PKG_ARCHIVEPREFIX}${GOLANG_PKG_VERSION}${GOLANG_PKG_ARCHIVESUFFIX} -> ${P}${GOLANG_PKG_ARCHIVESUFFIX}"}"
-
-# This eclass uses GOLANG_PKG_DEPENDENCIES associative array to populate SRC_URI
-# with the required snapshots of the supplied GoLang dependencies.
-if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
-
- for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
-
- # Collects all the tokens of the dependency.
- local -A DEPENDENCY=()
- while read -d $'\n' key value; do
- [[ -z ${key} ]] && continue
- DEPENDENCY[$key]="${value}"
- done <<-EOF
- $( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
- EOF
-
- # Debug
- debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
- debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
- debug-print "${FUNCNAME}: revision = ${DEPENDENCY[revision]}"
-
- # Downloads the archive.
- case ${DEPENDENCY[importpath]} in
- github*)
- SRC_URI+=" https://${DEPENDENCY[importpath]}/archive/${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX} -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX}"
- ;;
- bitbucket*)
- SRC_URI+=" https://${DEPENDENCY[importpath]}/get/${DEPENDENCY[revision]}.zip -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.zip"
- ;;
- code.google*)
- SRC_URI+=" https://${DEPENDENCY[project_name]}.googlecode.com/archive/${DEPENDENCY[revision]}.tar.gz -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.tar.gz"
- ;;
- *) die "This eclass doesn't support '${DEPENDENCY[importpath]}'" ;;
- esac
-
- done
-fi
-
-# @FUNCTION: golang-single_src_unpack
-# @DESCRIPTION:
-# Unpack the source archive.
-golang-single_src_unpack() {
- debug-print-function ${FUNCNAME} "${@}"
-
- default
-
- # Creates S.
- mkdir -p "${S%/*}" || die
-
- # Moves main GoLang package from WORKDIR into GOPATH.
- if [[ "${GOLANG_PKG_IMPORTPATH}" != "${GOLANG_PKG_IMPORTPATH_ALIAS}" ]]; then
- local alias_abspath="${WORKDIR}/gopath/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
- mkdir -p "${alias_abspath%/*}" || die
- mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${alias_abspath}"/ || die
- else
- mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${S}"/ || die
- fi
-}
-
-# @FUNCTION: golang-single_src_prepare
-# @DESCRIPTION:
-# Prepare source code.
-golang-single_src_prepare() {
- debug-print-function ${FUNCNAME} "$@"
-
- # Sets up GoLang build environment.
- golang_setup
-
- golang-common_src_prepare
-}
-
-# @FUNCTION: golang-single_src_configure
-# @DESCRIPTION:
-# Configure the package.
-golang-single_src_configure() {
- debug-print-function ${FUNCNAME} "$@"
-
- golang-common_src_configure
-}
-
-# @FUNCTION: golang-single_src_compile
-# @DESCRIPTION:
-# Compiles the package.
-golang-single_src_compile() {
- debug-print-function ${FUNCNAME} "$@"
-
- golang-common_src_compile
-}
-
-# @FUNCTION: golang-single_src_install
-# @DESCRIPTION:
-# Installs binaries and documents from DOCS or HTML_DOCS arrays.
-golang-single_src_install() {
- debug-print-function ${FUNCNAME} "$@"
-
- golang-common_src_install
-}
-
-# @FUNCTION: golang-single_src_test
-# @DESCRIPTION:
-# Runs the unit tests for the main package.
-golang-single_src_test() {
- debug-print-function ${FUNCNAME} "$@"
-
- golang-common_src_test
-}
-
-fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-06-02 16:00 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-06-02 16:00 UTC (permalink / raw
To: gentoo-commits
commit: 9fd80923195264194a8c1394ed79c8564f9fb5c4
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Mon May 31 23:15:27 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Mon May 31 23:15:27 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=9fd80923
R-packages.eclass: split string
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 9fba5d5c2..4afcde26f 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -34,7 +34,7 @@ R-packages_src_prepare() {
R-packages_src_compile() {
- MAKEFLAGS="CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR} --byte-compile"
+ MAKEFLAGS="CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR}" "--byte-compile"
}
R-packages_src_install() {
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-07-26 14:05 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2021-07-26 14:05 UTC (permalink / raw
To: gentoo-commits
commit: 7550cd50ab0c998a6b0630c1a153bb891640a475
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun Jul 25 17:54:13 2021 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sun Jul 25 17:54:13 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=7550cd50
boinc.eclass: add missing slash in download URL
Closes: https://bugs.gentoo.org/803902
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/boinc.eclass b/eclass/boinc.eclass
index d16d6e250..80281c69d 100644
--- a/eclass/boinc.eclass
+++ b/eclass/boinc.eclass
@@ -56,7 +56,7 @@ get_boinc_src() {
*) die "${FUNCNAME}: unknown release type '${RELEASE_TYPE}'"
esac
- local _SRC_URI="https://github.com/BOINC/boinc/archive"
+ local _SRC_URI="https://github.com/BOINC/boinc/archive/"
_SRC_URI+="${RELEASE_TYPE}_release/${RELEASE_MINOR}/${RELEASE_PATCH}.tar.gz"
_SRC_URI+=" -> boinc${SUFFIX}-${RELEASE_PATCH}.tar.gz"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-09-08 15:20 Arthur Zamarin
0 siblings, 0 replies; 106+ messages in thread
From: Arthur Zamarin @ 2021-09-08 15:20 UTC (permalink / raw
To: gentoo-commits
commit: 9ac9f8dfc1decbcd2b10565935252c72da807d51
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed Sep 8 10:43:25 2021 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed Sep 8 10:46:18 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=9ac9f8df
R-packages.eclass: pass AR via MAKEFLAGS
Closes: https://bugs.gentoo.org/812113
Closes: https://bugs.gentoo.org/812110
Closes: https://bugs.gentoo.org/812107
Closes: https://bugs.gentoo.org/812104
Closes: https://bugs.gentoo.org/812101
Closes: https://bugs.gentoo.org/812098
Closes: https://bugs.gentoo.org/812095
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 5e1d6bccc..a072e5cc2 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -1,7 +1,7 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-inherit eutils
+inherit eutils toolchain-funcs
EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install
@@ -34,7 +34,7 @@ R-packages_src_prepare() {
R-packages_src_compile() {
- MAKEFLAGS="CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR}" "--byte-compile" || die
+ MAKEFLAGS="AR=$(tc-getAR) CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR}" "--byte-compile" || die
}
R-packages_src_install() {
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-09-30 19:39 Arthur Zamarin
0 siblings, 0 replies; 106+ messages in thread
From: Arthur Zamarin @ 2021-09-30 19:39 UTC (permalink / raw
To: gentoo-commits
commit: 601610833831462786c12893b87ec8a9ccc50fda
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed Sep 29 13:13:36 2021 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed Sep 29 13:13:36 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=60161083
node.eclass: remove /opt from paths
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/node.eclass | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/eclass/node.eclass b/eclass/node.eclass
index aeff2f3c7..47b7a57b1 100644
--- a/eclass/node.eclass
+++ b/eclass/node.eclass
@@ -82,9 +82,8 @@ node_src_prepare() {
}
node_src_configure() {
- export PATH="${PATH}:/opt/node-debian/usr/bin"
#path to the modules
- export NODE_PATH="/usr/$(get_libdir)/node_modules:/opt/node-debian/usr/share/nodejs"
+ export NODE_PATH="/usr/$(get_libdir)/node_modules"
export npm_config_prefix="${NODE_MODULE_PREFIX}"
#path to the headers needed by node-gyp
export npm_config_nodedir="/usr/include/node"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2021-10-06 1:13 Theo Anderson
0 siblings, 0 replies; 106+ messages in thread
From: Theo Anderson @ 2021-10-06 1:13 UTC (permalink / raw
To: gentoo-commits
commit: fcc3d7d78eda6e965820a39b9bbcb062cbd1549d
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Tue Oct 5 21:23:30 2021 +0000
Commit: Theo Anderson <telans <AT> posteo <DOT> de>
CommitDate: Tue Oct 5 21:24:13 2021 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=fcc3d7d7
R-packages.eclass: add SUGGESTED_PACKAGES optfeature
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index a072e5cc2..6cbf9d7d3 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -1,9 +1,9 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-inherit eutils toolchain-funcs
+inherit eutils optfeature toolchain-funcs
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst
SRC_URI="mirror://cran/src/contrib/${PN}_${PV}.tar.gz"
HOMEPAGE="https://cran.r-project.org/package=${PN}"
@@ -32,7 +32,6 @@ R-packages_src_prepare() {
default
}
-
R-packages_src_compile() {
MAKEFLAGS="AR=$(tc-getAR) CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR}" "--byte-compile" || die
}
@@ -62,3 +61,9 @@ R-packages_src_install() {
insinto "/usr/$(get_libdir)/R/site-library"
doins -r "${WORKDIR}/${PN//_/.}"
}
+
+R-packages_pkg_postinst() {
+ if [ -v SUGGESTED_PACKAGES ]; then
+ optfeature "having the upstream suggested packages" "${SUGGESTED_PACKAGES}"
+ fi
+}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-02-20 8:46 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-02-20 8:46 UTC (permalink / raw
To: gentoo-commits
commit: 7efa176f5dcd69d978f2d110251117a9e1437069
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Feb 14 15:21:13 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Thu Feb 17 21:11:15 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=7efa176f
boinc.eclass: add debug-print-function calls
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc.eclass | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/eclass/boinc.eclass b/eclass/boinc.eclass
index 80281c69d..f2c28b628 100644
--- a/eclass/boinc.eclass
+++ b/eclass/boinc.eclass
@@ -9,7 +9,7 @@
# @DESCRIPTION:
# This eclass provides helper functions to build BOINC applications and libraries.
-inherit toolchain-funcs
+inherit autotools toolchain-funcs
case ${EAPI} in
8) ;;
@@ -44,6 +44,8 @@ if [[ ! ${_BOINC_ECLASS} ]]; then
# @USAGE: <SRC_URI|S> <release> [client|server]
# @RETURN: SRC_URI snippet or temporary build directory for given BOINC release
get_boinc_src() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
local query_var=${1}
local RELEASE_PATCH=${2}
local RELEASE_MINOR=$(ver_cut 1-2 ${RELEASE_PATCH})
@@ -87,6 +89,8 @@ get_boinc_src() {
# If no BOINC version is given, this function assumes it equal to client
# release $PV.
boinc_require_source() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
local boinc_version=${1:-${PV}}
SRC_URI+=" $(get_boinc_src SRC_URI ${boinc_version} ${2})"
@@ -104,7 +108,8 @@ boinc_require_source() {
#
# This function must be called in global scope.
boinc_enable_autotools() {
- inherit autotools
+ debug-print-function ${FUNCNAME} "${@}"]
+
_BOINC_RUN_AUTOTOOLS=1
_BOINC_ECONF_ARGS=${@:---enable-pkg-devel}
}
@@ -120,6 +125,8 @@ boinc_enable_autotools() {
#
# This function must be called in global scope.
boinc_override_config() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
_BOINC_CONFIG_OVERRIDE="${1}"
}
@@ -128,6 +135,8 @@ boinc_override_config() {
# @DESCRIPTION:
# Make sure BOINC_BUILD_DIR has a value.
boinc_builddir_check() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
if [[ ! ${BOINC_BUILD_DIR} ]]; then
eerror "BOINC_BUILD_DIR is not set."
die "Did you forget to call boinc_require_source?"
@@ -137,6 +146,8 @@ boinc_builddir_check() {
}
boinc_src_unpack() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
default_src_unpack
boinc_builddir_check
@@ -166,6 +177,8 @@ boinc_src_unpack() {
}
boinc_src_prepare() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
boinc_builddir_check
default_src_prepare
@@ -177,6 +190,8 @@ boinc_src_prepare() {
}
boinc_src_configure() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
boinc_builddir_check
pushd "${BOINC_BUILD_DIR}" >/dev/null || die
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-02-20 8:46 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-02-20 8:46 UTC (permalink / raw
To: gentoo-commits
commit: d7ab16c621c6dfa45e7a09bcf39c09b34750f180
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Feb 14 15:22:22 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Thu Feb 17 21:11:15 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d7ab16c6
boinc-app.eclass: add debug-print-function calls
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index d62c8a91f..8a92447a2 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -77,6 +77,8 @@ in order to use this application with BOINC.}
# Generate appropriate (R)DEPEND for wrapper-enabled or
# native application.
boinc-app_add_deps() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
if [[ $1 == "--wrapper" ]]; then
RDEPEND="sci-misc/boinc-wrapper"
else
@@ -90,6 +92,8 @@ boinc-app_add_deps() {
# @DESCRIPTION:
# Make sure BOINC_MASTER_URL has a value.
boinc_master_url_check() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
[[ ! ${BOINC_MASTER_URL} ]] && \
die "BOINC_MASTER_URL is not set"
return 0
@@ -99,6 +103,8 @@ boinc_master_url_check() {
# @USAGE:
# @RETURN: non-prefixed default BOINC runtime directory
get_boincdir() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
echo /var/lib/boinc
}
@@ -115,6 +121,8 @@ get_boincdir() {
# -> boinc.berkeley.edu_example
# @CODE
get_project_dirname() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
boinc_master_url_check
local dirname
@@ -129,6 +137,8 @@ get_project_dirname() {
# @USAGE:
# @RETURN: non-prefixed directory where applications and files should be installed
get_project_root() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
echo "$(get_boincdir)/projects/$(get_project_dirname)"
}
@@ -138,6 +148,8 @@ get_project_root() {
# The default appinfo_prepare(). It replaces all occurences
# of @PV@ with its corresponding value.
boinc-app_appinfo_prepare() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
sed -i "$1" \
-e "s:%PV%:${PV}:g" \
|| die "app_info.xml sed failed"
@@ -169,6 +181,8 @@ boinc-app_appinfo_prepare() {
# }
# @CODE
doappinfo() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
(( $# == 1 )) || \
die "${FUNCNAME} takes exactly one argument"
@@ -193,6 +207,8 @@ doappinfo() {
# The default foreach_wrapper_job(). It replaces all occurences
# of @PV@, @EPREFIX@ and @LIBDIR@ strings with their corresponding values.
boinc-wrapper_foreach_wrapper_job() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
sed -i "$1" \
-e "s:@PV@:${PV}:g" \
-e "s:@EPREFIX@:${EPREFIX}:g" \
@@ -227,6 +243,8 @@ boinc-wrapper_foreach_wrapper_job() {
#
# Keep your job.xml files in sync with app_info.xml!
dowrapper() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
for app in "$@"; do
local wrapperjob="${app}_job_${PV}.xml"
local wrapperexe="${app}_wrapper_${PV}"
@@ -256,6 +274,8 @@ dowrapper() {
# Display helpful instructions on how to make the BOINC client use installed
# applications.
boinc-app_pkg_postinst() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
if [[ -f "${EROOT}$(get_boincdir)/master_$(get_project_dirname).xml" ]]; then
if [[ ! ${REPLACING_VERSIONS} ]]; then
# most likely replacing applications downloaded
@@ -289,6 +309,8 @@ boinc-app_pkg_postinst() {
# Display helpful instructions on how to cleanly uninstall unmerged
# applications.
boinc-app_pkg_postrm() {
+ debug-print-function ${FUNCNAME} "${@}"]
+
if [[ ! ${REPLACED_BY_VERSION} ]]; then
local gui_rpc_auth="$(get_boincdir)/gui_rpc_auth.cfg"
local passwd=$(cat "${EROOT}${gui_rpc_auth}")
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-12 19:35 Ronny Gutbrod
0 siblings, 0 replies; 106+ messages in thread
From: Ronny Gutbrod @ 2022-04-12 19:35 UTC (permalink / raw
To: gentoo-commits
commit: 3931b905b44d3728eebfba8097ef6030fc1beac3
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Apr 8 13:21:55 2022 +0000
Commit: Ronny Gutbrod <gentoo <AT> tastytea <DOT> de>
CommitDate: Mon Apr 11 09:40:03 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3931b905
boinc.eclass: fix inherit guard usage
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc.eclass | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/eclass/boinc.eclass b/eclass/boinc.eclass
index f2c28b628..cf5cd8515 100644
--- a/eclass/boinc.eclass
+++ b/eclass/boinc.eclass
@@ -9,14 +9,12 @@
# @DESCRIPTION:
# This eclass provides helper functions to build BOINC applications and libraries.
-inherit autotools toolchain-funcs
-
case ${EAPI} in
8) ;;
*) die "${ECLASS}: EAPI ${EAPI} unsupported."
esac
-# @ECLASS-VARIABLE: BOINC_SUBMODULE
+# @ECLASS_VARIABLE: BOINC_SUBMODULE
# @PRE_INHERIT
# @DEFAULT_UNSET
# @DESCRIPTION:
@@ -26,7 +24,7 @@ esac
#
# If unset, no functions will be exported.
-# @ECLASS-VARIABLE: BOINC_S
+# @ECLASS_VARIABLE: BOINC_S
# @DEFAULT_UNSET
# @DESCRIPTION:
# If defined this variable determines the source directory name after
@@ -34,6 +32,12 @@ esac
# variable supports a wildcard mechanism to help with github tarballs
# that contain the commit hash as part of the directory name.
+if [[ ! ${_BOINC_ECLASS} ]]; then
+
+inherit autotools toolchain-funcs
+
+fi
+
if [[ ${BOINC_SUBMODULE} ]]; then
EXPORT_FUNCTIONS src_unpack src_prepare src_configure
fi
@@ -72,7 +76,7 @@ get_boinc_src() {
}
-# @ECLASS-VARIABLE: BOINC_BUILD_DIR
+# @ECLASS_VARIABLE: BOINC_BUILD_DIR
# @OUTPUT_VARIABLE
# @DESCRIPTION:
# Temporary build directory, where BOINC sources are located.
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-12 19:35 Ronny Gutbrod
0 siblings, 0 replies; 106+ messages in thread
From: Ronny Gutbrod @ 2022-04-12 19:35 UTC (permalink / raw
To: gentoo-commits
commit: 6d8aacbe58de94ea8ed04e6078b5c159907f99b4
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Apr 8 13:15:56 2022 +0000
Commit: Ronny Gutbrod <gentoo <AT> tastytea <DOT> de>
CommitDate: Mon Apr 11 09:40:03 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=6d8aacbe
qbs.eclass: fix inherit guard usage
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/qbs.eclass | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/eclass/qbs.eclass b/eclass/qbs.eclass
index 6c3f06310..af5709e26 100644
--- a/eclass/qbs.eclass
+++ b/eclass/qbs.eclass
@@ -12,16 +12,22 @@
# @DESCRIPTION:
# Utility eclass providing wrapper functions for Qbs build system.
-if [[ ! ${_QBS_ECLASS} ]]; then
-
-case ${EAPI} in
+case ${EAPI:-0} in
8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+ *) die "${ECLASS}: EAPI ${EAPI:-0} unsupported."
esac
+if [[ ! ${_QBS_ECLASS} ]]; then
+
inherit multiprocessing toolchain-funcs qmake-utils
-# @ECLASS-VARIABLE: QBS_COMMAND_ECHO_MODE
+fi
+
+EXPORT_FUNCTIONS src_configure src_compile src_install
+
+if [[ ! ${_QBS_ECLASS} ]]; then
+
+# @ECLASS_VARIABLE: QBS_COMMAND_ECHO_MODE
# @USER_VARIABLE
# @DESCRIPTION:
# Determines what kind of output to show when executing commands. Possible
@@ -38,8 +44,6 @@ inherit multiprocessing toolchain-funcs qmake-utils
BDEPEND="dev-util/qbs"
-EXPORT_FUNCTIONS src_configure src_compile src_install
-
# @FUNCTION: eqbs
# @USAGE: [<qbs args>...]
# @DESCRIPTION:
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-12 19:35 Ronny Gutbrod
0 siblings, 0 replies; 106+ messages in thread
From: Ronny Gutbrod @ 2022-04-12 19:35 UTC (permalink / raw
To: gentoo-commits
commit: 4db76ea2163a20dff8df6ac054d054eb01e93293
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Apr 8 13:19:47 2022 +0000
Commit: Ronny Gutbrod <gentoo <AT> tastytea <DOT> de>
CommitDate: Mon Apr 11 09:40:03 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4db76ea2
boinc-app.eclass: rename @ECLASS_VARIABLE
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 8a92447a2..496dbb337 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -25,7 +25,7 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI} unsupported."
esac
-# @ECLASS-VARIABLE: BOINC_APP_OPTIONAL
+# @ECLASS_VARIABLE: BOINC_APP_OPTIONAL
# @DEFAULT_UNSET
# @DESCRIPTION:
# If set to a non-null value, BOINC part in the ebuild will be
@@ -40,7 +40,7 @@ fi
if [[ ! ${_BOINC_APP_ECLASS} ]]; then
-# @ECLASS-VARIABLE: BOINC_MASTER_URL
+# @ECLASS_VARIABLE: BOINC_MASTER_URL
# @REQUIRED
# @DESCRIPTION:
# Each project is publicly identified by a master URL. It also serves
@@ -51,20 +51,20 @@ if [[ ! ${_BOINC_APP_ECLASS} ]]; then
# grep "<master_url>" /var/lib/boinc/client_state.xml
# @CODE
-# @ECLASS-VARIABLE: BOINC_INVITATION_CODE
+# @ECLASS_VARIABLE: BOINC_INVITATION_CODE
# @DEFAULT_UNSET
# @DESCRIPTION:
# Some projects restrict account creation to those who present an
# "invitation code". Write it to BOINC_INVITATION_CODE variable if
# it's published on project's website.
-# @ECLASS-VARIABLE: HOMEPAGE
+# @ECLASS_VARIABLE: HOMEPAGE
# @DESCRIPTION:
# This variable defines the HOMEPAGE for BOINC projects if BOINC_MASTER_URL
# was set before inherit.
: ${HOMEPAGE:=${BOINC_MASTER_URL}}
-# @ECLASS-VARIABLE: BOINC_APP_HELPTEXT
+# @ECLASS_VARIABLE: BOINC_APP_HELPTEXT
# @DESCRIPTION:
# Help message to display during the pkg_postinst phase
: ${BOINC_APP_HELPTEXT:=\
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-14 13:31 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-04-14 13:31 UTC (permalink / raw
To: gentoo-commits
commit: ce3b957642e8aff38a6c923b8a5bc79ef9f20729
Author: Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
AuthorDate: Thu Apr 14 09:13:00 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Thu Apr 14 09:26:30 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ce3b9576
mpv-plugin.eclass: new eclass
Signed-off-by: Nicola Smaniotto <smaniotto.nicola <AT> gmail.com>
eclass/mpv-plugin.eclass | 128 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 128 insertions(+)
diff --git a/eclass/mpv-plugin.eclass b/eclass/mpv-plugin.eclass
new file mode 100644
index 000000000..01212adec
--- /dev/null
+++ b/eclass/mpv-plugin.eclass
@@ -0,0 +1,128 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: mpv-plugin.eclass
+# @MAINTAINER:
+# Nicola Smaniotto <smaniotto.nicola@gmail.com>
+# @AUTHOR:
+# Nicola Smaniotto <smaniotto.nicola@gmail.com>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: install mpv plugins
+# @DESCRIPTION:
+# This eclass simplifies the installation of mpv plugins into system-wide
+# directories. Also handles the mpv dependency and provides an USE flag
+# for automatic loading of the plugin.
+
+case ${EAPI:-0} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} unsupported."
+esac
+
+EXPORT_FUNCTIONS src_install pkg_postinst
+
+# @ECLASS_VARIABLE: USE_MPV
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Controls adding media-video/mpv dependency. The allowed values are:
+#
+# - rdepend -- add it to RDEPEND
+#
+# - depend -- add it to DEPEND+RDEPEND with the binding slot operator (the
+# default)
+
+# @ECLASS_VARIABLE: MPV_REQ_USE
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# The list of USE flags required to be enabled on mpv, formed as a
+# USE-dependency string.
+#
+# Example:
+# @CODE@
+# MPV_REQ_USE="lua"
+# @CODE@
+
+if [[ ! ${_MPV_PLUGIN_ECLASS} ]]; then
+
+# @FUNCTION: _mpv-plugin_set_globals
+# @INTERNAL
+# @USAGE:
+# @DESCRIPTION:
+# Sets all the global output variables provided by this eclass.
+# This function must be called once, in global scope.
+_mpv-plugin_set_globals() {
+ local MPV_PKG_DEP
+
+ SLOT="0"
+ IUSE="+autoload"
+
+ MPV_PKG_DEP="media-video/mpv"
+ case ${USE_MPV:-depend} in
+ rdepend)
+ ;;
+ depend)
+ MPV_PKG_DEP+=":="
+ ;;
+ *)
+ die "Invalid USE_MPV=${USE_MPV}"
+ ;;
+ esac
+ if [ ${MPV_REQ_USE} ]; then
+ MPV_PKG_DEP+="[${MPV_REQ_USE}]"
+ fi
+
+ RDEPEND="${MPV_PKG_DEP}"
+ if [[ ${USE_MPV} == depend ]]; then
+ DEPEND="${MPV_PKG_DEP}"
+ fi
+}
+_mpv-plugin_set_globals
+
+# @ECLASS_VARIABLE: MPV_PLUGIN_FILES
+# @DEFAULT_UNSET
+# @REQUIRED
+# @DESCRIPTION:
+# Array containing the list of files to be installed.
+
+# @FUNCTION: mpv-plugin_src_install
+# @USAGE:
+# @DESCRIPTION:
+# Install the specified files in ${D} and symlink them if the autoload flag is
+# set.
+# The ebuild must specify the file list in the MPV_PLUGIN_FILES array.
+mpv-plugin_src_install() {
+ if [[ ! ${MPV_PLUGIN_FILES} ]]; then
+ die "${ECLASS}: no files specified in MPV_PLUGIN_FILES, cannot install"
+ fi
+
+ insinto /usr/$(get_libdir)/mpv
+ for f in "${MPV_PLUGIN_FILES[@]}"; do
+ doins "${f}"
+ use autoload && dosym -r "/usr/$(get_libdir)/mpv/${f}" "/etc/mpv/scripts/${f}"
+ done
+
+ einstalldocs
+}
+
+# @FUNCTION: mpv-plugin_pkg_postinst
+# @USAGE:
+# @DESCRIPTION:
+# Warns the user of the existence of the autoload use flag.
+mpv-plugin_pkg_postinst() {
+ if ! use autoload; then
+ elog
+ elog "The plugin has not been installed to /etc/mpv/scripts for autoloading."
+ elog "You have to activate it manually by passing"
+ for f in "${MPV_PLUGIN_FILES[@]}"; do
+ elog " \"${EPREFIX}/usr/$(get_libdir)/mpv/${f}\""
+ done
+ elog "as script option to mpv or symlinking the library to \"scripts/\" in your mpv"
+ elog "config directory."
+ elog "Alternatively, activate the autoload use flag."
+ elog
+ fi
+}
+
+_MPV_PLUGIN_ECLASS=1
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-15 20:58 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-04-15 20:58 UTC (permalink / raw
To: gentoo-commits
commit: 4ec6a5d7055d7197a3eb9f8b9ab95a0c9a9e1b83
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Fri Apr 15 17:46:55 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Fri Apr 15 20:34:21 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4ec6a5d7
R-packages.eclass: add documentation comments
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 120 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 97 insertions(+), 23 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 6cbf9d7d3..51765af2b 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -1,9 +1,25 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
+# @ECLASS: R-packages.eclass
+# @AUTHOR:
+# André Erdmann <dywi@mailerd.de>
+# Denis Dupeyron <calchan@gentoo.org>
+# Benda Xu <heroxbd@gentoo.org>
+# Alessandro Barbieri <lssndrbarbieri@gmail.com>
+# @BLURB: eclass to build R packages
+# @MAINTAINER:
+# Alessandro Barbieri <lssndrbarbieri@gmail.com>
+# @SUPPORTED_EAPIS: 7
+
inherit eutils optfeature toolchain-funcs
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst
+case ${EAPI} in
+ 7) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install pkg_postinst
SRC_URI="mirror://cran/src/contrib/${PN}_${PV}.tar.gz"
HOMEPAGE="https://cran.r-project.org/package=${PN}"
@@ -12,14 +28,24 @@ SLOT="0"
DEPEND="dev-lang/R"
RDEPEND="${DEPEND}"
+BDEPEND="sys-apps/pkgcore"
-dodocrm() {
+# @FUNCTION: _movelink
+# @INTERNAL
+# @USAGE: [<source> <dest>]
+# @DESCRIPTION:
+# <dest> will contain symlinks to everything in <source>
+_movelink() {
if [ -e "${1}" ]; then
- dodoc -r "${1}"
- rm -rf "${1}" || die
+ local rp1="$(realpath ${1})" || die
+ mv "${rp1}" "${2}" || die
+ cp -rsf "${2}" "${rp1}" || die
fi
}
+# @FUNCTION: R-packages_src_unpack
+# @DESCRIPTION:
+# function to unpack R packages into the right folder
R-packages_src_unpack() {
unpack ${A}
if [[ -d "${PN//_/.}" ]] && [[ ! -d "${P}" ]]; then
@@ -27,43 +53,91 @@ R-packages_src_unpack() {
fi
}
+# @FUNCTION: R-packages_src_prepare
+# @DESCRIPTION:
+# function to remove unwanted files from the sources
R-packages_src_prepare() {
rm -f LICENSE || die
default
}
+# @FUNCTION: R-packages_src_configure
+# @DESCRIPTION:
+# dummy function to disable configure
+R-packages_src_configure() { :; }
+
+# @FUNCTION: R-packages_src_compile
+# @DESCRIPTION:
+# function that will pass some environment variables to R and then build/install the package
R-packages_src_compile() {
- MAKEFLAGS="AR=$(tc-getAR) CFLAGS=${CFLAGS// /\\ } CXXFLAGS=${CXXFLAGS// /\\ } FFLAGS=${FFLAGS// /\\ } FCFLAGS=${FCFLAGS// /\\ } LDFLAGS=${LDFLAGS// /\\ }" R CMD INSTALL . -l "${WORKDIR}" "--byte-compile" || die
+ MAKEFLAGS=" \
+ ${MAKEFLAGS// /\\ } \
+ AR=$(tc-getAR) \
+ CC=$(tc-getCC) \
+ CPP=$(tc-getCPP) \
+ CXX=$(tc-getCXX) \
+ FC=$(tc-getFC) \
+ LD=$(tc-getLD) \
+ NM=$(tc-getNM) \
+ RANLIB=$(tc-getRANLIB) \
+ CFLAGS=${CFLAGS// /\\ } \
+ CPPFLAGS=${CPPFLAGS// /\\ } \
+ CXXFLAGS=${CXXFLAGS// /\\ } \
+ FFLAGS=${FFLAGS// /\\ } \
+ FCFLAGS=${FCFLAGS// /\\ } \
+ LDFLAGS=${LDFLAGS// /\\ } \
+ MAKEOPTS=${MAKEOPTS// /\\ } \
+ " \
+ R CMD INSTALL . -l "${WORKDIR}" "--byte-compile" || die
}
+
+# @FUNCTION: R-packages_src_install
+# @DESCRIPTION:
+# function to move the files in the right folders
+# documentation and examples to docsdir, symlinked back to R site-library (to allow access from within R)
+# everything else to R site-library
R-packages_src_install() {
- cd "${WORKDIR}/${PN//_/.}" || die
+ pushd "${WORKDIR}/${PN//_/.}" || die
- dodocrm examples || die
- #dodocrm DESCRIPTION || die #keep this
- dodocrm NEWS.md || die
- dodocrm README.md || die
- dodocrm html || die
+ local DOCS_DIR="${ED}/usr/share/doc/${PF}"
+ mkdir -p "${DOCS_DIR}" || die
+
+ for i in NEWS.md README.md DESCRIPTION examples ; do
+ _movelink "${i}" "${DOCS_DIR}/${i}" || die
+ done
+
+ if [ -e html ]; then
+ _movelink html "${DOCS_DIR}/html" || die
+ docompress -x "${DOCS_DIR}/html"
+ fi
if [ -e doc ]; then
- if [ -e doc/html ]; then
- docinto "${DOCSDIR}/html"
- dodoc -r doc/*.html
- rm -r doc/*.html || die
- docompress -x "${DOCSDIR}/html"
- fi
-
- docinto "${DOCSDIR}"
- dodoc -r doc/.
- rm -r doc || die
+ pushd doc || die
+ for i in * ; do
+ _movelink "${i}" "${DOCS_DIR}/${i}" || die
+ done
+ popd || die
+ fi
+ if [ -e doc/html ]; then
+ docompress -x "${DOCS_DIR}/html"
fi
+ docompress -x "${DOCS_DIR}"
insinto "/usr/$(get_libdir)/R/site-library"
doins -r "${WORKDIR}/${PN//_/.}"
}
+# @FUNCTION: R-packages_pkg_postinst
+# @DESCRIPTION:
+# function that will prompt to install the suggested packages if they exist
R-packages_pkg_postinst() {
if [ -v SUGGESTED_PACKAGES ]; then
- optfeature "having the upstream suggested packages" "${SUGGESTED_PACKAGES}"
+ for p in ${SUGGESTED_PACKAGES} ; do
+ pexist=$(pquery -n1 "${p}" 2>/dev/null) || die
+ if [ -n "${pexist}" ]; then
+ optfeature "having the upstream suggested package" "${p}"
+ fi
+ done
fi
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-04-15 20:58 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-04-15 20:58 UTC (permalink / raw
To: gentoo-commits
commit: b2710c1d1c0ff01dbe02764a127291b55331b455
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Fri Apr 15 17:47:32 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Fri Apr 15 20:34:21 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=b2710c1d
octaveforge.eclass: add documentation comments
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 86 ++++++++++++++++++++++++++++++++++++-----------
1 file changed, 67 insertions(+), 19 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 8a7fe0396..b9303884c 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -1,43 +1,72 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-#
-# Original Author: Rafael G. Martins <rafael@rafaelmartins.eng.br>
-# Purpose: octaveforge helper eclass.
-#
+# @ECLASS: octaveforge.eclass
+# @AUTHOR:
+# Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# Alessandro Barbieri <lssndrbarbieri@gmail.com>
+# @BLURB: octaveforge helper eclass.
+# @MAINTAINER:
+# Alessandro Barbieri <lssndrbarbieri@gmail.com>
+# @SUPPORTED_EAPIS: 8
+
+inherit autotools
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+EXPORT_FUNCTIONS src_unpack src_prepare src_install pkg_postinst pkg_prerm pkg_postrm
# @ECLASS-VARIABLE: OCTAVEFORGE_CAT
# @DESCRIPTION:
# the octave-forge category of the package.
OCTAVEFORGE_CAT="${OCTAVEFORGE_CAT:-main}"
+# @ECLASS-VARIABLE: REPO_URI
+# @DESCRIPTION:
+# URI to the sourceforge octave-forge repository
REPO_URI="http://svn.code.sf.net/p/octave/code/trunk/octave-forge"
-inherit autotools
-SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
+# defining some paths
+
+# @ECLASS-VARIABLE: OCT_ROOT
+# @DESCRIPTION:
+# full path to octave share
+OCT_ROOT="/usr/share/octave"
+
+# @ECLASS-VARIABLE: OCT_PKGDIR
+# @DESCRIPTION:
+# path to octave pkgdir
+OCT_PKGDIR="${OCT_ROOT}/packages"
+
+# @ECLASS-VARIABLE: OCT_BIN
+# @DESCRIPTION:
+# full path to octave binary
+OCT_BIN="$(type -p octave)"
SRC_URI="
- ${SRC_URI}
+ mirror://sourceforge/octave/${P}.tar.gz
${REPO_URI}/packages/package_Makefile.in -> octaveforge_Makefile
${REPO_URI}/packages/package_configure.in -> octaveforge_configure
"
SLOT="0"
-# defining some paths
-OCT_ROOT="/usr/share/octave"
-OCT_PKGDIR="${OCT_ROOT}/packages"
-OCT_BIN="$(type -p octave)"
-
-EXPORT_FUNCTIONS src_unpack src_prepare src_install pkg_postinst pkg_prerm pkg_postrm
-
+# @FUNCTION: octaveforge_src_unpack
+# @DESCRIPTION:
+# function to unpack and set the correct S
octaveforge_src_unpack() {
default
if [ ! -d "${WORKDIR}/${P}" ]; then
S="${WORKDIR}/${PN}"
- cd "${S}" || die
+ pushd "${S}" || die
fi
}
+# @FUNCTION: octaveforge_src_prepare
+# @DESCRIPTION:
+# function to add octaveforge specific makefile and configure and run autogen.sh if available
octaveforge_src_prepare() {
for filename in Makefile configure; do
cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}" || die
@@ -48,7 +77,9 @@ octaveforge_src_prepare() {
chmod 0755 "${S}/configure" || die
if [ -e "${S}/src/autogen.sh" ]; then
- cd "${S}/src" && ./autogen.sh || die 'failed to run autogen.sh'
+ pushd "${S}/src" || die
+ ./autogen.sh || die 'failed to run autogen.sh'
+ popd || die
fi
if [ -e "${S}/src/Makefile" ]; then
sed -i 's/ -s / /g' "${S}/src/Makefile" || die 'sed failed.'
@@ -56,6 +87,10 @@ octaveforge_src_prepare() {
eapply_user
}
+# @FUNCTION: octaveforge_src_install
+# @DESCRIPTION:
+# function to install the octave package
+# documentation to docsdir
octaveforge_src_install() {
emake DESTDIR="${D}" DISTPKG='Gentoo' install
if [ -d doc/ ]; then
@@ -63,12 +98,20 @@ octaveforge_src_install() {
fi
}
+# @FUNCTION: octaveforge_pkg_postinst
+# @DESCRIPTION:
+# function that will rebuild the octave package database
octaveforge_pkg_postinst() {
einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
- [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}" || die
+ if [ ! -d "${OCT_PKGDIR}" ] ; then
+ mkdir -p "${OCT_PKGDIR}" || die
+ fi
"${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" &> /dev/null || die 'failed to register the package.'
}
+# @FUNCTION: octaveforge_pkg_prerm
+# @DESCRIPTION:
+# function that will run on_uninstall routines to prepare the package to remove
octaveforge_pkg_prerm() {
einfo 'Running on_uninstall routines to prepare the package to remove.'
local pkgdir=$(
@@ -89,8 +132,13 @@ octaveforge_pkg_prerm() {
fi
}
+# @FUNCTION: octaveforge_pkg_postrm
+# @DESCRIPTION:
+# function that will rebuild the octave package database
octaveforge_pkg_postrm() {
einfo 'Rebuilding the Octave package database.'
- [ -d "${OCT_PKGDIR}" ] || mkdir -p "${OCT_PKGDIR}" || die
+ if [ ! -d "${OCT_PKGDIR}" ] ; then
+ mkdir -p "${OCT_PKGDIR}" || die
+ fi
"${OCT_BIN}" -H --silent --eval 'pkg rebuild' &> /dev/null || die 'failed to rebuild the package database'
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-05-05 14:42 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-05-05 14:42 UTC (permalink / raw
To: gentoo-commits
commit: f16593b366ff0061d602f4dc792a2e2a26006733
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed May 4 20:12:03 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Thu May 5 07:32:17 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=f16593b3
octaveforge.eclass: use bash style tests
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index b9303884c..590f21a1c 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -58,7 +58,7 @@ SLOT="0"
# function to unpack and set the correct S
octaveforge_src_unpack() {
default
- if [ ! -d "${WORKDIR}/${P}" ]; then
+ if [[ ! -d "${WORKDIR}/${P}" ]]; then
S="${WORKDIR}/${PN}"
pushd "${S}" || die
fi
@@ -76,12 +76,12 @@ octaveforge_src_prepare() {
sed -i 's|octave_config_info|__octave_config_info__|g' Makefile || die
chmod 0755 "${S}/configure" || die
- if [ -e "${S}/src/autogen.sh" ]; then
+ if [[ -e "${S}/src/autogen.sh" ]]; then
pushd "${S}/src" || die
./autogen.sh || die 'failed to run autogen.sh'
popd || die
fi
- if [ -e "${S}/src/Makefile" ]; then
+ if [[ -e "${S}/src/Makefile" ]]; then
sed -i 's/ -s / /g' "${S}/src/Makefile" || die 'sed failed.'
fi
eapply_user
@@ -93,7 +93,7 @@ octaveforge_src_prepare() {
# documentation to docsdir
octaveforge_src_install() {
emake DESTDIR="${D}" DISTPKG='Gentoo' install
- if [ -d doc/ ]; then
+ if [[ -d doc/ ]]; then
dodoc -r doc/*
fi
}
@@ -103,7 +103,7 @@ octaveforge_src_install() {
# function that will rebuild the octave package database
octaveforge_pkg_postinst() {
einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
- if [ ! -d "${OCT_PKGDIR}" ] ; then
+ if [[ ! -d "${OCT_PKGDIR}" ]] ; then
mkdir -p "${OCT_PKGDIR}" || die
fi
"${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" &> /dev/null || die 'failed to register the package.'
@@ -122,7 +122,7 @@ octaveforge_pkg_prerm() {
"
)
rm -f "${pkgdir}/packinfo/on_uninstall.m" || die
- if [ -e "${pkgdir}/packinfo/on_uninstall.m.orig" ]; then
+ if [[ -e "${pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
mv "$pkgdir"/packinfo/on_uninstall.m{.orig,} || die
cd "$pkgdir/packinfo" || die
"${OCT_BIN}" -H -q --no-site-file --eval "
@@ -137,7 +137,7 @@ octaveforge_pkg_prerm() {
# function that will rebuild the octave package database
octaveforge_pkg_postrm() {
einfo 'Rebuilding the Octave package database.'
- if [ ! -d "${OCT_PKGDIR}" ] ; then
+ if [[ ! -d "${OCT_PKGDIR}" ]] ; then
mkdir -p "${OCT_PKGDIR}" || die
fi
"${OCT_BIN}" -H --silent --eval 'pkg rebuild' &> /dev/null || die 'failed to rebuild the package database'
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-05-05 14:42 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-05-05 14:42 UTC (permalink / raw
To: gentoo-commits
commit: 450bc33de335b67a9ea402faa2395d2e5b10a4a1
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed May 4 20:11:42 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Thu May 5 07:32:17 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=450bc33d
R-packages.eclass: use bash style tests
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 1412ba802..0be59a20c 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -36,7 +36,7 @@ BDEPEND="sys-apps/pkgcore"
# @DESCRIPTION:
# <dest> will contain symlinks to everything in <source>
_movelink() {
- if [ -e "${1}" ]; then
+ if [[ -e "${1}" ]]; then
local rp1="$(realpath ${1})" || die
mv "${rp1}" "${2}" || die
cp -rsf "${2}" "${rp1}" || die
@@ -110,11 +110,11 @@ R-packages_src_install() {
docompress -x "${DOCS_DIR}/${i}"
done
- if [ -e html ]; then
+ if [[ -e html ]]; then
_movelink html "${ED}${DOCS_DIR}/html" || die
docompress -x "${DOCS_DIR}/html"
fi
- if [ -e doc ]; then
+ if [[ -e doc ]]; then
pushd doc || die
for i in * ; do
_movelink "${i}" "${ED}${DOCS_DIR}/${i}" || die
@@ -122,7 +122,7 @@ R-packages_src_install() {
done
popd || die
fi
- if [ -e doc/html ]; then
+ if [[ -e doc/html ]]; then
docompress -x "${DOCS_DIR}/html"
fi
docompress -x "${DOCS_DIR}"
@@ -137,10 +137,10 @@ R-packages_src_install() {
# @DESCRIPTION:
# function that will prompt to install the suggested packages if they exist
R-packages_pkg_postinst() {
- if [ -v SUGGESTED_PACKAGES ]; then
+ if [[ -v SUGGESTED_PACKAGES ]]; then
for p in ${SUGGESTED_PACKAGES} ; do
pexist=$(pquery -n1 "${p}" 2>/dev/null) || die
- if [ -n "${pexist}" ]; then
+ if [[ -n "${pexist}" ]]; then
optfeature "having the upstream suggested package" "${p}"
fi
done
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-05-05 14:42 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-05-05 14:42 UTC (permalink / raw
To: gentoo-commits
commit: 14617d41adcaac22702439046b5dad6a5979ac94
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Thu May 5 07:24:49 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Thu May 5 07:32:17 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=14617d41
octaveforge.eclass: move octaveforge makefile logic into the eclass
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 128 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 99 insertions(+), 29 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 590f21a1c..7f5f38dee 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -17,12 +17,7 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI} unsupported."
esac
-EXPORT_FUNCTIONS src_unpack src_prepare src_install pkg_postinst pkg_prerm pkg_postrm
-
-# @ECLASS-VARIABLE: OCTAVEFORGE_CAT
-# @DESCRIPTION:
-# the octave-forge category of the package.
-OCTAVEFORGE_CAT="${OCTAVEFORGE_CAT:-main}"
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst pkg_prerm pkg_postrm
# @ECLASS-VARIABLE: REPO_URI
# @DESCRIPTION:
@@ -48,7 +43,6 @@ OCT_BIN="$(type -p octave)"
SRC_URI="
mirror://sourceforge/octave/${P}.tar.gz
- ${REPO_URI}/packages/package_Makefile.in -> octaveforge_Makefile
${REPO_URI}/packages/package_configure.in -> octaveforge_configure
"
SLOT="0"
@@ -68,12 +62,7 @@ octaveforge_src_unpack() {
# @DESCRIPTION:
# function to add octaveforge specific makefile and configure and run autogen.sh if available
octaveforge_src_prepare() {
- for filename in Makefile configure; do
- cp "${DISTDIR}/octaveforge_${filename}" "${S}/${filename}" || die
- done
-
- #octave_config_info is deprecated in octave5
- sed -i 's|octave_config_info|__octave_config_info__|g' Makefile || die
+ cp "${DISTDIR}/octaveforge_configure" "${S}/configure" || die
chmod 0755 "${S}/configure" || die
if [[ -e "${S}/src/autogen.sh" ]]; then
@@ -87,12 +76,87 @@ octaveforge_src_prepare() {
eapply_user
}
+octaveforge_src_compile() {
+ PKGDIR="$(pwd | sed -e 's|^.*/||' || die)"
+ export OCT_PACKAGE="${TMPDIR}/${PKGDIR}.tar.gz"
+ export OCT_PKG=$(echo "${PKGDIR}" | sed -e 's|^\(.*\)-.*|\1|' || die)
+ export MKOCTFILE="mkoctfile -v"
+
+ cmd="disp(__octave_config_info__('octlibdir'));"
+ OCTLIBDIR=$(octavecommand "${cmd}" || die)
+ export LFLAGS="-L${OCTLIBDIR}"
+
+ if [[ -e src/Makefile ]]; then
+ emake -C src all
+ fi
+
+ if [[ -e src/Makefile ]]; then
+ mv src/Makefile src/Makefile.disable || die
+ fi
+ if [[ -e src/configure ]]; then
+ mv src/configure src/configure.disable || die
+ fi
+
+ pushd .. || die
+ tar -czf "${OCT_PACKAGE}" "${PKGDIR}" || die
+}
+
# @FUNCTION: octaveforge_src_install
# @DESCRIPTION:
# function to install the octave package
# documentation to docsdir
octaveforge_src_install() {
- emake DESTDIR="${D}" DISTPKG='Gentoo' install
+ TMPDIR="${T}"
+ DESTDIR="${D}"
+ DISTPKG='Gentoo'
+
+ pushd ../ || die
+ if [[ "X${DISTPKG}X" != "XX" ]]; then
+ stripcmd="
+ unlink(pkg('local_list'));
+ unlink(pkg('global_list'));
+ "
+ fi
+ if [[ "X${DESTDIR}X" = "XX" ]]; then
+ cmd="
+ warning('off','all');
+ pkg('install','${OCT_PACKAGE}');l=pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${OCT_PKG}'),l)}.dir);
+ "
+ oct_pkgdir=$(octavecommand "${cmd}${stripcmd}" || die)
+ else
+ cmd="disp(fullfile(OCTAVE_HOME(),'share','octave'));"
+ shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+ cmd="disp(fullfile(__octave_config_info__('libexecdir'),'octave'));"
+ libexecprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+ octprefix="${shareprefix}/packages" || die
+ archprefix="${libexecprefix}/packages" || die
+ if [[ ! -e "${octprefix}" ]]; then
+ mkdir -p "${octprefix}" || die
+ fi
+ if [[ ! -e "${archprefix}" ]]; then
+ mkdir -p "${archprefix}" || die
+ fi
+ cmd="
+ warning('off','all');
+ pkg('prefix','${octprefix}','${archprefix}');
+ pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
+ "
+ octavecommand "${cmd}" || die
+ cmd="
+ warning('off','all');
+ pkg('prefix','${octprefix}','${archprefix}');
+ pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+ l=pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${OCT_PKG}'),l)}.dir);
+ "
+ oct_pkgdir=$(octavecommand "${cmd}${stripcmd}" || die)
+ fi
+ export oct_pkgdir
+
if [[ -d doc/ ]]; then
dodoc -r doc/*
fi
@@ -106,7 +170,8 @@ octaveforge_pkg_postinst() {
if [[ ! -d "${OCT_PKGDIR}" ]] ; then
mkdir -p "${OCT_PKGDIR}" || die
fi
- "${OCT_BIN}" -H -q --no-site-file --eval "pkg('rebuild');" &> /dev/null || die 'failed to register the package.'
+ cmd="pkg('rebuild');"
+ octavecommand "${cmd}" || die 'failed to register the package.'
}
# @FUNCTION: octaveforge_pkg_prerm
@@ -114,21 +179,21 @@ octaveforge_pkg_postinst() {
# function that will run on_uninstall routines to prepare the package to remove
octaveforge_pkg_prerm() {
einfo 'Running on_uninstall routines to prepare the package to remove.'
- local pkgdir=$(
- "${OCT_BIN}" -H -q --no-site-file --eval "
- pkg('rebuild');
- l = pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- "
- )
- rm -f "${pkgdir}/packinfo/on_uninstall.m" || die
- if [[ -e "${pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
- mv "$pkgdir"/packinfo/on_uninstall.m{.orig,} || die
- cd "$pkgdir/packinfo" || die
- "${OCT_BIN}" -H -q --no-site-file --eval "
+ cmd="
+ pkg('rebuild');
+ l = pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
+ "
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
+ rm -f "${oct_pkgdir}/packinfo/on_uninstall.m" || die
+ if [[ -e "${oct_pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
+ mv "$oct_pkgdir"/packinfo/on_uninstall.m{.orig,} || die
+ pushd "$oct_pkgdir/packinfo" || die
+ cmd="
l = pkg('list');
on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
- " &> /dev/null || die 'failed to remove the package'
+ "
+ octavecommand "${cmd}" || die 'failed to remove the package'
fi
}
@@ -140,5 +205,10 @@ octaveforge_pkg_postrm() {
if [[ ! -d "${OCT_PKGDIR}" ]] ; then
mkdir -p "${OCT_PKGDIR}" || die
fi
- "${OCT_BIN}" -H --silent --eval 'pkg rebuild' &> /dev/null || die 'failed to rebuild the package database'
+ cmd="pkg('rebuild');"
+ "${OCT_BIN}" -H --silent "${cmd}" || die 'failed to rebuild the package database'
+}
+
+octavecommand() {
+ "${OCT_BIN}" -H -q --no-site-file --eval "$1"
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-05-12 9:14 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-05-12 9:14 UTC (permalink / raw
To: gentoo-commits
commit: 5778e18ce802eadc134be8da814893287fd06d8c
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed May 11 10:18:19 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Wed May 11 11:29:17 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=5778e18c
octaveforge.eclass: add octaveforge_src_test()
Closes: https://bugs.gentoo.org/843536
Closes: https://bugs.gentoo.org/843521
Closes: https://bugs.gentoo.org/843518
Closes: https://bugs.gentoo.org/843515
Closes: https://bugs.gentoo.org/843512
Closes: https://bugs.gentoo.org/843509
Closes: https://bugs.gentoo.org/843503
Closes: https://bugs.gentoo.org/843500
Closes: https://bugs.gentoo.org/843497
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 125 +++++++++++++++++++++++++---------------------
1 file changed, 68 insertions(+), 57 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index fb708e3a7..bb6176be9 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -17,7 +17,7 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI} unsupported."
esac
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install pkg_postinst pkg_prerm pkg_postrm
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install src_test pkg_postinst pkg_prerm pkg_postrm
# @ECLASS-VARIABLE: REPO_URI
# @DESCRIPTION:
@@ -103,65 +103,21 @@ octaveforge_src_compile() {
# @FUNCTION: octaveforge_src_install
# @DESCRIPTION:
# function to install the octave package
-# documentation to docsdir
octaveforge_src_install() {
- TMPDIR="${T}"
- DESTDIR="${D}"
- DISTPKG='Gentoo'
+ DESTDIR="${D}" _octaveforge_pkg_install || die
+}
- pushd ../ || die
- if [[ "X${DISTPKG}X" != "XX" ]]; then
- stripcmd="
- unlink(pkg('local_list'));
- unlink(pkg('global_list'));
- "
- fi
- if [[ "X${DESTDIR}X" = "XX" ]]; then
- cmd="
- warning('off','all');
- pkg('install','${OCT_PACKAGE}');
- l=pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- ${stripcmd}
- "
- oct_pkgdir=$(octavecommand "${cmd}" || die)
- else
- cmd="disp(fullfile(__octave_config_info__('datadir'),'octave'));"
- shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
- cmd="disp(fullfile(__octave_config_info__('libdir'),'octave'));"
- libprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
- octprefix="${shareprefix}/packages" || die
- archprefix="${libprefix}/packages" || die
- if [[ ! -e "${octprefix}" ]]; then
- mkdir -p "${octprefix}" || die
- fi
- if [[ ! -e "${archprefix}" ]]; then
- mkdir -p "${archprefix}" || die
- fi
- cmd="
- warning('off','all');
- pkg('prefix','${octprefix}','${archprefix}');
- pkg('global_list',fullfile('${shareprefix}','octave_packages'));
- pkg('local_list',fullfile('${shareprefix}','octave_packages'));
- pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
- "
- octavecommand "${cmd}" || die
- cmd="
- warning('off','all');
- pkg('prefix','${octprefix}','${archprefix}');
- pkg('global_list',fullfile('${shareprefix}','octave_packages'));
- pkg('local_list',fullfile('${shareprefix}','octave_packages'));
- l=pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- ${stripcmd}
- "
- oct_pkgdir=$(octavecommand "${cmd}" || die)
- fi
- export oct_pkgdir
+octaveforge_src_test() {
+ DESTDIR="${T}" _octaveforge_pkg_install || die
- if [[ -d doc/ ]]; then
- dodoc -r doc/*
- fi
+ # cargo culted from Fedora
+ cmd="
+ pkg('load','${PN}');
+ oruntests('${oct_pkgdir}');
+ unlink(pkg('local_list'));
+ unlink(pkg('global_list'));
+ "
+ octavecommand "${cmd}" || die 'failed testing'
}
# @FUNCTION: octaveforge_pkg_postinst
@@ -226,3 +182,58 @@ fi
EOF
chmod 0755 "configure" || die
}
+
+_octaveforge_pkg_install() {
+ TMPDIR="${T}"
+ DISTPKG='Gentoo'
+
+ pushd ../ || die
+ if [[ "X${DISTPKG}X" != "XX" ]]; then
+ stripcmd="
+ unlink(pkg('local_list'));
+ unlink(pkg('global_list'));
+ "
+ fi
+ if [[ "X${DESTDIR}X" = "XX" ]]; then
+ cmd="
+ warning('off','all');
+ pkg('install','${OCT_PACKAGE}');
+ l=pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
+ ${stripcmd}
+ "
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
+ else
+ cmd="disp(fullfile(__octave_config_info__('datadir'),'octave'));"
+ shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+ cmd="disp(fullfile(__octave_config_info__('libdir'),'octave'));"
+ libprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
+ octprefix="${shareprefix}/packages" || die
+ archprefix="${libprefix}/packages" || die
+ if [[ ! -e "${octprefix}" ]]; then
+ mkdir -p "${octprefix}" || die
+ fi
+ if [[ ! -e "${archprefix}" ]]; then
+ mkdir -p "${archprefix}" || die
+ fi
+ cmd="
+ warning('off','all');
+ pkg('prefix','${octprefix}','${archprefix}');
+ pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
+ "
+ octavecommand "${cmd}" || die
+ cmd="
+ warning('off','all');
+ pkg('prefix','${octprefix}','${archprefix}');
+ pkg('global_list',fullfile('${shareprefix}','octave_packages'));
+ pkg('local_list',fullfile('${shareprefix}','octave_packages'));
+ l=pkg('list');
+ disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
+ ${stripcmd}
+ "
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
+ fi
+ export oct_pkgdir
+}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-14 18:35 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-06-14 18:35 UTC (permalink / raw
To: gentoo-commits
commit: 0a8c734ce06415d1ace17665675de9c2fa0e33a9
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Tue Jun 14 01:14:48 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Tue Jun 14 08:00:25 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=0a8c734c
R-packages.eclass: remove unneeded edo
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/R-packages.eclass | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 4c4b16fd9..1aa612403 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -37,9 +37,9 @@ BDEPEND="sys-apps/pkgcore"
# <dest> will contain symlinks to everything in <source>
_movelink() {
if [[ -e "${1}" ]]; then
- local rp1="$(edo realpath ${1})"
- edo mv "${rp1}" "${2}"
- edo cp -rsf "${2}" "${rp1}"
+ local rp1="$(realpath ${1} || die)"
+ mv "${rp1}" "${2}" || die
+ cp -rsf "${2}" "${rp1}" || die
fi
}
@@ -49,7 +49,7 @@ _movelink() {
R-packages_src_unpack() {
unpack ${A}
if [[ -d "${PN//_/.}" ]] && [[ ! -d "${P}" ]]; then
- edo mv "${PN//_/.}" "${P}"
+ mv "${PN//_/.}" "${P}" || die
fi
}
@@ -57,9 +57,9 @@ R-packages_src_unpack() {
# @DESCRIPTION:
# function to remove unwanted files from the sources
R-packages_src_prepare() {
- edo rm -f LICENSE
+ rm -f LICENSE || die
default
- edo mkdir -p "${T}/R"
+ mkdir -p "${T}/R" || die
}
# @FUNCTION: R-packages_src_configure
@@ -99,35 +99,35 @@ R-packages_src_compile() {
# documentation and examples to docsdir, symlinked back to R site-library (to allow access from within R)
# everything else to R site-library
R-packages_src_install() {
- edo pushd "${T}/R/${PN//_/.}"
+ pushd "${T}/R/${PN//_/.}" || die
local DOCS_DIR="/usr/share/doc/${PF}"
- edo mkdir -p "${ED}/${DOCS_DIR}"
+ mkdir -p "${ED}/${DOCS_DIR}" || die
for i in NEWS.md README.md DESCRIPTION examples CITATION INDEX NEWS WORDLIST News.Rd ; do
- edo _movelink "${i}" "${ED}${DOCS_DIR}/${i}"
+ _movelink "${i}" "${ED}${DOCS_DIR}/${i}" || die
docompress -x "${DOCS_DIR}/${i}"
done
if [[ -e html ]]; then
- edo _movelink html "${ED}${DOCS_DIR}/html"
+ _movelink html "${ED}${DOCS_DIR}/html" || die
docompress -x "${DOCS_DIR}/html"
fi
if [[ -e doc ]]; then
- edo pushd doc
+ pushd doc || die
for i in * ; do
- edo _movelink "${i}" "${ED}${DOCS_DIR}/${i}"
+ _movelink "${i}" "${ED}${DOCS_DIR}/${i}" || die
docompress -x "${DOCS_DIR}/${i}"
done
- edo popd
+ popd || die
fi
if [[ -e doc/html ]]; then
docompress -x "${DOCS_DIR}/html"
fi
docompress -x "${DOCS_DIR}"
- edo rm -rf tests test
+ rm -rf tests test || die
insinto "/usr/$(get_libdir)/R/site-library"
doins -r "${T}/R/${PN//_/.}"
@@ -139,7 +139,7 @@ R-packages_src_install() {
R-packages_pkg_postinst() {
if [[ -v SUGGESTED_PACKAGES ]]; then
for p in ${SUGGESTED_PACKAGES} ; do
- pexist=$(edo pquery -n1 "${p}" 2>/dev/null)
+ pexist="$(pquery -n1 ${p} 2>/dev/null || die)"
if [[ -n "${pexist}" ]]; then
optfeature "having the upstream suggested package" "${p}"
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-14 18:35 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-06-14 18:35 UTC (permalink / raw
To: gentoo-commits
commit: 8dc69248dca0f9f9420b8650c3bdef6cd8307bb0
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Tue Jun 14 01:22:00 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Tue Jun 14 08:00:25 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8dc69248
octaveforge.eclass: remove unneeded edo
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 66 +++++++++++++++++++++++------------------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 31e1f270d..6f74951a6 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -39,7 +39,7 @@ OCT_PKGDIR="${OCT_ROOT}/packages"
# @ECLASS-VARIABLE: OCT_BIN
# @DESCRIPTION:
# full path to octave binary
-OCT_BIN="$(type -p octave)"
+OCT_BIN="$(type -p octave || die)"
SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
SLOT="0"
@@ -60,19 +60,19 @@ octaveforge_src_unpack() {
octaveforge_src_prepare() {
default
- _generate_configure
+ _generate_configure || die
if [[ -e "${S}/src/configure.ac" ]]; then
- edo pushd "${S}/src"
+ pushd "${S}/src" || die
eautoreconf
- edo popd
+ popd || die
elif [[ -e "${S}/src/autogen.sh" ]]; then
- edo pushd "${S}/src"
+ pushd "${S}/src" || die
edo ./autogen.sh
- edo popd
+ popd || die
fi
if [[ -e "${S}/src/Makefile" ]]; then
- edo sed -i 's/ -s / /g' "${S}/src/Makefile"
+ sed -i 's/ -s / /g' "${S}/src/Makefile" || die
fi
}
@@ -82,7 +82,7 @@ octaveforge_src_compile() {
export MKOCTFILE="mkoctfile -v"
cmd="disp(__octave_config_info__('octlibdir'));"
- OCTLIBDIR=$(edo octavecommand "${cmd}")
+ OCTLIBDIR=$(octavecommand "${cmd}" || die)
export LFLAGS="${LFLAGS} -L${OCTLIBDIR}"
export LDFLAGS="${LDFLAGS} -L${OCTLIBDIR}"
@@ -91,25 +91,25 @@ octaveforge_src_compile() {
fi
if [[ -e src/Makefile ]]; then
- edo mv src/Makefile src/Makefile.disable
+ mv src/Makefile src/Makefile.disable || die
fi
if [[ -e src/configure ]]; then
- edo mv src/configure src/configure.disable
+ mv src/configure src/configure.disable || die
fi
- edo pushd ..
- edo tar -czf "${OCT_PACKAGE}" "${PKGDIR}"
+ pushd .. || die
+ tar -czf "${OCT_PACKAGE}" "${PKGDIR}" || die
}
# @FUNCTION: octaveforge_src_install
# @DESCRIPTION:
# function to install the octave package
octaveforge_src_install() {
- DESTDIR="${D}" edo _octaveforge_pkg_install
+ DESTDIR="${D}" _octaveforge_pkg_install || die
}
octaveforge_src_test() {
- DESTDIR="${T}" edo _octaveforge_pkg_install
+ DESTDIR="${T}" _octaveforge_pkg_install || die
# cargo culted from Fedora
cmd="
@@ -118,7 +118,7 @@ octaveforge_src_test() {
unlink(pkg('local_list'));
unlink(pkg('global_list'));
"
- edo octavecommand "${cmd}"
+ octavecommand "${cmd}" || die
}
# @FUNCTION: octaveforge_pkg_postinst
@@ -127,10 +127,10 @@ octaveforge_src_test() {
octaveforge_pkg_postinst() {
einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
if [[ ! -d "${OCT_PKGDIR}" ]] ; then
- edo mkdir -p "${OCT_PKGDIR}"
+ mkdir -p "${OCT_PKGDIR}" || die
fi
cmd="pkg('rebuild');"
- edo octavecommand "${cmd}"
+ octavecommand "${cmd}" || die
}
# @FUNCTION: octaveforge_pkg_prerm
@@ -143,16 +143,16 @@ octaveforge_pkg_prerm() {
l = pkg('list');
disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
"
- oct_pkgdir=$(edo octavecommand "${cmd}")
- edo rm -f "${oct_pkgdir}/packinfo/on_uninstall.m"
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
+ rm -f "${oct_pkgdir}/packinfo/on_uninstall.m" || die
if [[ -e "${oct_pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
- edo mv "$oct_pkgdir"/packinfo/on_uninstall.m{.orig,}
- edo pushd "$oct_pkgdir/packinfo"
+ mv "$oct_pkgdir"/packinfo/on_uninstall.m{.orig,} || die
+ pushd "$oct_pkgdir/packinfo" || die
cmd="
l = pkg('list');
on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
"
- edo octavecommand "${cmd}"
+ octavecommand "${cmd}" || die
fi
}
@@ -162,7 +162,7 @@ octaveforge_pkg_prerm() {
octaveforge_pkg_postrm() {
einfo 'Rebuilding the Octave package database.'
if [[ ! -d "${OCT_PKGDIR}" ]] ; then
- edo mkdir -p "${OCT_PKGDIR}"
+ mkdir -p "${OCT_PKGDIR}" || die
fi
cmd="pkg('rebuild');"
edo "${OCT_BIN}" -H --silent --no-gui --eval "${cmd}"
@@ -173,7 +173,7 @@ octavecommand() {
}
_generate_configure() {
- edo cat << EOF > configure
+ cat << EOF > configure || die
#! /bin/sh -f
if [ -e src/configure ]; then
@@ -181,14 +181,14 @@ if [ -e src/configure ]; then
./configure $*
fi
EOF
- edo chmod 0755 "configure"
+ chmod 0755 "configure" || die
}
_octaveforge_pkg_install() {
TMPDIR="${T}"
DISTPKG='Gentoo'
- edo pushd ../
+ pushd ../ || die
if [[ "X${DISTPKG}X" != "XX" ]]; then
stripcmd="
unlink(pkg('local_list'));
@@ -203,19 +203,19 @@ _octaveforge_pkg_install() {
disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
${stripcmd}
"
- edo oct_pkgdir=$(edo octavecommand "${cmd}")
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
else
cmd="disp(fullfile(__octave_config_info__('datadir'),'octave'));"
- shareprefix=${DESTDIR}/$(edo octavecommand "${cmd}")
+ shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
cmd="disp(fullfile(__octave_config_info__('libdir'),'octave'));"
- libprefix=${DESTDIR}/$(edo octavecommand "${cmd}")
+ libprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
octprefix="${shareprefix}/packages"
archprefix="${libprefix}/packages"
if [[ ! -e "${octprefix}" ]]; then
- edo mkdir -p "${octprefix}"
+ mkdir -p "${octprefix}" || die
fi
if [[ ! -e "${archprefix}" ]]; then
- edo mkdir -p "${archprefix}"
+ mkdir -p "${archprefix}" || die
fi
cmd="
warning('off','all');
@@ -224,7 +224,7 @@ _octaveforge_pkg_install() {
pkg('local_list',fullfile('${shareprefix}','octave_packages'));
pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
"
- edo octavecommand "${cmd}"
+ octavecommand "${cmd}" || die
cmd="
warning('off','all');
pkg('prefix','${octprefix}','${archprefix}');
@@ -234,7 +234,7 @@ _octaveforge_pkg_install() {
disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
${stripcmd}
"
- oct_pkgdir=$(edo octavecommand "${cmd}")
+ oct_pkgdir=$(octavecommand "${cmd}" || die)
fi
export oct_pkgdir
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-14 18:35 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2022-06-14 18:35 UTC (permalink / raw
To: gentoo-commits
commit: 390cdd54fada331960fa08571194e5e9fba960e9
Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Tue Jun 14 09:10:58 2022 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Tue Jun 14 09:10:58 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=390cdd54
octaveforge.eclass: remove octave detection
Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
eclass/octaveforge.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 6f74951a6..0e2c16604 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -38,8 +38,8 @@ OCT_PKGDIR="${OCT_ROOT}/packages"
# @ECLASS-VARIABLE: OCT_BIN
# @DESCRIPTION:
-# full path to octave binary
-OCT_BIN="$(type -p octave || die)"
+# octave binary name
+OCT_BIN="octave"
SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
SLOT="0"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-29 15:38 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-06-29 15:38 UTC (permalink / raw
To: gentoo-commits
commit: 56b12ae84dcc932450abcab8e2099582cf4e22c0
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Jun 29 08:18:03 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Jun 29 11:52:32 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=56b12ae8
eclass/nimble.eclass: new eclass
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nimble.eclass | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 169 insertions(+)
diff --git a/eclass/nimble.eclass b/eclass/nimble.eclass
new file mode 100644
index 000000000..177a2fbd4
--- /dev/null
+++ b/eclass/nimble.eclass
@@ -0,0 +1,169 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: nimble.eclass
+# @MAINTAINER:
+# Anna Vyalkova <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna Vyalkova <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @PROVIDES: nim-utils
+# @BLURB: eclass to build Nim packages that use nimble as a build system
+# @EXAMPLE:
+# Typical ebuild for a Nim application:
+#
+# EAPI=8
+#
+# inherit nimble
+#
+# ...
+#
+# src_compile() {
+# nimble_src_compile
+# nimble_build scss
+# }
+#
+# ...
+#
+#
+# Typical ebuild for a Nim library:
+#
+# EAPI=8
+#
+# inherit nimble
+#
+# ...
+# SLOT=${PV}
+#
+# set_package_url "https://github.com/example/example"
+
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+if [[ ! ${_NIMBLE_ECLASS} ]]; then
+
+# @ECLASS_VARIABLE: BUILD_DIR
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Build directory, location where all generated files should be placed.
+# If this isn't set, it defaults to ${WORKDIR}/${P}-build.
+
+inherit edo nim-utils ninja-utils
+
+BDEPEND="${NINJA_DEPEND}
+ dev-lang/nim
+ dev-nim/nimbus
+"
+
+# @FUNCTION: set_package_url
+# @USAGE: <url>
+# @DESCRIPTION:
+# If this function is called, nimbus will generate and install a nimblemeta.json
+# file. Some packages specify their dependencies using URLs and nimbus is
+# unable to find them unless a metadata file exists.
+set_package_url() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (( $# == 1 )) || \
+ die "${FUNCNAME} takes exactly one argument"
+
+ _PACKAGE_URL="${1}"
+}
+
+# @FUNCTION: get_package_url
+# @USAGE:
+# @INTERNAL
+# @RETURN: package URL
+get_package_url() {
+ echo "${_PACKAGE_URL}"
+}
+
+# @FUNCTION: nimble_src_configure
+# @USAGE:
+# @DESCRIPTION:
+# Configure the package with nimbus. This will start an out-of-source build.
+# Passes arguments to Nim by reading from an optionally pre-defined local
+# mynimargs bash array.
+# @CODE
+# src_configure() {
+# local mynimargs=(
+# --threads:on
+# )
+# nimble_src_configure
+# }
+# @CODE
+nimble_src_configure() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ -n "${NINJA_DEPEND}" ]] || \
+ ewarn "Unknown value '${NINJA}' for \${NINJA}"
+
+ BUILD_DIR="${BUILD_DIR:-${WORKDIR}/${P}-build}"
+
+ [[ -z ${mynimargs} ]] && local -a mynimargs=()
+ local mynimargstype=$(declare -p mynimargs 2>&-)
+ if [[ "${mynimargstype}" != "declare -a mynimargs="* ]]; then
+ die "mynimargs must be declared as array"
+ fi
+
+ nim_gen_config
+
+ local nimbusargs=(
+ --nimbleDir:"${EPREFIX}"/opt/nimble
+ --binDir:"${EPREFIX}"/usr/bin
+ --url:"$(get_package_url)"
+ "${mynimargs[@]}"
+ )
+
+ edo nimbus "${nimbusargs[@]}" "${S}" "${BUILD_DIR}"
+}
+
+# @FUNCTION: nimble_build
+# @USAGE: [ninja args...]
+# @DESCRIPTION:
+# Function for building the package. All arguments are passed to eninja.
+nimble_build() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ eninja -C "${BUILD_DIR}" "${@}"
+}
+
+# @FUNCTION: nimble_src_compile
+# @USAGE: [ninja args...]
+# @DESCRIPTION:
+# Build the package with Ninja. All arguments are passed to nimble_build.
+nimble_src_compile() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ nimble_build "${@}"
+}
+
+# @FUNCTION: nimble_src_test
+# @USAGE: [ninja args...]
+# @DESCRIPTION:
+# Test the package. All arguments are passed to nimble_build.
+nimble_src_test() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ if nonfatal nimble_build test -n &> /dev/null; then
+ nimble_build test "${@}"
+ fi
+}
+
+# @FUNCTION: nimble_src_install
+# @DESCRIPTION:
+# Install the package with Ninja. All arguments are passed to nimble_build.
+nimble_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ DESTDIR="${D}" nimble_build install "${@}"
+ einstalldocs
+}
+
+_NIMBLE_ECLASS=1
+fi
+
+EXPORT_FUNCTIONS src_configure src_compile src_test src_install
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-29 15:38 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-06-29 15:38 UTC (permalink / raw
To: gentoo-commits
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
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-06-30 17:39 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-06-30 17:39 UTC (permalink / raw
To: gentoo-commits
commit: 9228cc58d0ff44a3c82fee30c56fbf9d4aae540e
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Jun 29 20:26:52 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Thu Jun 30 06:00:04 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=9228cc58
nimble.eclass: drop edo
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nimble.eclass | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/eclass/nimble.eclass b/eclass/nimble.eclass
index 60bd28689..4c80bd2a9 100644
--- a/eclass/nimble.eclass
+++ b/eclass/nimble.eclass
@@ -57,7 +57,7 @@ if [[ ! ${_NIMBLE_ECLASS} ]]; then
# Force ninja because samu doesn't work correctly.
NINJA="ninja"
-inherit edo nim-utils ninja-utils
+inherit nim-utils ninja-utils
BDEPEND="${NINJA_DEPEND}
dev-lang/nim
@@ -138,7 +138,9 @@ nimble_src_configure() {
"${mynimargs[@]}"
)
- edo nimbus "${nimbusargs[@]}" "${S}" "${BUILD_DIR}"
+ set -- nimbus "${nimbusargs[@]}" "${S}" "${BUILD_DIR}"
+ echo "${@}" >&2
+ "${@}" || die "${*} failed"
}
# @FUNCTION: nimble_build
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-11 6:54 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-11 6:54 UTC (permalink / raw
To: gentoo-commits
commit: 88cc11da55f9224341be015595d62397bc535b4d
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun Jul 10 03:36:07 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sun Jul 10 03:36:07 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=88cc11da
boinc-app.eclass: add acct-user deps
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 2b6fc5e40..540fc8ea0 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -5,7 +5,7 @@
# @MAINTAINER:
# Anna Vyalkova <cyber+gentoo@sysrq.in>
# @SUPPORTED_EAPIS: 8
-# @BLURB: Eclass that provides base functions for installing BOINC applications.
+# @BLURB: base functions for installing BOINC applications
# @DESCRIPTION:
# This eclass provides base functions for installation of software developed
# for the BOINC platform.
@@ -77,7 +77,7 @@ in order to use this application with BOINC.}
# Generate appropriate (R)DEPEND for wrapper-enabled or
# native application.
boinc-app_add_deps() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
if [[ $1 == "--wrapper" ]]; then
RDEPEND="sci-misc/boinc-wrapper"
@@ -85,6 +85,9 @@ boinc-app_add_deps() {
DEPEND="sci-misc/boinc"
RDEPEND="sci-misc/boinc"
fi
+
+ DEPEND="${DEPEND} acct-user/boinc"
+ RDEPEND="${RDEPEND} acct-user/boinc"
}
# @FUNCTION: boinc_master_url_check
@@ -92,9 +95,9 @@ boinc-app_add_deps() {
# @DESCRIPTION:
# Make sure BOINC_MASTER_URL has a value.
boinc_master_url_check() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
- [[ ! ${BOINC_MASTER_URL} ]] && \
+ [[ -n ${BOINC_MASTER_URL} ]] || \
die "BOINC_MASTER_URL is not set"
return 0
}
@@ -103,7 +106,7 @@ boinc_master_url_check() {
# @USAGE:
# @RETURN: non-prefixed default BOINC runtime directory
get_boincdir() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
echo /var/lib/boinc
}
@@ -121,7 +124,7 @@ get_boincdir() {
# -> boinc.berkeley.edu_example
# @CODE
get_project_dirname() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
boinc_master_url_check
@@ -137,7 +140,7 @@ get_project_dirname() {
# @USAGE:
# @RETURN: non-prefixed directory where applications and files should be installed
get_project_root() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
echo "$(get_boincdir)/projects/$(get_project_dirname)"
}
@@ -163,7 +166,7 @@ _boinc-app_fix_permissions() {
# The default appinfo_prepare(). It replaces all occurences
# of @PV@ with its corresponding value.
boinc-app_appinfo_prepare() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
sed -i "$1" \
-e "s:@PV@:${PV}:g" \
@@ -196,7 +199,7 @@ boinc-app_appinfo_prepare() {
# }
# @CODE
doappinfo() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
(( $# == 1 )) || \
die "${FUNCNAME} takes exactly one argument"
@@ -224,7 +227,7 @@ doappinfo() {
# The default foreach_wrapper_job(). It replaces all occurences
# of @PV@, @EPREFIX@ and @LIBDIR@ strings with their corresponding values.
boinc-wrapper_foreach_wrapper_job() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
sed -i "$1" \
-e "s:@PV@:${PV}:g" \
@@ -260,7 +263,7 @@ boinc-wrapper_foreach_wrapper_job() {
#
# Keep your job.xml files in sync with app_info.xml!
dowrapper() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
for app in "$@"; do
local wrapperjob="${app}_job_${PV}.xml"
@@ -293,7 +296,7 @@ dowrapper() {
# Display helpful instructions on how to make the BOINC client use installed
# applications.
boinc-app_pkg_postinst() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
if [[ -f "${EROOT}/$(get_boincdir)/master_$(get_project_dirname).xml" ]]; then
if [[ -z ${REPLACING_VERSIONS} ]]; then
@@ -328,7 +331,7 @@ boinc-app_pkg_postinst() {
# Display helpful instructions on how to cleanly uninstall unmerged
# applications.
boinc-app_pkg_postrm() {
- debug-print-function ${FUNCNAME} "${@}"]
+ debug-print-function ${FUNCNAME} "${@}"
if [[ -z ${REPLACED_BY_VERSION} ]]; then
local gui_rpc_auth="$(get_boincdir)/gui_rpc_auth.cfg"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-20 9:35 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-20 9:35 UTC (permalink / raw
To: gentoo-commits
commit: 183aa05bdca90107022edf7ee1cbcccd07fc893b
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 19 06:07:06 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue Jul 19 06:07:06 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=183aa05b
nim-utils.eclass: link bug
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 1 +
1 file changed, 1 insertion(+)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
index fae8bb292..743aa9877 100644
--- a/eclass/nim-utils.eclass
+++ b/eclass/nim-utils.eclass
@@ -148,6 +148,7 @@ nim_get_colors() {
nim_gen_config() {
debug-print-function ${FUNCNAME} "${@}"
+ # bug 667182
xdg_environment_reset
local dir=${1:-${WORKDIR}}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-20 9:35 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-20 9:35 UTC (permalink / raw
To: gentoo-commits
commit: d7803c78b4f9b2a711a66a56378e1ce6df150afe
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun Jul 17 13:19:59 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue Jul 19 05:57:46 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d7803c78
nimble.eclass: use depfiles
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nimble.eclass | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/eclass/nimble.eclass b/eclass/nimble.eclass
index 20e9f5a5a..e08c2840e 100644
--- a/eclass/nimble.eclass
+++ b/eclass/nimble.eclass
@@ -60,8 +60,8 @@ NINJA="ninja"
inherit nim-utils ninja-utils
BDEPEND="${NINJA_DEPEND}
- dev-lang/nim
- dev-nim/nimbus
+ dev-lang/nim[experimental(-)]
+ >=dev-nim/nimbus-1.0.0
"
# @FUNCTION: set_package_url
@@ -134,6 +134,7 @@ nimble_src_configure() {
local nimbusargs=(
--nimbleDir:"${EPREFIX}"/opt/nimble
--binDir:"${EPREFIX}"/usr/bin
+ --useDepfile
"${mynimargs[@]}"
)
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-20 9:35 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-20 9:35 UTC (permalink / raw
To: gentoo-commits
commit: 5c6cf732a610b270318ee0d9546f145d1bd48881
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Jul 16 21:08:14 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sat Jul 16 21:08:14 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=5c6cf732
nim-utils.eclass: add ekoch helper
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
index b5ce4d6b0..fae8bb292 100644
--- a/eclass/nim-utils.eclass
+++ b/eclass/nim-utils.eclass
@@ -61,6 +61,30 @@ enim() {
"$@" || die -n "${*} failed"
}
+# @FUNCTION: ekoch
+# @USAGE: [<args>...]
+# @DESCRIPTION:
+# Call koch, passing the supplied arguments. Used only for building compilers
+# that originate from Nim.
+# This function dies if koch fails.
+ekoch() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local koch
+ case "${CATEGORY}/${PN}" in
+ dev-lang/nim)
+ koch="./koch"
+ [[ -e ${koch} ]] || enim c koch
+ ;;
+ *)
+ eerror "${FUNCNAME} is not implemented for ${CATEGORY}/${PN}" ;;
+ esac
+
+ set -- ${koch} "${@}"
+ echo "$@" >&2
+ "$@" || die -n "${*} failed"
+}
+
# @FUNCTION: etestament
# @USAGE: [<args>...]
# @DESCRIPTION:
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-20 9:35 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-20 9:35 UTC (permalink / raw
To: gentoo-commits
commit: dd644b2fb8960c0481c41efe0215eb109bd29ffd
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 19 06:29:36 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue Jul 19 06:33:01 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=dd644b2f
nim-utils.eclass: don't write NIMFLAGS to the config file
There are issues with strings containing spaces.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
index 743aa9877..bab1a55f4 100644
--- a/eclass/nim-utils.eclass
+++ b/eclass/nim-utils.eclass
@@ -25,11 +25,11 @@ if [[ ! ${_NIM_UTILS_ECLASS} ]]; then
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
-# Flags for the Nim compiler. All values (if any) must be double-quoted.
+# Flags for the Nim compiler. Spaces need to be quoted or shell-escaped.
# Example:
#
# @CODE@
-# # NIMFLAGS='-d:myFlag -d:myOpt:"value"' emerge category/package
+# # NIMFLAGS="-d:myFlag -d:myOpt:'my value'" emerge category/package
# @CODE@
# @ECLASS_VARIABLE: TESTAMENT_DISABLE_MEGATEST
@@ -49,14 +49,14 @@ inherit multiprocessing toolchain-funcs xdg-utils
# @FUNCTION: enim
# @USAGE: [<args>...]
# @DESCRIPTION:
-# Call nim, passing the supplied arguments.
+# Call nim, passing the supplied arguments and NIMFLAGS.
# 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 "${@}"
+ set -- nim "${@}" ${NIMFLAGS}
echo "$@" >&2
"$@" || die -n "${*} failed"
}
@@ -173,7 +173,6 @@ nim_gen_config() {
-d:"$(nim_get_buildtype)"
--colors:"$(nim_get_colors)"
--parallelBuild:"$(makeopts_jobs)"
- $(printf "%s\n" ${NIMFLAGS})
EOF
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-07-20 9:35 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2022-07-20 9:35 UTC (permalink / raw
To: gentoo-commits
commit: 16dab572c817e91990e26752a9734160062d974c
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Jul 20 09:33:36 2022 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Wed Jul 20 09:33:36 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=16dab572
nim-utils.eclass: "|| die"
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
index bab1a55f4..61f25905b 100644
--- a/eclass/nim-utils.eclass
+++ b/eclass/nim-utils.eclass
@@ -103,7 +103,7 @@ etestament() {
if [[ ${ETESTAMENT_DESELECT} ]]; then
local skipfile="${T}"/testament.skipfile
if [[ ! -f ${skipfile} ]]; then
- printf "%s\n" "${ETESTAMENT_DESELECT[@]}" > "${skipfile}"
+ printf "%s\n" "${ETESTAMENT_DESELECT[@]}" > "${skipfile}" || die
else
debug-print "${skipfile} already exists, not overwriting"
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-05 15:26 Arthur Zamarin
0 siblings, 0 replies; 106+ messages in thread
From: Arthur Zamarin @ 2022-11-05 15:26 UTC (permalink / raw
To: gentoo-commits
commit: f0252164166f2b5005476664dd8c40f75afd9cba
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 4 06:25:56 2022 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Sat Nov 5 14:41:31 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=f0252164
databases.eclass: new eclass for running databases
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/databases.eclass | 480 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 480 insertions(+)
diff --git a/eclass/databases.eclass b/eclass/databases.eclass
new file mode 100644
index 000000000..fbf653435
--- /dev/null
+++ b/eclass/databases.eclass
@@ -0,0 +1,480 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: databases.eclass
+# @MAINTAINER:
+# Anna <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: eclass to test packages against databases
+# @DESCRIPTION:
+# A utility eclass providing functions for running databases.
+#
+# This eclass does not set any metadata variables nor export any phase, so it
+# can be inherited safely.
+#
+# @SUBSECTION Supported databases
+#
+# - memcached (via "ememcached" helper)
+#
+# - MongoDB (via "emongod" helper)
+#
+# - MySQL/MariaDB/ (via "emysql" helper)
+#
+# - PostgreSQL (via "epostgres" helper)
+#
+# - Redis (via "eredis" helper)
+#
+# @SUBSECTION Helper usage
+#
+# --die [msg...]
+#
+# Prints the path to the server's log file to the console and aborts the
+# current merge process with the given message.
+#
+# --get-dbpath
+#
+# Returns the directory where the server stores database files.
+#
+# --get-depend
+#
+# Returns a dependency string (to be included in BDEPEND).
+#
+# --get-logfile
+#
+# Returns the path to the server's log file.
+#
+# --get-pidfile
+#
+# Returns the path to the server's PID file.
+#
+# --get-sockdir
+#
+# Returns the directory where the server's sockets are located.
+#
+# --get-sockfile
+#
+# Returns the path to the server's socket file.
+#
+# --start
+#
+# Starts the server on the default port.
+#
+# --start <port>
+#
+# Starts the server on the given port.
+#
+# --stop
+#
+# Stops the server.
+#
+# @EXAMPLE:
+#
+# @CODE
+# EAPI=8
+#
+# ...
+#
+# inherit databases distutils-r1
+#
+# ...
+#
+# BDEPEND="$(eredis --get-depend)"
+#
+# distutils_enable_tests pytest
+#
+# src_test() {
+# eredis --start 16739
+# distutils-r1_src_test
+# eredis --stop
+# }
+# @CODE
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+if [[ ! ${_DATABASES_ECLASS} ]]; then
+_DATABASES_ECLASS=1
+
+# ==============================================================================
+# GENERIC FUNCTIONS
+# ==============================================================================
+
+# @FUNCTION: _databases_gen_depend
+# @USAGE: <funcname>
+# @INTERNAL
+# @DESCRIPTION:
+# Get a dependency string for the given helper function.
+_databases_gen_depend() {
+ local srvname=${1:1}
+ case ${srvname} in
+ memcached)
+ echo "net-misc/memcached"
+ ;;
+ mongod)
+ echo "dev-db/mongodb"
+ ;;
+ mysql)
+ echo "virtual/mysql[server]"
+ ;;
+ postgres)
+ echo "dev-db/postgresql[server]"
+ ;;
+ redis)
+ echo "dev-db/redis"
+ ;;
+ *)
+ die "${ECLASS}: unknown database: ${srvname}"
+ esac
+}
+
+# @FUNCTION: _databases_die
+# @USAGE: <funcname> [msg]
+# @INTERNAL
+# @DESCRIPTION:
+# Print the given message and the path to the server's log file to the console
+# and die.
+#
+# This function supports being called via "nonfatal".
+_databases_die() {
+ local funcname=${1?}
+ shift
+
+ eerror "See the server log for details:"
+ eerror " $(${funcname} --get-logfile)"
+ die -n "${@}"
+}
+
+# @FUNCTION: _databases_stop_service
+# @USAGE: <funcname>
+# @INTERNAL
+# @DESCRIPTION:
+# Default function to stop servers. Reads PID from a file and sends the TERM
+# signal.
+_databases_stop_service() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local funcname=${1?}
+ local srvname=${funcname:1}
+ local pidfile="$(${funcname} --get-pidfile)"
+
+ ebegin "Stopping ${srvname}"
+ kill "$(<"${pidfile}")"
+ eend $? || ${funcname} --die "Stopping ${srvname} failed"
+}
+
+# @FUNCTION: _databases_dispatch
+# @USAGE: <funcname> <cmd> [args...]
+# @INTERNAL
+# @DESCRIPTION:
+# Process the given command with its options.
+#
+# If "--start" command is used, `_${funcname}_start` function must be defined.
+# Note that directories will be created automatically.
+#
+# If `_${funcname}_stop` function is not declared, the internal
+# `_databases_stop_service` function will be used instead.
+#
+# No `--get` function can be overloaded.
+_databases_dispatch() {
+ local funcname=${1?}
+ local cmd=${2?}
+ shift; shift
+
+ case ${cmd} in
+ --die)
+ _databases_die ${funcname} "${@}"
+ ;;
+ --get-depend)
+ _databases_gen_depend ${funcname}
+ ;;
+ --get-dbpath)
+ echo "${T}"/${funcname}/db/
+ ;;
+ --get-logfile)
+ echo "${T}"/${funcname}/${funcname}.log
+ ;;
+ --get-pidfile)
+ echo "${T}"/${funcname}/${funcname}.pid
+ ;;
+ --get-sockdir)
+ echo "${T}"/${funcname}/
+ ;;
+ --get-sockfile)
+ echo "${T}"/${funcname}/${funcname}.sock
+ ;;
+ --start)
+ local port=${1}
+ local start_fn=( _${funcname}_start ${port} )
+ if ! declare -f "${start_fn[0]}" >/dev/null; then
+ die "${ECLASS}: function not declared: ${start_fn[0]}"
+ fi
+
+ mkdir -p "${T}"/${funcname}/db/ || die "Creating database directory failed"
+ "${start_fn[@]}"
+ ;;
+ --stop)
+ local stop_fn=( _${funcname}_stop )
+ if ! declare -f "${stop_fn[0]}" >/dev/null; then
+ # fall back to the default implementation
+ stop_fn=( _databases_stop_service ${funcname} )
+ fi
+
+ "${stop_fn[@]}"
+ ;;
+ *) die "${funcname}: invalid command: ${cmd}" ;;
+ esac
+}
+
+# ==============================================================================
+# MEMCACHED
+# ==============================================================================
+
+# @FUNCTION: _ememcached_start
+# @USAGE: [port]
+# @INTERNAL
+# @DESCRIPTION:
+# Start memcached server.
+_ememcached_start() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local port=${1:-11211}
+
+ local myargs=(
+ --daemon
+ --port=${port}
+ --user=nobody
+ --listen=127.0.0.1
+ --pidfile=$(ememcached --get-pidfile)
+ )
+
+ ebegin "Spawning memcached"
+ memcached "${myargs[@]}" &>> $(ememcached --get-logfile)
+ eend $? || ememcached --die "Spawning memcached failed"
+}
+
+# @FUNCTION: ememcached
+# @USAGE: <cmd> [args...]
+# @DESCRIPTION:
+# Manage memcached server on the given port (default: 11211).
+ememcached() {
+ _databases_dispatch "${FUNCNAME}" "${@}"
+}
+
+# ==============================================================================
+# MONGODB
+# ==============================================================================
+
+# @FUNCTION: _emongod_start
+# @USAGE: [port]
+# @INTERNAL
+# @DESCRIPTION:
+# Start MongoDB server.
+_emongod_start() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local port=${1:-27017}
+ local logfile=$(emongod --get-logfile)
+
+ local myargs=(
+ --dbpath="$(emongod --get-dbpath)"
+ --nojournal
+ --bind-ip=127.0.0.1
+ --port=${port}
+ --unixSocketPrefix="$(emongod --get-sockdir)"
+ --logpath="${logfile}"
+ --fork
+ )
+
+ ebegin "Spawning mongodb"
+ LC_ALL=C mongod "${myargs[@]}" &>> "${logfile}"
+ eend $? || emongod --die "Spawning mongod failed"
+}
+
+# @FUNCTION: _emongod_stop
+# @INTERNAL
+# @DESCRIPTION:
+# Stop MongoDB server.
+_emongod_stop() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local myargs=(
+ --dbpath="$(emongod --get-dbpath)"
+ --shutdown
+ )
+
+ ebegin "Stopping mongodb"
+ mongod "${myargs[@]}" &>> "${logfile}"
+ eend $? || emongod --die "Stopping mongod failed"
+}
+
+# @FUNCTION: emongod
+# @USAGE: <cmd> [args...]
+# @DESCRIPTION:
+# Manage MongoDB server on the given port (default: 27017).
+emongod() {
+ _databases_dispatch "${FUNCNAME}" "${@}"
+}
+
+# ==============================================================================
+# MYSQL
+# ==============================================================================
+
+# @FUNCTION: _emysql_start
+# @USAGE: [port]
+# @INTERNAL
+# @DESCRIPTION:
+# Create a new MySQL database and start MySQL server.
+_emysql_start() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local port=${1:-3306}
+ local dbpath=$(emysql --get-dbpath)
+ local logfile=$(emysql --get-logfile)
+ local sockfile=$(emysql --get-sockfile)
+
+ local myinstallargs=(
+ --no-defaults
+ --auth-root-authentication-method=normal
+ --basedir="${BROOT}/usr"
+ --datadir="${dbpath}"
+ )
+
+ ebegin "Initializing mysql database"
+ mysql_install_db "${myinstallargs[@]}" &>> "${logfile}"
+ eend $? || emysql --die "Initializing mysql database failed"
+
+ local myargs=(
+ --no-defaults
+ --character-set-server=utf8
+ --pid-file="$(emysql --get-pidfile)"
+ --socket="${sockfile}"
+ --bind-address=127.0.0.1
+ --port=${port}
+ --datadir="${dbpath}"
+ --general-log-file="${logfile}"
+ --log-error="${logfile}"
+ )
+
+ einfo "Spawning mysql"
+ mysqld "${myargs[@]}" &>> "${logfile}" &
+
+ einfo "Waiting for mysqld to accept connections"
+ local timeout=30
+ while ! mysqladmin ping --socket="${sockfile}" --silent; do
+ sleep 1
+ let timeout-=1
+ [[ ${timeout} -eq 0 ]] && emysql --die "Timed out"
+ done
+}
+
+# @FUNCTION: emysql
+# @USAGE: <cmd> [args...]
+# @DESCRIPTION:
+# Manage MySQL server on the given port (default: 3306).
+emysql() {
+ _databases_dispatch "${FUNCNAME}" "${@}"
+}
+
+# ==============================================================================
+# POSTGRESQL
+# ==============================================================================
+
+# @FUNCTION: _epostgres_start
+# @USAGE: [port]
+# @INTERNAL
+# @DESCRIPTION:
+# Create a new PostgreSQL database and start PostgreSQL server.
+_epostgres_start() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local port=${1:-5432}
+ local dbpath=$(epostgres --get-dbpath)
+ local logfile=$(epostgres --get-logfile)
+
+ local myinstallargs=(
+ --pgdata="${dbpath}"
+ --user=postgres
+ )
+
+ ebegin "Initializing postgresql database"
+ initdb "${myinstallargs[@]}" &>> "${logfile}"
+ eend $? || epostgres --die "Initializing postgresql database failed"
+
+ local myargs=(
+ --pgdata="${dbpath}"
+ --log="${logfile}"
+ --options="-h '127.0.0.1' -p ${port} -k '$(epostgres --get-sockdir)'"
+ --wait
+ )
+
+ ebegin "Spawning postgresql"
+ pg_ctl "${myargs[@]}" start &>> "${logfile}"
+ eend $? || epostgres --die "Spawning postgresql failed"
+}
+
+# @FUNCTION: _epostgres_stop
+# @INTERNAL
+# @DESCRIPTION:
+# Stop PosgreSQL server.
+_epostgres_stop() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local myargs=(
+ --pgdata="$(epostgres --get-dbpath)"
+ --wait
+ )
+
+ ebegin "Stopping postgresql"
+ pg_ctl "${myargs[@]}" stop &>> "$(epostgres --get-logfile)"
+ eend $? || epostgres --die "Stopping postgresql failed"
+}
+
+# @FUNCTION: epostgres
+# @USAGE: <cmd> [args...]
+# @DESCRIPTION:
+# Manage PostgreSQL server on the given port (default: 5432).
+epostgres() {
+ _databases_dispatch "${FUNCNAME}" "${@}"
+}
+
+# ==============================================================================
+# REDIS
+# ==============================================================================
+
+# @FUNCTION: _eredis_start
+# @USAGE: [args...]
+# @INTERNAL
+# @DESCRIPTION:
+# Start Redis server.
+_eredis_start() {
+ debug-print-function "${FUNCNAME}" "${@}"
+
+ local port=${1:-6379}
+ local logfile="$(eredis --get-logfile)"
+
+ ebegin "Spawning redis"
+ redis-server - <<- EOF &>> "${logfile}"
+ daemonize yes
+ pidfile "$(eredis --get-pidfile)"
+ port ${port}
+ bind 127.0.0.1
+ unixsocket "$(eredis --get-sockfile)"
+ dir "$(eredis --get-dbpath)"
+ logfile "${logfile}"
+ EOF
+ eend $? || eredis --die "Spawning redis failed"
+}
+
+# @FUNCTION: eredis
+# @USAGE: <cmd> [args...]
+# @DESCRIPTION:
+# Manage Redis server on the given port (default: 6379).
+eredis() {
+ _databases_dispatch "${FUNCNAME}" "${@}"
+}
+
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-16 19:33 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-16 19:33 UTC (permalink / raw
To: gentoo-commits
commit: e03f20522f819495ef8decd2a80261da3abacd68
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Nov 16 14:43:10 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Nov 16 14:43:10 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=e03f2052
databases.eclass: add "required use" stuff
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/databases.eclass | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/eclass/databases.eclass b/eclass/databases.eclass
index fbf653435..079325a90 100644
--- a/eclass/databases.eclass
+++ b/eclass/databases.eclass
@@ -28,7 +28,7 @@
#
# @SUBSECTION Helper usage
#
-# --die [msg...]
+# --die [msg]
#
# Prints the path to the server's log file to the console and aborts the
# current merge process with the given message.
@@ -37,7 +37,7 @@
#
# Returns the directory where the server stores database files.
#
-# --get-depend
+# --get-depend [use1,use2,...]
#
# Returns a dependency string (to be included in BDEPEND).
#
@@ -104,31 +104,41 @@ _DATABASES_ECLASS=1
# ==============================================================================
# @FUNCTION: _databases_gen_depend
-# @USAGE: <funcname>
+# @USAGE: <funcname> <required use>
# @INTERNAL
# @DESCRIPTION:
# Get a dependency string for the given helper function.
_databases_gen_depend() {
local srvname=${1:1}
+ local req_use=${2}
+
+ local pkg_dep
case ${srvname} in
memcached)
- echo "net-misc/memcached"
+ pkg_dep="net-misc/memcached"
;;
mongod)
- echo "dev-db/mongodb"
+ pkg_dep="dev-db/mongodb"
;;
mysql)
- echo "virtual/mysql[server]"
+ pkg_dep="virtual/mysql"
+ req_use="server,${req_use}"
;;
postgres)
- echo "dev-db/postgresql[server]"
+ pkg_dep="dev-db/postgresql"
+ req_use="server,${req_use}"
;;
redis)
- echo "dev-db/redis"
+ pkg_dep="dev-db/redis"
;;
*)
die "${ECLASS}: unknown database: ${srvname}"
esac
+
+ req_use=${req_use%,} # strip trailing comma
+ printf "%s" "${pkg_dep}"
+ [[ ${req_use} ]] && \
+ printf "[%s]" "${req_use}"
}
# @FUNCTION: _databases_die
@@ -189,7 +199,7 @@ _databases_dispatch() {
_databases_die ${funcname} "${@}"
;;
--get-depend)
- _databases_gen_depend ${funcname}
+ _databases_gen_depend ${funcname} "${@}"
;;
--get-dbpath)
echo "${T}"/${funcname}/db/
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-16 19:33 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-16 19:33 UTC (permalink / raw
To: gentoo-commits
commit: 3a363993304d35e57ce64df95fc8b4f271fc13fa
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Nov 16 14:29:57 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Nov 16 14:30:25 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3a363993
shards.eclass: add SHARDS_DEPS
Closes: https://bugs.gentoo.org/881485
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 1 +
1 file changed, 1 insertion(+)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 756fdf335..a78d792ba 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -27,6 +27,7 @@ inherit crystal-utils multiprocessing toolchain-funcs
BDEPEND="
${CRYSTAL_DEPS}
+ ${SHARDS_DEPS}
dev-util/gshards
"
IUSE="debug doc"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-16 19:33 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-16 19:33 UTC (permalink / raw
To: gentoo-commits
commit: d622daae90169366a97059c3dc4cf0f9661bb662
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Nov 16 14:28:47 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Nov 16 14:30:25 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d622daae
crystal-utils.eclass: add SHARDS_DEPS
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/crystal-utils.eclass | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/eclass/crystal-utils.eclass b/eclass/crystal-utils.eclass
index 8f8df3cc3..09a4049a4 100644
--- a/eclass/crystal-utils.eclass
+++ b/eclass/crystal-utils.eclass
@@ -37,6 +37,17 @@ CRYSTAL_DEPS="
)
"
+# @ECLASS_VARIABLE: SHARDS_DEPS
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# This is an eclass-generated Shards dependency string.
+SHARDS_DEPS="
+ || (
+ dev-util/shards
+ dev-lang/crystal-bin
+ )
+"
+
# @FUNCTION: _crystal_get_colors_opt
# @INTERNAL
# @RETURN: "--no-color" if colors should be disabled, empty string otherwise
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 637fee59f92658dcacab882c31237635a79ff53f
Author: Anna (navi) Figueiredo Gomes <anna <AT> navirc <DOT> com>
AuthorDate: Fri Nov 25 02:34:07 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 02:34:07 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=637fee59
dotnet-utils.eclass: SLOT and runtime ARCH support
Signed-off-by: Anna (navi) Figueiredo Gomes <anna <AT> navirc.com>
eclass/dotnet-utils.eclass | 56 +++++++++++++++++++++++++++++++++++++---------
1 file changed, 45 insertions(+), 11 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 26a968035..61ccf8f11 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -3,9 +3,9 @@
# @ECLASS: dotnet-utils.eclass
# @MAINTAINER:
-# anna-cli@tutanota.com
+# anna@navirc.com
# @AUTHOR:
-# Anna Figueiredo Gomes <anna-cli@tutanota.com>
+# Anna Figueiredo Gomes <anna@navirc.com>
# @SUPPORTED_EAPIS: 7 8
# @BLURB: common functions and variables for dotnet builds
@@ -19,8 +19,23 @@ esac
inherit multiprocessing
-BDEPEND=">=virtual/dotnet-sdk-6.0"
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile
+# @ECLASS_VARIABLE: DOTNET_SLOT
+# @DESCRIPTION:
+# Allows for choosing a slot for dotnet
+# @DEFAULT_UNSET
+
+if [[ -z "${DOTNET_SLOT}" ]]; then
+ die "DOTNET_SLOT not set."
+fi
+
+# Temporary, use the virtual once you can have multiple virtuals installed at once
+BDEPEND+=" || ( dev-dotnet/dotnet-sdk:${DOTNET_SLOT} dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} )"
+EXPORT_FUNCTIONS src_unpack src_prepare src_compile pkg_setup
+
+# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
+# @DESCRIPTION:
+# Holds the right executable name
+# @DEFAULT_UNSET
# @ECLASS_VARIABLE: DOTNET_CLI_TELEMETRY_OPTOUT
# @DESCRIPTION:
@@ -36,7 +51,7 @@ export MSBUILDDISABLENODEREUSE=1
export DOTNET_NOLOGO=1
# Needed otherwise the binaries break
-RESTRICT="strip"
+RESTRICT+=" strip"
# @ECLASS_VARIABLE: NUGETS
# @DEFAULT_UNSET
@@ -83,6 +98,30 @@ nuget_uris() {
done
}
+dotnet-utils_pkg_setup() {
+ case "${ARCH}" in
+ *amd64)
+ DOTNET_RUNTIME="linux-x64"
+ ;;
+ *arm)
+ DOTNET_RUNTIME="linux-arm"
+ ;;
+ *arm64)
+ DOTNET_RUNTIME="linux-arm64"
+ ;;
+ *)
+ die "Unsupported arch: ${ARCH}"
+ ;;
+ esac
+
+ for _dotnet in dotnet-{${DOTNET_SLOT},bin-${DOTNET_SLOT}}; do
+ if type $_dotnet 1> /dev/null 2>&1; then
+ DOTNET_EXECUTABLE=$_dotnet
+ break
+ fi
+ done
+}
+
# @FUNCTION: edotnet
# @USAGE: [[command] <args> ...]
# @DESCRIPTION:
@@ -93,7 +132,7 @@ edotnet() {
local ret
- set -- dotnet "${@}" -maxcpucount:$(makeopts_jobs)
+ set -- "$DOTNET_EXECUTABLE" "${@}" --runtime "${DOTNET_RUNTIME}" -maxcpucount:$(makeopts_jobs)
echo "${@}" >&2
"${@}"
ret=${?}
@@ -130,7 +169,6 @@ dotnet-utils_src_unpack() {
dotnet-utils_src_prepare() {
debug-print-function ${FUNCNAME} "$@"
edotnet restore \
- --runtime linux-x64 \
--source "${DISTDIR}" || die
default
}
@@ -141,13 +179,9 @@ dotnet-utils_src_prepare() {
dotnet-utils_src_compile() {
debug-print-function ${FUNCNAME} "$@"
- addpredict /opt/dotnet-sdk-bin-6.0/metadata
-
edotnet publish \
- --nologo \
--no-restore \
--configuration Release \
- --runtime linux-x64 \
"-p:Version=${PV}" \
-p:DebugType=embedded \
--self-contained || die
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 2e00acb8c29cc4d92a42fb374ff25de3b01bffd1
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:13:57 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:00 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=2e00acb8
dotnet-utils.eclass: add inherit guard
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index f7f84dde3..e5c5d3c8f 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -14,6 +14,9 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI} unsupported." ;;
esac
+if [[ ! ${_DOTNET_UTILS_ECLASS} ]]; then
+_DOTNET_UTILS_ECLASS=1
+
inherit multiprocessing
# @ECLASS_VARIABLE: DOTNET_SLOT
@@ -27,7 +30,6 @@ fi
# Temporary, use the virtual once you can have multiple virtuals installed at once
BDEPEND+=" || ( dev-dotnet/dotnet-sdk:${DOTNET_SLOT} dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} )"
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile pkg_setup
# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
# @DESCRIPTION:
@@ -186,3 +188,7 @@ dotnet-utils_src_compile() {
-p:DebugType=embedded \
--self-contained || die
}
+
+fi
+
+EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_compile
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: d39cc4f19da2e3fc1a58665aa26156e4608455a5
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:25:07 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:00 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d39cc4f1
dotnet-utils.eclass: small improvements
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 55 +++++++++++++++++++++++++++-------------------
1 file changed, 32 insertions(+), 23 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index e5c5d3c8f..745676186 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -20,31 +20,37 @@ _DOTNET_UTILS_ECLASS=1
inherit multiprocessing
# @ECLASS_VARIABLE: DOTNET_SLOT
+# @REQUIRED
+# @PRE_INHERIT
# @DESCRIPTION:
-# Allows for choosing a slot for dotnet
-# @DEFAULT_UNSET
+# Allows to choose a slot for dotnet
-if [[ -z "${DOTNET_SLOT}" ]]; then
- die "DOTNET_SLOT not set."
+if [[ ! ${DOTNET_SLOT} ]]; then
+ die "${ECLASS}: DOTNET_SLOT not set"
fi
# Temporary, use the virtual once you can have multiple virtuals installed at once
BDEPEND+=" || ( dev-dotnet/dotnet-sdk:${DOTNET_SLOT} dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} )"
# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
-# @DESCRIPTION:
-# Holds the right executable name
# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Sets the right executable name.
# @ECLASS_VARIABLE: DOTNET_CLI_TELEMETRY_OPTOUT
+# @OUTPUT_VARIABLE
# @DESCRIPTION:
# Disables telemetry on dotnet.
export DOTNET_CLI_TELEMETRY_OPTOUT=1
+
# @ECLASS_VARIABLE: MSBUILDDISABLENODEREUSE
+# @OUTPUT_VARIABLE
# @DESCRIPTION:
-# Stops the dotnet node from not stopping after the build is done.
+# Stops the dotnet node after the build is done.
export MSBUILDDISABLENODEREUSE=1
+
# @ECLASS_VARIABLE: DOTNET_NOLOGO
+# @OUTPUT_VARIABLE
# @DESCRIPTION:
# Disables the header logo when running dotnet commands.
export DOTNET_NOLOGO=1
@@ -54,37 +60,40 @@ RESTRICT+=" strip"
# @ECLASS_VARIABLE: NUGETS
# @DEFAULT_UNSET
-# @PRE_INHERIT
# @DESCRIPTION:
-# bash string containing all nuget package wants to download
-# used by nuget_uris()
+# String containing all nuget packages that need to be downloaded. Used by
+# the 'nuget_uris' function.
+#
# Example:
# @CODE
# NUGETS="
-# ImGui.NET-1.87.2
-# Config.Net-4.19.0
+# ImGui.NET-1.87.2
+# Config.Net-4.19.0
# "
-# inherit nuget
+#
+# inherit dotnet-utils
+#
# ...
+#
# SRC_URI="$(nuget_uris)"
# @CODE
# @FUNCTION: nuget_uris
+# @USAGE: <nuget...>
# @DESCRIPTION:
# Generates the URIs to put in SRC_URI to help fetch dependencies.
-# Uses first argument as nuget list.
-# If no argument provided, uses NUGETS variable.
+# If no arguments provided, uses NUGETS variable.
nuget_uris() {
local -r regex='^([a-zA-Z0-9_.-]+)-([0-9]+\.[0-9]+\.[0-9]+.*)$'
local nuget nugets
- if [[ -n ${@} ]]; then
- nugets="$@"
- elif [[ -n ${NUGETS} ]]; then
+ if (( $# != 0 )); then
+ nugets="${@}"
+ elif [[ ${NUGETS} ]]; then
nugets="${NUGETS}"
else
eerror "NUGETS variable is not defined and nothing passed as argument"
- die "Can't generate SRC_URI from empty input"
+ die "${FUNCNAME}: Can't generate SRC_URI from empty input"
fi
for nuget in ${nugets}; do
@@ -150,7 +159,7 @@ edotnet() {
# @DESCRIPTION:
# Unpacks the package
dotnet-utils_src_unpack() {
- debug-print-function ${FUNCNAME} "$@"
+ debug-print-function ${FUNCNAME} "${@}"
local archive
for archive in ${A}; do
@@ -167,9 +176,9 @@ dotnet-utils_src_unpack() {
# @FUNCTION: dotnet-utils_src_prepare
# @DESCRIPTION:
# Restores the packages
-
dotnet-utils_src_prepare() {
- debug-print-function ${FUNCNAME} "$@"
+ debug-print-function ${FUNCNAME} "${@}"
+
edotnet restore \
--source "${DISTDIR}" || die
default
@@ -179,7 +188,7 @@ dotnet-utils_src_prepare() {
# @DESCRIPTION:
# Build the package using dotnet publish
dotnet-utils_src_compile() {
- debug-print-function ${FUNCNAME} "$@"
+ debug-print-function ${FUNCNAME} "${@}"
edotnet publish \
--no-restore \
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: aca09be8b1882d68e999469827e85f4ca825e9c3
Author: Anna (navi) Figueiredo Gomes <anna <AT> navirc <DOT> com>
AuthorDate: Fri Nov 25 02:41:21 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 02:43:53 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=aca09be8
dotnet-utils.eclass: Forgot a function description
Signed-off-by: Anna (navi) Figueiredo Gomes <anna <AT> navirc.com>
eclass/dotnet-utils.eclass | 3 +++
1 file changed, 3 insertions(+)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 61ccf8f11..93f163c25 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -98,6 +98,9 @@ nuget_uris() {
done
}
+# @FUNCTION: dotnet-utils_pkg_setup
+# @DESCRIPTION:
+# Sets up DOTNET_RUNTIME and DOTNET_EXECUTABLE variables for later use in edotnet.
dotnet-utils_pkg_setup() {
case "${ARCH}" in
*amd64)
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 357b53a29786d1edac47aa85417c6f281f48430c
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:12:41 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:00 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=357b53a2
dotnet-utils.eclass: use standard eapi guard
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 93f163c25..f7f84dde3 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -9,12 +9,9 @@
# @SUPPORTED_EAPIS: 7 8
# @BLURB: common functions and variables for dotnet builds
-case "${EAPI:-0}" in
- 7|8)
- ;;
- *)
- die "Unsupported EAPI=${EAPI} for ${ECLASS}"
- ;;
+case ${EAPI} in
+ 7|8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported." ;;
esac
inherit multiprocessing
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: a1cca7e4aa93042fe25047fe4367a2e6ae53d707
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:36:39 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:02 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a1cca7e4
dotnet-utils.eclass: use array for src_compile args
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 7be67d216..d035a95da 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -167,7 +167,7 @@ dotnet-utils_src_unpack() {
dotnet-utils_src_prepare() {
debug-print-function ${FUNCNAME} "${@}"
- edotnet restore --source "${DISTDIR}" || die "Restore failed"
+ edotnet restore --source "${DISTDIR}" || die "'dotnet restore' failed"
default_src_prepare
}
@@ -177,12 +177,15 @@ dotnet-utils_src_prepare() {
dotnet-utils_src_compile() {
debug-print-function ${FUNCNAME} "${@}"
- edotnet publish \
- --no-restore \
- --configuration Release \
- "-p:Version=${PV}" \
- -p:DebugType=embedded \
- --self-contained || die
+ local publist_args=(
+ --no-restore
+ --configuration Release
+ -p:Version=${PV}
+ -p:DebugType=embedded
+ --self-contained
+ )
+
+ edotnet publish "${publish_args}" || die "'dotnet publish' failed"
}
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 20ac305c615fa9f437476ce1c42db6171b6fc48b
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:30:29 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:01 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=20ac305c
dotnet-utils.eclass: match use-flags instead of ${ARCH}
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 34 +++++++++++++++-------------------
1 file changed, 15 insertions(+), 19 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 9e15fb08c..ea7c6591e 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -97,7 +97,7 @@ nuget_uris() {
for nuget in ${nugets}; do
local name version url
- [[ $nuget =~ $regex ]] || die "Could not parse name and version from nuget: $nuget"
+ [[ ${nuget} =~ ${regex} ]] || die "Could not parse name and version from nuget: $nuget"
name="${BASH_REMATCH[1]}"
version="${BASH_REMATCH[2]}"
url="https://api.nuget.org/v3-flatcontainer/${name}/${version}/${name}.${version}.nupkg"
@@ -109,24 +109,20 @@ nuget_uris() {
# @DESCRIPTION:
# Sets up DOTNET_RUNTIME and DOTNET_EXECUTABLE variables for later use in edotnet.
dotnet-utils_pkg_setup() {
- case "${ARCH}" in
- *amd64)
- DOTNET_RUNTIME="linux-x64"
- ;;
- *arm)
- DOTNET_RUNTIME="linux-arm"
- ;;
- *arm64)
- DOTNET_RUNTIME="linux-arm64"
- ;;
- *)
- die "Unsupported arch: ${ARCH}"
- ;;
- esac
-
- for _dotnet in dotnet-{${DOTNET_SLOT},bin-${DOTNET_SLOT}}; do
- if type $_dotnet 1> /dev/null 2>&1; then
- DOTNET_EXECUTABLE=$_dotnet
+ if use amd64; then
+ DOTNET_RUNTIME="linux-x64"
+ elif use arm; then
+ DOTNET_RUNTIME="linux-arm"
+ elif use arm64; then
+ DOTNET_RUNTIME="linux-arm64"
+ else
+ die "Unsupported arch: ${ARCH}"
+ fi
+
+ local _dotnet
+ for _dotnet in dotnet{,-bin}-${DOTNET_SLOT}; do
+ if type ${_dotnet} 1> /dev/null 2>&1; then
+ DOTNET_EXECUTABLE=${_dotnet}
break
fi
done
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: b54ed838ce8548a24d20c7192ae36747ff78de66
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 17:54:44 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 17:54:44 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=b54ed838
Revert "dotnet-utils.eclass: depend on virtual"
This reverts commit 13541aa6d02056b862fa4960b9e98c0f8a2e1408.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index d035a95da..be3953b89 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -29,7 +29,8 @@ if [[ ! ${DOTNET_SLOT} ]]; then
die "${ECLASS}: DOTNET_SLOT not set"
fi
-BDEPEND="virtual/dotnet-sdk:${DOTNET_SLOT}"
+# Temporary, use the virtual once you can have multiple virtuals installed at once
+BDEPEND+=" || ( dev-dotnet/dotnet-sdk:${DOTNET_SLOT} dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} )"
# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
# @DEFAULT_UNSET
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 3191567b7af405031ab9a2e4e5a01daad14293b2
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:33:26 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:01 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3191567b
dotnet-utils.eclass: use "edo"
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index ea7c6591e..17c2c685a 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -17,7 +17,7 @@ esac
if [[ ! ${_DOTNET_UTILS_ECLASS} ]]; then
_DOTNET_UTILS_ECLASS=1
-inherit multiprocessing
+inherit edo multiprocessing
# @ECLASS_VARIABLE: DOTNET_SLOT
# @REQUIRED
@@ -129,25 +129,18 @@ dotnet-utils_pkg_setup() {
}
# @FUNCTION: edotnet
-# @USAGE: [[command] <args> ...]
+# @USAGE: <command> [args...]
# @DESCRIPTION:
# Call dotnet, passing the supplied arguments.
-# @RETURN: dotnet exit code
edotnet() {
- debug-print-function ${FUNCNAME} "$@"
-
- local ret
-
- set -- "$DOTNET_EXECUTABLE" "${@}" --runtime "${DOTNET_RUNTIME}" -maxcpucount:$(makeopts_jobs)
- echo "${@}" >&2
- "${@}"
- ret=${?}
+ debug-print-function ${FUNCNAME} "${@}"
- if [[ ${ret} -ne 0 ]]; then
- die -n "edotnet failed"
- fi
+ local dotnet_args=(
+ --runtime "${DOTNET_RUNTIME}"
+ -maxcpucount:$(makeopts_jobs)
+ )
- return ${ret}
+ edo "${DOTNET_EXECUTABLE}" "${@}" "${dotnet_args[@]}"
}
# @FUNCTION: dotnet-utils_src_unpack
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 032cdad38dc59e27721f499261daef09832e0aa4
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:34:34 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:01 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=032cdad3
dotnet-utils.eclass: fix src_prepare
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 17c2c685a..7be67d216 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -163,13 +163,12 @@ dotnet-utils_src_unpack() {
# @FUNCTION: dotnet-utils_src_prepare
# @DESCRIPTION:
-# Restores the packages
+# Restore the packages using 'dotnet restore'
dotnet-utils_src_prepare() {
debug-print-function ${FUNCNAME} "${@}"
- edotnet restore \
- --source "${DISTDIR}" || die
- default
+ edotnet restore --source "${DISTDIR}" || die "Restore failed"
+ default_src_prepare
}
# @FUNCTION: dotnet-utils_src_compile
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-11-26 10:54 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2022-11-26 10:54 UTC (permalink / raw
To: gentoo-commits
commit: 13541aa6d02056b862fa4960b9e98c0f8a2e1408
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Nov 25 11:26:03 2022 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Nov 25 11:37:01 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=13541aa6
dotnet-utils.eclass: depend on virtual
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/dotnet-utils.eclass | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index 745676186..9e15fb08c 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -29,8 +29,7 @@ if [[ ! ${DOTNET_SLOT} ]]; then
die "${ECLASS}: DOTNET_SLOT not set"
fi
-# Temporary, use the virtual once you can have multiple virtuals installed at once
-BDEPEND+=" || ( dev-dotnet/dotnet-sdk:${DOTNET_SLOT} dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} )"
+BDEPEND="virtual/dotnet-sdk:${DOTNET_SLOT}"
# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
# @DEFAULT_UNSET
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2022-12-09 16:26 Ronny Gutbrod
0 siblings, 0 replies; 106+ messages in thread
From: Ronny Gutbrod @ 2022-12-09 16:26 UTC (permalink / raw
To: gentoo-commits
commit: c2df2fac2e785537f9f826ca9cec158c2a492c5c
Author: Anna (navi) Figueiredo Gomes <anna <AT> navirc <DOT> com>
AuthorDate: Thu Dec 8 16:53:29 2022 +0000
Commit: Ronny Gutbrod <gentoo <AT> tastytea <DOT> de>
CommitDate: Thu Dec 8 16:53:29 2022 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=c2df2fac
dotnet-utils.eclass: Typo in default src_compile
Signed-off-by: Anna (navi) Figueiredo Gomes <anna <AT> navirc.com>
eclass/dotnet-utils.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
index be3953b89..deeb4c3c0 100644
--- a/eclass/dotnet-utils.eclass
+++ b/eclass/dotnet-utils.eclass
@@ -178,7 +178,7 @@ dotnet-utils_src_prepare() {
dotnet-utils_src_compile() {
debug-print-function ${FUNCNAME} "${@}"
- local publist_args=(
+ local publish_args=(
--no-restore
--configuration Release
-p:Version=${PV}
@@ -186,7 +186,7 @@ dotnet-utils_src_compile() {
--self-contained
)
- edotnet publish "${publish_args}" || die "'dotnet publish' failed"
+ edotnet publish "${publish_args[@]}" || die "'dotnet publish' failed"
}
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-01-08 10:27 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-01-08 10:27 UTC (permalink / raw
To: gentoo-commits
commit: 993876f59fe1d91fdbef62ae37292730a7da1c7d
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Jan 7 13:55:38 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Sun Jan 8 02:17:24 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=993876f5
nim-utils.eclass: rename testament-skipfile.txt
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nim-utils.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/nim-utils.eclass b/eclass/nim-utils.eclass
index 61cb4b45e..03df41014 100644
--- a/eclass/nim-utils.eclass
+++ b/eclass/nim-utils.eclass
@@ -1,4 +1,4 @@
-# Copyright 2022 Gentoo Authors
+# Copyright 2022-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: nim-utils.eclass
@@ -97,7 +97,7 @@ etestament() {
testament_args+=( --megatest:off )
if [[ ${ETESTAMENT_DESELECT} ]]; then
- local skipfile="${T}"/testament.skipfile
+ local skipfile="${T}"/testament-skipfile.txt
if [[ ! -f ${skipfile} ]]; then
printf "%s\n" "${ETESTAMENT_DESELECT[@]}" > "${skipfile}" || die
else
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-02-27 15:06 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-02-27 15:06 UTC (permalink / raw
To: gentoo-commits
commit: f8621872924609016acb5639ef26369fe51ad673
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Feb 27 03:32:34 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Mon Feb 27 03:32:34 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=f8621872
shards.eclass: don't print env in src_configure
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 5c4ae2c82..0958709e3 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -56,10 +56,10 @@ shards_src_configure() {
debug-print-function ${FUNCNAME} "${@}"
crystal_configure
- einfo "CRYSTAL_OPTS='${CRYSTAL_OPTS}'"
+ debug-print "CRYSTAL_OPTS='${CRYSTAL_OPTS}'"
export CRYSTAL_PATH="${BROOT}$(shards_get_libdir):$(crystal env CRYSTAL_PATH || die "'crystal env' failed")"
- einfo "CRYSTAL_PATH='${CRYSTAL_PATH}'"
+ debug-print "CRYSTAL_PATH='${CRYSTAL_PATH}'"
tc-export CC
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-02-27 15:06 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-02-27 15:06 UTC (permalink / raw
To: gentoo-commits
commit: 611cc98f39adc9826d679dbea08cb569bb201cdd
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Feb 27 03:20:04 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Mon Feb 27 03:22:29 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=611cc98f
shards.eclass: enable verbose test runner
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index a78d792ba..5c4ae2c82 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -95,7 +95,7 @@ shards_src_test() {
debug-print-function ${FUNCNAME} "${@}"
if [[ -d "spec" ]]; then
- ecrystal spec "${@}" || die "Tests failed"
+ ecrystal spec --verbose "${@}" || die "Tests failed"
fi
return 0
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-04-01 21:30 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2023-04-01 21:30 UTC (permalink / raw
To: gentoo-commits
commit: 02350e141d89bb1415f0452188dbab8aebdb3083
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Mar 31 18:45:20 2023 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Fri Mar 31 18:47:58 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=02350e14
shell-completion.eclass: small fixes
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shell-completion.eclass | 35 ++++++++++++++---------------------
1 file changed, 14 insertions(+), 21 deletions(-)
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
index 008c1c0a0..aa7c7bab7 100644
--- a/eclass/shell-completion.eclass
+++ b/eclass/shell-completion.eclass
@@ -2,14 +2,15 @@
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: shell-completion.eclass
-# @SUPPORTED_EAPIS: 6 7 8
+# @SUPPORTED_EAPIS: 8
+# @PROVIDES: bash-completion-r1
# @MAINTAINER:
# Jonas Frei <freijon@pm.me>
-# @BLURB: A few quick functions to install various shell completion files
+# @BLURB: a few quick functions to install various shell completion files
# @DESCRIPTION:
-# This eclass provides a standardised way to install shell completions
-# for popular shells. It inherits the already widely adopted
-# `bash-completion-r1`, thus extending on its functionality.
+# This eclass provides a standardised way to install shell completions
+# for popular shells. It inherits the already widely adopted
+# 'bash-completion-r1', thus extending on its functionality.
case ${EAPI} in
8) ;;
@@ -24,44 +25,36 @@ inherit bash-completion-r1
# @FUNCTION: _shell-completion_get_fishcompdir
# @INTERNAL
-# @DESCRIPTION:
-# Get unprefixed fish completions directory
+# @RETURN: unprefixed fish completions directory
_shell-completion_get_fishcompdir() {
- debug-print-function ${FUNCNAME} "${@}"
-
echo "/usr/share/fish/vendor_completions.d"
}
# @FUNCTION: _shell-completion_get_zshcompdir
# @INTERNAL
-# @DESCRIPTION:
-# Get unprefixed zsh completions directory
+# @RETURN: unprefixed zsh completions directory
_shell-completion_get_zshcompdir() {
- debug-print-function ${FUNCNAME} "${@}"
-
echo "/usr/share/zsh/site-functions"
}
# @FUNCTION: get_fishcompdir
-# @DESCRIPTION:
-# Get the fish completions directory.
+# @RETURN: the fish completions directory (with EPREFIX)
get_fishcompdir() {
debug-print-function ${FUNCNAME} "${@}"
- echo "${EPREFIX}$(_get_fishcompdir)"
+ echo "${EPREFIX}$(_shell-completion_get_fishcompdir)"
}
# @FUNCTION: get_zshcompdir
-# @DESCRIPTION:
-# Get the zsh completions directory.
+# @RETURN: the zsh completions directory (with EPREFIX)
get_zshcompdir() {
debug-print-function ${FUNCNAME} "${@}"
- echo "${EPREFIX}$(_get_zshcompdir)"
+ echo "${EPREFIX}$(_shell-completion_get_zshcompdir)"
}
# @FUNCTION: dofishcomp
-# @USAGE: <file> [...]
+# @USAGE: <file...>
# @DESCRIPTION:
# Install fish completion files passed as args.
dofishcomp() {
@@ -75,7 +68,7 @@ dofishcomp() {
}
# @FUNCTION: dozshcomp
-# @USAGE: <file> [...]
+# @USAGE: <file...>
# @DESCRIPTION:
# Install zsh completion files passed as args.
dozshcomp() {
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-04-01 21:30 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2023-04-01 21:30 UTC (permalink / raw
To: gentoo-commits
commit: e8b38584b1308aa123c3b60278d0f683f2331628
Author: Jonas Frei <freijon <AT> pm <DOT> me>
AuthorDate: Fri Mar 31 18:13:03 2023 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Fri Mar 31 18:13:03 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=e8b38584
shell-completion.eclass: New eclass
Signed-off-by: Jonas Frei <freijon <AT> pm.me>
eclass/shell-completion.eclass | 119 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
new file mode 100644
index 000000000..271378c51
--- /dev/null
+++ b/eclass/shell-completion.eclass
@@ -0,0 +1,119 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: shell-completion.eclass
+# @SUPPORTED_EAPIS: 6 7 8
+# @MAINTAINER:
+# Jonas Frei <freijon@pm.me>
+# @BLURB: A few quick functions to install various shell completion files
+# @DESCRIPTION:
+# This eclass provides a standardised way to install shell completions
+# for popular shells. It inherits the already widely adopted
+# `bash-completion-r1`, thus extending on its functionality.
+
+if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then
+_SHELL_COMPLETION_ECLASS=1
+
+# Extend bash-completion-r1
+inherit bash-completion-r1
+
+case ${EAPI} in
+ 6|7|8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+# @FUNCTION: _shell-completion_get_fishcompdir
+# @INTERNAL
+# @DESCRIPTION:
+# Get unprefixed fish completions directory
+_shell-completion_get_fishcompdir() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ echo "/usr/share/fish/vendor_completions.d"
+}
+
+# @FUNCTION: _shell-completion_get_zshcompdir
+# @INTERNAL
+# @DESCRIPTION:
+# Get unprefixed zsh completions directory
+_shell-completion_get_zshcompdir() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ echo "/usr/share/zsh/site-functions"
+}
+
+# @FUNCTION: get_fishcompdir
+# @DESCRIPTION:
+# Get the fish completions directory.
+get_fishcompdir() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ echo "${EPREFIX}$(_get_fishcompdir)"
+}
+
+# @FUNCTION: get_zshcompdir
+# @DESCRIPTION:
+# Get the zsh completions directory.
+get_zshcompdir() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ echo "${EPREFIX}$(_get_zshcompdir)"
+}
+
+# @FUNCTION: dofishcomp
+# @USAGE: <file> [...]
+# @DESCRIPTION:
+# Install fish completion files passed as args.
+dofishcomp() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (
+ insopts -m 0644
+ insinto "$(_shell-completion_get_fishcompdir)"
+ doins "${@}"
+ )
+}
+
+# @FUNCTION: dozshcomp
+# @USAGE: <file> [...]
+# @DESCRIPTION:
+# Install zsh completion files passed as args.
+dozshcomp() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (
+ insopts -m 0644
+ insinto "$(_shell-completion_get_zshcompdir)"
+ doins "${@}"
+ )
+}
+
+# @FUNCTION: newfishcomp
+# @USAGE: <file> <newname>
+# @DESCRIPTION:
+# Install fish file under a new name.
+newfishcomp() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (
+ insopts -m 0644
+ insinto "$(_shell-completion_get_fishcompdir)"
+ newins "${@}"
+ )
+}
+
+# @FUNCTION: newzshcomp
+# @USAGE: <file> <newname>
+# @DESCRIPTION:
+# Install zsh file under a new name.
+newzshcomp() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (
+ insopts -m 0644
+ insinto "$(_shell-completion_get_zshcompdir)"
+ newins "${@}"
+ )
+}
+
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-04-01 21:30 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2023-04-01 21:30 UTC (permalink / raw
To: gentoo-commits
commit: 5c938acd334d8d33bbdb5a116fd11a7d885aaa40
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Mar 31 18:39:54 2023 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Fri Mar 31 18:39:54 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=5c938acd
shell-completion.eclass: move EAPI guard
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shell-completion.eclass | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
index 271378c51..008c1c0a0 100644
--- a/eclass/shell-completion.eclass
+++ b/eclass/shell-completion.eclass
@@ -11,17 +11,17 @@
# for popular shells. It inherits the already widely adopted
# `bash-completion-r1`, thus extending on its functionality.
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported"
+esac
+
if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then
_SHELL_COMPLETION_ECLASS=1
# Extend bash-completion-r1
inherit bash-completion-r1
-case ${EAPI} in
- 6|7|8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported."
-esac
-
# @FUNCTION: _shell-completion_get_fishcompdir
# @INTERNAL
# @DESCRIPTION:
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-04-13 7:02 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-04-13 7:02 UTC (permalink / raw
To: gentoo-commits
commit: 01245d2fcbce7ecdf0a900774b711eabc7541c36
Author: Jonas Frei <freijon <AT> pm <DOT> me>
AuthorDate: Wed Apr 12 18:42:30 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Wed Apr 12 18:42:30 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=01245d2f
shell-completion.eclass: Credit to original author
cc: @parona-source
Signed-off-by: Jonas Frei <freijon <AT> pm.me>
eclass/shell-completion.eclass | 2 ++
1 file changed, 2 insertions(+)
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
index aa7c7bab7..b7b59802a 100644
--- a/eclass/shell-completion.eclass
+++ b/eclass/shell-completion.eclass
@@ -4,6 +4,8 @@
# @ECLASS: shell-completion.eclass
# @SUPPORTED_EAPIS: 8
# @PROVIDES: bash-completion-r1
+# @AUTHOR:
+# Alfred Wingate <parona@protonmail.com>
# @MAINTAINER:
# Jonas Frei <freijon@pm.me>
# @BLURB: a few quick functions to install various shell completion files
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-11 14:32 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-05-11 14:32 UTC (permalink / raw
To: gentoo-commits
commit: a908862549f4504fd88bfbe5305dd3c34101ea77
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon May 8 18:51:48 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue May 9 15:42:47 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a9088625
crystal-utils.eclass: add crystal_build function
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/crystal-utils.eclass | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/eclass/crystal-utils.eclass b/eclass/crystal-utils.eclass
index 09a4049a4..3c0b7d48a 100644
--- a/eclass/crystal-utils.eclass
+++ b/eclass/crystal-utils.eclass
@@ -24,7 +24,7 @@ esac
if [[ ! ${_CRYSTAL_UTILS_ECLASS} ]]; then
_CRYSTAL_UTILS_ECLASS=1
-inherit edo flag-o-matic
+inherit edo flag-o-matic multiprocessing
# @ECLASS_VARIABLE: CRYSTAL_DEPS
# @OUTPUT_VARIABLE
@@ -151,4 +151,17 @@ eshards() {
edo shards "${args[@]}" "${@}"
}
+# @FUNCTION: crystal_build
+# @USAGE: <args>...
+# @DESCRIPTION:
+# Function for building a target. All arguments are passed to crystal.
+crystal_build() {
+ local build_args=(
+ --threads=$(makeopts_jobs)
+ --verbose
+ )
+
+ ecrystal build "${build_args[@]}" "${@}"
+}
+
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-11 14:32 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-05-11 14:32 UTC (permalink / raw
To: gentoo-commits
commit: 8a943f0dd2fb8c23968fdddd2c43b5d7fe0bca29
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon May 8 18:50:50 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue May 9 15:42:46 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8a943f0d
shards.eclass: do not use 'shards build'
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index f17f93cb9..122464cc5 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -67,19 +67,10 @@ shards_src_configure() {
# @FUNCTION: shards_src_compile
# @DESCRIPTION:
-# General function for building packages using Shards.
+# Function for building the package's documentation.
shards_src_compile() {
debug-print-function ${FUNCNAME} "${@}"
- local build_args=(
- --threads=$(makeopts_jobs)
- --verbose
- )
-
- if gshards-has-targets; then
- eshards build "${build_args[@]}"
- fi
-
if use doc; then
ecrystal docs
HTML_DOCS=( docs/. )
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-11 14:32 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-05-11 14:32 UTC (permalink / raw
To: gentoo-commits
commit: 471145080920d7798f2e00a1001f7d454b29f02f
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon May 8 18:53:50 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue May 9 15:42:47 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=47114508
crystal-utils.eclass: add crystal_spec function
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/crystal-utils.eclass | 8 ++++++++
eclass/shards.eclass | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/eclass/crystal-utils.eclass b/eclass/crystal-utils.eclass
index 3c0b7d48a..8456c5af6 100644
--- a/eclass/crystal-utils.eclass
+++ b/eclass/crystal-utils.eclass
@@ -164,4 +164,12 @@ crystal_build() {
ecrystal build "${build_args[@]}" "${@}"
}
+# @FUNCTION: crystal_spec
+# @USAGE: [<args>...]
+# @DESCRIPTION:
+# Function for running tests. All arguments are passed to crystal.
+crystal_spec() {
+ ecrystal spec --verbose "${@}" || die -n "Tests failed"
+}
+
fi
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 122464cc5..5fd9f6c10 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -87,7 +87,7 @@ shards_src_test() {
debug-print-function ${FUNCNAME} "${@}"
if [[ -d "spec" ]]; then
- ecrystal spec --verbose "${@}" || die "Tests failed"
+ crystal_spec "${@}"
fi
return 0
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-11 14:32 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-05-11 14:32 UTC (permalink / raw
To: gentoo-commits
commit: 68db6d9b906fc6c0efecfdbc797aa286bc155546
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue May 9 19:28:54 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue May 9 19:30:07 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=68db6d9b
shards.eclass: detect build targets using gshards
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 5fd9f6c10..0de0deb47 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -28,7 +28,7 @@ inherit crystal-utils multiprocessing toolchain-funcs
BDEPEND="
${CRYSTAL_DEPS}
${SHARDS_DEPS}
- dev-util/gshards
+ >=dev-util/gshards-0.2
"
IUSE="debug doc"
@@ -67,10 +67,15 @@ shards_src_configure() {
# @FUNCTION: shards_src_compile
# @DESCRIPTION:
-# Function for building the package's documentation.
+# Function for building the package's executables and documentation.
shards_src_compile() {
debug-print-function ${FUNCNAME} "${@}"
+ local args
+ gshards-print-targets | while read -r args; do
+ crystal_build "${@}" ${args}
+ done
+
if use doc; then
ecrystal docs
HTML_DOCS=( docs/. )
@@ -95,14 +100,10 @@ shards_src_test() {
# @FUNCTION: shards_src_install
# @DESCRIPTION:
-# Function for installing the package.
+# Function for installing the package's source.
shards_src_install() {
debug-print-function ${FUNCNAME} "${@}"
- if [[ -d "bin" ]]; then
- dobin bin/*
- fi
-
if [[ -d "src" ]]; then
insinto $(shards_get_libdir)/$(shards_get_pkgname)
doins -r src
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-11 14:32 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-05-11 14:32 UTC (permalink / raw
To: gentoo-commits
commit: ec1443faebbc71275ac1d107074d4ab4255574dc
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon May 8 17:25:56 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Tue May 9 15:42:46 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ec1443fa
shards.eclass: set SHARDS_INSTALL_PATH
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 0958709e3..f17f93cb9 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -58,7 +58,8 @@ shards_src_configure() {
crystal_configure
debug-print "CRYSTAL_OPTS='${CRYSTAL_OPTS}'"
- export CRYSTAL_PATH="${BROOT}$(shards_get_libdir):$(crystal env CRYSTAL_PATH || die "'crystal env' failed")"
+ export SHARDS_INSTALL_PATH="${BROOT}$(shards_get_libdir)"
+ export CRYSTAL_PATH="${SHARDS_INSTALL_PATH}:$(crystal env CRYSTAL_PATH || die "'crystal env' failed")"
debug-print "CRYSTAL_PATH='${CRYSTAL_PATH}'"
tc-export CC
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-22 5:17 Viorel Munteanu
0 siblings, 0 replies; 106+ messages in thread
From: Viorel Munteanu @ 2023-05-22 5:17 UTC (permalink / raw
To: gentoo-commits
commit: e75c73870af006070292d631e1fe4e7490b0a5ec
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun May 21 16:17:52 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Sun May 21 16:19:55 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=e75c7387
crystal-utils.eclass: add CRYSTAL_DEFINES var
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/crystal-utils.eclass | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/eclass/crystal-utils.eclass b/eclass/crystal-utils.eclass
index 8456c5af6..57325a993 100644
--- a/eclass/crystal-utils.eclass
+++ b/eclass/crystal-utils.eclass
@@ -48,6 +48,11 @@ SHARDS_DEPS="
)
"
+# @ECLASS_VARIABLE: CRYSTAL_DEFINES
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# List of compile-time defines. Used by 'crystal build' and 'crystal docs'.
+
# @FUNCTION: _crystal_get_colors_opt
# @INTERNAL
# @RETURN: "--no-color" if colors should be disabled, empty string otherwise
@@ -76,15 +81,6 @@ _crystal_get_debug_opt() {
# mycrystalargs bash array.
#
# Must be run or ecrystal/eshards will fail.
-#
-# @CODE
-# src_configure() {
-# local mycrystalargs=(
-# -Dfoo
-# )
-# crystal_configure
-# }
-# @CODE
crystal_configure() {
debug-print-function ${FUNCNAME} "${@}"
@@ -107,6 +103,7 @@ crystal_configure() {
$(is-flagq -mcpu && echo "--mcpu=$(get-flag mcpu)")
$(is-flagq -mcmodel && echo "--mcmodel=$(get-flag mcmodel)")
# TODO: --mattr
+ "${CRYSTAL_DEFINES[@]}"
"${mycrystalargs[@]}"
)
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-05-22 5:17 Viorel Munteanu
0 siblings, 0 replies; 106+ messages in thread
From: Viorel Munteanu @ 2023-05-22 5:17 UTC (permalink / raw
To: gentoo-commits
commit: a5f49bbc8a320932ab708e68eb86d9666ec48ded
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sun May 21 16:18:29 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Sun May 21 16:19:55 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a5f49bbc
shards.eclass: pass CRYSTAL_DEFINES to docs cmd
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/shards.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/shards.eclass b/eclass/shards.eclass
index 0de0deb47..3258cea48 100644
--- a/eclass/shards.eclass
+++ b/eclass/shards.eclass
@@ -77,7 +77,7 @@ shards_src_compile() {
done
if use doc; then
- ecrystal docs
+ ecrystal docs "${CRYSTAL_DEFINES[@]}"
HTML_DOCS=( docs/. )
fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-06-26 11:24 Andrew Ammerlaan
0 siblings, 0 replies; 106+ messages in thread
From: Andrew Ammerlaan @ 2023-06-26 11:24 UTC (permalink / raw
To: gentoo-commits
commit: c64dbb92037c38a5afb44467023b7ece43d662c5
Author: Haelwenn (lanodan) Monnier <contact <AT> hacktivis <DOT> me>
AuthorDate: Sat Jun 24 19:13:05 2023 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Sat Jun 24 19:13:05 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=c64dbb92
mix.eclass: New eclass, used by www-apps/pleroma
Signed-off-by: Haelwenn (lanodan) Monnier <contact <AT> hacktivis.me>
eclass/mix.eclass | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 95 insertions(+)
diff --git a/eclass/mix.eclass b/eclass/mix.eclass
new file mode 100644
index 000000000..b7d464731
--- /dev/null
+++ b/eclass/mix.eclass
@@ -0,0 +1,95 @@
+# Copyright 2019-2023 Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: mix.eclass
+# @MAINTAINER:
+# Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+# @AUTHOR:
+# Haelwenn (lanodan) Monnier <contact@hacktivis.me>
+# @SUPPORTED_EAPIS: 6 7 8
+# @BLURB: Build Elixir projects using Elixir's mix
+# @DESCRIPTION:
+# An eclass providing functions to build Elixir projects using Elixir's mix
+#
+# mix is a tool which tries to resolve dependencies itself
+
+case "${EAPI:-0}" in
+ 0|1|2|3|4|5)
+ die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
+ ;;
+ 6|7)
+ ;;
+ *)
+ die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
+ ;;
+esac
+
+EXPORT_FUNCTIONS src_prepare src_compile src_install
+
+RDEPEND="dev-lang/elixir"
+DEPEND="${RDEPEND}"
+
+# Erlang/Elixir software fails to build when another version with API
+# differences is present
+BDEPEND="!<${CATEGORY}/${P} !>${CATEGORY}/${P}"
+
+# @ECLASS-VARIABLE: HEX_OFFLINE
+HEX_OFFLINE=1
+
+# @ECLASS-VARIABLE: MIX_ENV
+MIX_ENV="prod"
+
+# @ECLASS-VARIABLE: MIX_NO_DEPS
+MIX_NO_DEPS=1
+
+# @FUNCTION: emix
+# @USAGE: <targets>
+# @DESCRIPTION:
+# Run mix with provided arguments. Die on failure
+emix() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (( $# > 0 )) || die "emix: at least one target is required"
+
+ MIX_ENV="${MIX_ENV}" mix "$@" || die -n "mix $@ failed"
+}
+
+# @ECLASS-VARIABLE: MIX_REWRITE
+MIX_REWRITE=""
+
+# @ECLASS-VARIABLE: MIX_BUILD_NAME
+MIX_BUILD_NAME="${MIX_ENV}"
+
+# @FUNCTION: mix_src_prepare
+mix_src_prepare() {
+ if [[ "${MIX_REWRITE}" != "" ]]
+ then
+ sed -i -E -e 's@\{.*(only|optional): .*},?@@' mix.exs || die "failed removing only & optionnal deps"
+ rm -f mix.lock
+ fi
+
+ default
+}
+
+# @FUNCTION: mix_src_compile
+# @DESCRIPTION:
+# Compile project with mix.
+mix_src_compile() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ emix compile --no-deps-check
+}
+
+# @FUNCTION: mix_src_install
+# @DESCRIPTION:
+# Install project with mix.
+mix_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ insinto "/usr/$(get_libdir)/elixir/lib/${P}"
+ pushd "_build/${MIX_BUILD_NAME}/lib/${PN}" >/dev/null
+ for reldir in src ebin priv include; do
+ [ -d "$reldir" ] && doins -r "$(realpath ${reldir})"
+ done
+ popd >/dev/null
+}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-07-17 14:24 Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-07-17 14:24 UTC (permalink / raw
To: gentoo-commits
commit: 0dc3cf6dd34d411d7dd8d2aaab7c3b319dcb3f22
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 17 14:21:06 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Mon Jul 17 14:21:06 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=0dc3cf6d
shell-completion.eclass: promoted to ::gentoo
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
eclass/shell-completion.eclass | 114 -----------------------------------------
1 file changed, 114 deletions(-)
diff --git a/eclass/shell-completion.eclass b/eclass/shell-completion.eclass
deleted file mode 100644
index b7b59802a..000000000
--- a/eclass/shell-completion.eclass
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: shell-completion.eclass
-# @SUPPORTED_EAPIS: 8
-# @PROVIDES: bash-completion-r1
-# @AUTHOR:
-# Alfred Wingate <parona@protonmail.com>
-# @MAINTAINER:
-# Jonas Frei <freijon@pm.me>
-# @BLURB: a few quick functions to install various shell completion files
-# @DESCRIPTION:
-# This eclass provides a standardised way to install shell completions
-# for popular shells. It inherits the already widely adopted
-# 'bash-completion-r1', thus extending on its functionality.
-
-case ${EAPI} in
- 8) ;;
- *) die "${ECLASS}: EAPI ${EAPI:-0} not supported"
-esac
-
-if [[ ! ${_SHELL_COMPLETION_ECLASS} ]]; then
-_SHELL_COMPLETION_ECLASS=1
-
-# Extend bash-completion-r1
-inherit bash-completion-r1
-
-# @FUNCTION: _shell-completion_get_fishcompdir
-# @INTERNAL
-# @RETURN: unprefixed fish completions directory
-_shell-completion_get_fishcompdir() {
- echo "/usr/share/fish/vendor_completions.d"
-}
-
-# @FUNCTION: _shell-completion_get_zshcompdir
-# @INTERNAL
-# @RETURN: unprefixed zsh completions directory
-_shell-completion_get_zshcompdir() {
- echo "/usr/share/zsh/site-functions"
-}
-
-# @FUNCTION: get_fishcompdir
-# @RETURN: the fish completions directory (with EPREFIX)
-get_fishcompdir() {
- debug-print-function ${FUNCNAME} "${@}"
-
- echo "${EPREFIX}$(_shell-completion_get_fishcompdir)"
-}
-
-# @FUNCTION: get_zshcompdir
-# @RETURN: the zsh completions directory (with EPREFIX)
-get_zshcompdir() {
- debug-print-function ${FUNCNAME} "${@}"
-
- echo "${EPREFIX}$(_shell-completion_get_zshcompdir)"
-}
-
-# @FUNCTION: dofishcomp
-# @USAGE: <file...>
-# @DESCRIPTION:
-# Install fish completion files passed as args.
-dofishcomp() {
- debug-print-function ${FUNCNAME} "${@}"
-
- (
- insopts -m 0644
- insinto "$(_shell-completion_get_fishcompdir)"
- doins "${@}"
- )
-}
-
-# @FUNCTION: dozshcomp
-# @USAGE: <file...>
-# @DESCRIPTION:
-# Install zsh completion files passed as args.
-dozshcomp() {
- debug-print-function ${FUNCNAME} "${@}"
-
- (
- insopts -m 0644
- insinto "$(_shell-completion_get_zshcompdir)"
- doins "${@}"
- )
-}
-
-# @FUNCTION: newfishcomp
-# @USAGE: <file> <newname>
-# @DESCRIPTION:
-# Install fish file under a new name.
-newfishcomp() {
- debug-print-function ${FUNCNAME} "${@}"
-
- (
- insopts -m 0644
- insinto "$(_shell-completion_get_fishcompdir)"
- newins "${@}"
- )
-}
-
-# @FUNCTION: newzshcomp
-# @USAGE: <file> <newname>
-# @DESCRIPTION:
-# Install zsh file under a new name.
-newzshcomp() {
- debug-print-function ${FUNCNAME} "${@}"
-
- (
- insopts -m 0644
- insinto "$(_shell-completion_get_zshcompdir)"
- newins "${@}"
- )
-}
-
-fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2023-08-04 7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
@ 2023-08-04 7:26 ` Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-08-04 7:26 UTC (permalink / raw
To: gentoo-commits
commit: 252e74e80c0d3497de0d2d9b2324f364b30a8b01
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 4 07:24:32 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Aug 4 07:25:55 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=252e74e8
R-packages.eclass: simplify code, inline movelink function
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
eclass/R-packages.eclass | 53 +++++++++++++++++++++---------------------------
1 file changed, 23 insertions(+), 30 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index 6dac19a161..f55cb9e417 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: R-packages.eclass
@@ -59,23 +59,6 @@ SLOT="0"
DEPEND="dev-lang/R"
RDEPEND="${DEPEND}"
-# @FUNCTION: _movelink
-# @INTERNAL
-# @USAGE: <source> <dest>
-# @DESCRIPTION:
-# <dest> will contain symlinks to everything in <source>
-_movelink() {
- local source=${1}
- local dest=${2}
- if [[ -e "${source}" ]]; then
- local rdir=/usr/$(get_libdir)/R/site-library/${CRAN_PN}
- local rp_source="${rdir}/${source}"
- insinto ${rdir}
- doins -r ${source}
- ln -s "${rp_source}" "${dest}" || die
- fi
-}
-
# @FUNCTION: R-packages_src_unpack
# @DEPRECATED: none
# @DESCRIPTION:
@@ -134,7 +117,6 @@ R-packages_src_compile() {
edo R CMD INSTALL . -d -l "${T}"/R --byte-compile
}
-
# @FUNCTION: R-packages_src_install
# @DESCRIPTION:
# Move files into right folders.
@@ -150,22 +132,33 @@ R-packages_src_install() {
local EDOCDIR="${ED}${DOCDIR}"
mkdir -p "${EDOCDIR}" || die
+ # _maybe_movelink <target> <link_name>
+ # If target exists, installs everything under target into R's
+ # site-library for the package and creates a link with the name
+ # <link_name> to it.
+ _maybe_movelink() {
+ local target=${1}
+ local link_name=${2}
+ if [[ ! -e "${target}" ]]; then
+ return
+ fi
+
+ local rdir=/usr/$(get_libdir)/R/site-library/${CRAN_PN}
+ local rp_source="${rdir}/${target}"
+ insinto ${rdir}
+ doins -r ${target}
+ ln -s "${rp_source}" "${link_name}" || die
+ }
+
for i in {NEWS,README}.md DESCRIPTION CITATION INDEX NEWS WORDLIST News.Rd; do
- _movelink "${i}" "${EDOCDIR}/${i}"
+ _maybe_movelink "${i}" "${EDOCDIR}/${i}"
done
- if [[ -e html ]]; then
- _movelink html "${EDOCDIR}"/html
- fi
+ _maybe_movelink html "${EDOCDIR}"/html
- if [[ -e examples ]]; then
- _movelink examples "${EDOCDIR}"/examples
- docompress -x "${DOCDIR}"/examples
- fi
+ _maybe_movelink examples "${EDOCDIR}"/examples
- if [[ -e doc ]]; then
- _movelink doc "${EDOCDIR}"/doc
- fi
+ _maybe_movelink doc "${EDOCDIR}"/doc
rm -f LICENSE || die
rm -rf tests test || die
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2023-08-04 7:26 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
@ 2023-08-04 7:26 ` Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2023-08-04 7:26 UTC (permalink / raw
To: gentoo-commits
commit: 4e1d7e84973a548a8040739984c4bd467d6f7838
Author: David Roman <davidroman96 <AT> gmail <DOT> com>
AuthorDate: Thu Aug 3 07:32:41 2023 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Fri Aug 4 07:25:55 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4e1d7e84
R-packages.eclass: fix package installation
Instead of creating a symlink R/site-library -> /usr/share/doc
do it otherwise, linking /usr/share/doc -> R/site-library.
This way if nodoc is enabled symlinks won't be broken.
Signed-off-by: David Roman <droman <AT> ifae.es>
Closes: https://github.com/gentoo/guru/pull/102
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
eclass/R-packages.eclass | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index ed63cff46f..6dac19a161 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -68,9 +68,11 @@ _movelink() {
local source=${1}
local dest=${2}
if [[ -e "${source}" ]]; then
- local rp_source="$(realpath ${source} || die)"
- mv "${rp_source}" "${dest}" || die
- cp -rsf "${dest}" "${rp_source}" || die
+ local rdir=/usr/$(get_libdir)/R/site-library/${CRAN_PN}
+ local rp_source="${rdir}/${source}"
+ insinto ${rdir}
+ doins -r ${source}
+ ln -s "${rp_source}" "${dest}" || die
fi
}
@@ -162,11 +164,7 @@ R-packages_src_install() {
fi
if [[ -e doc ]]; then
- pushd doc || die
- for i in *; do
- _movelink "${i}" "${EDOCDIR}/${i}"
- done
- popd || die
+ _movelink doc "${EDOCDIR}"/doc
fi
rm -f LICENSE || die
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-08-07 12:51 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2023-08-07 12:51 UTC (permalink / raw
To: gentoo-commits
commit: 4ae1d46d5b0770caa9ff7d7c6891476b6e293218
Author: Haelwenn (lanodan) Monnier <contact <AT> hacktivis <DOT> me>
AuthorDate: Sun Aug 6 12:14:47 2023 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sun Aug 6 12:21:17 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4ae1d46d
mix.eclass: Add subslot on erlang
Closes: https://bugs.gentoo.org/909293
Signed-off-by: Haelwenn (lanodan) Monnier <contact <AT> hacktivis.me>
eclass/mix.eclass | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/eclass/mix.eclass b/eclass/mix.eclass
index b7d4647313..39c6bed500 100644
--- a/eclass/mix.eclass
+++ b/eclass/mix.eclass
@@ -26,7 +26,10 @@ esac
EXPORT_FUNCTIONS src_prepare src_compile src_install
-RDEPEND="dev-lang/elixir"
+RDEPEND="
+ dev-lang/elixir
+ dev-lang/erlang:=
+"
DEPEND="${RDEPEND}"
# Erlang/Elixir software fails to build when another version with API
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-08-07 12:51 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2023-08-07 12:51 UTC (permalink / raw
To: gentoo-commits
commit: 9721644167277d26aa761cf9c11f8191c04b4968
Author: Haelwenn (lanodan) Monnier <contact <AT> hacktivis <DOT> me>
AuthorDate: Mon Aug 7 05:59:04 2023 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Mon Aug 7 05:59:16 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=97216441
mix.eclass: fix self-blocking of revisions
Signed-off-by: Haelwenn (lanodan) Monnier <contact <AT> hacktivis.me>
eclass/mix.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/mix.eclass b/eclass/mix.eclass
index 39c6bed500..b5071e94d8 100644
--- a/eclass/mix.eclass
+++ b/eclass/mix.eclass
@@ -34,7 +34,7 @@ DEPEND="${RDEPEND}"
# Erlang/Elixir software fails to build when another version with API
# differences is present
-BDEPEND="!<${CATEGORY}/${P} !>${CATEGORY}/${P}"
+BDEPEND="!<${CATEGORY}/${P} !>${CATEGORY}/${PF}"
# @ECLASS-VARIABLE: HEX_OFFLINE
HEX_OFFLINE=1
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2023-08-30 5:30 [gentoo-commits] repo/proj/guru:dev " Viorel Munteanu
@ 2023-08-30 5:36 ` Viorel Munteanu
0 siblings, 0 replies; 106+ messages in thread
From: Viorel Munteanu @ 2023-08-30 5:36 UTC (permalink / raw
To: gentoo-commits
commit: a94ddaa8ddb476efbe5cb16e9b2c84adbc7ce8f1
Author: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 30 05:17:30 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Wed Aug 30 05:17:30 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a94ddaa8
R-packages.eclass: remove eutils
Signed-off-by: Viorel Munteanu <ceamac <AT> gentoo.org>
eclass/R-packages.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
index f55cb9e417..a701c96178 100644
--- a/eclass/R-packages.eclass
+++ b/eclass/R-packages.eclass
@@ -20,7 +20,7 @@ esac
if [ ! ${_R_PACKAGES_ECLASS} ]; then
-inherit edo eutils optfeature toolchain-funcs
+inherit edo optfeature toolchain-funcs
# @ECLASS_VARIABLE: SUGGESTED_PACKAGES
# @DEPRECATED: none
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-10-05 6:18 Viorel Munteanu
0 siblings, 0 replies; 106+ messages in thread
From: Viorel Munteanu @ 2023-10-05 6:18 UTC (permalink / raw
To: gentoo-commits
commit: ac877450a597dd50acc85f176c3d4b2930b5cb49
Author: Anna (navi) Figueiredo Gomes <navi <AT> vlhl <DOT> dev>
AuthorDate: Wed Oct 4 20:48:17 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Wed Oct 4 20:52:48 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ac877450
dotnet-utils.eclass: superseeded by dotnet-pkg in ::gentoo
the only consumer in ::guru was xivlauncher, which got ported to
dotnet-pkg in 1.0.5
Signed-off-by: Anna (navi) Figueiredo Gomes <navi <AT> vlhl.dev>
eclass/dotnet-utils.eclass | 194 ---------------------------------------------
1 file changed, 194 deletions(-)
diff --git a/eclass/dotnet-utils.eclass b/eclass/dotnet-utils.eclass
deleted file mode 100644
index 5130467cde..0000000000
--- a/eclass/dotnet-utils.eclass
+++ /dev/null
@@ -1,194 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: dotnet-utils.eclass
-# @MAINTAINER:
-# navi@vlhl.dev
-# @AUTHOR:
-# Anna Figueiredo Gomes <navi@vlhl.dev>
-# @SUPPORTED_EAPIS: 7 8
-# @BLURB: common functions and variables for dotnet builds
-
-case ${EAPI} in
- 7|8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported." ;;
-esac
-
-if [[ ! ${_DOTNET_UTILS_ECLASS} ]]; then
-_DOTNET_UTILS_ECLASS=1
-
-inherit edo multiprocessing
-
-# @ECLASS_VARIABLE: DOTNET_SLOT
-# @REQUIRED
-# @PRE_INHERIT
-# @DESCRIPTION:
-# Allows to choose a slot for dotnet
-
-if [[ ! ${DOTNET_SLOT} ]]; then
- die "${ECLASS}: DOTNET_SLOT not set"
-fi
-
-# Temporary, use the virtual once you can have multiple virtuals installed at once
-BDEPEND+=" || ( dev-dotnet/dotnet-sdk-bin:${DOTNET_SLOT} dev-dotnet/dotnet-sdk:${DOTNET_SLOT} )"
-
-# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Sets the right executable name.
-
-# @ECLASS_VARIABLE: DOTNET_CLI_TELEMETRY_OPTOUT
-# @OUTPUT_VARIABLE
-# @DESCRIPTION:
-# Disables telemetry on dotnet.
-export DOTNET_CLI_TELEMETRY_OPTOUT=1
-
-# @ECLASS_VARIABLE: MSBUILDDISABLENODEREUSE
-# @OUTPUT_VARIABLE
-# @DESCRIPTION:
-# Stops the dotnet node after the build is done.
-export MSBUILDDISABLENODEREUSE=1
-
-# @ECLASS_VARIABLE: DOTNET_NOLOGO
-# @OUTPUT_VARIABLE
-# @DESCRIPTION:
-# Disables the header logo when running dotnet commands.
-export DOTNET_NOLOGO=1
-
-# Needed otherwise the binaries break
-RESTRICT+=" strip"
-
-# @ECLASS_VARIABLE: NUGETS
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# String containing all nuget packages that need to be downloaded. Used by
-# the 'nuget_uris' function.
-#
-# Example:
-# @CODE
-# NUGETS="
-# ImGui.NET-1.87.2
-# Config.Net-4.19.0
-# "
-#
-# inherit dotnet-utils
-#
-# ...
-#
-# SRC_URI="$(nuget_uris)"
-# @CODE
-
-# @FUNCTION: nuget_uris
-# @USAGE: <nuget...>
-# @DESCRIPTION:
-# Generates the URIs to put in SRC_URI to help fetch dependencies.
-# If no arguments provided, uses NUGETS variable.
-nuget_uris() {
- local -r regex='^([a-zA-Z0-9_.-]+)-([0-9]+\.[0-9]+\.[0-9]+.*)$'
- local nuget nugets
-
- if (( $# != 0 )); then
- nugets="${@}"
- elif [[ ${NUGETS} ]]; then
- nugets="${NUGETS}"
- else
- eerror "NUGETS variable is not defined and nothing passed as argument"
- die "${FUNCNAME}: Can't generate SRC_URI from empty input"
- fi
-
- for nuget in ${nugets}; do
- local name version url
- [[ ${nuget} =~ ${regex} ]] || die "Could not parse name and version from nuget: $nuget"
- name="${BASH_REMATCH[1]}"
- version="${BASH_REMATCH[2]}"
- url="https://api.nuget.org/v3-flatcontainer/${name}/${version}/${name}.${version}.nupkg"
- echo "${url}"
- done
-}
-
-# @FUNCTION: dotnet-utils_pkg_setup
-# @DESCRIPTION:
-# Sets up DOTNET_RUNTIME and DOTNET_EXECUTABLE variables for later use in edotnet.
-dotnet-utils_pkg_setup() {
- if use amd64; then
- DOTNET_RUNTIME="linux-x64"
- elif use arm; then
- DOTNET_RUNTIME="linux-arm"
- elif use arm64; then
- DOTNET_RUNTIME="linux-arm64"
- else
- die "Unsupported arch: ${ARCH}"
- fi
-
- local _dotnet
- for _dotnet in dotnet{,-bin}-${DOTNET_SLOT}; do
- if type ${_dotnet} 1> /dev/null 2>&1; then
- DOTNET_EXECUTABLE=${_dotnet}
- break
- fi
- done
-}
-
-# @FUNCTION: edotnet
-# @USAGE: <command> [args...]
-# @DESCRIPTION:
-# Call dotnet, passing the supplied arguments.
-edotnet() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local dotnet_args=(
- --runtime "${DOTNET_RUNTIME}"
- -maxcpucount:$(makeopts_jobs)
- )
-
- edo "${DOTNET_EXECUTABLE}" "${@}" "${dotnet_args[@]}"
-}
-
-# @FUNCTION: dotnet-utils_src_unpack
-# @DESCRIPTION:
-# Unpacks the package
-dotnet-utils_src_unpack() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local archive
- for archive in ${A}; do
- case "${archive}" in
- *.nupkg)
- ;;
- *)
- unpack ${archive}
- ;;
- esac
- done
-}
-
-# @FUNCTION: dotnet-utils_src_prepare
-# @DESCRIPTION:
-# Restore the packages using 'dotnet restore'
-dotnet-utils_src_prepare() {
- debug-print-function ${FUNCNAME} "${@}"
-
- edotnet restore --source "${DISTDIR}" || die "'dotnet restore' failed"
- default_src_prepare
-}
-
-# @FUNCTION: dotnet-utils_src_compile
-# @DESCRIPTION:
-# Build the package using dotnet publish
-dotnet-utils_src_compile() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local publish_args=(
- --no-restore
- --configuration Release
- -p:Version=${PV}
- -p:DebugType=embedded
- --self-contained
- )
-
- edotnet publish "${publish_args[@]}" || die "'dotnet publish' failed"
-}
-
-fi
-
-EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_compile
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2023-10-05 14:25 Viorel Munteanu
0 siblings, 0 replies; 106+ messages in thread
From: Viorel Munteanu @ 2023-10-05 14:25 UTC (permalink / raw
To: gentoo-commits
commit: b7fb055a13af12299ecab8ba34b451ee2a0bd8b7
Author: David Roman <davidroman96 <AT> gmail <DOT> com>
AuthorDate: Thu Oct 5 13:09:58 2023 +0000
Commit: Viorel Munteanu <ceamac <AT> gentoo <DOT> org>
CommitDate: Thu Oct 5 13:09:58 2023 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=b7fb055a
eclass: rename deprecated ECLASS-VARIABLE to ECLASS_VARIABLE
Signed-off-by: David Roman <davidroman96 <AT> gmail.com>
eclass/mix.eclass | 10 +++++-----
eclass/octaveforge.eclass | 8 ++++----
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/eclass/mix.eclass b/eclass/mix.eclass
index b5071e94d8..a1f079f77f 100644
--- a/eclass/mix.eclass
+++ b/eclass/mix.eclass
@@ -36,13 +36,13 @@ DEPEND="${RDEPEND}"
# differences is present
BDEPEND="!<${CATEGORY}/${P} !>${CATEGORY}/${PF}"
-# @ECLASS-VARIABLE: HEX_OFFLINE
+# @ECLASS_VARIABLE: HEX_OFFLINE
HEX_OFFLINE=1
-# @ECLASS-VARIABLE: MIX_ENV
+# @ECLASS_VARIABLE: MIX_ENV
MIX_ENV="prod"
-# @ECLASS-VARIABLE: MIX_NO_DEPS
+# @ECLASS_VARIABLE: MIX_NO_DEPS
MIX_NO_DEPS=1
# @FUNCTION: emix
@@ -57,10 +57,10 @@ emix() {
MIX_ENV="${MIX_ENV}" mix "$@" || die -n "mix $@ failed"
}
-# @ECLASS-VARIABLE: MIX_REWRITE
+# @ECLASS_VARIABLE: MIX_REWRITE
MIX_REWRITE=""
-# @ECLASS-VARIABLE: MIX_BUILD_NAME
+# @ECLASS_VARIABLE: MIX_BUILD_NAME
MIX_BUILD_NAME="${MIX_ENV}"
# @FUNCTION: mix_src_prepare
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
index 0e2c166046..0528d2d907 100644
--- a/eclass/octaveforge.eclass
+++ b/eclass/octaveforge.eclass
@@ -19,24 +19,24 @@ esac
EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install src_test pkg_postinst pkg_prerm pkg_postrm
-# @ECLASS-VARIABLE: REPO_URI
+# @ECLASS_VARIABLE: REPO_URI
# @DESCRIPTION:
# URI to the sourceforge octave-forge repository
REPO_URI="http://svn.code.sf.net/p/octave/code/trunk/octave-forge"
# defining some paths
-# @ECLASS-VARIABLE: OCT_ROOT
+# @ECLASS_VARIABLE: OCT_ROOT
# @DESCRIPTION:
# full path to octave share
OCT_ROOT="/usr/share/octave"
-# @ECLASS-VARIABLE: OCT_PKGDIR
+# @ECLASS_VARIABLE: OCT_PKGDIR
# @DESCRIPTION:
# path to octave pkgdir
OCT_PKGDIR="${OCT_ROOT}/packages"
-# @ECLASS-VARIABLE: OCT_BIN
+# @ECLASS_VARIABLE: OCT_BIN
# @DESCRIPTION:
# octave binary name
OCT_BIN="octave"
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-01-03 15:20 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-01-03 15:20 UTC (permalink / raw
To: gentoo-commits
commit: 8281fc17d53355b09cf12e87a58bd31b29538f85
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Jan 1 20:38:57 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Mon Jan 1 21:26:59 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8281fc17
rebar3.eclass: new eclass for dev-util/rebar:3
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/rebar3.eclass | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 295 insertions(+)
diff --git a/eclass/rebar3.eclass b/eclass/rebar3.eclass
new file mode 100644
index 0000000000..4104bdcf64
--- /dev/null
+++ b/eclass/rebar3.eclass
@@ -0,0 +1,295 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rebar3.eclass
+# @MAINTAINER:
+# Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Amadeusz Żołnowski <aidecoe@gentoo.org>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: Build Erlang/OTP projects using dev-util/rebar:3.
+# @DESCRIPTION:
+# An eclass providing functions to build Erlang/OTP projects using
+# dev-util/rebar:3.
+#
+# rebar is a tool which tries to resolve dependencies itself which is by
+# cloning remote git repositories. Dependent projects are usually expected to
+# be in sub-directory 'deps' rather than looking at system Erlang lib
+# directory. Projects relying on rebar usually don't have 'install' make
+# targets. The eclass workarounds some of these problems. It handles
+# installation in a generic way for Erlang/OTP structured projects.
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ -z ${_REBAR3_ECLASS} ]]; then
+
+inherit edo
+
+RDEPEND="dev-lang/erlang:="
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-util/rebar:3
+ >=sys-apps/gawk-4.1
+"
+
+# @ECLASS_VARIABLE: REBAR_PROFILE
+# @DESCRIPTION:
+# Rebar profile to use.
+: "${REBAR_PROFILE:=default}"
+
+# @ECLASS_VARIABLE: REBAR_APP_SRC
+# @DESCRIPTION:
+# Relative path to .app.src description file.
+: "${REBAR_APP_SRC:=src/${PN}.app.src}"
+
+# @FUNCTION: get_erl_libs
+# @RETURN: the path to Erlang lib directory
+# @DESCRIPTION:
+# Get the full path without EPREFIX to Erlang lib directory.
+get_erl_libs() {
+ echo "/usr/$(get_libdir)/erlang/lib"
+}
+
+# @FUNCTION: _rebar_find_dep
+# @INTERNAL
+# @USAGE: <project_name>
+# @RETURN: 0 success, 1 dependency not found, 2 multiple versions found
+# @DESCRIPTION:
+# Find a Erlang package/project by name in Erlang lib directory. Project
+# directory is usually suffixed with version. It is matched to '<project_name>'
+# or '<project_name>-*'.
+_rebar_find_dep() {
+ local pn="${1}"
+ local p
+ local result
+
+ pushd "${EPREFIX}/$(get_erl_libs)" >/dev/null || return 1
+ for p in ${pn} ${pn}-*; do
+ if [[ -d ${p} ]]; then
+ # Ensure there's at most one matching.
+ [[ ${result} ]] && return 2
+ result="${p}"
+ fi
+ done
+ popd >/dev/null || die
+
+ [[ ${result} ]] || return 1
+ echo "${result}"
+}
+
+# @FUNCTION: rebar_disable_coverage
+# @USAGE: [<rebar_config>]
+# @DESCRIPTION:
+# Disable coverage in rebar.config. This is a workaround for failing coverage.
+# Coverage is not relevant in this context, so there's no harm to disable it,
+# although the issue should be fixed.
+rebar_disable_coverage() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local rebar_config="${1:-rebar.config}"
+
+ sed -e 's/{cover_enabled, true}/{cover_enabled, false}/' \
+ -i "${rebar_config}" \
+ || die "failed to disable coverage in ${rebar_config}"
+}
+
+# @FUNCTION: erebar3
+# @USAGE: <targets>
+# @DESCRIPTION:
+# Run rebar with verbose flag. Die on failure.
+erebar3() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ (( $# > 0 )) || die "erebar: at least one target is required"
+
+ case ${1} in
+ eunit|ct)
+ local -x ERL_LIBS="." ;;
+ *)
+ local -x ERL_LIBS="${EPREFIX}/$(get_erl_libs)" ;;
+ esac
+
+ edo rebar3 "$@"
+}
+
+# @FUNCTION: rebar_fix_include_path
+# @USAGE: <project_name> [<rebar_config>]
+# @DESCRIPTION:
+# Fix path in rebar.config to 'include' directory of dependent project/package,
+# so it points to installation in system Erlang lib rather than relative 'deps'
+# directory.
+#
+# <rebar_config> is optional. Default is 'rebar.config'.
+#
+# The function dies on failure.
+rebar_fix_include_path() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local pn="${1}"
+ local rebar_config="${2:-rebar.config}"
+ local erl_libs="${EPREFIX}/$(get_erl_libs)"
+ local p
+
+ p="$(_rebar_find_dep "${pn}")" \
+ || die "failed to unambiguously resolve dependency of '${pn}'"
+
+ gawk -i inplace \
+ -v erl_libs="${erl_libs}" -v pn="${pn}" -v p="${p}" '
+/^{[[:space:]]*erl_opts[[:space:]]*,/, /}[[:space:]]*\.$/ {
+ pattern = "\"(./)?deps/" pn "/include\"";
+ if (match($0, "{i,[[:space:]]*" pattern "[[:space:]]*}")) {
+ sub(pattern, "\"" erl_libs "/" p "/include\"");
+ }
+ print $0;
+ next;
+}
+1
+' "${rebar_config}" || die "failed to fix include paths in ${rebar_config} for '${pn}'"
+}
+
+# @FUNCTION: rebar_remove_deps
+# @USAGE: [<rebar_config>]
+# @DESCRIPTION:
+# Remove dependencies list from rebar.config and deceive build rules that any
+# dependencies are already fetched and built. Otherwise rebar tries to fetch
+# dependencies and compile them.
+#
+# <rebar_config> is optional. Default is 'rebar.config'.
+#
+# The function dies on failure.
+rebar_remove_deps() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local rebar_config="${1:-rebar.config}"
+
+ mkdir -p "${S}/deps" && :>"${S}/deps/.got" && :>"${S}/deps/.built" || die
+ gawk -i inplace '
+/^{[[:space:]]*deps[[:space:]]*,/, /}[[:space:]]*\.$/ {
+ if ($0 ~ /}[[:space:]]*\.$/) {
+ print "{deps, []}.";
+ }
+ next;
+}
+1
+' "${rebar_config}" || die "failed to remove deps from ${rebar_config}"
+}
+
+# @FUNCTION: rebar_set_vsn
+# @USAGE: [<version>]
+# @DESCRIPTION:
+# Set version in project description file if it's not set.
+#
+# <version> is optional. Default is PV stripped from version suffix.
+#
+# The function dies on failure.
+rebar_set_vsn() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local version="${1:-${PV%_*}}"
+
+ sed -e "s/vsn, git/vsn, \"${version}\"/" \
+ -i "${S}/${REBAR_APP_SRC}" \
+ || die "failed to set version in src/${PN}.app.src"
+}
+
+# @FUNCTION: rebar3_src_prepare
+# @DESCRIPTION:
+# Prevent rebar from fetching and compiling dependencies. Set version in
+# project description file if it's not set.
+#
+# Existence of rebar.config is optional, but file description file must exist
+# at 'src/${PN}.app.src'.
+rebar3_src_prepare() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ default_src_prepare
+ rebar_set_vsn
+ rm -f rebar.lock
+ if [[ -f rebar.config ]]; then
+ rebar_disable_coverage
+ rebar_remove_deps
+ fi
+}
+
+# @FUNCTION: rebar3_src_configure
+# @DESCRIPTION:
+# Configure with ERL_LIBS set.
+rebar3_src_configure() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local -x ERL_LIBS="${EPREFIX}/$(get_erl_libs)"
+ default_src_configure
+}
+
+# @FUNCTION: rebar3_src_compile
+# @DESCRIPTION:
+# Compile project with rebar.
+rebar3_src_compile() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ erebar3 as "${REBAR_PROFILE}" release --all
+}
+
+# @FUNCTION: rebar3_src_test
+# @DESCRIPTION:
+# Run unit tests.
+rebar3_src_test() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ erebar3 eunit -v
+}
+
+# @FUNCTION: rebar3_install_lib
+# @USAGE: <dir>
+# @DESCRIPTION:
+# Install BEAM files, include headers and native libraries.
+#
+# Function expects that project conforms to Erlang/OTP structure.
+rebar3_install_lib() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local dest="$(get_erl_libs)/${P}"
+ insinto "${dest}"
+
+ pushd "${1?}" >/dev/null || die
+ for dir in ebin include priv; do
+ if [[ -d ${dir} && ! -L ${dir} ]]; then
+ cp -pR ${dir} "${ED%/}/${dest}/" || die "failed to install ${dir}/"
+ fi
+ done
+ popd >/dev/null || die
+}
+
+# @FUNCTION: rebar3_src_install
+# @DESCRIPTION:
+# Install built release or library.
+#
+# Function expects that project conforms to Erlang/OTP structure.
+rebar3_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ pushd "_build/${REBAR_PROFILE}" >/dev/null || die
+ if [[ -d rel/${PN} ]]; then
+ if ! declare -f rebar3_install_release >/dev/null; then
+ die "${FUNCNAME}: a custom function named 'rebar3_install_release' is required to install a release"
+ fi
+ pushd rel/${PN} >/dev/null || die
+ rebar3_install_release || die
+ popd >/dev/null || die
+ elif [[ -d lib/${PN} ]]; then
+ rebar3_install_lib lib/${PN}
+ else
+ die "No releases or libraries to install"
+ fi
+ popd >/dev/null || die
+
+ einstalldocs
+}
+
+_REBAR3_ECLASS=1
+fi
+
+EXPORT_FUNCTIONS src_prepare src_compile src_test src_install
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-01-20 22:13 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-01-20 22:13 UTC (permalink / raw
To: gentoo-commits
commit: 84ddbd2c347574794ce2b4d2311eba982185e767
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Jan 20 07:11:51 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sat Jan 20 07:11:51 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=84ddbd2c
databases.eclass: typo
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/databases.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/databases.eclass b/eclass/databases.eclass
index 079325a90d..d906f2a547 100644
--- a/eclass/databases.eclass
+++ b/eclass/databases.eclass
@@ -20,7 +20,7 @@
#
# - MongoDB (via "emongod" helper)
#
-# - MySQL/MariaDB/ (via "emysql" helper)
+# - MySQL / MariaDB (via "emysql" helper)
#
# - PostgreSQL (via "epostgres" helper)
#
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-02-05 11:57 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-02-05 11:57 UTC (permalink / raw
To: gentoo-commits
commit: a27cd8860814a297f487e3b01c36e6e2d3292f04
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Feb 3 12:00:18 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sun Feb 4 19:26:17 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a27cd886
rhvoice-lang.eclass: new eclass
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/rhvoice-lang.eclass | 109 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 109 insertions(+)
diff --git a/eclass/rhvoice-lang.eclass b/eclass/rhvoice-lang.eclass
new file mode 100644
index 0000000000..17e65096f6
--- /dev/null
+++ b/eclass/rhvoice-lang.eclass
@@ -0,0 +1,109 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rhvoice-lang.eclass
+# @MAINTAINER:
+# Anna <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: eclass for packaging RHVoice languages
+# @DESCRIPTION:
+# An eclass streamlining the construction of ebuilds for the officially
+# supported RHVoice languages.
+#
+# Look at "src/scripts" files to identify language's license.
+# @EXAMPLE:
+#
+# Most ebuilds will look like this:
+#
+# @CODE
+#
+# EAPI=8
+#
+# RHVOICE_LANG="Russian"
+# inherit rhvoice-lang
+#
+# LICENSE="LGPL-2.1+"
+#
+# @CODE
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ ! ${_RHVOICE_LANG_ECLASS} ]]; then
+_RHVOICE_LANG_ECLASS=1
+
+# @ECLASS_VARIABLE: RHVOICE_LANG
+# @PRE_INHERIT
+# @REQUIRED
+# @DESCRIPTION:
+# Full language name (see "data/languages" in RHVoice source code).
+
+if [[ ! ${RHVOICE_LANG} ]]; then
+ die "RHVOICE_LANG must be set before inherit"
+fi
+
+# @ECLASS_VARIABLE: RHVOICE_LANG_REPO
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Repository name under the RHVoice GitHub organization.
+: "${RHVOICE_LANG_REPO:=${RHVOICE_LANG:?}}"
+
+# @ECLASS_VARIABLE: RHVOICE_LANG_TAG
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Tag name for generating SRC_URI.
+: "${RHVOICE_LANG_TAG:=${PV}}"
+
+# @ECLASS_VARIABLE: RHVOICE_LANG_DISTFILE
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Distfile name for generating SRC_URI, should be a ZIP archive.
+: "${RHVOICE_LANG_DISTFILE:=RHVoice-language-${RHVOICE_LANG}-v${PV}.zip}"
+
+DESCRIPTION="${RHVOICE_LANG:?} language support for RHVoice"
+HOMEPAGE="https://github.com/RHVoice/${RHVOICE_LANG_REPO:?}"
+SRC_URI="https://github.com/RHVoice/${RHVOICE_LANG_REPO}/releases/download/${RHVOICE_LANG_TAG}/${RHVOICE_LANG_DISTFILE} -> ${P}.zip"
+S="${WORKDIR}"
+
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+
+BDEPEND="app-arch/unzip"
+
+# @FUNCTION: rhvoice-lang_src_prepare
+# @DESCRIPTION:
+# Remove stray files such as licenses.
+rhvoice-lang_src_prepare() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ default_src_prepare
+ find . -name "COPYING*" -o -name "LICENSE*" -delete || \
+ die "removing licenses failed"
+}
+
+# @FUNCTION: rhvoice-lang_src_install
+# @DESCRIPTION:
+# Install the language.
+rhvoice-lang_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ shopt -s nullglob
+ local docs=( README* )
+ shopt -u nullglob
+
+ for doc in "${docs[@]}"; do
+ dodoc "${doc}"
+ rm "${doc}" || die "removing ${doc}" failed
+ done
+
+ insinto /usr/share/RHVoice/languages/${RHVOICE_LANG:?}
+ doins -r .
+}
+
+fi
+
+EXPORT_FUNCTIONS src_prepare src_install
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-02-05 11:57 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-02-05 11:57 UTC (permalink / raw
To: gentoo-commits
commit: 6b0464e027de7a13d7a0b39a2974f49fb32ff576
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Feb 3 06:31:43 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sun Feb 4 19:23:21 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=6b0464e0
daemons.eclass: new eclass
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/daemons.eclass | 213 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 213 insertions(+)
diff --git a/eclass/daemons.eclass b/eclass/daemons.eclass
new file mode 100644
index 0000000000..24798158d3
--- /dev/null
+++ b/eclass/daemons.eclass
@@ -0,0 +1,213 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: daemons.eclass
+# @MAINTAINER:
+# Anna <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: eclass to test packages against running daemons
+# @DESCRIPTION:
+# A utility eclass providing functions for starting and stopping daemons with
+# Pifpaf.
+#
+# This eclass does not set any metadata variables nor export any phase, so it
+# can be inherited safely.
+#
+# @SUBSECTION Supported daemons
+#
+# - ceph
+#
+# - consul
+#
+# - httpbin
+#
+# - kafka
+#
+# - memcached
+#
+# - mysql
+#
+# - postgresql
+#
+# - redis
+#
+# - vault
+#
+# @EXAMPLE:
+#
+# @CODE
+# EAPI=8
+#
+# ...
+#
+# DAEMONS_REQ_USE=(
+# [postgresql]="xml"
+# )
+# inherit daemons distutils-r1
+#
+# ...
+#
+# distutils_enable_tests pytest
+#
+# daemons_enable postgresql test
+#
+# src_test() {
+# daemons_start postgresql
+# distutils-r1_src_test
+# daemons_stop postgresql
+# }
+# @CODE
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+esac
+
+if [[ ! ${_DAEMONS_ECLASS} ]]; then
+_DAEMONS_ECLASS=1
+
+# @ECLASS_VARIABLE: DAEMONS_REQ_USE
+# @PRE_INHERIT
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Bash associative array of USE flags required to be enabled on daemons,
+# formed as a USE-dependency string.
+
+# @ECLASS_VARIABLE: DAEMONS_DEPEND
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# This is an eclass-generated bash associative array of dependency strings for
+# daemons.
+declare -Ag DAEMONS_DEPEND=()
+
+# @FUNCTION: _daemons_set_globals
+# @INTERNAL
+# @DESCRIPTION:
+# Set the DAEMONS_DEPEND variable.
+_daemons_set_globals() {
+ local -A pkgs=(
+ [ceph]="sys-cluster/ceph"
+ [consul]="app-admin/consul"
+ [httpbin]="dev-python/httpbin"
+ [kafka]="net-misc/kafka-bin"
+ [memcached]="net-misc/memcached"
+ [mysql]="virtual/mysql"
+ [postgresql]="dev-db/postgresql"
+ [redis]="dev-db/redis"
+ [vault]="app-admin/vault"
+ )
+
+ local -A useflags=(
+ [mysql]="server"
+ [postgresql]="server"
+ )
+
+ if declare -p DAEMONS_REQ_USE &>/dev/null; then
+ [[ $(declare -p DAEMONS_REQ_USE) == "declare -A"* ]] || \
+ die "DAEMONS_REQ_USE must be declared as an associative array"
+ fi
+
+ local name dep usestr
+ for name in "${!pkgs[@]}"; do
+ dep=${pkgs[${name:?}]:?}
+ usestr=${useflags[${name:?}]}
+ usestr+=",${DAEMONS_REQ_USE[${name:?}]}"
+ # strip leading/trailing commas
+ usestr=${usestr#,}
+ usestr=${usestr%,}
+
+ [[ ${usestr?} ]] && usestr="[${usestr?}]"
+ DAEMONS_DEPEND[${name:?}]="dev-util/pifpaf ${dep:?}${usestr?}"
+ done
+
+ readonly DAEMONS_DEPEND
+}
+_daemons_set_globals
+unset -f _daemons_set_globals
+
+# @FUNCTION: daemons_enable
+# @USAGE: <daemon> <use>
+# @DESCRIPTION:
+# Add the daemon package to build-time dependencies under the given USE flag
+# (IUSE will be set automatically).
+daemons_enable() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local daemon=${1:?}
+ local useflag=${2:?}
+
+ IUSE+=" ${useflag:?}"
+ BDEPEND+=" ${useflag:?}? ( ${DAEMONS_DEPEND[${daemon:?}]:?} )"
+ if [[ ${useflag:?} == "test" ]]; then
+ RESTRICT+=" !test? ( test )"
+ fi
+}
+
+# @FUNCTION: daemons_start
+# @USAGE: <daemon> [args...]
+# @DESCRIPTION:
+# Start the daemon. All arguments are passes to Pifpaf.
+#
+# Pifpaf will set some environment variables for you, they will be prefixed by
+# uppercase daemon name. See upstream documentation for details.
+daemons_start() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local daemon=${1:?}
+ shift
+
+ local logfile="${T?}/daemon-${daemon:?}.log"
+ local tempfile="${T?}/daemon-${daemon:?}.sh"
+ local myargs=(
+ --env-prefix "${daemon^^}"
+ --log-file "${logfile:?}"
+ --verbose
+ )
+
+ ebegin "Starting ${daemon:?}"
+ pifpaf "${myargs[@]}" run "${daemon:?}" "${@}" > "${tempfile:?}" && \
+ source "${tempfile:?}" && \
+ rm -f "${tempfile:?}"
+ eend $? || die "Starting ${daemon:?} failed"
+}
+
+# @FUNCTION: daemons_stop
+# @USAGE: <daemon>
+# @DESCRIPTION:
+# Stop a running daemon.
+daemons_stop() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local daemon=${1:?}
+ local stop_fn="${daemon:?}_stop"
+ declare -f "${stop_fn:?}" >/dev/null || die "${daemon:?} is not running"
+
+ ebegin "Stopping ${daemon:?}"
+ "${stop_fn:?}"
+ eend $? || die "Stopping ${daemon:?} failed"
+}
+
+# @FUNCTION: daemons_death_notice
+# @INTERNAL
+# @DESCRIPTION:
+# Creates archive with daemon logs and prints a log message with its location.
+daemons_death_notice() {
+ shopt -s nullglob
+ local logfiles=( "${T}"/daemon-*.log )
+ local logarchive="${T}/daemon-logs.tar.xz"
+ shopt -u nullglob
+
+ if [[ "${logfiles[*]}" ]]; then
+ pushd "${T}" >/dev/null
+ tar -acf "${logarchive}" "${logfiles[@]#${T}/}"
+ popd >/dev/null
+ eerror
+ eerror "Please include ${logarchive} in your bug report."
+ eerror
+ fi
+}
+has daemons_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" daemons_death_notice"
+
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-02-05 11:57 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-02-05 11:57 UTC (permalink / raw
To: gentoo-commits
commit: cfdd31feb59d000371524571a6ff1e435e58afbc
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Feb 3 06:30:53 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sun Feb 4 19:23:20 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=cfdd31fe
databases.eclass: fix "--add-deps" helper
It's called in ebuild scope so "+=" should be used.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/databases.eclass | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/eclass/databases.eclass b/eclass/databases.eclass
index 1c640d3ee9..721ec0e59d 100644
--- a/eclass/databases.eclass
+++ b/eclass/databases.eclass
@@ -192,12 +192,11 @@ _databases_add_deps() {
local funcname=${1?}
local useflag=${2?}
- BDEPEND="${useflag}? ( ${DATABASES_DEPEND[${funcname:1}]} )"
- IUSE="${useflag}"
- [[ ${useflag} == "test" ]] &&
- RESTRICT="!test? ( test )"
-
- return 0
+ IUSE+=" ${useflag}"
+ BDEPEND+=" ${useflag}? ( ${DATABASES_DEPEND[${funcname:1}]} )"
+ if [[ ${useflag} == "test" ]]; then
+ RESTRICT+= "!test? ( test )"
+ fi
}
# @FUNCTION: _databases_stop_service
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-02-05 11:57 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-02-05 11:57 UTC (permalink / raw
To: gentoo-commits
commit: 3378f870a916cbcbe0db2706b9df3ab88f5babd8
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Feb 3 14:03:03 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sun Feb 4 19:26:18 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3378f870
rhvoice-voice.eclass: new eclass
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/rhvoice-voice.eclass | 102 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/eclass/rhvoice-voice.eclass b/eclass/rhvoice-voice.eclass
new file mode 100644
index 0000000000..796019f21d
--- /dev/null
+++ b/eclass/rhvoice-voice.eclass
@@ -0,0 +1,102 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rhvoice-voice.eclass
+# @MAINTAINER:
+# Anna <cyber+gentoo@sysrq.in>
+# @AUTHOR:
+# Anna <cyber+gentoo@sysrq.in>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: eclass for packaging RHVoice voices
+# @DESCRIPTION:
+# An eclass streamlining the construction of ebuilds for the officially
+# supported RHVoice voices.
+#
+# Look at "copyright" files to identify voice's license.
+# @EXAMPLE:
+#
+# Most ebuilds will look like this:
+#
+# @CODE
+#
+# EAPI=8
+#
+# RHVOICE_VOICE="arina"
+# RHVOICE_VOICE_REPO="arina-rus"
+# RHVOICE_VOICE_L10N="ru"
+# inherit rhvoice-voice
+#
+# LICENSE="CC-BY-NC-ND-4.0"
+#
+# @CODE
+
+case ${EAPI} in
+ 8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ ! ${_RHVOICE_VOICE_ECLASS} ]]; then
+_RHVOICE_VOICE_ECLASS=1
+
+# @ECLASS_VARIABLE: RHVOICE_VOICE
+# @PRE_INHERIT
+# @REQUIRED
+# @DESCRIPTION:
+# Voice name (see "data/voices" in RHVoice source code).
+
+# @ECLASS_VARIABLE: RHVOICE_VOICE_L10N
+# @PRE_INHERIT
+# @REQUIRED
+# @DESCRIPTION:
+# Language name in L10N USE_EXPAND syntax.
+
+if [[ ! ${RHVOICE_VOICE} ]]; then
+ die "RHVOICE_VOICE must be set before inherit"
+fi
+
+if [[ ! ${RHVOICE_VOICE_L10N} ]]; then
+ die "RHVOICE_VOICE_L10N must be set before inherit"
+fi
+
+# @ECLASS_VARIABLE: RHVOICE_VOICE_REPO
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Repository name under the RHVoice GitHub organization.
+: "${RHVOICE_VOICE_REPO:=${RHVOICE_VOICE:?}}"
+
+# @ECLASS_VARIABLE: RHVOICE_VOICE_TAG
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Tag name for generating SRC_URI.
+: "${RHVOICE_VOICE_TAG:=${PV}}"
+
+# @ECLASS_VARIABLE: RHVOICE_VOICE_DISTFILE
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Distfile name for generating SRC_URI, should be a ZIP archive.
+: "${RHVOICE_VOICE_DISTFILE:=data.zip}"
+
+DESCRIPTION="RHVoice voice: ${RHVOICE_VOICE:?} (${RHVOICE_VOICE_L10N:?})"
+HOMEPAGE="https://github.com/RHVoice/${RHVOICE_VOICE_REPO:?}"
+SRC_URI="https://github.com/RHVoice/${RHVOICE_VOICE_REPO}/releases/download/${RHVOICE_VOICE_TAG}/${RHVOICE_VOICE_DISTFILE} -> ${P}.zip"
+S="${WORKDIR}"
+
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+
+RDEPEND="app-accessibility/rhvoice-core[l10n_${RHVOICE_VOICE_L10N}]"
+BDEPEND="app-arch/unzip"
+
+# @FUNCTION: rhvoice-voice_src_install
+# @DESCRIPTION:
+# Install the voice.
+rhvoice-voice_src_install() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ insinto /usr/share/RHVoice/voices/${RHVOICE_VOICE:?}
+ doins -r .
+}
+
+fi
+
+EXPORT_FUNCTIONS src_install
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-03-31 17:57 Julien Roy
0 siblings, 0 replies; 106+ messages in thread
From: Julien Roy @ 2024-03-31 17:57 UTC (permalink / raw
To: gentoo-commits
commit: 8ea094892a543b86385d94d205acfb5d37db0c93
Author: Julien Roy <julien <AT> jroy <DOT> ca>
AuthorDate: Sun Mar 31 17:28:59 2024 +0000
Commit: Julien Roy <julien <AT> jroy <DOT> ca>
CommitDate: Sun Mar 31 17:28:59 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8ea09489
R-packages.eclass: drop not inherited eclass
Signed-off-by: Julien Roy <julien <AT> jroy.ca>
eclass/R-packages.eclass | 184 -----------------------------------------------
1 file changed, 184 deletions(-)
diff --git a/eclass/R-packages.eclass b/eclass/R-packages.eclass
deleted file mode 100644
index a701c96178..0000000000
--- a/eclass/R-packages.eclass
+++ /dev/null
@@ -1,184 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: R-packages.eclass
-# @AUTHOR:
-# Alessandro Barbieri <lssndrbarbieri@gmail.com>
-# André Erdmann <dywi@mailerd.de>
-# Benda Xu <heroxbd@gentoo.org>
-# Denis Dupeyron <calchan@gentoo.org>
-# Robert Greener <me@r0bert.dev>
-# @BLURB: eclass to build R packages
-# @MAINTAINER:
-# Alessandro Barbieri <lssndrbarbieri@gmail.com>
-# @SUPPORTED_EAPIS: 7 8
-
-case ${EAPI} in
- 7|8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported."
-esac
-
-if [ ! ${_R_PACKAGES_ECLASS} ]; then
-
-inherit edo optfeature toolchain-funcs
-
-# @ECLASS_VARIABLE: SUGGESTED_PACKAGES
-# @DEPRECATED: none
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# String variable containing the list of upstream suggested packages. Consider
-# using optfeature directly instead for more concise descriptions.
-
-# @ECLASS_VARIABLE: CRAN_SNAPSHOT_DATE
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# The date the ebuild was updated in YYYY-MM-DD format used to fetch distfiles
-# from Microsoft CRAN mirror. This will be required in the future.
-
-# @ECLASS_VARIABLE: CRAN_PN
-# @DESCRIPTION:
-# Package name to use for fetching distfiles from CRAN.
-: ${CRAN_PN:=${PN//_/.}}
-
-# @ECLASS_VARIABLE: CRAN_PV
-# @DESCRIPTION:
-# Package version to use for fetching distfiles from CRAN.
-: ${CRAN_PV:=${PV}}
-
-if [[ ${CRAN_SNAPSHOT_DATE} ]]; then
- SRC_URI="https://cran.microsoft.com/snapshot/${CRAN_SNAPSHOT_DATE}"
-else
- SRC_URI="mirror://cran"
-fi
-SRC_URI+="/src/contrib/${CRAN_PN}_${CRAN_PV}.tar.gz"
-
-HOMEPAGE="https://cran.r-project.org/package=${CRAN_PN}"
-
-SLOT="0"
-
-DEPEND="dev-lang/R"
-RDEPEND="${DEPEND}"
-
-# @FUNCTION: R-packages_src_unpack
-# @DEPRECATED: none
-# @DESCRIPTION:
-# Unpack R packages into the right folder. Consider setting ${S} to appropriate
-# value instead.
-R-packages_src_unpack() {
- default_src_unpack
-
- if [[ -d "${CRAN_PN}" ]] && [[ ! -d "${P}" ]]; then
- mv "${CRAN_PN}" "${P}" || die
- fi
-}
-
-# @FUNCTION: R-packages_src_prepare
-# @DEPRECATED: none
-# @DESCRIPTION:
-# Remove unwanted files from the sources.
-R-packages_src_prepare() {
- default_src_prepare
- eqawarn "This ebuild uses R-packages_src_prepare which is no-op."
- eqawarn "You can safely remove it."
-}
-
-# @FUNCTION: R-packages_src_configure
-# @DESCRIPTION:
-# Set up temporary directories.
-R-packages_src_configure() {
- mkdir "${T}"/R || die
-}
-
-# @FUNCTION: R-packages_src_compile
-# @DESCRIPTION:
-# Pass build-related environment variables to R and then build/install the
-# package.
-R-packages_src_compile() {
- local -a mymakeflags=(
- "${MAKEFLAGS}"
- AR="$(tc-getAR)"
- CC="$(tc-getCC)"
- CPP="$(tc-getCPP)"
- CXX="$(tc-getCXX)"
- FC="$(tc-getFC)"
- LD="$(tc-getLD)"
- NM="$(tc-getNM)"
- RANLIB="$(tc-getRANLIB)"
- CFLAGS="${CFLAGS}"
- CPPFLAGS="${CPPFLAGS}"
- CXXFLAGS="${CXXFLAGS}"
- FFLAGS="${FFLAGS}"
- FCFLAGS="${FCFLAGS}"
- LDFLAGS="${LDFLAGS}"
- MAKEOPTS="${MAKEOPTS}"
- )
-
- MAKEFLAGS="${mymakeflags[@]// /\\ }" \
- edo R CMD INSTALL . -d -l "${T}"/R --byte-compile
-}
-
-# @FUNCTION: R-packages_src_install
-# @DESCRIPTION:
-# Move files into right folders.
-#
-# Documentation and examples is moved to docdir, symlinked back to R
-# site-library (to allow access from within R).
-#
-# Everything else is moved to the R site-library.
-R-packages_src_install() {
- cd "${T}"/R/${CRAN_PN} || die
-
- local DOCDIR="/usr/share/doc/${PF}"
- local EDOCDIR="${ED}${DOCDIR}"
- mkdir -p "${EDOCDIR}" || die
-
- # _maybe_movelink <target> <link_name>
- # If target exists, installs everything under target into R's
- # site-library for the package and creates a link with the name
- # <link_name> to it.
- _maybe_movelink() {
- local target=${1}
- local link_name=${2}
- if [[ ! -e "${target}" ]]; then
- return
- fi
-
- local rdir=/usr/$(get_libdir)/R/site-library/${CRAN_PN}
- local rp_source="${rdir}/${target}"
- insinto ${rdir}
- doins -r ${target}
- ln -s "${rp_source}" "${link_name}" || die
- }
-
- for i in {NEWS,README}.md DESCRIPTION CITATION INDEX NEWS WORDLIST News.Rd; do
- _maybe_movelink "${i}" "${EDOCDIR}/${i}"
- done
-
- _maybe_movelink html "${EDOCDIR}"/html
-
- _maybe_movelink examples "${EDOCDIR}"/examples
-
- _maybe_movelink doc "${EDOCDIR}"/doc
-
- rm -f LICENSE || die
- rm -rf tests test || die
-
- insinto /usr/$(get_libdir)/R/site-library
- doins -r "${T}"/R/${CRAN_PN}
-}
-
-# @FUNCTION: R-packages_pkg_postinst
-# @DEPRECATED: optfeature
-# @DESCRIPTION:
-# Prompt to install the upstream suggested packages (if they exist). Consider
-# calling "optfeature" directly instead for concise descriptions.
-R-packages_pkg_postinst() {
- for p in ${SUGGESTED_PACKAGES}; do
- optfeature "having the upstream suggested package" "${p}"
- done
-}
-
-_R_PACKAGES_ECLASS=1
-fi
-
-EXPORT_FUNCTIONS src_unpack src_configure src_compile src_install pkg_postinst
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2024-03-31 17:49 [gentoo-commits] repo/proj/guru:dev " Julien Roy
@ 2024-03-31 17:57 ` Julien Roy
0 siblings, 0 replies; 106+ messages in thread
From: Julien Roy @ 2024-03-31 17:57 UTC (permalink / raw
To: gentoo-commits
commit: d2fc27f82b8f6c95c24de4dd764108419784c05d
Author: Julien Roy <julien <AT> jroy <DOT> ca>
AuthorDate: Sun Mar 31 17:29:30 2024 +0000
Commit: Julien Roy <julien <AT> jroy <DOT> ca>
CommitDate: Sun Mar 31 17:29:30 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=d2fc27f8
octaveforge.eclass: drop not inherited eclass
Signed-off-by: Julien Roy <julien <AT> jroy.ca>
eclass/octaveforge.eclass | 240 ----------------------------------------------
1 file changed, 240 deletions(-)
diff --git a/eclass/octaveforge.eclass b/eclass/octaveforge.eclass
deleted file mode 100644
index 0528d2d907..0000000000
--- a/eclass/octaveforge.eclass
+++ /dev/null
@@ -1,240 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: octaveforge.eclass
-# @AUTHOR:
-# Rafael G. Martins <rafael@rafaelmartins.eng.br>
-# Alessandro Barbieri <lssndrbarbieri@gmail.com>
-# @BLURB: octaveforge helper eclass.
-# @MAINTAINER:
-# Alessandro Barbieri <lssndrbarbieri@gmail.com>
-# @SUPPORTED_EAPIS: 8
-
-inherit autotools edo
-
-case ${EAPI} in
- 8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported."
-esac
-
-EXPORT_FUNCTIONS src_unpack src_prepare src_compile src_install src_test pkg_postinst pkg_prerm pkg_postrm
-
-# @ECLASS_VARIABLE: REPO_URI
-# @DESCRIPTION:
-# URI to the sourceforge octave-forge repository
-REPO_URI="http://svn.code.sf.net/p/octave/code/trunk/octave-forge"
-
-# defining some paths
-
-# @ECLASS_VARIABLE: OCT_ROOT
-# @DESCRIPTION:
-# full path to octave share
-OCT_ROOT="/usr/share/octave"
-
-# @ECLASS_VARIABLE: OCT_PKGDIR
-# @DESCRIPTION:
-# path to octave pkgdir
-OCT_PKGDIR="${OCT_ROOT}/packages"
-
-# @ECLASS_VARIABLE: OCT_BIN
-# @DESCRIPTION:
-# octave binary name
-OCT_BIN="octave"
-
-SRC_URI="mirror://sourceforge/octave/${P}.tar.gz"
-SLOT="0"
-
-# @FUNCTION: octaveforge_src_unpack
-# @DESCRIPTION:
-# function to unpack and set the correct S
-octaveforge_src_unpack() {
- default
- if [[ ! -d "${WORKDIR}/${P}" ]]; then
- S="${WORKDIR}/${PN}"
- fi
-}
-
-# @FUNCTION: octaveforge_src_prepare
-# @DESCRIPTION:
-# function to add octaveforge specific makefile and configure and reconfigure if possible
-octaveforge_src_prepare() {
- default
-
- _generate_configure || die
-
- if [[ -e "${S}/src/configure.ac" ]]; then
- pushd "${S}/src" || die
- eautoreconf
- popd || die
- elif [[ -e "${S}/src/autogen.sh" ]]; then
- pushd "${S}/src" || die
- edo ./autogen.sh
- popd || die
- fi
- if [[ -e "${S}/src/Makefile" ]]; then
- sed -i 's/ -s / /g' "${S}/src/Makefile" || die
- fi
-}
-
-octaveforge_src_compile() {
- PKGDIR="$(pwd | sed -e 's|^.*/||' || die)"
- export OCT_PACKAGE="${TMPDIR}/${PKGDIR}.tar.gz"
- export MKOCTFILE="mkoctfile -v"
-
- cmd="disp(__octave_config_info__('octlibdir'));"
- OCTLIBDIR=$(octavecommand "${cmd}" || die)
- export LFLAGS="${LFLAGS} -L${OCTLIBDIR}"
- export LDFLAGS="${LDFLAGS} -L${OCTLIBDIR}"
-
- if [[ -e src/Makefile ]]; then
- emake -C src
- fi
-
- if [[ -e src/Makefile ]]; then
- mv src/Makefile src/Makefile.disable || die
- fi
- if [[ -e src/configure ]]; then
- mv src/configure src/configure.disable || die
- fi
-
- pushd .. || die
- tar -czf "${OCT_PACKAGE}" "${PKGDIR}" || die
-}
-
-# @FUNCTION: octaveforge_src_install
-# @DESCRIPTION:
-# function to install the octave package
-octaveforge_src_install() {
- DESTDIR="${D}" _octaveforge_pkg_install || die
-}
-
-octaveforge_src_test() {
- DESTDIR="${T}" _octaveforge_pkg_install || die
-
- # cargo culted from Fedora
- cmd="
- pkg('load','${PN}');
- oruntests('${oct_pkgdir}');
- unlink(pkg('local_list'));
- unlink(pkg('global_list'));
- "
- octavecommand "${cmd}" || die
-}
-
-# @FUNCTION: octaveforge_pkg_postinst
-# @DESCRIPTION:
-# function that will rebuild the octave package database
-octaveforge_pkg_postinst() {
- einfo "Registering ${CATEGORY}/${PF} on the Octave package database."
- if [[ ! -d "${OCT_PKGDIR}" ]] ; then
- mkdir -p "${OCT_PKGDIR}" || die
- fi
- cmd="pkg('rebuild');"
- octavecommand "${cmd}" || die
-}
-
-# @FUNCTION: octaveforge_pkg_prerm
-# @DESCRIPTION:
-# function that will run on_uninstall routines to prepare the package to remove
-octaveforge_pkg_prerm() {
- einfo 'Running on_uninstall routines to prepare the package to remove.'
- cmd="
- pkg('rebuild');
- l = pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- "
- oct_pkgdir=$(octavecommand "${cmd}" || die)
- rm -f "${oct_pkgdir}/packinfo/on_uninstall.m" || die
- if [[ -e "${oct_pkgdir}/packinfo/on_uninstall.m.orig" ]]; then
- mv "$oct_pkgdir"/packinfo/on_uninstall.m{.orig,} || die
- pushd "$oct_pkgdir/packinfo" || die
- cmd="
- l = pkg('list');
- on_uninstall(l{cellfun(@(x)strcmp(x.name,'${PN}'), l)});
- "
- octavecommand "${cmd}" || die
- fi
-}
-
-# @FUNCTION: octaveforge_pkg_postrm
-# @DESCRIPTION:
-# function that will rebuild the octave package database
-octaveforge_pkg_postrm() {
- einfo 'Rebuilding the Octave package database.'
- if [[ ! -d "${OCT_PKGDIR}" ]] ; then
- mkdir -p "${OCT_PKGDIR}" || die
- fi
- cmd="pkg('rebuild');"
- edo "${OCT_BIN}" -H --silent --no-gui --eval "${cmd}"
-}
-
-octavecommand() {
- edo "${OCT_BIN}" -H -q --no-site-file --no-gui --eval "$1"
-}
-
-_generate_configure() {
- cat << EOF > configure || die
-#! /bin/sh -f
-
-if [ -e src/configure ]; then
- cd src
- ./configure $*
-fi
-EOF
- chmod 0755 "configure" || die
-}
-
-_octaveforge_pkg_install() {
- TMPDIR="${T}"
- DISTPKG='Gentoo'
-
- pushd ../ || die
- if [[ "X${DISTPKG}X" != "XX" ]]; then
- stripcmd="
- unlink(pkg('local_list'));
- unlink(pkg('global_list'));
- "
- fi
- if [[ "X${DESTDIR}X" = "XX" ]]; then
- cmd="
- warning('off','all');
- pkg('install','${OCT_PACKAGE}');
- l=pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- ${stripcmd}
- "
- oct_pkgdir=$(octavecommand "${cmd}" || die)
- else
- cmd="disp(fullfile(__octave_config_info__('datadir'),'octave'));"
- shareprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
- cmd="disp(fullfile(__octave_config_info__('libdir'),'octave'));"
- libprefix=${DESTDIR}/$(octavecommand "${cmd}" || die)
- octprefix="${shareprefix}/packages"
- archprefix="${libprefix}/packages"
- if [[ ! -e "${octprefix}" ]]; then
- mkdir -p "${octprefix}" || die
- fi
- if [[ ! -e "${archprefix}" ]]; then
- mkdir -p "${archprefix}" || die
- fi
- cmd="
- warning('off','all');
- pkg('prefix','${octprefix}','${archprefix}');
- pkg('global_list',fullfile('${shareprefix}','octave_packages'));
- pkg('local_list',fullfile('${shareprefix}','octave_packages'));
- pkg('install','-nodeps','-verbose','${OCT_PACKAGE}');
- "
- octavecommand "${cmd}" || die
- cmd="
- warning('off','all');
- pkg('prefix','${octprefix}','${archprefix}');
- pkg('global_list',fullfile('${shareprefix}','octave_packages'));
- pkg('local_list',fullfile('${shareprefix}','octave_packages'));
- l=pkg('list');
- disp(l{cellfun(@(x)strcmp(x.name,'${PN}'),l)}.dir);
- ${stripcmd}
- "
- oct_pkgdir=$(octavecommand "${cmd}" || die)
- fi
- export oct_pkgdir
-}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-04-01 11:32 Julien Roy
0 siblings, 0 replies; 106+ messages in thread
From: Julien Roy @ 2024-04-01 11:32 UTC (permalink / raw
To: gentoo-commits
commit: 1ae252142948016425e9b911c1cea0d72f38e9a2
Author: Julien Roy <julien <AT> jroy <DOT> ca>
AuthorDate: Mon Apr 1 11:18:14 2024 +0000
Commit: Julien Roy <julien <AT> jroy <DOT> ca>
CommitDate: Mon Apr 1 11:18:14 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=1ae25214
cannadic.eclass: remove unused eclass
Signed-off-by: Julien Roy <julien <AT> jroy.ca>
eclass/cannadic.eclass | 149 -------------------------------------------------
1 file changed, 149 deletions(-)
diff --git a/eclass/cannadic.eclass b/eclass/cannadic.eclass
deleted file mode 100644
index 4e8914f399..0000000000
--- a/eclass/cannadic.eclass
+++ /dev/null
@@ -1,149 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: cannadic.eclass
-# @MAINTAINER:
-# Alessandro Barbieri <lssndrbarbieri@gmail.com>
-# @AUTHOR:
-# Mamoru KOMACHI <usata@gentoo.org>
-# @SUPPORTED_EAPIS: 8
-# @BLURB: Function for Canna compatible dictionaries
-# @DESCRIPTION:
-# The cannadic eclass is used for installation and setup of Canna
-# compatible dictionaries.
-
-case ${EAPI} in
- 8) ;;
- *) die "EAPI=${EAPI:-0} is not supported" ;;
-esac
-
-EXPORT_FUNCTIONS src_install pkg_postinst pkg_postrm
-
-if [[ -z ${_CANNADIC_ECLASS} ]]; then
-_CANNADIC_ECLASS=1
-
-SRC_URI="mirror://gentoo/${P}.tar.gz"
-
-# You don't need to modify these
-readonly _CANNADIC_CANNA_DIR="/var/lib/canna/dic/canna"
-readonly _CANNADIC_DICS_DIR="/etc/canna/dics.dir.d/"
-
-# @FUNCTION: cannadic-install
-# @DESCRIPTION:
-# Installs dictionaries to ${EPREFIX}/var/lib/canna/dic/canna
-cannadic-install() {
- insinto ${_CANNADIC_CANNA_DIR}
- insopts -m 0664 -o canna -g canna
- doins "${@}"
-}
-
-# @FUNCTION: dicsdir-install
-# @DESCRIPTION:
-# Installs dics.dir from ${DICSDIRFILE}
-dicsdir-install() {
- insinto ${_CANNADIC_DICS_DIR}
- doins ${DICSDIRFILE}
-}
-
-# @FUNCTION: cannadic_src_install
-# @DESCRIPTION:
-# Installs all dictionaries under ${WORKDIR}
-# plus dics.dir and docs
-cannadic_src_install() {
- keepdir ${_CANNADIC_CANNA_DIR}
- fowners canna:canna ${_CANNADIC_CANNA_DIR}
- fperms 0775 ${_CANNADIC_CANNA_DIR}
-
- local f
- for f in *.c[btl]d *.t; do
- if [[ -s ${f} ]]; then
- cannadic-install "${f}"
- fi
- done 2> /dev/null
-
- dicsdir-install
-
- einstalldocs
-}
-
-# @FUNCTION: update-cannadic-dir
-# @DESCRIPTION:
-# Updates dics.dir for Canna Server, script for this part taken from Debian GNU/Linux
-#
-# compiles dics.dir files for Canna Server
-# Copyright 2001 ISHIKAWA Mutsumi
-# Licensed under the GNU General Public License, version 2. See the file
-# /usr/portage/license/GPL-2 or <http://www.gnu.org/copyleft/gpl.txt>.
-update-cannadic-dir() {
- einfo
- einfo "Updating dics.dir for Canna ..."
- einfo
-
- # write new dics.dir file in case we are interrupted
- cat <<-EOF > "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
- # dics.dir -- automatically generated file by Portage.
- # DO NOT EDIT BY HAND.
- EOF
-
- local f
- for f in "${EROOT}${_CANNADIC_DICS_DIR}"/*.dics.dir; do
- echo "# ${f}" >> "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
- cat "${f}" >> "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
- einfo "Added ${f}."
- done
-
- mv "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir" || die
-
- einfo
- einfo "Done."
- einfo
-}
-
-# @FUNCTION: cannadic_pkg_postinst
-# @DESCRIPTION:
-# Updates dics.dir and print out notice after install
-cannadic_pkg_postinst() {
- debug-print-function ${FUNCNAME} "${@}"
-
- update-cannadic-dir
-
- einfo "Please restart cannaserver for changes to propagate."
- einfo "You need to modify your config file (~/.canna) to enable dictionaries."
-
- if [[ -n ${CANNADICS} ]]; then
- einfo "e.g) add"
- einfo
- einfo " $(IFS=' ' ; echo ${CANNADICS[*]})"
- einfo
- einfo "to section use-dictionary()."
- einfo "For details, see documents under ${EROOT}/usr/share/doc/${PF}."
- fi
-
- einfo "If you do not have ~/.canna, you can find sample files in ${EROOT}/usr/share/canna."
- ewarn "If you are upgrading from existing dictionary, you may need to recreate"
- ewarn "user dictionary if you have one."
-}
-
-# @FUNCTION: cannadic_pkg_postrm
-# @DESCRIPTION:
-# Updates dics.dir and print out notice after uninstall
-cannadic_pkg_postrm() {
- debug-print-function ${FUNCNAME} "${@}"
-
- update-cannadic-dir
-
- einfo "Please restart cannaserver for changes to propagate."
- einfo "and modify your config file (~/.canna) to disable dictionary."
-
- if [[ -n ${CANNADICS} ]]; then
- einfo "e.g) delete"
- einfo
- einfo " $(IFS=' ' ; echo ${CANNADICS[*]})"
- einfo
- einfo "from section use-dictionary()."
- fi
-
- einfo
-}
-
-fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-04-27 11:10 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-04-27 11:10 UTC (permalink / raw
To: gentoo-commits
commit: 8ceda6e24bafd984dabf37ff7f23dfe00fc6a272
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Sat Apr 27 07:25:46 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Sat Apr 27 09:50:05 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=8ceda6e2
daemons.eclass: eclassdoc example fix
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/daemons.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/daemons.eclass b/eclass/daemons.eclass
index 24798158d3..90c3d76131 100644
--- a/eclass/daemons.eclass
+++ b/eclass/daemons.eclass
@@ -42,7 +42,7 @@
#
# ...
#
-# DAEMONS_REQ_USE=(
+# declare -Ag DAEMONS_REQ_USE=(
# [postgresql]="xml"
# )
# inherit daemons distutils-r1
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-01 13:50 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-07-01 13:50 UTC (permalink / raw
To: gentoo-commits
commit: 3febea914acb9eb5f036b2313916f20b6cd6d1a7
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Jul 1 01:26:53 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Mon Jul 1 01:26:53 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3febea91
nimble.eclass: fix tests dry-run
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/nimble.eclass | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eclass/nimble.eclass b/eclass/nimble.eclass
index 2fa48b48f..affe3cb58 100644
--- a/eclass/nimble.eclass
+++ b/eclass/nimble.eclass
@@ -178,7 +178,7 @@ nimble_src_compile() {
nimble_src_test() {
debug-print-function ${FUNCNAME} "${@}"
- if nonfatal nimble_build test -n &> /dev/null; then
+ if nonfatal nimble_build -n test &> /dev/null; then
nimble_build test "${@}"
fi
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: 50b84aa2d1160992a84dcfeefd7748a491147ccc
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Jul 12 08:40:43 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:19 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=50b84aa2
boinc-app.eclass: use standard inherit guard style
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 3a26e6738..f6fb82034 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -22,7 +22,7 @@
case ${EAPI} in
8) ;;
- *) die "${ECLASS}: EAPI ${EAPI} unsupported."
+ *) die "${ECLASS}: EAPI ${EAPI:-0} unsupported"
esac
# @ECLASS_VARIABLE: BOINC_APP_OPTIONAL
@@ -34,10 +34,6 @@ esac
# If you enable BOINC_APP_OPTIONAL, you have to call boinc-app
# default phase functions and add dependencies manually.
-if [[ ! ${BOINC_APP_OPTIONAL} ]]; then
- EXPORT_FUNCTIONS pkg_postinst pkg_postrm
-fi
-
if [[ ! ${_BOINC_APP_ECLASS} ]]; then
# @ECLASS_VARIABLE: BOINC_MASTER_URL
@@ -382,3 +378,7 @@ boinc-app_pkg_postrm() {
_BOINC_APP_ECLASS=1
fi
+
+if [[ ! ${BOINC_APP_OPTIONAL} ]]; then
+ EXPORT_FUNCTIONS pkg_postinst pkg_postrm
+fi
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: a681b42cacb145c2aa008c9ca8be15e89f3ac5a5
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 9 15:33:40 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:19 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=a681b42c
boinc-app.eclass: rename doappinfo → boinc_install_appinfo
Use the same naming style as in "boinc_install_wrapper".
"doappinfo" is kept for compatibility but deprecated and will be
removed sooner or later.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 689be4992..a20c800cb 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -173,8 +173,8 @@ boinc-app_appinfo_prepare() {
|| die "app_info.xml sed failed"
}
-# @FUNCTION: doappinfo
-# @USAGE: <app_info.xml>
+# @FUNCTION: boinc_install_appinfo
+# @USAGE: <app_info>
# @DESCRIPTION:
# Installs given app_info.xml file to the project root.
#
@@ -191,36 +191,45 @@ boinc-app_appinfo_prepare() {
# }
#
# src_install() {
-# doappinfo "${FILESDIR}"/app_info_${PV}.xml
+# boinc_install_appinfo "${FILESDIR}"/app_info_1.0.xml
#
# exeinto $(get_project_root)
# exeopts -m 0755 --owner root --group boinc
-# newexe bin/${PN} example_app_v${PV}
+# newexe bin/${PN} example_app_v1.0
# }
# @CODE
-doappinfo() {
+boinc_install_appinfo() {
debug-print-function ${FUNCNAME} "${@}"
(( $# == 1 )) || \
die "${FUNCNAME} takes exactly one argument"
- cp "$1" "${T}"/app_info.xml || die
+ cp "${1:?}" "${T:?}"/app_info.xml || die
if declare -f appinfo_prepare >/dev/null; then
- appinfo_prepare "${T}"/app_info.xml
+ appinfo_prepare "${T:?}"/app_info.xml
else
- boinc-app_appinfo_prepare "${T}"/app_info.xml
+ boinc-app_appinfo_prepare "${T:?}"/app_info.xml
fi
( # subshell to avoid pollution of calling environment
- insinto $(get_project_root)
+ insinto "$(get_project_root)"
insopts -m 0644 --owner root --group boinc
- doins "${T}"/app_info.xml
+ doins "${T:?}"/app_info.xml
) || die "failed to install app_info.xml"
_boinc-app_fix_permissions
}
+# @FUNCTION: doappinfo
+# @DEPRECATED: boinc_install_appinfo
+# @USAGE: <app_info>
+# @DESCRIPTION:
+# Installs given app_info.xml file to the project root.
+doappinfo() {
+ boinc_install_appinfo "${@}"
+}
+
# @FUNCTION: boinc-app_foreach_wrapper_job
# @USAGE: <job>
# @DESCRIPTION:
@@ -256,7 +265,7 @@ boinc-app_foreach_wrapper_job() {
# meson_src_install
#
# boinc_install_wrapper boinc-example_wrapper "${FILESDIR}"/job.xml
-# doappinfo "${FILESDIR}"/app_info_${PV}.xml
+# boinc_install_appinfo "${FILESDIR}"/app_info_1.0.xml
# }
# @CODE
#
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: dd9d541bf216715f4a3bbc426c38231db375717d
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 9 15:19:31 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:18 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=dd9d541b
boinc-app.eclass: better wrapper install function
"dowrapper" had too much magic: it relied on specifically files being
present in ${FILESDIR}, which is just… wrong.
It will burn in flames without any backwards compatibility. New
"boinc_install_wrapper" function replaces it.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 62 +++++++++++++++++++++++++++----------------------
1 file changed, 34 insertions(+), 28 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 540fc8ea0..6a386bf2f 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -236,61 +236,67 @@ boinc-wrapper_foreach_wrapper_job() {
|| die "$(basename "$1") sed failed"
}
-# @FUNCTION: dowrapper
-# @USAGE: <app> [more apps...]
+# @FUNCTION: boinc_install_wrapper
+# @USAGE: <bin> <job> [new name]
# @DESCRIPTION:
# This function provides a uniform way to install wrapper applications
# for BOINC projects. It makes symlinks to the BOINC wrapper and also
# installs respective job.xml files.
#
-# When sci-misc/boinc-example-1.0 calls `dowrapper boinc-example` it:
+# When `dowrapper boinc-example_wrapper A.xml B.xml` is called, it:
#
-# 1. Installs boinc-example_job_1.0.xml from ebuild's files/ directory
-# to project's root directory
+# 1. Installs A.xml in the project's root directory, renaming it to B.xml
#
-# 2. Installs boinc-example_wrapper_1.0 symlink, which points
-# to /usr/bin/boinc-wrapper, to project's root directory
+# 2. Installs boinc-example_wrapper symlink, which points
+# to /usr/bin/boinc-wrapper, in the project's root directory
#
# Example:
# @CODE
# src_install() {
# meson_src_install
#
-# dowrapper boinc-example boinc-sample
+# boinc_install_wrapper boinc-example_wrapper "${FILESDIR}"/job.xml
# doappinfo "${FILESDIR}"/app_info_${PV}.xml
# }
# @CODE
#
# Keep your job.xml files in sync with app_info.xml!
-dowrapper() {
+boinc_install_wrapper() {
debug-print-function ${FUNCNAME} "${@}"
- for app in "$@"; do
- local wrapperjob="${app}_job_${PV}.xml"
- local wrapperexe="${app}_wrapper_${PV}"
+ (( $# >= 2 && $# <= 3 )) || \
+ die "${FUNCNAME} got wrong number of arguments"
- [[ -f "${FILESDIR}/${wrapperjob}" ]] || \
- die "${wrapperjob} not found in ebuild's files/ directory"
+ local exe="${1:?}"
+ local job="${2:?}"
+ local job_dest="${3:-$(basename "${job:?}")}"
- cp "${FILESDIR}/${wrapperjob}" "${T}" || die
-
- if declare -f foreach_wrapper_job >/dev/null; then
- foreach_wrapper_job "${T}/${wrapperjob}"
- else
- boinc-wrapper_foreach_wrapper_job "${T}/${wrapperjob}"
- fi
+ cp "${job:?}" "${T:?}/${job_dest:?}" || die
+ if declare -f foreach_wrapper_job >/dev/null; then
+ foreach_wrapper_job "${T:?}/${job_dest:?}"
+ else
+ boinc-wrapper_foreach_wrapper_job "${T:?}/${job_dest:?}"
+ fi
- ( # subshell to avoid pollution of calling environment
- insinto $(get_project_root)
- insopts -m 0644 --owner root --group boinc
- doins "${T}/${wrapperjob}"
- dosym -r /usr/bin/boinc-wrapper "$(get_project_root)/${wrapperexe}"
- ) || die "failed to install '${app}' wrapper app"
- done
+ ( # subshell to avoid pollution of calling environment
+ insinto "$(get_project_root)"
+ insopts -m 0644 --owner root --group boinc
+ doins "${T:?}/${job_dest:?}"
+ ) || die "failed to install ${exe:?} wrapper job"
+ rm -f "${T:?}/${job_dest:?}"
+ dosym -r /usr/bin/boinc-wrapper "$(get_project_root)/${exe:?}"
_boinc-app_fix_permissions
}
+# @FUNCTION: dowrapper
+# @DEPRECATED: boinc_install_wrapper
+# @DESCRIPTION:
+# Install BOINC wrappers and job definitions.
+dowrapper() {
+ die "${FUNCNAME} has been removed, please use boinc_install_wrapper instead"
+}
+
# @FUNCTION: boinc-app_pkg_postinst
# @DESCRIPTION:
# Display helpful instructions on how to make the BOINC client use installed
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: ce227aa165920d92198c2ca24be6e33b77f470c7
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Jul 12 08:36:36 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:19 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ce227aa1
boinc-app.eclass: allow to set deps for boinc-optional apps
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 00ffd39ed..3a26e6738 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -80,20 +80,33 @@ in order to use this application with BOINC.}
# @FUNCTION: boinc-app_add_deps
# @USAGE: [--wrapper]
# @DESCRIPTION:
-# Generate appropriate (R)DEPEND for wrapper-enabled or
+# Generate appropriate IUSE and (R)DEPEND for wrapper-enabled or
# native application.
+#
+# If BOINC_APP_OPTIONAL is set to a non-null value, dependencies
+# will be added for "boinc" USE-flag.
boinc-app_add_deps() {
debug-print-function ${FUNCNAME} "${@}"
- if [[ $1 == "--wrapper" ]]; then
- RDEPEND="sci-misc/boinc-wrapper"
+ local depend rdepend
+ if [[ ${1} == "--wrapper" ]]; then
+ rdepend="sci-misc/boinc-wrapper"
else
- DEPEND="sci-misc/boinc"
- RDEPEND="sci-misc/boinc"
+ depend="sci-misc/boinc"
+ rdepend="sci-misc/boinc"
fi
- DEPEND="${DEPEND} acct-user/boinc"
- RDEPEND="${RDEPEND} acct-user/boinc"
+ depend+=" acct-user/boinc"
+ rdepend+=" acct-user/boinc"
+
+ if [[ ${BOINC_APP_OPTIONAL} ]]; then
+ IUSE+=" boinc"
+ DEPEND+=" boinc? ( ${depend} )"
+ RDEPEND+=" boinc? ( ${rdepend} )"
+ else
+ DEPEND+=" ${depend}"
+ RDEPEND+=" ${rdepend}"
+ fi
}
# @FUNCTION: boinc_master_url_check
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: 3a44a689c61265e859ff37a535c2c87a2359757d
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 9 15:38:31 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:19 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=3a44a689
boinc-app.eclass: allow non-standard runtime dir
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index a20c800cb..00ffd39ed 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -71,6 +71,12 @@ if [[ ! ${_BOINC_APP_ECLASS} ]]; then
You have to attach to the corresponding project
in order to use this application with BOINC.}
+# @ECLASS_VARIABLE: BOINC_RUNTIMEDIR
+# @USER_VARIABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Directory with BOINC runtime data.
+
# @FUNCTION: boinc-app_add_deps
# @USAGE: [--wrapper]
# @DESCRIPTION:
@@ -104,11 +110,9 @@ boinc_master_url_check() {
# @FUNCTION: get_boincdir
# @USAGE:
-# @RETURN: non-prefixed default BOINC runtime directory
+# @RETURN: non-prefixed BOINC runtime directory
get_boincdir() {
- debug-print-function ${FUNCNAME} "${@}"
-
- echo /var/lib/boinc
+ echo "${BOINC_RUNTIMEDIR:-/var/lib/boinc}"
}
# @FUNCTION: get_project_dirname
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: 85e5d892dc80013893de85f9358db176b9757c5c
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Tue Jul 9 15:24:55 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:18 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=85e5d892
boinc-app.eclass: rename boinc-wrapper_foreach_wrapper_job
This shouldn't have been like this in the first place. I must've been
really sleepy when I was writing this eclass.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 6a386bf2f..689be4992 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -221,19 +221,19 @@ doappinfo() {
_boinc-app_fix_permissions
}
-# @FUNCTION: boinc-wrapper_foreach_wrapper_job
-# @USAGE: <job.xml>
+# @FUNCTION: boinc-app_foreach_wrapper_job
+# @USAGE: <job>
# @DESCRIPTION:
# The default foreach_wrapper_job(). It replaces all occurences
# of @PV@, @EPREFIX@ and @LIBDIR@ strings with their corresponding values.
-boinc-wrapper_foreach_wrapper_job() {
+boinc-app_foreach_wrapper_job() {
debug-print-function ${FUNCNAME} "${@}"
- sed -i "$1" \
+ sed -i "${1:?}" \
-e "s:@PV@:${PV}:g" \
-e "s:@EPREFIX@:${EPREFIX}:g" \
-e "s:@LIBDIR@:$(get_libdir):g" \
- || die "$(basename "$1") sed failed"
+ || die "$(basename "${1}") sed failed"
}
# @FUNCTION: boinc_install_wrapper
@@ -275,7 +275,7 @@ boinc_install_wrapper() {
if declare -f foreach_wrapper_job >/dev/null; then
foreach_wrapper_job "${T:?}/${job_dest:?}"
else
- boinc-wrapper_foreach_wrapper_job "${T:?}/${job_dest:?}"
+ boinc-app_foreach_wrapper_job "${T:?}/${job_dest:?}"
fi
( # subshell to avoid pollution of calling environment
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-07-14 15:27 Haelwenn Monnier
0 siblings, 0 replies; 106+ messages in thread
From: Haelwenn Monnier @ 2024-07-14 15:27 UTC (permalink / raw
To: gentoo-commits
commit: 9cd4309b1e2f97a9d037a365639b8cb2049a26f0
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Fri Jul 12 08:54:47 2024 +0000
Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
CommitDate: Sun Jul 14 07:22:20 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=9cd4309b
boinc-app.eclass: remove excess and fix style
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 56 +++++++++++++++++++------------------------------
1 file changed, 21 insertions(+), 35 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index f6fb82034..822c84397 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -26,6 +26,7 @@ case ${EAPI} in
esac
# @ECLASS_VARIABLE: BOINC_APP_OPTIONAL
+# @PRE_INHERIT
# @DEFAULT_UNSET
# @DESCRIPTION:
# If set to a non-null value, BOINC part in the ebuild will be
@@ -55,6 +56,7 @@ if [[ ! ${_BOINC_APP_ECLASS} ]]; then
# it's published on project's website.
# @ECLASS_VARIABLE: HOMEPAGE
+# @OUTPUT_VARIABLE
# @DESCRIPTION:
# This variable defines the HOMEPAGE for BOINC projects if BOINC_MASTER_URL
# was set before inherit.
@@ -105,20 +107,7 @@ boinc-app_add_deps() {
fi
}
-# @FUNCTION: boinc_master_url_check
-# @USAGE:
-# @DESCRIPTION:
-# Make sure BOINC_MASTER_URL has a value.
-boinc_master_url_check() {
- debug-print-function ${FUNCNAME} "${@}"
-
- [[ -n ${BOINC_MASTER_URL} ]] || \
- die "BOINC_MASTER_URL is not set"
- return 0
-}
-
# @FUNCTION: get_boincdir
-# @USAGE:
# @RETURN: non-prefixed BOINC runtime directory
get_boincdir() {
echo "${BOINC_RUNTIMEDIR:-/var/lib/boinc}"
@@ -126,7 +115,6 @@ get_boincdir() {
# @FUNCTION: get_project_dirname
# @INTERNAL
-# @USAGE:
# @RETURN: project's dirname, derived from BOINC_MASTER_URL
# @DESCRIPTION:
# Example:
@@ -137,9 +125,8 @@ get_boincdir() {
# -> boinc.berkeley.edu_example
# @CODE
get_project_dirname() {
- debug-print-function ${FUNCNAME} "${@}"
-
- boinc_master_url_check
+ [[ ${BOINC_MASTER_URL} ]] || \
+ die "BOINC_MASTER_URL is not set"
local dirname
dirname=${BOINC_MASTER_URL#*://} # strip http[s]://
@@ -150,16 +137,12 @@ get_project_dirname() {
}
# @FUNCTION: get_project_root
-# @USAGE:
# @RETURN: non-prefixed directory where applications and files should be installed
get_project_root() {
- debug-print-function ${FUNCNAME} "${@}"
-
echo "$(get_boincdir)/projects/$(get_project_dirname)"
}
# @FUNCTION: _boinc-app_fix_permissions
-# @USAGE:
# @INTERNAL
# @DESCRIPTION:
# Fix owner and permissions for the project root.
@@ -174,14 +157,17 @@ _boinc-app_fix_permissions() {
}
# @FUNCTION: boinc-app_appinfo_prepare
-# @USAGE: <writable app_info.xml>
+# @USAGE: <app_info>
# @DESCRIPTION:
# The default appinfo_prepare(). It replaces all occurences
# of @PV@ with its corresponding value.
boinc-app_appinfo_prepare() {
debug-print-function ${FUNCNAME} "${@}"
- sed -i "$1" \
+ (( $# == 1 )) || \
+ die "${FUNCNAME} takes exactly one argument"
+
+ sed -i "${1:?}" \
-e "s:@PV@:${PV}:g" \
|| die "app_info.xml sed failed"
}
@@ -251,6 +237,9 @@ doappinfo() {
boinc-app_foreach_wrapper_job() {
debug-print-function ${FUNCNAME} "${@}"
+ (( $# == 1 )) || \
+ die "${FUNCNAME} takes exactly one argument"
+
sed -i "${1:?}" \
-e "s:@PV@:${PV}:g" \
-e "s:@EPREFIX@:${EPREFIX}:g" \
@@ -327,16 +316,13 @@ boinc-app_pkg_postinst() {
debug-print-function ${FUNCNAME} "${@}"
if [[ -f "${EROOT}/$(get_boincdir)/master_$(get_project_dirname).xml" ]]; then
- if [[ -z ${REPLACING_VERSIONS} ]]; then
+ if [[ ! ${REPLACING_VERSIONS} ]]; then
# most likely replacing applications downloaded
# by the BOINC client from project's website
elog "Restart the BOINC daemon for changes to take place:"
elog "# rc-service boinc restart"
- return
- else
- # applications are already in use
- return
fi
+ return
fi
elog
@@ -347,10 +333,10 @@ boinc-app_pkg_postinst() {
if [[ ! ${BOINC_INVITATION_CODE} ]]; then
elog "# rc-service boinc attach"
- elog " Enter the Project URL: ${BOINC_MASTER_URL}"
+ elog " Enter the Project URL: ${BOINC_MASTER_URL:?}"
else
- elog "- Master URL: ${BOINC_MASTER_URL}"
- elog "- Invitation code: ${BOINC_INVITATION_CODE}"
+ elog "- Master URL: ${BOINC_MASTER_URL:?}"
+ elog "- Invitation code: ${BOINC_INVITATION_CODE:?}"
fi
}
@@ -361,17 +347,17 @@ boinc-app_pkg_postinst() {
boinc-app_pkg_postrm() {
debug-print-function ${FUNCNAME} "${@}"
- if [[ -z ${REPLACED_BY_VERSION} ]]; then
+ if [[ ! ${REPLACED_BY_VERSION} ]]; then
local gui_rpc_auth="$(get_boincdir)/gui_rpc_auth.cfg"
local passwd=$(cat "${EROOT}/${gui_rpc_auth}" 2>/dev/null)
- if [[ -z ${passwd} ]]; then
- passwd="\$(cat ${gui_rpc_auth})"
+ if [[ ! ${passwd?} ]]; then
+ passwd="\$(cat ${gui_rpc_auth:?})"
fi
elog "You should detach this project from the BOINC client"
elog "to stop current tasks and delete remaining project files:"
elog
- elog "$ boinccmd --passwd ${passwd} --project ${BOINC_MASTER_URL} detach"
+ elog "$ boinccmd --passwd ${passwd:?} --project ${BOINC_MASTER_URL:?} detach"
elog
fi
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
2024-07-14 17:47 [gentoo-commits] repo/proj/guru:dev " Florian Schmaus
@ 2024-07-14 17:47 ` Florian Schmaus
0 siblings, 0 replies; 106+ messages in thread
From: Florian Schmaus @ 2024-07-14 17:47 UTC (permalink / raw
To: gentoo-commits
commit: 67b1548e18d6992c799a97ed4401a0c6cc6ad5ed
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 14 17:46:57 2024 +0000
Commit: Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Sun Jul 14 17:46:57 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=67b1548e
rebar3.eclass: drop rebar3.eclass, now in ::gentoo
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
eclass/rebar3.eclass | 295 ---------------------------------------------------
1 file changed, 295 deletions(-)
diff --git a/eclass/rebar3.eclass b/eclass/rebar3.eclass
deleted file mode 100644
index 4104bdcf6..000000000
--- a/eclass/rebar3.eclass
+++ /dev/null
@@ -1,295 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: rebar3.eclass
-# @MAINTAINER:
-# Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
-# @AUTHOR:
-# Amadeusz Żołnowski <aidecoe@gentoo.org>
-# @SUPPORTED_EAPIS: 8
-# @BLURB: Build Erlang/OTP projects using dev-util/rebar:3.
-# @DESCRIPTION:
-# An eclass providing functions to build Erlang/OTP projects using
-# dev-util/rebar:3.
-#
-# rebar is a tool which tries to resolve dependencies itself which is by
-# cloning remote git repositories. Dependent projects are usually expected to
-# be in sub-directory 'deps' rather than looking at system Erlang lib
-# directory. Projects relying on rebar usually don't have 'install' make
-# targets. The eclass workarounds some of these problems. It handles
-# installation in a generic way for Erlang/OTP structured projects.
-
-case ${EAPI} in
- 8) ;;
- *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
-esac
-
-if [[ -z ${_REBAR3_ECLASS} ]]; then
-
-inherit edo
-
-RDEPEND="dev-lang/erlang:="
-DEPEND="${RDEPEND}"
-BDEPEND="
- dev-util/rebar:3
- >=sys-apps/gawk-4.1
-"
-
-# @ECLASS_VARIABLE: REBAR_PROFILE
-# @DESCRIPTION:
-# Rebar profile to use.
-: "${REBAR_PROFILE:=default}"
-
-# @ECLASS_VARIABLE: REBAR_APP_SRC
-# @DESCRIPTION:
-# Relative path to .app.src description file.
-: "${REBAR_APP_SRC:=src/${PN}.app.src}"
-
-# @FUNCTION: get_erl_libs
-# @RETURN: the path to Erlang lib directory
-# @DESCRIPTION:
-# Get the full path without EPREFIX to Erlang lib directory.
-get_erl_libs() {
- echo "/usr/$(get_libdir)/erlang/lib"
-}
-
-# @FUNCTION: _rebar_find_dep
-# @INTERNAL
-# @USAGE: <project_name>
-# @RETURN: 0 success, 1 dependency not found, 2 multiple versions found
-# @DESCRIPTION:
-# Find a Erlang package/project by name in Erlang lib directory. Project
-# directory is usually suffixed with version. It is matched to '<project_name>'
-# or '<project_name>-*'.
-_rebar_find_dep() {
- local pn="${1}"
- local p
- local result
-
- pushd "${EPREFIX}/$(get_erl_libs)" >/dev/null || return 1
- for p in ${pn} ${pn}-*; do
- if [[ -d ${p} ]]; then
- # Ensure there's at most one matching.
- [[ ${result} ]] && return 2
- result="${p}"
- fi
- done
- popd >/dev/null || die
-
- [[ ${result} ]] || return 1
- echo "${result}"
-}
-
-# @FUNCTION: rebar_disable_coverage
-# @USAGE: [<rebar_config>]
-# @DESCRIPTION:
-# Disable coverage in rebar.config. This is a workaround for failing coverage.
-# Coverage is not relevant in this context, so there's no harm to disable it,
-# although the issue should be fixed.
-rebar_disable_coverage() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local rebar_config="${1:-rebar.config}"
-
- sed -e 's/{cover_enabled, true}/{cover_enabled, false}/' \
- -i "${rebar_config}" \
- || die "failed to disable coverage in ${rebar_config}"
-}
-
-# @FUNCTION: erebar3
-# @USAGE: <targets>
-# @DESCRIPTION:
-# Run rebar with verbose flag. Die on failure.
-erebar3() {
- debug-print-function ${FUNCNAME} "${@}"
-
- (( $# > 0 )) || die "erebar: at least one target is required"
-
- case ${1} in
- eunit|ct)
- local -x ERL_LIBS="." ;;
- *)
- local -x ERL_LIBS="${EPREFIX}/$(get_erl_libs)" ;;
- esac
-
- edo rebar3 "$@"
-}
-
-# @FUNCTION: rebar_fix_include_path
-# @USAGE: <project_name> [<rebar_config>]
-# @DESCRIPTION:
-# Fix path in rebar.config to 'include' directory of dependent project/package,
-# so it points to installation in system Erlang lib rather than relative 'deps'
-# directory.
-#
-# <rebar_config> is optional. Default is 'rebar.config'.
-#
-# The function dies on failure.
-rebar_fix_include_path() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local pn="${1}"
- local rebar_config="${2:-rebar.config}"
- local erl_libs="${EPREFIX}/$(get_erl_libs)"
- local p
-
- p="$(_rebar_find_dep "${pn}")" \
- || die "failed to unambiguously resolve dependency of '${pn}'"
-
- gawk -i inplace \
- -v erl_libs="${erl_libs}" -v pn="${pn}" -v p="${p}" '
-/^{[[:space:]]*erl_opts[[:space:]]*,/, /}[[:space:]]*\.$/ {
- pattern = "\"(./)?deps/" pn "/include\"";
- if (match($0, "{i,[[:space:]]*" pattern "[[:space:]]*}")) {
- sub(pattern, "\"" erl_libs "/" p "/include\"");
- }
- print $0;
- next;
-}
-1
-' "${rebar_config}" || die "failed to fix include paths in ${rebar_config} for '${pn}'"
-}
-
-# @FUNCTION: rebar_remove_deps
-# @USAGE: [<rebar_config>]
-# @DESCRIPTION:
-# Remove dependencies list from rebar.config and deceive build rules that any
-# dependencies are already fetched and built. Otherwise rebar tries to fetch
-# dependencies and compile them.
-#
-# <rebar_config> is optional. Default is 'rebar.config'.
-#
-# The function dies on failure.
-rebar_remove_deps() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local rebar_config="${1:-rebar.config}"
-
- mkdir -p "${S}/deps" && :>"${S}/deps/.got" && :>"${S}/deps/.built" || die
- gawk -i inplace '
-/^{[[:space:]]*deps[[:space:]]*,/, /}[[:space:]]*\.$/ {
- if ($0 ~ /}[[:space:]]*\.$/) {
- print "{deps, []}.";
- }
- next;
-}
-1
-' "${rebar_config}" || die "failed to remove deps from ${rebar_config}"
-}
-
-# @FUNCTION: rebar_set_vsn
-# @USAGE: [<version>]
-# @DESCRIPTION:
-# Set version in project description file if it's not set.
-#
-# <version> is optional. Default is PV stripped from version suffix.
-#
-# The function dies on failure.
-rebar_set_vsn() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local version="${1:-${PV%_*}}"
-
- sed -e "s/vsn, git/vsn, \"${version}\"/" \
- -i "${S}/${REBAR_APP_SRC}" \
- || die "failed to set version in src/${PN}.app.src"
-}
-
-# @FUNCTION: rebar3_src_prepare
-# @DESCRIPTION:
-# Prevent rebar from fetching and compiling dependencies. Set version in
-# project description file if it's not set.
-#
-# Existence of rebar.config is optional, but file description file must exist
-# at 'src/${PN}.app.src'.
-rebar3_src_prepare() {
- debug-print-function ${FUNCNAME} "${@}"
-
- default_src_prepare
- rebar_set_vsn
- rm -f rebar.lock
- if [[ -f rebar.config ]]; then
- rebar_disable_coverage
- rebar_remove_deps
- fi
-}
-
-# @FUNCTION: rebar3_src_configure
-# @DESCRIPTION:
-# Configure with ERL_LIBS set.
-rebar3_src_configure() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local -x ERL_LIBS="${EPREFIX}/$(get_erl_libs)"
- default_src_configure
-}
-
-# @FUNCTION: rebar3_src_compile
-# @DESCRIPTION:
-# Compile project with rebar.
-rebar3_src_compile() {
- debug-print-function ${FUNCNAME} "${@}"
-
- erebar3 as "${REBAR_PROFILE}" release --all
-}
-
-# @FUNCTION: rebar3_src_test
-# @DESCRIPTION:
-# Run unit tests.
-rebar3_src_test() {
- debug-print-function ${FUNCNAME} "${@}"
-
- erebar3 eunit -v
-}
-
-# @FUNCTION: rebar3_install_lib
-# @USAGE: <dir>
-# @DESCRIPTION:
-# Install BEAM files, include headers and native libraries.
-#
-# Function expects that project conforms to Erlang/OTP structure.
-rebar3_install_lib() {
- debug-print-function ${FUNCNAME} "${@}"
-
- local dest="$(get_erl_libs)/${P}"
- insinto "${dest}"
-
- pushd "${1?}" >/dev/null || die
- for dir in ebin include priv; do
- if [[ -d ${dir} && ! -L ${dir} ]]; then
- cp -pR ${dir} "${ED%/}/${dest}/" || die "failed to install ${dir}/"
- fi
- done
- popd >/dev/null || die
-}
-
-# @FUNCTION: rebar3_src_install
-# @DESCRIPTION:
-# Install built release or library.
-#
-# Function expects that project conforms to Erlang/OTP structure.
-rebar3_src_install() {
- debug-print-function ${FUNCNAME} "${@}"
-
- pushd "_build/${REBAR_PROFILE}" >/dev/null || die
- if [[ -d rel/${PN} ]]; then
- if ! declare -f rebar3_install_release >/dev/null; then
- die "${FUNCNAME}: a custom function named 'rebar3_install_release' is required to install a release"
- fi
- pushd rel/${PN} >/dev/null || die
- rebar3_install_release || die
- popd >/dev/null || die
- elif [[ -d lib/${PN} ]]; then
- rebar3_install_lib lib/${PN}
- else
- die "No releases or libraries to install"
- fi
- popd >/dev/null || die
-
- einstalldocs
-}
-
-_REBAR3_ECLASS=1
-fi
-
-EXPORT_FUNCTIONS src_prepare src_compile src_test src_install
^ permalink raw reply related [flat|nested] 106+ messages in thread
* [gentoo-commits] repo/proj/guru:master commit in: eclass/
@ 2024-10-19 0:05 David Roman
0 siblings, 0 replies; 106+ messages in thread
From: David Roman @ 2024-10-19 0:05 UTC (permalink / raw
To: gentoo-commits
commit: ea3ff719b1395d31235029ef86ae290a5872382c
Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Wed Oct 16 10:15:51 2024 +0000
Commit: David Roman <davidroman96 <AT> gmail <DOT> com>
CommitDate: Fri Oct 18 14:24:18 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ea3ff719
boinc-app.eclass: replace symlink with shell wrapper
Closes: https://bugs.gentoo.org/941384
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>
eclass/boinc-app.eclass | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/eclass/boinc-app.eclass b/eclass/boinc-app.eclass
index 822c84397..1658315cc 100644
--- a/eclass/boinc-app.eclass
+++ b/eclass/boinc-app.eclass
@@ -88,6 +88,7 @@ boinc-app_add_deps() {
local depend rdepend
if [[ ${1} == "--wrapper" ]]; then
+ inherit wrapper
rdepend="sci-misc/boinc-wrapper"
else
depend="sci-misc/boinc"
@@ -258,8 +259,8 @@ boinc-app_foreach_wrapper_job() {
#
# 1. Installs A.xml in the project's root directory, renaming it to B.xml
#
-# 2. Installs boinc-example_wrapper symlink, which points
-# to /usr/bin/boinc-wrapper, in the project's root directory
+# 2. Installs boinc-example_wrapper shell script, which executes
+# /usr/bin/boinc-wrapper, in the project's root directory
#
# Example:
# @CODE
@@ -296,7 +297,9 @@ boinc_install_wrapper() {
) || die "failed to install ${exe:?} wrapper job"
rm -f "${T:?}/${job_dest:?}"
- dosym -r /usr/bin/boinc-wrapper "$(get_project_root)/${exe:?}"
+ # Make a shell wrapper instead of symlink to pass filesize validation on
+ # updates, bug 941384
+ make_wrapper "${exe:?}" /usr/bin/boinc-wrapper "" "" "$(get_project_root)"
_boinc-app_fix_permissions
}
^ permalink raw reply related [flat|nested] 106+ messages in thread
end of thread, other threads:[~2024-10-19 0:05 UTC | newest]
Thread overview: 106+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-12 19:35 [gentoo-commits] repo/proj/guru:master commit in: eclass/ Ronny Gutbrod
-- strict thread matches above, loose matches on Subject: below --
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-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-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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox