Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 950215 - x11-wm/xpra-6.0.1-r1: require dev-util/nvidia-cuda-toolkit if USE="video_cards_nvidia"
Summary: x11-wm/xpra-6.0.1-r1: require dev-util/nvidia-cuda-toolkit if USE="video_card...
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Benda Xu
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks:
 
Reported: 2025-02-24 04:46 UTC by Zhixu Liu
Modified: 2025-03-25 22:56 UTC (History)
5 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Zhixu Liu 2025-02-24 04:46:56 UTC
if USE="video_cards_nvidia" is enabled, nvidia-cuda-toolkit is required at build time at least, otherwise build will failed with:

unable to find nvcc


Reproducible: Always
Comment 1 Ionen Wolkens gentoo-dev 2025-02-24 10:04:11 UTC
Haven't looked at the package myself, but note that this should use USE=cuda rather than video_cards_nvidia if it actually needs nvidia-cuda-toolkit.
Comment 2 Zhixu Liu 2025-02-24 14:46:31 UTC
yes, i haven't run this package yet, so don't know whether nvidia-drivers is required.
Comment 3 Jonathan Lovelace 2025-03-01 18:30:31 UTC
When I tried to build on my new machine with video_cards_nvidia and with nvidia-cuda-toolkit installed but without USE=cuda, I got compilation failures (I guess because the xpra ebuild only sets NVCC_PREPEND_FLAGS when USE=cuda but the build process tries to build CUDA code anyway), but with USE=cuda it builds without error (though its test phase fails some tests).
Comment 4 Fabio Rossi 2025-03-11 18:50:58 UTC
I am using

[ebuild  N    ~] x11-wm/xpra-6.0.1-r1::gentoo  USE="X client clipboard crypt cups dbus examples gstreamer gtk3 html jpeg lz4 lzo opengl pulseaudio server sound systemd trayicon udev vpx webp x264 xdg xinerama -avif -brotli -csc -cuda -debug -doc -ibus -mdns -minimal -oauth -openh264 -pinentry -qrcode -test -webcam" PYTHON_SINGLE_TARGET="python3_12 -python3_10 -python3_11" VIDEO_CARDS="nvidia" 0 KiB

but the package fails to build with

unable to find nvcc
failed to rebuild the cuda kernels ['XRGB_to_NV12', 'XRGB_to_YUV444', 'BGRX_to_NV12', 'BGRX_to_YUV444', 'BGRX_to_RGB', 'RGBX_to_RGB', 'RGBA_to_RGBAP', 'BGRA_to_RGBAP']

There is something weird because cuda should be disabled in according to the setup configuration while the setup.py assumes it is enabled!
Comment 5 Fabio Rossi 2025-03-11 19:29:15 UTC
This is the first part of the build log:

 *   Building the wheel for xpra-6.0.1 via setuptools.build_meta
