media-libs/mesa: Fix LLVM dep to pull exactly one version
authorMichał Górny <mgorny@gentoo.org>
Sun, 17 Sep 2017 09:34:08 +0000 (11:34 +0200)
committerMichał Górny <mgorny@gentoo.org>
Thu, 28 Sep 2017 13:15:21 +0000 (15:15 +0200)
Since LLVM is slotted, you can't expect multiple different
dependencies to apply to the same slot. For this reason, we need to
ensure that only one form of dependency (set of USE flags) is applied to
LLVM.

To cover all the necessary variants:

- when using [opencl], enforce LLVM version and USE flags through
  implicit dependency via sys-devel/clang;

- enforce [llvm_targets_AMDGPU] for all variants needing it,
  and the non-AMDGPU version only if neither of them applies.

media-libs/mesa/mesa-9999.ebuild

index 0a378a1ffeb8ddea8698115f63ab400a57ff4549..61bcd2822dbb81a495ae6bec5a3604d0543320b6 100644 (file)
@@ -143,18 +143,53 @@ RDEPEND="${RDEPEND}
 RDEPEND="${RDEPEND}
        llvm? (
                opencl? (
-                       >=sys-devel/clang-3.9.0:=[${MULTILIB_USEDEP}]
-               )
-               video_cards_r600? (
-                       >=sys-devel/llvm-3.9.0[llvm_targets_AMDGPU(-)]
-               )
-               video_cards_radeon? (
-                       >=sys-devel/llvm-3.9.0[llvm_targets_AMDGPU(-)]
+                       video_cards_r600? (
+                               >=sys-devel/clang-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                       )
+                       !video_cards_r600? (
+                               video_cards_radeonsi? (
+                                       >=sys-devel/clang-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                               )
+                       )
+                       !video_cards_r600? (
+                               !video_cards_radeonsi? (
+                                       video_cards_radeon? (
+                                               >=sys-devel/clang-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                                       )
+                               )
+                       )
+                       !video_cards_r600? (
+                               !video_cards_radeon? (
+                                       !video_cards_radeonsi? (
+                                               >=sys-devel/clang-3.9.0:=[${MULTILIB_USEDEP}]
+                                       )
+                               )
+                       )
                )
-               video_cards_radeonsi? (
-                       >=sys-devel/llvm-3.9.0[llvm_targets_AMDGPU(-)]
+               !opencl? (
+                       video_cards_r600? (
+                               >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                       )
+                       !video_cards_r600? (
+                               video_cards_radeonsi? (
+                                       >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                               )
+                       )
+                       !video_cards_r600? (
+                               !video_cards_radeonsi? (
+                                       video_cards_radeon? (
+                                               >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP},llvm_targets_AMDGPU(-)]
+                                       )
+                               )
+                       )
+                       !video_cards_r600? (
+                               !video_cards_radeon? (
+                                       !video_cards_radeonsi? (
+                                               >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP}]
+                                       )
+                               )
+                       )
                )
-               >=sys-devel/llvm-3.9.0:=[${MULTILIB_USEDEP}]
        )
 "