Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 932153 - dev-python/pycairo: ImportError: /.../_cairo.cpython-311-x86_64-linux-gnu.so: undefined symbol: cairo_xlib_surface_get_width
Summary: dev-python/pycairo: ImportError: /.../_cairo.cpython-311-x86_64-linux-gnu.so:...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Python Gentoo Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-05-18 12:23 UTC by Martin Dummer
Modified: 2025-04-08 09:34 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log,16.12 KB, text/plain)
2024-05-19 15:25 UTC, Martin Dummer
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Dummer 2024-05-18 12:23:27 UTC
emerging sys-apps/fwupd-1.9.18 USE="amt archive gnutls gusb nvme sqlite systemd uefi" failes in configure phase with the message


plugins/uefi-capsule/meson.build:129:4: ERROR: Problem encountered: Error: missing dependency python cairo (python3-cairo)

removing the USE="uefi" does emerge properly. 

dev-python/pycairo-1.26.0 is installed
Comment 1 Martin Dummer 2024-05-18 12:24:08 UTC
# emerge --info
Portage 3.0.63 (python 3.11.9-final-0, default/linux/amd64/23.0/systemd, gcc-13, glibc-2.38-r13, 6.6.30-gentoo-dist x86_64)
=================================================================
System uname: Linux-6.6.30-gentoo-dist-x86_64-Intel-R-_Core-TM-_i3-8100_CPU_@_3.60GHz-with-glibc2.38
KiB Mem:     3744868 total,   2046032 free
KiB Swap:    8388604 total,   8388348 free
Timestamp of repository gentoo: Fri, 17 May 2024 17:00:00 +0000
Head commit of repository gentoo: 6755a6f4f76c34027d1c0654e7ced0629194b437
Head commit of repository md-private: bfbd288f779aa65ebfb462a03ae847f1665bda5c

sh bash 5.1_p16-r6
ld GNU ld (Gentoo 2.42 p3) 2.42.0
app-misc/pax-utils:        1.3.7::gentoo
app-shells/bash:           5.1_p16-r6::gentoo
dev-build/autoconf:        2.71-r7::gentoo
dev-build/automake:        1.16.5-r2::gentoo
dev-build/cmake:           3.28.3::gentoo
dev-build/libtool:         2.4.7-r4::gentoo
dev-build/make:            4.4.1-r1::gentoo
dev-build/meson:           1.4.0-r1::gentoo
dev-lang/perl:             5.38.2-r3::gentoo
dev-lang/python:           3.11.9::gentoo, 3.12.3::gentoo
sys-apps/baselayout:       2.15::gentoo
sys-apps/sandbox:          2.38::gentoo
sys-apps/systemd:          255.4::gentoo
sys-devel/binutils:        2.42-r1::gentoo
sys-devel/binutils-config: 5.5::gentoo
sys-devel/gcc:             13.2.1_p20240210::gentoo
sys-devel/gcc-config:      2.11::gentoo
sys-kernel/linux-headers:  6.6-r1::gentoo (virtual/os-headers)
sys-libs/glibc:            2.38-r13::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    volatile: False
    sync-rsync-verify-max-age: 3
    sync-rsync-extra-opts: 
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-jobs: 1

md-private
    location: /var/db/repos/md-private
    sync-type: git
    sync-uri: git://md11.it.cx/md-gentoo-overlay.git
    masters: gentoo
    volatile: False

Binary Repositories:

gentoobinhost
    priority: 1
    sync-uri: https://distfiles.gentoo.org/releases/amd64/binpackages/23.0/x86-64

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE linux-fw-redistributable intel-ucode"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d"
CXXFLAGS="-O2 -pipe"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance binpkg-request-signature buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles getbinpkg ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="https://ftp.spline.inf.fu-berlin.de/mirrors/gentoo/"
LANG="C.UTF8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs"
LEX="flex"
MAKEOPTS="-j4 -l4"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
SHELL="/bin/bash"
USE="acl amd64 bzip2 cet crypt gdbm iconv ipv6 libtirpc multilib ncurses nls openmp pam pcre readline seccomp ssl systemd test-rust udev unicode xattr zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 ntrip navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-1" POSTGRES_TARGETS="postgres15" PYTHON_SINGLE_TARGET="python3_11" PYTHON_TARGETS="python3_11" RUBY_TARGETS="ruby31" VIDEO_CARDS="amdgpu fbdev intel nouveau radeon radeonsi vesa dummy" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Comment 2 Mike Gilbert gentoo-dev 2024-05-18 16:43:49 UTC
Full build log please.
Comment 3 Martin Dummer 2024-05-19 15:25:34 UTC
Created attachment 893378 [details]
build.log
Comment 4 robertgzr 2024-05-22 15:53:47 UTC
encountered this as well. this is the error when trying to import cairo:

