python/coverage: update to 7.6.5
[oi-userland.git] / components / python / PyGObject / python-integrate-project.conf
blob61b9b6d27d6a8eb4bc3a2aeaf922f2ebc6488560
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
7 # A full copy of the text of the CDDL should have accompanied this
8 # source.  A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
13 # Copyright 2021 Gary Mills
14 # Copyright 2017 Alexander Pyhalov
17 %patch% 01-no-iconv-latin1.patch
18 %patch% 02-requires-metadata.patch
20 %hook-begin%
21 # https://gitlab.gnome.org/GNOME/pygobject/-/issues/651
22 LICENSE_FILE=COPYING
24 %include-1%
25 # Force meson build style because the default PEP 517 build style is unable to
26 # create wheels with the pkgconfig file.  See meson.build and
27 # https://github.com/pygobject/pycairo/issues/312
28 BUILD_STYLE = meson
29 USE_DEFAULT_TEST_TRANSFORMS = yes
31 # We want to build for all Python versions
32 SINGLE_PYTHON_VERSION = no
33 %include-2%
34 COMPONENT_SRC =                 pygobject-$(HUMAN_VERSION)
36 # We cannot obsolete pygobject-27 yet because it is needed by gimp and pygtk2-27.
37 PYTHON_VERSIONS_OBSOLETING := $(filter-out 2.7, $(PYTHON_VERSIONS_OBSOLETING))
39 # Bring in usual defaults for the pyproject based Python projects
40 include $(WS_MAKE_RULES)/pyproject-defaults.mk
42 # These variables needs to be defined before the common.mk include.
43 BUILD_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.built)
44 INSTALL_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.installed)
45 ifeq ($(strip $(wildcard $(COMPONENT_TEST_RESULTS_DIR)/results-*.master)),)
46 TEST_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested)
47 else
48 TEST_64 = $(PYTHON_VERSIONS:%=$(BUILD_DIR)/$(MACH64)-%/.tested-and-compared)
49 endif
51 # Add runtime dependencies from project metadata to generated manifest
52 GENERATE_EXTRA_DEPS += $(BUILD_DIR)/META.depend-runtime.res
53 # Add build dependencies from project metadata to REQUIRED_PACKAGES
54 REQUIRED_PACKAGES_RESOLVED += $(BUILD_DIR)/META.depend.res
55 # Add runtime dependencies from project metadata to REQUIRED_PACKAGES
56 REQUIRED_PACKAGES_RESOLVED += $(BUILD_DIR)/META.depend-runtime.res
57 %include-3%
58 # Set BITS and PYTHON_VERSION for all targets
59 $(foreach t,built installed tested tested-and-compared, \
60         $(eval $(BUILD_DIR)/$(MACH64)-%/.$(t): BITS=64) \
61         $(foreach v,$(PYTHON_VERSION), \
62                 $(eval $(BUILD_DIR)/%-$(v)/.$(t): PYTHON_VERSION=$(v)) \
63         ) \
66 # Move all modules from default site-packages directory to vendor-packages
67 # directory where we place modules shipped by the OS but not included in the
68 # core Python distribution.
69 COMPONENT_POST_INSTALL_ACTION += \
70         if [ -d $(PROTO_DIR)/$(PYTHON_DIR)/site-packages ] ; then \
71                 $(RM) -r $(PROTO_DIR)/$(PYTHON_LIB) ; \
72                 $(MV) $(PROTO_DIR)/$(PYTHON_DIR)/site-packages $(PROTO_DIR)/$(PYTHON_LIB) ; \
73         fi ;
75 # Rename some files to make way for symlinks
76 COMPONENT_POST_INSTALL_ACTION += \
77         (cd $(PROTOUSRINCDIR)/pygobject-3.0; $(MV) pygobject.h pygobject.h-$(PYTHON_VERSION)) ;
78 COMPONENT_POST_INSTALL_ACTION += \
79         (cd $(PROTOUSRLIBDIR64)/pkgconfig; $(MV) pygobject-3.0.pc pygobject-3.0.pc-$(PYTHON_VERSION)) ;
81 # Replace Python version in header and pkgconfig file names
82 GENERATE_EXTRA_CMD += | \
83         $(GSED) -E -e 's/(pygobject((\.h)|(-3\.0\.pc))-)3\.[0-9]*$$/\1$$(PYVER)/' | uniq
85 # We need to add -$(PYV) to package fmri
86 GENERATE_EXTRA_CMD += | \
87         $(GSED) -e 's/^\(set name=pkg.fmri [^@]*\)\(.*\)$$/\1-$$(PYV)\2/'
89 # Per Python version test infrastructure
90 COMPONENT_TEST_BUILD_DIR = $(BUILD_DIR)/test-$(PYTHON_VERSION)
91 COMPONENT_TEST_OUTPUT = $(COMPONENT_TEST_BUILD_DIR)/test-$(PYTHON_VERSION)-results
92 COMPONENT_TEST_DIFFS =  $(COMPONENT_TEST_BUILD_DIR)/test-$(PYTHON_VERSION)-diffs
93 COMPONENT_TEST_SNAPSHOT = $(COMPONENT_TEST_BUILD_DIR)/results-$(PYTHON_VERSION).snapshot
94 COMPONENT_TEST_TRANSFORM_CMD = $(COMPONENT_TEST_BUILD_DIR)/transform-$(PYTHON_VERSION)-results
96 # Testing uses Pytest under the hood so we need to make sure we do not load all
97 # installed Pytest plugins that could cause testing to fail.
98 COMPONENT_TEST_ENV += PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
100 # Following tests (from Python core) fails in our environment.
101 # Further investigation is needed.
102 PYTEST_ADDOPTS += --deselect tests/test_events.py::GLibEventLoopTests::test_bidirectional_pty
103 PYTEST_ADDOPTS += --deselect tests/test_events.py::GLibEventLoopTests::test_read_pty_output
104 PYTEST_ADDOPTS += --deselect tests/test_events.py::GLibEventLoopTests::test_write_pty
105 COMPONENT_TEST_ENV += PYTEST_ADDOPTS="$(PYTEST_ADDOPTS)"
107 # Testing needs an X server
108 TEST_REQUIRED_PACKAGES += x11/server/xvfb
109 COMPONENT_PRE_TEST_ACTION += /usr/bin/Xvfb :0 >/dev/null 2>&1 &
110 COMPONENT_TEST_ENV += DISPLAY=:0
111 COMPONENT_POST_TEST_ACTION += /usr/bin/pkill -x Xvfb ;
113 # Add build dependencies from project metadata to REQUIRED_PACKAGES
114 $(BUILD_DIR)/META.depend.res: $(SOURCE_DIR)/.prep
115         $(MKDIR) $(BUILD_DIR)
116         $(PYTHON) -m pyproject_installer deps --depsconfig $(BUILD_DIR)/pyproject_deps.json add build_pep517 pep517
117         $(PYTHON) -m pyproject_installer deps --depsconfig $(BUILD_DIR)/pyproject_deps.json add build_pep518 pep518
118         cd $(SOURCE_DIR) ; $(PYTHON) -m pyproject_installer deps --depsconfig $(BUILD_DIR)/pyproject_deps.json sync
119         $(PYTHON) -m pyproject_installer deps --depsconfig $(BUILD_DIR)/pyproject_deps.json eval --depformat '$$nname' \
120                 | $(GSED) -e 's/.*/depend type=require fmri=pkg:\/library\/python\/&-$$(PYV)/' \
121                 > $@
123 # Remove any previous dependency files
124 COMPONENT_POST_INSTALL_ACTION +=        $(RM) $(@D)/.depend-runtime ;
126 # Add runtime dependencies from project metadata to generated manifest
127 GENERATE_EXTRA_CMD += | \
128         $(CAT) - <( \
129                 echo "" ; \
130                 echo "\# python modules are unusable without python runtime binary" ; \
131                 echo "depend type=require fmri=__TBD pkg.debug.depend.file=python\$$(PYVER) \\" ; \
132                 echo "    pkg.debug.depend.path=usr/bin" ; \
133                 echo "" ; \
134                 echo "\# Automatically generated dependencies based on distribution metadata" ; \
135                 $(CAT) $(BUILD_DIR)/META.depend-runtime.res \
136         )
138 # Generate raw lists of runtime dependencies per Python version
139 COMPONENT_POST_INSTALL_ACTION += \
140         PYTHONPATH=$(PROTO_DIR)/$(PYTHON_DIR)/site-packages:$(PROTO_DIR)/$(PYTHON_LIB) \
141                 $(PYTHON) $(WS_TOOLS)/python-requires $(COMPONENT_NAME) >> $(@D)/.depend-runtime ;
143 # Convert raw per version lists of runtime dependencies to single resolved
144 # runtime dependency list.
145 $(BUILD_DIR)/META.depend-runtime.res:   $(INSTALL_$(MK_BITS))
146         $(CAT) $(INSTALL_$(MK_BITS):%.installed=%.depend-runtime) | $(SORT) -u \
147                 | $(GSED) -e 's/.*/depend type=require fmri=pkg:\/library\/python\/&-$$(PYV)/' > $@
148 %hook-manifest%
149 # Create mediated symlinks
150 printf '<transform file path=(usr/.*/)(pygobject(\\.h|-3\\.0\\.pc))-(3\\.\\d+)$ -> emit link path=%%<1>%%<2> target=%%<2>-%%<4> mediator=python mediator-version=%%<4> >\n' >> "$DISTRIBUTION-PYVER.p5m"