From 3f46f041150bffaf48b51aae3f5c8162726a809b Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Fri, 22 May 2020 21:53:42 +0200 Subject: gnu: libdrm: Update to 2.4.101. * gnu/packages/patches/libdrm-symbol-check.patch: Delete file. * gnu/packages/patches/libdrm-realpath-virtio.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/xdisorg.scm (libdrm): Update to 2.4.101. [source](uri): Adjust for new .tar.xz tarball. [source](patches): Adjust patch list as above. --- gnu/local.mk | 2 +- gnu/packages/patches/libdrm-realpath-virtio.patch | 42 +++++ gnu/packages/patches/libdrm-symbol-check.patch | 215 ---------------------- gnu/packages/xdisorg.scm | 22 +-- 4 files changed, 53 insertions(+), 228 deletions(-) create mode 100644 gnu/packages/patches/libdrm-realpath-virtio.patch delete mode 100644 gnu/packages/patches/libdrm-symbol-check.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2bfd0956ca..7c83412fd4 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1166,7 +1166,7 @@ dist_patch_DATA = \ %D%/packages/patches/libbase-use-own-logging.patch \ %D%/packages/patches/libbonobo-activation-test-race.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ - %D%/packages/patches/libdrm-symbol-check.patch \ + %D%/packages/patches/libdrm-realpath-virtio.patch \ %D%/packages/patches/libexif-CVE-2016-6328.patch \ %D%/packages/patches/libexif-CVE-2017-7544.patch \ %D%/packages/patches/libexif-CVE-2018-20030.patch \ diff --git a/gnu/packages/patches/libdrm-realpath-virtio.patch b/gnu/packages/patches/libdrm-realpath-virtio.patch new file mode 100644 index 0000000000..b7d85160b4 --- /dev/null +++ b/gnu/packages/patches/libdrm-realpath-virtio.patch @@ -0,0 +1,42 @@ +Only check for for relative path on virtio devices. Otherwise it could +break driver loading in some circumstances, notably the IceCat sandbox. + +https://gitlab.freedesktop.org/mesa/drm/-/issues/39 + +Taken from upstream: +https://gitlab.freedesktop.org/mesa/drm/-/commit/57df07572ce45a1b60bae6fb89770388d3abd6dd + +diff --git a/xf86drm.c b/xf86drm.c +--- a/xf86drm.c ++++ b/xf86drm.c +@@ -3103,15 +3103,18 @@ static int drmParseSubsystemType(int maj, int min) + int subsystem_type; + + snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device", maj, min); +- if (!realpath(path, real_path)) +- return -errno; +- snprintf(path, sizeof(path), "%s", real_path); + + subsystem_type = get_subsystem_type(path); ++ /* Try to get the parent (underlying) device type */ + if (subsystem_type == DRM_BUS_VIRTIO) { ++ /* Assume virtio-pci on error */ ++ if (!realpath(path, real_path)) ++ return DRM_BUS_VIRTIO; + strncat(path, "/..", PATH_MAX); + subsystem_type = get_subsystem_type(path); +- } ++ if (subsystem_type < 0) ++ return DRM_BUS_VIRTIO; ++ } + return subsystem_type; + #elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__) + return DRM_BUS_PCI; +@@ -3920,6 +3923,7 @@ process_device(drmDevicePtr *device, const char *d_name, + + switch (subsystem_type) { + case DRM_BUS_PCI: ++ case DRM_BUS_VIRTIO: + return drmProcessPciDevice(device, node, node_type, maj, min, + fetch_deviceinfo, flags); + case DRM_BUS_USB: diff --git a/gnu/packages/patches/libdrm-symbol-check.patch b/gnu/packages/patches/libdrm-symbol-check.patch deleted file mode 100644 index 0a77763a4f..0000000000 --- a/gnu/packages/patches/libdrm-symbol-check.patch +++ /dev/null @@ -1,215 +0,0 @@ -Augment the list of expected symbols to fix the symbol-check tests on -mips64el-linux, armhf-linux and aarch64-linux. - ---- libdrm-2.4.65/freedreno/freedreno-symbol-check.orig 2015-09-04 11:07:40.000000000 -0400 -+++ libdrm-2.4.65/freedreno/freedreno-symbol-check 2015-10-18 23:57:15.288416229 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.sources/LIBDRM_FREEDRENO_H_FILES - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_freedreno.so} | awk '{print $3}'| while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - fd_bo_cpu_fini - fd_bo_cpu_prep - fd_bo_del ---- libdrm-2.4.65/nouveau/nouveau-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/nouveau/nouveau-symbol-check 2015-10-18 23:55:26.078327118 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.sources/LIBDRM_NOUVEAU_H_FILES - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_nouveau.so} | awk '{print $3}'| while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - nouveau_bo_map - nouveau_bo_name_get - nouveau_bo_name_ref ---- libdrm-2.4.65/libkms/kms-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/libkms/kms-symbol-check 2015-10-18 23:46:10.683869471 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.sources/LIBKMS_H_FILES - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libkms.so} | awk '{print $3}'| while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - kms_bo_create - kms_bo_destroy - kms_bo_get_prop ---- libdrm-2.4.65/intel/intel-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/intel/intel-symbol-check 2015-10-18 23:55:53.309558508 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.sources/LIBDRM_INTEL_H_FILES - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_intel.so} | awk '{print $3}' | while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - drm_intel_bo_alloc - drm_intel_bo_alloc_for_render - drm_intel_bo_alloc_tiled ---- libdrm-2.4.65/amdgpu/amdgpu-symbol-check.orig 2015-08-17 10:08:11.000000000 -0400 -+++ libdrm-2.4.65/amdgpu/amdgpu-symbol-check 2015-10-18 23:56:10.606917723 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.am/libdrm_amdgpuinclude_HEADERS - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_amdgpu.so} | awk '{print $3}' | while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - amdgpu_bo_alloc - amdgpu_bo_cpu_map - amdgpu_bo_cpu_unmap ---- libdrm-2.4.65/exynos/exynos-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/exynos/exynos-symbol-check 2015-10-18 23:56:32.025486153 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.am/libdrm_exynos*_HEADERS - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_exynos.so} | awk '{print $3}'| while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - exynos_bo_create - exynos_bo_destroy - exynos_bo_from_name ---- libdrm-2.4.65/omap/omap-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/omap/omap-symbol-check 2015-10-18 23:56:44.834438626 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first five) are taken from the public headers. -+# The following symbols (past the first 12) are taken from the public headers. - # A list of the latter should be available Makefile.am/libdrm_omap*HEADERS - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_omap.so} | awk '{print $3}'| while read func; do -@@ -10,6 +10,13 @@ - _end - _fini - _init -+_fbss -+_fdata -+_ftext -+__bss_start__ -+__bss_end__ -+_bss_end__ -+__end__ - omap_bo_cpu_fini - omap_bo_cpu_prep - omap_bo_del ---- libdrm-2.4.65/tegra/tegra-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400 -+++ libdrm-2.4.65/tegra/tegra-symbol-check 2015-10-18 23:57:00.756759698 -0400 -@@ -1,6 +1,6 @@ - #!/bin/bash - --# The following symbols (past the first nine) are taken from tegra.h. -+# The following symbols (past the first 12) are taken from tegra.h. - - FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '{print $3}'| while read func; do - ( grep -q "^$func$" || echo $func ) <