Install phase of MESA build fails. A bad string substitution is the culprit, see below: src_install () { ... for x in "${ED}"/usr/$(get_libdir)/dri/*.so; do if [ -f ${x} -o -L ${x} ]; then mv -f "${x}" "${x/dri/mesa}" || die "Failed to move ${x}"; fi; done; This is mainly an issue with prefix builds were pathname contains 'dri'. A slightly more correct version is: ${x/dri/mesa} --> ${x/\/dri\///mesa/} Reproducible: Always Steps to Reproduce: 1. Create prefix install with a pathname that contains 'dri', such as /edrive/gentoo 2. emerge media-libs/mesa Actual Results: * Moving DRI/Gallium drivers for dynamic switching ... mv: cannot move `/edrive/gentoo/var/tmp/portage/media-libs/mesa-7.11.2/image/edrive/gentoo//usr/lib/dri/i810_dri.so' to `/emesave/gentoo/var/tmp/portage/media-libs/mesa-7.11.2/image/edrive/gentoo//usr/lib/dri/i810_dri.so': No such file or directory Expected Results: The mv should work. i.e. /edrive/gentoo/var/tmp/portage/media-libs/mesa-7.11.2/image/edrive/gentoo/usr/lib/dri/i810_dri.so to /edrive/gentoo/var/tmp/portage/media-libs/mesa-7.11.2/image/edrive/gentoo/usr/lib/mesa/i810_dri.so
Possible idea: mv -f "${x}" "${x%dri*}mesa/"
How about: pushd "${ED}"/usr/$(get_libdir)/dri > /dev/null || die for x in *$(get_libname); do if [ -f ${x} -o -L ${x} ]; then mv -f "${x}" ../mesa/ || die "Failed to move ${x}"; fi; done; popd > /dev/null
thinking about this, why not just mv -f "${ED}"/usr/$(get_libdir)/dri/*$(get_libname) "${ED}"/usr/$(get_libdir)/mesa/ ?
Ducan, is this issue still valid?
Yes, this is still a problem. Everytime mesa library is updated I hack the ebuild to make it work.
@Duncan Forster I see different code in gx86 now, can you recheck it's fixed?