Bug 2247185 - pygobject3 fails to build in current Fedora Rawhide (F40)
Summary: pygobject3 fails to build in current Fedora Rawhide (F40)
Keywords:
Status: CLOSED COMPLETED
Alias: None
Product: Fedora
Classification: Fedora
Component: pygobject3
Version: 40
Hardware: Unspecified
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Colin Walters
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: F40FTBFS PYTHON3.13
TreeView+ depends on / blocked
 
Reported: 2023-10-31 07:21 UTC by Karolina Surma
Modified: 2025-01-03 04:25 UTC (History)
3 users (show)

Fixed In Version: pygobject3-3.48.2-1.fc40, pygobject3-3.48.2-2.fc41
Clone Of:
Environment:
Last Closed: 2024-09-04 16:08:59 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Karolina Surma 2023-10-31 07:21:07 UTC
Hello,

pygobject3 stopped building successfully due to the test suite failure in Fedora Rawhide:

+ xvfb-run -s '-screen 0 1600x1200x24' /usr/bin/meson test -C redhat-linux-build --num-processes 8 --print-errorlogs --timeout-multiplier=5
ninja: Entering directory `/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build'
ninja: no work to do.
1/1 pygobject-test-suite FAIL             3.28s   exit status 2
>>> LD_LIBRARY_PATH=/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build/tests PYTHONPATH=/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build/tests/..:/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build/subprojects/pycairo TESTS_BUILDDIR=/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build/tests GI_TYPELIB_PATH=/builddir/build/BUILD/pygobject-3.46.0/redhat-linux-build/tests MALLOC_PERTURB_=31 /usr/bin/python3 /builddir/build/BUILD/pygobject-3.46.0/tests/runtests.py
――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――
Listing only the last 100 lines from a long log.
    importlib.import_module(module_name)
/usr/lib64/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1381: in _gcd_import
    ???
<frozen importlib._bootstrap>:1354: in _find_and_load
    ???
<frozen importlib._bootstrap>:1325: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:929: in _load_unlocked
    ???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
    exec(co, module.__dict__)
../tests/test_atoms.py:25: in <module>
    @unittest.skipIf(Gdk._version == "4.0", 'Gdk4 doesn\'t have GdkAtom')
E   AttributeError: 'NoneType' object has no attribute '_version'
_________________ ERROR collecting tests/test_overrides_gdk.py _________________
/usr/lib/python3.12/site-packages/_pytest/runner.py:341: in from_call
    result: Optional[TResult] = func()
/usr/lib/python3.12/site-packages/_pytest/runner.py:372: in <lambda>
    call = CallInfo.from_call(lambda: list(collector.collect()), "collect")
/usr/lib/python3.12/site-packages/_pytest/python.py:531: in collect
    self._inject_setup_module_fixture()
/usr/lib/python3.12/site-packages/_pytest/python.py:545: in _inject_setup_module_fixture
    self.obj, ("setUpModule", "setup_module")
/usr/lib/python3.12/site-packages/_pytest/python.py:310: in obj
    self._obj = obj = self._getobj()
/usr/lib/python3.12/site-packages/_pytest/python.py:528: in _getobj
    return self._importtestmodule()
/usr/lib/python3.12/site-packages/_pytest/python.py:617: in _importtestmodule
    mod = import_path(self.path, mode=importmode, root=self.config.rootpath)
/usr/lib/python3.12/site-packages/_pytest/pathlib.py:567: in import_path
    importlib.import_module(module_name)
/usr/lib64/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1381: in _gcd_import
    ???
<frozen importlib._bootstrap>:1354: in _find_and_load
    ???
<frozen importlib._bootstrap>:1325: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:929: in _load_unlocked
    ???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
    exec(co, module.__dict__)
../tests/test_overrides_gdk.py:40: in <module>
    class TestGdk(unittest.TestCase):
../tests/test_overrides_gdk.py:319: in TestGdk
    @unittest.skipUnless(gtkver() >= (4, 8, 0), "constructor available since 4.8")
../tests/test_overrides_gdk.py:23: in gtkver
    if Gtk is None:
E   NameError: name 'Gtk' is not defined
_________________ ERROR collecting tests/test_overrides_gtk.py _________________
/usr/lib/python3.12/site-packages/_pytest/runner.py:341: in from_call
    result: Optional[TResult] = func()
/usr/lib/python3.12/site-packages/_pytest/runner.py:372: in <lambda>
    call = CallInfo.from_call(lambda: list(collector.collect()), "collect")
/usr/lib/python3.12/site-packages/_pytest/python.py:531: in collect
    self._inject_setup_module_fixture()
/usr/lib/python3.12/site-packages/_pytest/python.py:545: in _inject_setup_module_fixture
    self.obj, ("setUpModule", "setup_module")
/usr/lib/python3.12/site-packages/_pytest/python.py:310: in obj
    self._obj = obj = self._getobj()
/usr/lib/python3.12/site-packages/_pytest/python.py:528: in _getobj
    return self._importtestmodule()
/usr/lib/python3.12/site-packages/_pytest/python.py:617: in _importtestmodule
    mod = import_path(self.path, mode=importmode, root=self.config.rootpath)
/usr/lib/python3.12/site-packages/_pytest/pathlib.py:567: in import_path
    importlib.import_module(module_name)
/usr/lib64/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
<frozen importlib._bootstrap>:1381: in _gcd_import
    ???
<frozen importlib._bootstrap>:1354: in _find_and_load
    ???
<frozen importlib._bootstrap>:1325: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:929: in _load_unlocked
    ???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
    exec(co, module.__dict__)
../tests/test_overrides_gtk.py:39: in <module>
    GTK4 = (Gtk._version == "4.0")
E   AttributeError: 'NoneType' object has no attribute '_version'
=============================== warnings summary ===============================
../gi/overrides/__init__.py:108: 11 warnings
  /builddir/build/BUILD/pygobject-3.46.0/gi/overrides/__init__.py:108: DeprecationWarning: 'pkgutil.get_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
    override_loader = get_loader(override_package_name)
../../../../../usr/lib64/python3.12/pkgutil.py:291: 11 warnings
  /usr/lib64/python3.12/pkgutil.py:291: DeprecationWarning: 'pkgutil.find_loader' is deprecated and slated for removal in Python 3.14; use importlib.util.find_spec() instead
    return find_loader(fullname)
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
ERROR ../tests/test_atoms.py - AttributeError: 'NoneType' object has no attri...
ERROR ../tests/test_overrides_gdk.py - NameError: name 'Gtk' is not defined
ERROR ../tests/test_overrides_gtk.py - AttributeError: 'NoneType' object has ...
!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!


Why reporting (except for the obvious)?
We've already started integrating Python 3.13-a1 to Fedora. There are many packages that depend on pygobject3 to build and unblocking the build would help us greatly to continue with our integration efforts.
In case of any questions, feel free to reach out to us. Thank you!

Reproducible: Always

Comment 1 Miro Hrončok 2023-10-31 10:46:53 UTC
https://koschei.fedoraproject.org/package/pygobject3 indicates this started recently: https://koschei.fedoraproject.org/build/16528542

Other than a few upgrades, this Koschei build stopped pulling gstreamer1-plugins-bad-free and pulls in gstreamer1-plugins-bad-free-libs instead, caused by https://src.fedoraproject.org/rpms/gstreamer1-plugins-bad-free/c/2d1a75dff9a6565cb3dcb8fcf61e57fa67548f12?branch=rawhide

I will investigate if installing the full gstreamer1-plugins-bad-free package makes a difference and if so, bisect the transitional dependencies.

Comment 2 Miro Hrončok 2023-10-31 10:50:10 UTC
Installing gstreamer1-plugins-bad-free makes this build...

Comment 3 Miro Hrončok 2023-10-31 10:58:30 UTC
The transitive dependency that makes a difference is gtk3. When gtk3 is installed, the tests pass, when it is not installed, we get:

    @unittest.skipIf(Gdk._version == "4.0", 'Gdk4 doesn\'t have GdkAtom')
E   AttributeError: 'NoneType' object has no attribute '_version'

    if Gtk is None:
E   NameError: name 'Gtk' is not defined

    GTK4 = (Gtk._version == "4.0")
E   AttributeError: 'NoneType' object has no attribute '_version'




Since this is all about gtk4, the fact that gtk3 is needed is kinda weird :/

Comment 4 Miro Hrončok 2023-10-31 11:00:18 UTC
This fixes the problem, but I am a bit hesitant to push that, considering my lack of knowledge about gobject introspection and GTK:

--- a/pygobject3.spec
+++ b/pygobject3.spec
@@ -22,6 +22,7 @@ BuildRequires:  python3-devel >= %{python3_version}
 BuildRequires:  python3-setuptools
 # Test dependencies.
 BuildRequires:  python3dist(pytest)
+BuildRequires:  gtk3
 BuildRequires:  gtk4
 BuildRequires:  xorg-x11-server-Xvfb

Comment 5 Miro Hrončok 2023-11-08 11:05:59 UTC
Could you please have a look at this?

Comment 6 Aoife Moloney 2024-02-15 23:03:01 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 40 development cycle.
Changing version to 40.

Comment 7 Red Hat Bugzilla 2025-01-03 04:25:03 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 120 days


Note You need to log in before you can comment on or make changes to this bug.