From d1fba2a19cfd06b1748202b0429fa8f968b8f141 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Mon, 19 Oct 2026 06:51:51 -0700 Subject: [PATCH] Replace agnos-display deb with the graphics libraries we use (#650) --- Dockerfile.agnos | 6 ++---- userspace/.gitattributes | 4 ++++ userspace/base_setup.sh | 1 - userspace/debs/agnos-display_0.0.4.deb | 3 --- userspace/graphics/libgbm.so | 3 +++ .../usr/lib/aarch64-linux-gnu/libEGL_adreno.so | 3 +++ .../lib/aarch64-linux-gnu/libGLESv2_adreno.so | 3 +++ .../lib/aarch64-linux-gnu/libadreno_utils.so | Bin 0 -> 59128 bytes .../root/usr/lib/aarch64-linux-gnu/libpcre.so.1 | 1 + .../usr/lib/aarch64-linux-gnu/libpcre.so.1.2.6 | 3 +++ 10 files changed, 19 insertions(+), 8 deletions(-) delete mode 100644 userspace/debs/agnos-display_0.0.4.deb create mode 100755 userspace/graphics/libgbm.so create mode 100644 userspace/root/usr/lib/aarch64-linux-gnu/libEGL_adreno.so create mode 100644 userspace/root/usr/lib/aarch64-linux-gnu/libGLESv2_adreno.so create mode 100644 userspace/root/usr/lib/aarch64-linux-gnu/libadreno_utils.so create mode 120000 userspace/root/usr/lib/aarch64-linux-gnu/libpcre.so.1 create mode 100755 userspace/root/usr/lib/aarch64-linux-gnu/libpcre.so.1.2.6 diff --git a/Dockerfile.agnos b/Dockerfile.agnos index cb5ccdb..9fbdb97 100644 --- a/Dockerfile.agnos +++ b/Dockerfile.agnos @@ -25,10 +25,8 @@ ENV PATH="/usr/lib/ccache:$PATH" FROM agnos-compiler AS agnos-compiler-graphics RUN apt-get update && apt-get install -yq --no-install-recommends patchelf COPY ./userspace/graphics/ /tmp/agnos/graphics-src/ -COPY ./userspace/debs/agnos-display_0.0.4.deb /tmp/agnos/ -RUN dpkg-deb -x /tmp/agnos/agnos-display_0.0.4.deb /tmp/agnos/display && \ - mkdir -p /tmp/agnos/graphics && \ - cp /tmp/agnos/display/usr/lib/aarch64-linux-gnu/libgbm.so /tmp/agnos/graphics/ && \ +RUN mkdir -p /tmp/agnos/graphics && \ + cp /tmp/agnos/graphics-src/libgbm.so /tmp/agnos/graphics/ && \ cp /tmp/agnos/graphics-src/libeglSubDriverWayland.so.patched /tmp/agnos/graphics/libeglSubDriverWayland.so && \ cd /tmp/agnos/graphics && \ gcc -shared -fPIC -Os -s -Wall -Wextra -Werror -Wl,-z,defs -Wl,-z,relro,-z,now \ diff --git a/userspace/.gitattributes b/userspace/.gitattributes index ad526fb..ce0e863 100644 --- a/userspace/.gitattributes +++ b/userspace/.gitattributes @@ -5,3 +5,7 @@ root/usr/comma/reset filter=lfs diff=lfs merge=lfs -text root/usr/comma/setup filter=lfs diff=lfs merge=lfs -text root/usr/comma/installer filter=lfs diff=lfs merge=lfs -text root/usr/comma/updater filter=lfs diff=lfs merge=lfs -text +graphics/libgbm.so filter=lfs diff=lfs merge=lfs -text +root/usr/lib/aarch64-linux-gnu/libEGL_adreno.so filter=lfs diff=lfs merge=lfs -text +root/usr/lib/aarch64-linux-gnu/libGLESv2_adreno.so filter=lfs diff=lfs merge=lfs -text +root/usr/lib/aarch64-linux-gnu/libpcre.so.1.2.6 filter=lfs diff=lfs merge=lfs -text diff --git a/userspace/base_setup.sh b/userspace/base_setup.sh index 6ee1801..20d9d2b 100755 --- a/userspace/base_setup.sh +++ b/userspace/base_setup.sh @@ -122,7 +122,6 @@ ln -s usr/lib64 /lib64 cd /tmp/agnos/debs apt-get --no-install-recommends -o Dpkg::Options::="--force-overwrite" install -yq \ ./agnos-base_0.0.4.deb \ - ./agnos-display_0.0.4.deb \ ./agnos-wlan_0.0.4.deb # pdmappersvc requires the Ubuntu 16.04 version of libjson-c2. diff --git a/userspace/debs/agnos-display_0.0.4.deb b/userspace/debs/agnos-display_0.0.4.deb deleted file mode 100644 index 02c93fc..0000000 --- a/userspace/debs/agnos-display_0.0.4.deb +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67a62868275e64fde22cd0c4c2d122ad5fb851c3e35e485a22d0dfc5ebfff40c -size 13497620 diff --git a/userspace/graphics/libgbm.so b/userspace/graphics/libgbm.so new file mode 100755 index 0000000..6477eef --- /dev/null +++ b/userspace/graphics/libgbm.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da344766f2899e99f2d84994f847550ab83e6d0bcbb3a38ff03c3d304a8dc095 +size 108536 diff --git a/userspace/root/usr/lib/aarch64-linux-gnu/libEGL_adreno.so b/userspace/root/usr/lib/aarch64-linux-gnu/libEGL_adreno.so new file mode 100644 index 0000000..bd071c2 --- /dev/null +++ b/userspace/root/usr/lib/aarch64-linux-gnu/libEGL_adreno.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f32843d3d68bfc26fe4b1ddd1c6fe54dbe2d1b6318670e62035c57d94fde86 +size 119624 diff --git a/userspace/root/usr/lib/aarch64-linux-gnu/libGLESv2_adreno.so b/userspace/root/usr/lib/aarch64-linux-gnu/libGLESv2_adreno.so new file mode 100644 index 0000000..fb3a11b --- /dev/null +++ b/userspace/root/usr/lib/aarch64-linux-gnu/libGLESv2_adreno.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bb91eb4509771b9851e5610c5f721b56ba54718a72195d8538dec2651d55fb6 +size 20152176 diff --git a/userspace/root/usr/lib/aarch64-linux-gnu/libadreno_utils.so b/userspace/root/usr/lib/aarch64-linux-gnu/libadreno_utils.so new file mode 100644 index 0000000000000000000000000000000000000000..7c71a8ed174e8ac68946ffeab285291ecfb4c429 GIT binary patch literal 59128 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 nf37#je}@~*k&`53eC}tQSzOlHb}mEk{0