mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-06 17:47:07 -08:00
dev-python/pycparser: Enforce regenerating tables
Remove the pregenerated tables provided in the distfile to force regenerating them. Generate the tables for every Python implementation separately to avoid incompatibility/underoptimization problems (tables built by Python 3.5+ are incompatible with older Python versions that have 100 group-in-regex limit).
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Copyright 1999-2017 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
|
||||
PYTHON_COMPAT=( python2_7 python3_{4,5,6} pypy pypy3 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="C parser and AST generator written in Python"
|
||||
HOMEPAGE="https://github.com/eliben/pycparser"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x64-cygwin ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris"
|
||||
IUSE="test"
|
||||
|
||||
RDEPEND="dev-python/ply[${PYTHON_USEDEP}]"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? ( dev-python/nose[${PYTHON_USEDEP}] )"
|
||||
|
||||
python_prepare_all() {
|
||||
# remove the original files to guarantee their regen
|
||||
rm pycparser/{c_ast,lextab,yacctab}.py || die
|
||||
|
||||
# kill sys.path manipulations to force the tests to use built files
|
||||
sed -i -e '/sys\.path/d' tests/*.py || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
distutils-r1_python_compile
|
||||
|
||||
# note: tables built by py3.5+ are incompatible with older versions
|
||||
# because of 100 group limit of 're' module -- just generate them
|
||||
# separately optimized for each target instead
|
||||
pushd "${BUILD_DIR}"/lib/pycparser > /dev/null || die
|
||||
"${PYTHON}" _build_tables.py || die
|
||||
popd > /dev/null || die
|
||||
}
|
||||
|
||||
python_test() {
|
||||
# change workdir to avoid '.' import
|
||||
nosetests -v -w tests || die
|
||||
}
|
||||
Reference in New Issue
Block a user