Summary: | media-libs/mesa-18.1.0-r1 - Detected file collision(s): /usr/lib64/dri/{i965,swrast}_dri.so (with FEATURES=collision-protect) | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Coacher <itumaykin+gentoo> |
Component: | Current packages | Assignee: | Gentoo X packagers <x11> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | ||
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=656716 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
emerge --info
build.log.gz |
Description
Coacher
2018-05-27 17:56:50 UTC
Created attachment 533560 [details]
build.log.gz
$ emerge -pqv mesa [ebuild U ] media-libs/mesa-18.1.0-r1 [18.1.0] USE="classic dri3 egl gbm gles2 nptl wayland -bindist -d3d9 -debug -gallium -gles1 -llvm -opencl -openmax -osmesa -pax_kernel -pic (-selinux) -unwind -vaapi -valgrind -vdpau -vulkan -xa -xvmc" ABI_X86="(64) -32 (-x32)" VIDEO_CARDS="i965 (-freedreno) -i915 (-imx) -intel -nouveau -r100 -r200 -r300 -r600 -radeon -radeonsi (-vc4) -virgl (-vivante) -vmware" [uninstall ] app-eselect/eselect-mesa-0.0.10-r1 [blocks b ] app-eselect/eselect-mesa ("app-eselect/eselect-mesa" is blocking media-libs/mesa-18.1.0-r1) equery belongs -e /usr/lib64/dri/i965_dri.so * Searching for /usr/lib64/dri/i965_dri.so ... media-libs/mesa-18.1.0 (/usr/lib64/mesa/i965_dri.so) equery belongs -e /usr/lib64/dri/swrast_dri.so * Searching for /usr/lib64/dri/swrast_dri.so ... media-libs/mesa-18.1.0 (/usr/lib64/mesa/swrast_dri.so) Caused by FEATURES=collision-protect. I'm surprised portage is trying to install mesa before uninstalling eselect-mesa. I was thinking I could add a pkg_postrm() to eselect-mesa to clean up the symlinks it's created, but if it's uninstalled after mesa that won't help. :( I've thought through a bunch of ways of handling this: 1) Add to mesa a pkg_preinst() that deletes the symlinks before install: +pkg_preinst() { + if has_version 'app-eselect/eselect-mesa'; then + multilib_pkg_preinst() { + find "${ROOT%/}"/usr/$(get_libdir)/dri -type l -delete || die + } + multilib_foreach_abi multilib_pkg_preinst + fi +} But collision-protect triggers before pkg_preinst(), so that doesn't help. 2) Make blocker on eselect-mesa in media-libs/mesa a hard blocker so it's uninstalled first, and make eselect-mesa clean up symlinks on uninstall in pkg_postrm(). Would have to do a straight-to-stable eselect-mesa and then it would only trigger after people installed it, since unininstalling packages use the ebuild from the vdb. Would help stable users, but not unstable users. 3) Zac suggested moving the colliding files in Mesa in src_install() to somewhere else so collision-protect doesn't trigger and then move them back in pkg_preinst(). Feels dirty, especially for a weird corner case like this. I think I'm just going to say wontfix, given Zac's advice to never use collision-protect. Evidently he added protect-owned for exactly this case. |