# Copyright 2017-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{10..13} )
inherit edo python-single-r1

DESCRIPTION="GYP (Generate Your Projects) meta-build system"
HOMEPAGE="https://gyp.gsrc.io/ https://chromium.googlesource.com/external/gyp"

if [[ ${PV} == 99999999999999 ]]; then
	EGIT_REPO_URI="https://chromium.googlesource.com/external/gyp"
	inherit git-r3
else
	SRC_URI="https://home.apache.org/~arfrever/distfiles/${P}.tar.xz"
	KEYWORDS="~amd64 ~arm64 ~loong ~ppc64 ~x86"
fi

LICENSE="BSD"
SLOT="0"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
# Needs review after updating to a newer commit
RESTRICT="test"

RDEPEND="${PYTHON_DEPS}"
BDEPEND="
	$(python_gen_cond_dep '
		dev-python/setuptools[${PYTHON_USEDEP}]
	')
"

src_prepare() {
	default

	sed -e "s/'  Linux %s' % ' '\.join(platform.linux_distribution())/'  Linux'/" -i gyptest.py || die
	sed \
		-e "s/import collections/import collections.abc/" \
		-e "s/collections\.MutableSet/collections.abc.MutableSet/" \
		-i pylib/gyp/common.py || die
	sed -e "s/the_dict_key is 'variables'/the_dict_key == 'variables'/" -i pylib/gyp/input.py || die
	sed \
		-e "s/import collections/import collections.abc/" \
		-e "s/collections\.Iterable/collections.abc.Iterable/" \
		-i pylib/gyp/msvs_emulation.py || die
	sed \
		-e "s/os\.environ\['PRESERVE'\] is not ''/os.environ['PRESERVE'] != ''/" \
		-e "s/conditions is ()/conditions == ()/" \
		-i test/lib/TestCmd.py || die
}

src_compile() {
	edo ${EPYTHON} setup.py build
}

src_test() {
	# More errors with DeprecationWarnings enabled.
	local -x PYTHONWARNINGS=""

	edo "${PYTHON}" gyptest.py --all --verbose
}

src_install() {
	edo ${EPYTHON} setup.py install --prefix="${EPREFIX}/usr" --root="${D}"
	python_optimize
	einstalldocs
}