From 18e22ce3af5c8fbda7ac383fd1ca7ba042d65256 Mon Sep 17 00:00:00 2001 From: Stefano Ragni Date: Mon, 11 Nov 2019 20:55:57 +0100 Subject: [PATCH] mesa: reorganize dri subpackages by megadrivers instead of vendors Mesa dri drivers for different vendors are actually hard links to the same file, called a `megadriver`, so they are better grouped in the same subpackage. This solves issues when stripping debug info. --- srcpkgs/mesa-XvMC | 1 + srcpkgs/mesa-dri | 1 + srcpkgs/mesa-vaapi | 1 + srcpkgs/mesa-vdpau | 1 + srcpkgs/mesa-vulkan-intel | 1 + srcpkgs/mesa-vulkan-radeon | 1 + .../mesa/patches/no-unlink-megadrivers.patch | 15 + srcpkgs/mesa/template | 258 +++++++++--------- 8 files changed, 156 insertions(+), 123 deletions(-) create mode 120000 srcpkgs/mesa-XvMC create mode 120000 srcpkgs/mesa-dri create mode 120000 srcpkgs/mesa-vaapi create mode 120000 srcpkgs/mesa-vdpau create mode 120000 srcpkgs/mesa-vulkan-intel create mode 120000 srcpkgs/mesa-vulkan-radeon create mode 100644 srcpkgs/mesa/patches/no-unlink-megadrivers.patch diff --git a/srcpkgs/mesa-XvMC b/srcpkgs/mesa-XvMC new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-XvMC @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa-dri b/srcpkgs/mesa-dri new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-dri @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa-vaapi b/srcpkgs/mesa-vaapi new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-vaapi @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa-vdpau b/srcpkgs/mesa-vdpau new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-vdpau @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa-vulkan-intel b/srcpkgs/mesa-vulkan-intel new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-vulkan-intel @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa-vulkan-radeon b/srcpkgs/mesa-vulkan-radeon new file mode 120000 index 00000000000..1ad1bbec7ab --- /dev/null +++ b/srcpkgs/mesa-vulkan-radeon @@ -0,0 +1 @@ +mesa \ No newline at end of file diff --git a/srcpkgs/mesa/patches/no-unlink-megadrivers.patch b/srcpkgs/mesa/patches/no-unlink-megadrivers.patch new file mode 100644 index 00000000000..3f904abe802 --- /dev/null +++ b/srcpkgs/mesa/patches/no-unlink-megadrivers.patch @@ -0,0 +1,15 @@ +This patch is needed to retain the master .so, so that only that filename is +stripped while the related hard links are excluded. +diff --git bin/install_megadrivers.py bin/install_megadrivers.py +index 470137e..7d56def 100644 +--- bin/install_megadrivers.py ++++ bin/install_megadrivers.py +@@ -71,7 +71,7 @@ def main(): + os.chdir(ret) + + # Remove meson-created master .so and symlinks +- os.unlink(master) ++ #os.unlink(master) + name, ext = os.path.splitext(master) + while ext != '.so': + if os.path.lexists(name): diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template index 92fb254e402..884aa3eac21 100644 --- a/srcpkgs/mesa/template +++ b/srcpkgs/mesa/template @@ -1,7 +1,7 @@ # Template file for 'mesa' pkgname=mesa version=19.3.1 -revision=1 +revision=2 wrksrc="mesa-${version}" build_style=meson configure_args="-Dglvnd=true -Dshared-glapi=true -Dgbm=true -Degl=true @@ -46,8 +46,10 @@ i686*|x86_64*) configure_args+=" -Dvulkan-overlay-layer=true" hostmakedepends+=" clang" makedepends+=" libclc-git" - subpackages+=" libxatracker mesa-ati-dri mesa-intel-dri mesa-nouveau-dri" - subpackages+=" mesa-vmwgfx-dri mesa-opencl mesa-vulkan-overlay-layer" + subpackages+=" libxatracker mesa-opencl mesa-dri mesa-vaapi mesa-vdpau" + subpackages+=" mesa-XvMC mesa-vulkan-intel mesa-vulkan-radeon mesa-vulkan-overlay-layer" + # Transitional dummy packages + subpackages+=" mesa-ati-dri mesa-intel-dri mesa-nouveau-dri mesa-vmwgfx-dri" ;; ppc*) # Enable all ppc drivers. @@ -63,14 +65,18 @@ ppc*) esac hostmakedepends+=" clang" makedepends+=" libclc-git" + subpackages+=" mesa-opencl mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC mesa-vulkan-radeon" + subpackages+=" mesa-vulkan-overlay-layer" + # Transitional dummy packages subpackages+=" mesa-ati-dri mesa-nouveau-dri" - subpackages+=" mesa-opencl mesa-vulkan-overlay-layer" ;; aarch64*) # Enable all ARM drivers configure_args+=" -Dgallium-drivers=etnaviv,freedreno,kmsro,lima,panfrost,nouveau,swrast,tegra,v3d,vc4" configure_args+=" -Dvulkan-drivers= -Ddri-drivers=" configure_args+=" -Dgallium-xa=false -Ddri3=true" + subpackages+=" mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC" + # Transitional dummy packages subpackages+=" mesa-kmsro-dri mesa-tegra-dri mesa-nouveau-dri mesa-v3d-dri mesa-vc4-dri" subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-lima-dri mesa-panfrost-dri" ;; @@ -78,6 +84,8 @@ armv7l*) configure_args+=" -Dgallium-drivers=etnaviv,freedreno,kmsro,lima,panfrost,swrast,vc4" configure_args+=" -Dvulkan-drivers= -Ddri-drivers= -Dgallium-xvmc=false" configure_args+=" -Dgallium-xa=false -Dgallium-vdpau=false -Dgallium-va=false" + subpackages+=" mesa-dri" + # Transitional dummy packages subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-kmsro-dri mesa-lima-dri mesa-panfrost-dri mesa-vc4-dri" ;; *) @@ -86,6 +94,7 @@ armv7l*) configure_args+=" -Ddri-drivers= -Dvulkan-drivers= -Dgallium-va=false" configure_args+=" -Dgallium-vdpau=false -Dgallium-xvmc=false" configure_args+=" -Dgallium-xa=false" + subpackages+=" mesa-dri" ;; esac @@ -107,7 +116,6 @@ esac case "$XBPS_TARGET_MACHINE" in # Disable TLS with musl: https://gitlab.freedesktop.org/mesa/mesa/issues/966 - # TODO: maybe this is handled by libglvnd now *-musl) configure_args+=" -Duse-elf-tls=false";; *) configure_args+=" -Dglx=dri";; esac @@ -179,145 +187,77 @@ libxatracker_package() { } } -mesa-ati-dri_package() { - short_desc="Mesa DRI drivers for ATI GPUs" +mesa-opencl_package() { + short_desc="Mesa implementation of OpenCL (r600+ only)" + depends="libclc libOpenCL" + pkg_install() { + vmove etc/OpenCL + vmove "usr/lib/libMesaOpenCL.so.*" + } +} + +mesa-dri_package() { + short_desc="Mesa DRI drivers" depends="mesa-${version}_${revision}" - lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json" + nostrip_files="armada-drm_dri.so etnaviv_dri.so exynos_dri.so + hx8357d_dri.so i915_dri.so i965_dri.so ili9225_dri.so ili9341_dri.so + imx-drm_dri.so kgsl_dri.so kms_swrast_dri.so lima_dri.so meson_dri.so + mi0283qt_dri.so msm_dri.so mxsfb-drm_dri.so nouveau_dri.so + nouveau_vieux_dri.so panfrost_dri.so pl111_dri.so r200_dri.so + r300_dri.so r600_dri.so radeon_dri.so radeonsi_dri.so repaper_dri.so + rockchip_dri.so st7586_dri.so st7735r_dri.so stm_dri.so + sun4i-drm_dri.so swrast_dri.so tegra_dri.so v3d_dri.so vc4_dri.so + virtio_gpu_dri.so vmwgfx_dri.so" pkg_install() { - vmove "usr/lib/libXvMCr[36]00.so.*" - vmove "usr/lib/vdpau/libvdpau_r[36]00.so*" - vmove "usr/lib/vdpau/libvdpau_radeon*.so*" - vmove "usr/lib/xorg/modules/drivers/radeon*" - vmove "usr/lib/xorg/modules/drivers/r[236]00*" - vmove usr/lib/dri/r* - vmove "usr/share/vulkan/icd.d/radeon_icd*.json" - vmove "usr/lib/libvulkan_radeon.so" - vmove "usr/lib/gallium-pipe/pipe_r[36]00.so" - vmove usr/lib/gallium-pipe/pipe_radeonsi.so + vmove "usr/lib/xorg/modules/drivers"; + if [ -d "$DESTDIR/usr/lib/gallium-pipe" ]; then + vmove "usr/lib/gallium-pipe/pipe_*.so" + fi } } -mesa-etnaviv-dri_package() { - short_desc="Mesa DRI drivers for Vivante GPUs" - depends="mesa-${verison}_${revision}" +mesa-vaapi_package() { + short_desc="Mesa VA-API drivers" + nostrip_files="nouveau_drv_video.so r600_drv_video.so radeonsi_drv_video.so" pkg_install() { - vmove "usr/lib/xorg/modules/drivers/etnaviv*" + vmove "usr/lib/dri/*_drv_video.so" } } -mesa-freedreno-dri_package() { - short_desc="Mesa DRI drivers for Adreno GPUs" - depends="mesa-${verison}_${revision}" +mesa-vdpau_package() { + short_desc="Mesa VDPAU drivers" + nostrip_files="libvdpau_r300.so.1.0.0 libvdpau_r600.so.1.0.0 + libvdpau_radeonsi.so.1.0.0 libvdpau_nouveau.so.1.0.0" + noshlibprovides=yes # manually set them in case they are needed pkg_install() { - vmove "usr/lib/xorg/modules/drivers/msm*" - vmove "usr/lib/xorg/modules/drivers/kgsl*" + vmove "usr/lib/vdpau/libvdpau_*" } } -mesa-intel-dri_package() { - short_desc="Mesa DRI drivers for Intel GPUs" - depends="mesa-${version}_${revision}" +mesa-XvMC_package() { + short_desc="Mesa XvMC drivers" + nostrip_files="libXvMCnouveau.so.1.0.0 libXvMCr600.so.1.0.0" + noshlibprovides=yes # manually set them in case they are needed + pkg_install() { + vmove "usr/lib/libXvMC*" + } +} + +mesa-vulkan-intel_package() { + short_desc="Mesa Intel Vulkan driver" lib32files="/usr/share/vulkan/icd.d/intel_icd.i686.json" pkg_install() { - vmove "usr/lib/xorg/modules/drivers/i9[16]5_dri.*" vmove "usr/share/vulkan/icd.d/intel_icd*.json" vmove "usr/lib/libvulkan_intel.so" } } -mesa-kmsro-dri_package() { - short_desc="KMS Render-only Mesa DRI drivers" - depends="mesa-${version}_${revision}" +mesa-vulkan-radeon_package() { + short_desc="Mesa Radeon Vulkan driver" + lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json" pkg_install() { - vmove "usr/lib/xorg/modules/drivers/armada*" - vmove "usr/lib/xorg/modules/drivers/exynos*" - vmove "usr/lib/xorg/modules/drivers/hx8357d*" - vmove "usr/lib/xorg/modules/drivers/ili9225*" - vmove "usr/lib/xorg/modules/drivers/ili9341*" - vmove "usr/lib/xorg/modules/drivers/imx*" - vmove "usr/lib/xorg/modules/drivers/meson*" - vmove "usr/lib/xorg/modules/drivers/mi0283qt*" - vmove "usr/lib/xorg/modules/drivers/mxsfb*" - vmove "usr/lib/xorg/modules/drivers/pl111*" - vmove "usr/lib/xorg/modules/drivers/repaper*" - vmove "usr/lib/xorg/modules/drivers/rockchip*" - vmove "usr/lib/xorg/modules/drivers/st7586*" - vmove "usr/lib/xorg/modules/drivers/st7735r*" - vmove "usr/lib/xorg/modules/drivers/stm*" - vmove "usr/lib/xorg/modules/drivers/sun4i*" - } -} - -mesa-lima-dri_package() { - short_desc="Mesa DRI drivers for ARM Mali GPUs (Utgard)" - depends="mesa-${verison}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/lima*" - } -} - -mesa-nouveau-dri_package() { - short_desc="Mesa DRI drivers for NVIDIA GPUs (nouveau dri)" - depends="mesa-${version}_${revision}" - pkg_install() { - vmove "usr/lib/libXvMCnouveau.so.*" - vmove "usr/lib/vdpau/libvdpau_nouveau.so*" - vmove "usr/lib/xorg/modules/drivers/nouveau*" - vmove "usr/lib/dri/nouveau*" - case "$XBPS_TARGET_MACHINE" in - aarch64*) ;; - *) vmove usr/lib/gallium-pipe/pipe_nouveau.so ;; - esac - } -} - -mesa-panfrost-dri_package() { - short_desc="Mesa DRI drivers for ARM Mali GPUs (Midgard/Bifrost)" - depends="mesa-${verison}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/panfrost*" - } -} - -mesa-vmwgfx-dri_package() { - short_desc="Mesa DRI drivers for VMware" - depends="mesa-${version}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/vmwgfx*" - vmove usr/lib/gallium-pipe/pipe_vmwgfx.so - } -} - -mesa-v3d-dri_package() { - short_desc="Mesa DRI drivers for Videocore VI GPU" - depends="mesa-${verison}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/v3d*" - } -} - -mesa-vc4-dri_package() { - short_desc="Mesa DRI drivers for Videocore IV GPU" - depends="mesa-${version}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/vc4*" - } -} - -mesa-opencl_package() { - short_desc="Mesa implementation of OpenCL (r600+ only)" - depends="libclc libOpenCL mesa-${version}_${revision}" - pkg_install() { - vmove etc/OpenCL - vmove "usr/lib/libMesaOpenCL*" - } -} - -mesa-tegra-dri_package() { - short_desc="Mesa DRI drivers for Tegra GPU" - depends="mesa-nouveau-dri-${version}_${revision}" - pkg_install() { - vmove "usr/lib/xorg/modules/drivers/tegra*" + vmove "usr/share/vulkan/icd.d/radeon_icd*.json" + vmove "usr/lib/libvulkan_radeon.so" } } @@ -328,3 +268,75 @@ mesa-vulkan-overlay-layer_package() { vmove usr/share/vulkan/explicit_layer.d/VkLayer_MESA_overlay.json } } + +mesa-ati-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for ATI GPUs (transitional dummy package)" + depends="mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC mesa-vulkan-radeon" +} + +mesa-etnaviv-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Vivante GPUs (transitional dummy package)" + depends="mesa-dri" +} + +mesa-freedreno-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Adreno GPUs (transitional dummy package)" + depends="mesa-dri" +} + +mesa-intel-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Intel GPUs (transitional dummy package)" + depends="mesa-dri mesa-vulkan-intel" +} + +mesa-kmsro-dri_package() { + build_style=meta + short_desc="KMS Render-only Mesa DRI drivers (transitional dummy package)" + depends="mesa-dri" +} + +mesa-lima-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Mali GPUs (Utgard) (transitional dummy package)" + depends="mesa-dri" +} + +mesa-nouveau-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for NVIDIA GPUs (transitional dummy package)" + depends="mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC" +} + +mesa-panfrost-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Mali GPUs (Midgard/Bifrost) (dummy package)" + depends="mesa-dri" +} + +mesa-tegra-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Tegra GPU (transitional dummy package)" + depends="mesa-dri" +} + +mesa-v3d-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Videocore VI GPU (transitional dummy package)" + depends="mesa-dri" +} + +mesa-vmwgfx-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for VMware (transitional dummy package)" + depends="mesa-dri" +} + +mesa-vc4-dri_package() { + build_style=meta + short_desc="Mesa DRI drivers for Videocore IV GPU (transitional dummy package)" + depends="mesa-dri" +}