Marcel Telka
2022-11-09 c495237419b21855ba7018e543eeff32ee088152
make-rules: add REQUIRED_PACKAGES for python-requires script

2 files modified
28 ■■■■ changed files
make-rules/pyproject.mk 15 ●●●● patch | view | raw | blame | history
make-rules/setup.py.mk 13 ●●●●● patch | view | raw | blame | history
make-rules/pyproject.mk
@@ -19,11 +19,18 @@
ifeq ($(strip $(PYTHON_BOOTSTRAP)),yes)
#
# Both 'build' and 'installer' Python modules used for packaging regular Python
# projects (see below) are not part of core Python, so we need to bootstrap
# them together with their non-core dependencies.
# The following Python projects needs to be build before any other Python
# project because they are needed by the Userland build framework itself.  To
# build them we need special set of rules that uses limited functionality of
# the build framework just to bootstrap them together with their build time and
# runtime dependencies.
#
# There are basically two ways how to bootstrap such projects:
# - pyproject_installer (the bootstrapper)
# - build (to build packages)
# - installer (to install packages before publish)
# - packaging (to detect runtime dependencies)
#
# There are basically two ways how to bootstrap these projects:
#
# 1) defer to default 'setup.py' build style for projects that still supports
# it.  The 'setup.py' build style usually does not require anything outside
make-rules/setup.py.mk
@@ -301,6 +301,19 @@
    $(CAT) $(INSTALL_TARGET:%.installed=%.depend-runtime) | LC_ALL=C $(GSORT) -u \
        | $(GSED) -e 's/.*/depend type=require fmri=pkg:\/library\/python\/&-$$(PYV)/' > $@
# The python-requires script requires importlib_metadata for Python 3.7 to
# provide useful output.  Since we do fake bootstrap for Python 3.7 we require
# the package here unconditionally.
USERLAND_REQUIRED_PACKAGES += library/python/importlib-metadata-37
# The python-requires script requires packaging to provide useful output but
# packaging might be unavailable during bootstrap of the pyproject_installer
# (the bootstrapper), packaging itself (obviously), and pyparsing (required by
# packaging).  So require it conditionally.
ifeq ($(filter $(strip $(COMPONENT_NAME)),pyproject_installer packaging pyparsing),)
PYTHON_USERLAND_REQUIRED_PACKAGES += library/python/packaging
endif
clean::
    $(RM) -r $(SOURCE_DIR) $(BUILD_DIR)