python3.12 -m gpep517 build-wheel --prefix=/usr --backend setuptools.build_meta --output-fd 3 --wheel-dir /var/tmp/portage/x11-wm/xpra-6.0.1-r1/work/xpra-6.0.1_python3.12/wheel --config-json {"--build-option": ["--with-PIC", "--without-avif", "--without-brotli", "--with-audio", "--with-client", "--with-clipboard", "--without-csc_cython", "--without-csc_libyuv", "--without-cuda_rebuild", "--without-cuda_kernels", "--with-dbus", "--without-debug", "--without-docs", "--without-evdi", "--with-example", "--with-gstreamer", "--with-gstreamer_audio", "--with-gstreamer_video", "--with-gtk3", "--with-http", "--without-mdns", "--with-nvidia", "--without-nvdec", "--without-nvenc", "--without-nvfbc", "--with-opengl", "--without-openh264", "--with-printing", "--without-pandoc_lua", "--without-qrencode", "--without-quic", "--with-sd_listen", "--with-server", "--with-service", "--with-shadow", "--with-vpx", "--without-webcam", "--with-webp", "--with-x11", "--with-Xdummy", "--without-tests", "--with-strict", "--pkg-config-path=/var/tmp/portage/x11-wm/xpra-6.0.1-r1/work/xpra-6.0.1/fs/lib/pkgconfig", "--with-jpeg_encoder", "--with-vpx_encoder", "--without-openh264_encoder", "--without-nvjpeg_encoder", "--without-avif_encoder", "--with-webp_encoder", "--without-spng_encoder", "--with-vpx_decoder", "--without-openh264_decoder", "--without-nvjpeg_decoder", "--with-jpeg_decoder", "--without-avif_decoder", "--with-webp_decoder", "--without-spng_decoder"]}
2025-03-11 20:18:51,150 gpep517 INFO Building wheel via backend setuptools.build_meta
/usr/lib/python3.12/site-packages/gpep517/__main__.py bdist_wheel --dist-dir /var/tmp/portage/x11-wm/xpra-6.0.1-r1/work/xpra-6.0.1_python3.12/wheel/.tmp-kzs8f1go --with-PIC --without-avif --without-brotli --with-audio --with-client --with-clipboard --without-csc_cython --without-csc_libyuv --without-cuda_rebuild --without-cuda_kernels --with-dbus --without-debug --without-docs --without-evdi --with-example --with-gstreamer --with-gstreamer_audio --with-gstreamer_video --with-gtk3 --with-http --without-mdns --with-nvidia --without-nvdec --without-nvenc --without-nvfbc --with-opengl --without-openh264 --with-printing --without-pandoc_lua --without-qrencode --without-quic --with-sd_listen --with-server --with-service --with-shadow --with-vpx --without-webcam --with-webp --with-x11 --with-Xdummy --without-tests --with-strict --pkg-config-path=/var/tmp/portage/x11-wm/xpra-6.0.1-r1/work/xpra-6.0.1/fs/lib/pkgconfig --with-jpeg_encoder --with-vpx_encoder --without-openh264_encoder --without-nvjpeg_encoder --without-avif_encoder --with-webp_encoder --without-spng_encoder --with-vpx_decoder --without-openh264_decoder --without-nvjpeg_decoder --with-jpeg_decoder --without-avif_decoder --with-webp_decoder --without-spng_decoder
Xpra version 6.0.1
found Cython version 3.0.11
found pkg-config version: 2.3.0
using PKG_CONFIG_PATH=/var/tmp/portage/x11-wm/xpra-6.0.1-r1/work/xpra-6.0.1/fs/lib/pkgconfig:/var/tmp/portage/x11-wm/xpra-6.0.1-r1/temp/python3.12/pkgconfig:/usr/share/guile-data/2.2/pkgconfig
ARCH='x86_64'
using INCLUDE_DIRS=['/usr/include']
CC='x86_64-pc-linux-gnu-gcc'
CPP='x86_64-pc-linux-gnu-gcc -E'

which shows the config options, I patched the setup to print the value of 4 variables during the script execution and I get:

nvenc_ENABLED: True
nvdec_ENABLED: False
nvjpeg_encoder_ENABLED: True
nvjpeg_decoder_ENABLED: True

but this is weird. In fact, looking at the code:

DEFAULT                 = True
nvidia_ENABLED          = DEFAULT and not OSX and BITS==64
nvjpeg_encoder_ENABLED  = nvidia_ENABLED and pkg_config_ok("--exists", "nvjpeg")
nvjpeg_decoder_ENABLED  = nvidia_ENABLED and pkg_config_ok("--exists", "nvjpeg")
nvenc_ENABLED           = nvidia_ENABLED and pkg_config_version("10", "nvenc")
nvdec_ENABLED           = False

I cannot see how that works because I don't have nvjpeg or nvenc pkg-config modules installed:

$ pkg-config --list-all | grep ^nv
<empty>

At the end the script fails during compile phase:

unable to find nvcc
failed to rebuild the cuda kernels ['XRGB_to_NV12', 'XRGB_to_YUV444', 'BGRX_to_NV12', 'BGRX_to_YUV444', 'BGRX_to_RGB', 'RGBX_to_RGB', 'RGBA_to_RGBAP', 'BGRA_to_RGBAP']

but it should never reach that part with the config options above.