me
/
guix
Archived
1
0
Fork 0

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.
master
Marius Bakke 2020-05-22 21:53:42 +02:00 committed by Marius Bakke
parent d92f9d341e
commit 3f46f04115
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
4 changed files with 53 additions and 228 deletions

View File

@ -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 \

View File

@ -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:

View File

@ -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 ) <<EOF
@@ -9,6 +9,9 @@
__bss_start
__end__
_bss_end__
+_fbss
+_fdata
+_ftext
_edata
_end
_fini
--- libdrm-2.4.65/radeon/radeon-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
+++ libdrm-2.4.65/radeon/radeon-symbol-check 2015-10-18 23:57:00.756759698 -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_RADEON_H_FILES
FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.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__
radeon_bo_debug
radeon_bo_get_handle
radeon_bo_get_src_domain

View File

@ -483,18 +483,16 @@ rasterisation.")
(define-public libdrm
(package
(name "libdrm")
(version "2.4.100")
(source
(origin
(method url-fetch)
(uri (string-append
"https://dri.freedesktop.org/libdrm/libdrm-"
version
".tar.bz2"))
(sha256
(base32
"0p8a1l3a3s40i81mawm8nhrbk7p97ss05qkawp1yx73c30lchz67"))
(patches (search-patches "libdrm-symbol-check.patch"))))
(version "2.4.101")
(source (origin
(method url-fetch)
(uri (string-append
"https://dri.freedesktop.org/libdrm/libdrm-"
version ".tar.xz"))
(sha256
(base32
"19vqbhqljhln0lrpnv3s7y3lkhsdcp76dl8bhqj3cis9ism1pwyx"))
(patches (search-patches "libdrm-realpath-virtio.patch"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags