# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{12..14} ) PYTHON_REQ_USE="sqlite" inherit desktop python-single-r1 DESCRIPTION="SOFA is a statistics, analysis, and reporting program" HOMEPAGE="https://www.sofastatistics.com/ https://sourceforge.net/projects/sofastatistics/" SRC_URI="https://sourceforge.net/projects/sofastatistics/files/${PN}/${PV}/sofastats-${PV}.tar.gz -> ${P}.tar.gz" S="${WORKDIR}/sofastats-${PV}" LICENSE="AGPL-3" SLOT="0" KEYWORDS="~amd64 ~x86" LANGS="br ca de en es fr gl hr it mn pt ru sl tr" for lang in ${LANGS}; do IUSE+=" l10n_${lang}" done REQUIRED_USE="${PYTHON_REQUIRED_USE}" RDEPEND=" ${PYTHON_DEPS} $(python_gen_cond_dep ' dev-python/matplotlib[wxwidgets,${PYTHON_USEDEP}] dev-python/numpy[${PYTHON_USEDEP}] dev-python/openpyxl[${PYTHON_USEDEP}] dev-python/pillow[${PYTHON_USEDEP}] dev-python/pymysql[${PYTHON_USEDEP}] dev-python/pypdf[${PYTHON_USEDEP}] dev-python/psycopg[${PYTHON_USEDEP}] dev-python/pyxdg[${PYTHON_USEDEP}] dev-python/wxpython[${PYTHON_USEDEP}] ') app-text/ghostscript-gpl " DEPEND="${RDEPEND}" pkg_setup() { python-single-r1_pkg_setup } src_prepare() { default # 2026-04-29: dev-python/PyPDF2 is gone from ::gentoo; the modern # fork (dev-python/pypdf) is API-compatible for PdfReader, which is # all this module uses. Drop the PyPDF2 alias. sed -i -e 's/import PyPDF2 as pypdf/import pypdf/' \ sofa_main/exporting/export_output_pdfs.py || die } src_install() { local lang for lang in ${LANGS}; do use "l10n_${lang}" || rm -rf "sofa_main/locale/${lang}" done insinto /usr/share/sofastats doins -r sofa_main/* exeinto /usr/share/sofastats doexe sofa_main/*.py* doexe sofa_main/*/*.py* dosym ../share/sofastats/start.py /usr/bin/sofastats make_desktop_entry sofastats ${PN} /usr/share/sofastats/images/sofa_32x32.ico "Science;" } pkg_postinst() { elog elog "SOFA's PDF and image export features call out to wkhtmltopdf" elog "and pdftk at runtime, but neither is in ::gentoo any more." elog "All other functionality works without them." elog }