Files
guru/app-office/beancount/beancount-2.3.6.ebuild
2026-01-27 12:29:18 +01:00

113 lines
2.4 KiB
Bash

# Copyright 2021-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..13} )
DISTUTILS_USE_PEP517=setuptools
DISTUTILS_SINGLE_IMPL=1
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
"
SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
RDEPEND="
$(python_gen_cond_dep '
dev-python/beautifulsoup4[${PYTHON_USEDEP}]
dev-python/bottle[${PYTHON_USEDEP}]
dev-python/chardet[${PYTHON_USEDEP}]
dev-python/google-api-python-client[${PYTHON_USEDEP}]
dev-python/lxml[${PYTHON_USEDEP}]
dev-python/ply[${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
}
src_configure() {
tc-export CC
}
python_compile() {
distutils-r1_python_compile
# keep in sync with hashsrc.py, otherwise expect test failures
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(){
cd "${T}" || die
epytest --pyargs ${PN}
}
src_test() {
local mymakeflags=(
PYCONFIG="$(python_get_PYTHON_CONFIG)"
)
emake "${mymakeflags[@]}" ctest
distutils-r1_src_test
}