From 017374591d8dd3bcc01d52f7bd9b87cbf49f7f31 Mon Sep 17 00:00:00 2001 From: Stefano Ragni Date: Wed, 23 Oct 2019 17:18:43 +0200 Subject: [PATCH] libGL: reorganize subpackages by megadrivers Many Mesa libraries are hard links to the same file, called a `megadriver`, so they should be grouped in the same subpackage. --- .../libGL/patches/no-unlink-megadrivers.patch | 13 ++ srcpkgs/libGL/template | 149 +++++++++++++++--- srcpkgs/mesa-dri | 1 + srcpkgs/mesa-gallium-XvMC | 1 + srcpkgs/mesa-gallium-dri | 1 + srcpkgs/mesa-gallium-vdpau | 1 + srcpkgs/mesa-vulkan-intel | 1 + srcpkgs/mesa-vulkan-radeon | 1 + 8 files changed, 150 insertions(+), 18 deletions(-) create mode 100644 srcpkgs/libGL/patches/no-unlink-megadrivers.patch create mode 120000 srcpkgs/mesa-dri create mode 120000 srcpkgs/mesa-gallium-XvMC create mode 120000 srcpkgs/mesa-gallium-dri create mode 120000 srcpkgs/mesa-gallium-vdpau create mode 120000 srcpkgs/mesa-vulkan-intel create mode 120000 srcpkgs/mesa-vulkan-radeon diff --git a/srcpkgs/libGL/patches/no-unlink-megadrivers.patch b/srcpkgs/libGL/patches/no-unlink-megadrivers.patch new file mode 100644 index 00000000000..b11e857b9c7 --- /dev/null +++ b/srcpkgs/libGL/patches/no-unlink-megadrivers.patch @@ -0,0 +1,13 @@ +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/libGL/template b/srcpkgs/libGL/template index 3ce62fe073f..2f8113ffd4a 100644 --- a/srcpkgs/libGL/template +++ b/srcpkgs/libGL/template @@ -1,7 +1,7 @@ # Template file for 'libGL' pkgname=libGL version=19.2.1 -revision=1 +revision=2 wrksrc="mesa-${version}" build_style=meson configure_args="-Dshared-glapi=true -Dgbm=true -Degl=true @@ -40,8 +40,9 @@ i686*|x86_64*) configure_args+=" -Dgallium-opencl=icd" hostmakedepends+=" clang" makedepends+=" libclc-git" - subpackages+=" libxatracker mesa-ati-dri mesa-intel-dri mesa-nouveau-dri" - subpackages+=" mesa-vmwgfx-dri mesa-opencl" + subpackages+=" libxatracker mesa-dri mesa-gallium-dri" + subpackages+=" mesa-gallium-vdpau mesa-gallium-XvMC" + subpackages+=" mesa-vulkan-intel mesa-vulkan-radeon mesa-opencl" ;; ppc*) # Enable all ppc drivers. @@ -56,21 +57,22 @@ ppc*) esac hostmakedepends+=" clang" makedepends+=" libclc-git" - subpackages+=" mesa-ati-dri mesa-nouveau-dri" - subpackages+=" mesa-opencl" + subpackages+=" mesa-dri mesa-gallium-dri" + subpackages+=" mesa-gallium-vdpau mesa-gallium-XvMC" + subpackages+=" mesa-vulkan-radeon mesa-opencl" ;; aarch64*) configure_args+=" -Dgallium-drivers=nouveau,tegra,swrast,vc4" configure_args+=" -Dvulkan-drivers= -Ddri-drivers=" configure_args+=" -Dgallium-xa=false -Ddri3=true" - subpackages+=" mesa-tegra-dri mesa-nouveau-dri mesa-vc4-dri" + subpackages+=" mesa-gallium-dri mesa-gallium-vdpau mesa-gallium-XvMC" ;; armv7l*) # Enable Videocore IV and swrast for RaspberryPi configure_args+=" -Dgallium-drivers=swrast,vc4" configure_args+=" -Dvulkan-drivers= -Ddri-drivers= -Dgallium-xvmc=false" configure_args+=" -Dgallium-xa=false -Dgallium-vdpau=false -Dgallium-va=false" - subpackages+=" mesa-vc4-dri" + subpackages+=" mesa-gallium-dri" ;; *) # Enable swrast driver. @@ -78,6 +80,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-gallium-dri" ;; esac @@ -106,6 +109,7 @@ esac post_install() { vlicense docs/license.html vmkdir usr/lib/xorg/modules/extensions +# TODO: This file is not installed in musl ln -s libglx-xorg.so ${DESTDIR}/usr/lib/xorg/modules/extensions/libglx.so case "$XBPS_TARGET_MACHINE" in i686*) @@ -175,6 +179,124 @@ libxatracker_package() { } } +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 classic DRI drivers" + nostrip_files="i915_dri.so i965_dri.so nouveau_vieux_dri.so r200_dri.so + radeon_dri.so" + pkg_install() { + for f in $nostrip_files; do + if [ -f "$DESTDIR/usr/lib/xorg/modules/drivers/$f" ]; then + vmove "usr/lib/xorg/modules/drivers/$f"; + fi + done +# vmove "usr/lib/xorg/modules/drivers/i9[16]5_dri.so" +# vmove "usr/lib/xorg/modules/drivers/nouveau_vieux_dri.so" +# vmove "usr/lib/xorg/modules/drivers/r200_dri.so" +# vmove "usr/lib/xorg/modules/drivers/radeon_dri.so" +# vmove "usr/lib/xorg/modules/drivers/libmesa_dri_drivers.so" + } +} + +mesa-gallium-dri_package() { + short_desc="Mesa Gallium DRI drivers" + nostrip_files="radeonsi_dri.so nouveau_dri.so swrast_dri.so + kms_swrast_dri.so r300_dri.so r600_dri.so tegra_dri.so vmwgfx_dri.so + vc4_dri.so virtio_gpu_dri.so" + nostrip_files+=" nouveau_drv_video.so r600_drv_video.so + radeonsi_drv_video.so" + pkg_install() { + for f in $nostrip_files; do + if [ -f "$DESTDIR/usr/lib/xorg/modules/drivers/$f" ]; then + vmove "usr/lib/xorg/modules/drivers/$f"; + fi + # break when $f = virtio_gpu_dri.so or maybe leave as it is + done + if [ -d "$DESTDIR/usr/lib/dri" ]; then + vmove "usr/lib/dri/*_drv_video.so" + fi + if [ -d "$DESTDIR/usr/lib/gallium-pipe" ]; then + vmove "usr/lib/gallium-pipe/pipe_*.so" + fi + vmove "usr/lib/xorg/modules/drivers/libgallium_dri.so" +# case "$XBPS_TARGET_MACHINE" in +# i686*|x86_64*) +# vmove "usr/lib/dri/*_drv_video.so" +# vmove "usr/lib/gallium-pipe/pipe_*.so" +# vmove "usr/lib/xorg/modules/drivers/nouveau_dri.so" +# vmove "usr/lib/xorg/modules/drivers/r[36]00_dri.so" +# vmove "usr/lib/xorg/modules/drivers/radeonsi_dri.so" +# vmove "usr/lib/xorg/modules/drivers/virtio_gpu_dri.so" +# vmove "usr/lib/xorg/modules/drivers/vmwgfx_dri.so" +# ;; +# aarch64*) +# vmove "usr/lib/dri/*_drv_video.so" +# vmove "usr/lib/xorg/modules/drivers/nouveau_dri.so" +# ;; +# TODO: the ppc*) case +# esac +# vmove "usr/lib/xorg/modules/drivers/*swrast_dri.so" +# vmove "usr/lib/xorg/modules/drivers/libgallium_dri.so" + } +} + +mesa-gallium-vdpau_package() { + short_desc="Mesa Gallium VDPAU" + 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" + pkg_install() { + for f in $nostrip_files; do + if [ -f "$DESTDIR/usr/lib/vdpau/$f" ]; then + vmove "usr/lib/vdpau/$f"; + fi + done + vmove "usr/lib/vdpau/libvdpau_gallium.so.*" +# vmove "usr/lib/vdpau/libvdpau_*.so.*" + } +} + +mesa-gallium-XvMC_package() { + short_desc="Mesa Gallium XvMC" + nostrip_files="libXvMCnouveau.so.1.0.0 libXvMCr600.so.1.0.0" + pkg_install() { + for f in $nostrip_files; do + if [ -f "$DESTDIR/usr/lib/$f" ]; then + vmove "usr/lib/$f"; + fi + done + vmove "usr/lib/libXvMCgallium.so" +# vmove "usr/lib/libXvMC*.so.*" + } +} + +mesa-vulkan-intel_package() { + short_desc="Mesa Intel Vulkan driver" + lib32files="/usr/share/vulkan/icd.d/intel_icd.i686.json" + pkg_install() { + vmove "usr/share/vulkan/icd.d/intel_icd*.json" + vmove "usr/lib/libvulkan_intel.so" + } +} + +mesa-vulkan-radeon_package() { + short_desc="Mesa Radeon Vulkan driver" + lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json" + pkg_install() { + vmove "usr/share/vulkan/icd.d/radeon_icd*.json" + vmove "usr/lib/libvulkan_radeon.so" + } +} + +# The old mesa-*-dri packages to be turned into dummy packages + mesa-ati-dri_package() { short_desc="Mesa DRI drivers for ATI GPUs" lib32files="/usr/share/vulkan/icd.d/radeon_icd.i686.json" @@ -231,18 +353,9 @@ mesa-vc4-dri_package() { } } -mesa-opencl_package() { - short_desc="Mesa implementation of OpenCL (r600+ only)" - depends="libclc libOpenCL" - 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" + short_desc="Mesa Gallium DRI drivers for Tegra GPU" + depends="mesa-gallium-dri" pkg_install() { vmove "usr/lib/xorg/modules/drivers/tegra*" } diff --git a/srcpkgs/mesa-dri b/srcpkgs/mesa-dri new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-dri @@ -0,0 +1 @@ +libGL \ No newline at end of file diff --git a/srcpkgs/mesa-gallium-XvMC b/srcpkgs/mesa-gallium-XvMC new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-gallium-XvMC @@ -0,0 +1 @@ +libGL \ No newline at end of file diff --git a/srcpkgs/mesa-gallium-dri b/srcpkgs/mesa-gallium-dri new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-gallium-dri @@ -0,0 +1 @@ +libGL \ No newline at end of file diff --git a/srcpkgs/mesa-gallium-vdpau b/srcpkgs/mesa-gallium-vdpau new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-gallium-vdpau @@ -0,0 +1 @@ +libGL \ No newline at end of file diff --git a/srcpkgs/mesa-vulkan-intel b/srcpkgs/mesa-vulkan-intel new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-vulkan-intel @@ -0,0 +1 @@ +libGL \ No newline at end of file diff --git a/srcpkgs/mesa-vulkan-radeon b/srcpkgs/mesa-vulkan-radeon new file mode 120000 index 00000000000..5ef01dc565e --- /dev/null +++ b/srcpkgs/mesa-vulkan-radeon @@ -0,0 +1 @@ +libGL \ No newline at end of file