commit:     f7dfbeb064b132fbdb4798b786110664bc782929
Author:     Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
AuthorDate: Mon Feb 27 00:40:05 2023 +0000
Commit:     Anna Vyalkova <cyber+gentoo <AT> sysrq <DOT> in>
CommitDate: Mon Feb 27 01:35:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=f7dfbeb0

app-office/beancount: enable py3.11

Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in>

 ...t-2.3.5-r1.ebuild => beancount-2.3.5-r2.ebuild} | 57 +++++++++++++++++++---
 1 file changed, 51 insertions(+), 6 deletions(-)

diff --git a/app-office/beancount/beancount-2.3.5-r1.ebuild 
b/app-office/beancount/beancount-2.3.5-r2.ebuild
similarity index 61%
rename from app-office/beancount/beancount-2.3.5-r1.ebuild
rename to app-office/beancount/beancount-2.3.5-r2.ebuild
index 296a34055..4612d6706 100644
--- a/app-office/beancount/beancount-2.3.5-r1.ebuild
+++ b/app-office/beancount/beancount-2.3.5-r2.ebuild
@@ -3,11 +3,11 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_10 )
+PYTHON_COMPAT=( python3_{10..11} )
 DISTUTILS_USE_PEP517=setuptools
 DISTUTILS_SINGLE_IMPL=1
 
-inherit distutils-r1
+inherit distutils-r1 toolchain-funcs
 
 DESCRIPTION="A double-entry accounting system that uses text files as input"
 HOMEPAGE="https://beancount.github.io https://github.com/beancount/beancount";
@@ -25,32 +25,73 @@ RDEPEND="
                dev-python/google-api-python-client[${PYTHON_USEDEP}]
                dev-python/lxml[${PYTHON_USEDEP}]
                dev-python/ply[${PYTHON_USEDEP}]
-               dev-python/pytest[${PYTHON_USEDEP}]
                dev-python/python-dateutil[${PYTHON_USEDEP}]
                dev-python/python-magic[${PYTHON_USEDEP}]
                dev-python/requests[${PYTHON_USEDEP}]
        ')
 "
+BDEPEND="
+       sys-devel/bison
+       sys-devel/flex
+"
 
 EPYTEST_DESELECT=( scripts/setup_test.py )
 
 distutils_enable_tests pytest
 
 src_prepare() {
+       distutils-r1_src_prepare
+
+       # remove test deps from 'install_requires'
+       sed "/pytest/d" -i setup.py || die
+
+       # we'll regenerate C sources
+       rm ${PN}/parser/grammar.{c,h} || die
+       rm ${PN}/parser/lexer.{c,h} || die
+
+       # repair tests
        sed "/def find_repository_root/a\    return '${S}'" \
                -i ${PN}/utils/test_utils.py || die
        sed "s/\[PROGRAM\]/['${EPYTHON}', PROGRAM]/" \
                -i ${PN}/tools/treeify_test.py || die
        sed "/DATA_DIR =/c\    DATA_DIR = 
'${S}/${PN}/utils/file_type_testdata'" \
                -i ${PN}/utils/file_type_test.py || die
-       distutils-r1_src_prepare
+}
+
+src_configure() {
+       tc-export CC
 }
 
 python_compile() {
        distutils-r1_python_compile
 
        # keep in sync with hashsrc.py, otherwise expect test failures
-       cp 
beancount/parser/{lexer.l,grammar.y,decimal.h,decimal.c,macros.h,parser.h,parser.c,tokens.h}
 "${BUILD_DIR}"/install$(python_get_sitedir)/${PN}/parser || die
+       local csources=(
+               decimal.{c,h}
+               grammar.y
+               lexer.l
+               macros.h
+               parser.{c,h}
+               tokens.h
+       )
+
+       for file in "${csources[@]}"; do
+               cp ${PN}/parser/${file} 
"${BUILD_DIR}"/install$(python_get_sitedir)/${PN}/parser || die
+       done
+}
+
+src_compile() {
+       local mymakeflags=(
+               PYCONFIG="$(python_get_PYTHON_CONFIG)"
+       )
+
+       emake "${mymakeflags[@]}" ${PN}/parser/grammar.c
+       emake "${mymakeflags[@]}" ${PN}/parser/lexer.c
+
+       distutils-r1_src_compile
+
+       use test && \
+               emake "${mymakeflags[@]}" ${PN}/parser/tokens_test
 }
 
 python_test(){
@@ -59,6 +100,10 @@ python_test(){
 }
 
 src_test() {
-       emake ctest
+       local mymakeflags=(
+               PYCONFIG="$(python_get_PYTHON_CONFIG)"
+       )
+
+       emake "${mymakeflags[@]}" ctest
        distutils-r1_src_test
 }

Reply via email to