# python
Python 3.11.9 (main, Apr 29 2024, 06:16:04) [Clang 17.0.6 ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cairo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.11/site-packages/cairo/__init__.py", line 1, in <module>
    from ._cairo import *  # noqa: F401,F403
    ^^^^^^^^^^^^^^^^^^^^^
ImportError: /usr/lib/python3.11/site-packages/cairo/_cairo.cpython-311-x86_64-linux-gnu.so: undefined symbol: cairo_xlib_surface_get_width

fixed by re-emerging pycairo
Comment 5 Marek Szuba (RETIRED) archtester gentoo-dev 2024-06-01 00:02:39 UTC
Looks like a problem with dev-python/pycairo, then.
Comment 6 Martin Dummer 2024-06-01 09:14:43 UTC
(In reply to robertgzr from comment #4)
> encountered this as well. this is the error when trying to import cairo:
>
...
> 
> fixed by re-emerging pycairo

I have investigated this a little more.
Before I filed this bug, I also tried to re-emerge pycairo.
After your post here, I tried again. No success, no change of the behaviour.

Then I noticed that I use binary packages from gentoo - following the binary guide.
So I tried another re-emerge of pycairo, but without --getbinpkg - after that I can emerge sys-apps/fwupd-1.9.18 USE="amt archive gnutls gusb nvme sqlite systemd uefi" without error.

My assumption is: there is something wrong with the pycairo binpkg.
Comment 7 Benn Snyder 2025-04-08 00:40:17 UTC
Same error here with pycairo-1.27.0 binpkg

Python 3.12.9 (main, Mar  7 2025, 20:53:33) [GCC 14.2.1 20241221] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cairo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.12/site-packages/cairo/__init__.py", line 1, in <module>
    from ._cairo import *  # noqa: F401,F403
    ^^^^^^^^^^^^^^^^^^^^^
ImportError: /usr/lib/python3.12/site-packages/cairo/_cairo.cpython-312-x86_64-linux-gnu.so: undefined symbol: cairo_xlib_surface_get_width

This does not happen when building from source.
Here's the entry from /var/cache/binpkgs/Packages

BDEPEND: virtual/pkgconfig >=dev-build/meson-1.2.3 app-alternatives/ninja dev-build/meson-format-array dev-lang/python:3.12[threads(+)]
BUILD_ID: 1
BUILD_TIME: 1727606397
CPV: dev-python/pycairo-1.27.0
DEFINED_PHASES: compile configure install prepare test
DEPEND: >=x11-libs/cairo-1.15.10[svg(+)] x11-base/xorg-proto dev-lang/python:3.12[threads(+)]
EAPI: 8
IUSE: examples test doc test python_targets_pypy3 python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 python_targets_python3_13 debug
KEYWORDS: ~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos
LICENSE: || ( LGPL-2.1 MPL-1.1 )
MD5: 3255a6a8fac81efec6eb2190992a6db7
PATH: dev-python/pycairo/pycairo-1.27.0-1.gpkg.tar
PROVIDES: x86_64: _cairo.cpython-312-x86_64-linux-gnu.so
RDEPEND: >=x11-libs/cairo-1.15.10[svg(+)] dev-lang/python:3.12[threads(+)] >=sys-libs/glibc-2.39-r6
REQUIRES: x86_64: libc.so.6 libcairo.so.2
RESTRICT: test test
SHA1: 1533b44c646e9c5a9343673472e2709bd1b3f26d
SIZE: 153600
USE: abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_12
MTIME: 1727613088
REPO: gentoo
Comment 8 Eli Schwartz gentoo-dev 2025-04-08 04:26:09 UTC
cairo only builds that symbol if cairo is built using USE=X, so probably pycairo should require cairo[X=] or else it will not accurately expose the API surface of cairo (either it will be missing things that should be there, or it will fatally error on things that it uses, but don't exist).
Comment 9 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2025-04-08 04:45:50 UTC
Oh great, another package with conditional API x_x.
Comment 10 Larry the Git Cow gentoo-dev 2025-04-08 04:52:43 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=122aa20a42ec4b7aa7a64420ffbce4731f57ee0a

commit 122aa20a42ec4b7aa7a64420ffbce4731f57ee0a
Author:     Michał Górny <mgorny@gentoo.org>
AuthorDate: 2025-04-08 04:46:33 +0000
Commit:     Michał Górny <mgorny@gentoo.org>
CommitDate: 2025-04-08 04:46:33 +0000

    dev-python/pycairo: Add transitive X= dep on cairo
    
    Closes: https://bugs.gentoo.org/932153
    Signed-off-by: Michał Górny <mgorny@gentoo.org>

 dev-python/pycairo/pycairo-1.27.0.ebuild | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Comment 11 Larry the Git Cow gentoo-dev 2025-04-08 09:34:04 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3e4b8146b22b3328a2395f323c626bbc76981bdf

commit 3e4b8146b22b3328a2395f323c626bbc76981bdf
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2025-04-08 09:33:02 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2025-04-08 09:33:02 +0000

    dev-python/pycairo: revbump for fixed deps
    
    It fixes an automagic dep and some users were confused by it too, so
    revbump for the earlier 122aa20a42ec4b7aa7a64420ffbce4731f57ee0a.
    
    Bug: https://bugs.gentoo.org/932153
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-python/pycairo/{pycairo-1.27.0.ebuild => pycairo-1.27.0-r1.ebuild} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)