[Debian-on-mobile-maintainers] Bug#1018209: osk-sdl: Add all available DRI drivers

Balint Kovacs dratini0 at gmail.com
Sat Aug 27 01:55:34 BST 2022


Package: osk-sdl
Version: 0.67-2
Severity: normal
Tags: patch
X-Debbugs-Cc: dratini0 at gmail.com

Dear Maintainer,

In the past days, I have found two systems where osk-sdl didn't include the
correct DRI library in the initramfs. (A Steam Deck, which needs
radeonsi_drm.so and an Asus T100TA Bay Trail tablet, which needs crocus_drm.so)

So instead of trying to maintain a list of all the possible DRI libraries that
might be needed, I propose we just include them all. This is reasonable,
because they are already hardlinks of the same file.

I have checked that in Debian main, files ending in "_dri.so" only come from
libgl1-mesa-dri, and that on amd64 and on the Pinephone, all of those files are
hardlinks.

On my Steam Deck, I have checked that my patch changes the size of the initrd
from 120600 to 120601 kB, and that it works. I haven't yet tested it on any
other devices.


-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, arm64

Kernel: Linux 5.18.0-4-amd64 (SMP w/16 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages osk-sdl depends on:
ii  cryptsetup             2:2.5.0-2
ii  cryptsetup-initramfs   2:2.5.0-2
ii  debconf [debconf-2.0]  1.5.79
ii  fonts-dejavu-core      2.37-2
ii  libc6                  2.34-3
ii  libcryptsetup12        2:2.5.0-2
ii  libegl1                1.4.0-1
ii  libgcc-s1              12.1.0-8
ii  libgl1                 1.4.0-1
ii  libgles2               1.4.0-1
ii  libsdl2-2.0-0          2.0.22+dfsg-6
ii  libsdl2-ttf-2.0-0      2.20.0+dfsg-1
ii  libstdc++6             12.1.0-8

osk-sdl recommends no packages.

osk-sdl suggests no packages.

-- debconf information excluded
-------------- next part --------------
>From 848e446a00efb3ce5ffb07832659caa5e7a4688f Mon Sep 17 00:00:00 2001
From: Balint Kovacs <dratini0 at gmail.com>
Date: Sat, 27 Aug 2022 01:32:26 +0100
Subject: [PATCH] Include every possible DRI driver

---
 debian/initramfs/hooks/osk-sdl | 37 ++++++++++++----------------------
 1 file changed, 13 insertions(+), 24 deletions(-)

diff --git a/debian/initramfs/hooks/osk-sdl b/debian/initramfs/hooks/osk-sdl
index 2b65692..1f59fb9 100755
--- a/debian/initramfs/hooks/osk-sdl
+++ b/debian/initramfs/hooks/osk-sdl
@@ -18,52 +18,41 @@ esac
 
 # Many dri modules are kmsro, use a symlink there
 dri_inst() {
-    so_src="${libdir}/dri/$1"
-    shift
-    sos=$@
-    so_sum=$(md5sum "${so_src}" | awk '{ print $1 }')
-
-    copy_exec "${so_src}"
-    for so in $sos; do
-        if [ "$(md5sum "${libdir}/dri/${so}" | awk '{ print $1 }')" = "${so_sum}" ]; then
-          ln -s "$(basename "${so_src}")" "${DESTDIR}/${libdir}/dri/${so}"
+    for so in "${libdir}/dri/"*_dri.so; do
+        current_so_sum="$(md5sum "${so}" | awk '{ print $1 }')"
+        if [ "x${current_so_sum}" = "x${so_sum}" ]; then
+            ln -s "$(basename "${so_src}")" "${DESTDIR}/${so}"
         else
-          copy_exec "${libdir}/dri/${so}"
+            copy_exec "${so}"
+            so_sum="${current_so_sum}"
+            so_src="${so}"
         fi
     done
 }
 
-IMX_KMSRO="etnaviv_dri.so imx-drm_dri.so imx-dcss_dri.so mxsfb-drm_dri.so"
-
 case "$DPKG_ARCH" in
     arm64)
         libdir=/usr/lib/aarch64-linux-gnu
+        dri_inst
+        copy_exec "$libdir/libGLESv2.so.2"
+
         # Pinephone
         if grep -q "allwinner" /proc/device-tree/compatible 2>/dev/null; then
-            copy_exec "$libdir/dri/sun4i-drm_dri.so"
-            copy_exec "$libdir/libGLESv2.so.2"
             manual_add_modules goodix goodix_ts
         # Librem 5 and Librem 5 Devkit
         elif grep -q "imx" /proc/device-tree/compatible 2>/dev/null; then
-            dri_inst ${IMX_KMSRO}
-            copy_exec "$libdir/libGLESv2.so.2"
             manual_add_modules edt-ft5x06 goodix pwm_vibra goodix_ts
-	# PinePhone Pro
-	elif grep -q "PinePhonePro" /proc/device-tree/model 2>/dev/null; then
-            dri_inst ${IMX_KMSRO} panfrost_dri.so rockchip_dri.so
-            copy_exec "$libdir/libGLESv2.so.2"
+        # PinePhone Pro
+        elif grep -q "PinePhonePro" /proc/device-tree/model 2>/dev/null; then
             manual_add_modules goodix pwm_vibra goodix_ts
         # Generic / Installer (needs to include all of the above)
         else
-            dri_inst ${IMX_KMSRO} sun4i-drm_dri.so panfrost_dri.so rockchip_dri.so
-            copy_exec "$libdir/libGLESv2.so.2"
             manual_add_modules edt-ft5x06 goodix pwm_vibra goodix_ts
         fi
         ;;
     amd64)
         libdir=/usr/lib/x86_64-linux-gnu
-        AMD64_KMSRO="vmwgfx_dri.so virtio_gpu_dri.so i965_dri.so iris_dri.so kms_swrast_dri.so"
-        dri_inst ${AMD64_KMSRO}
+        dri_inst
         copy_exec "$libdir/libGLESv2.so.2"
         ;;
     *)
-- 
2.37.2



More information about the Debian-on-mobile-maintainers mailing list