From eb9e778dcc628c245a4d574cd69ea739dfdd61a3 Mon Sep 17 00:00:00 2001 From: Satadru Pramanik Date: Thu, 3 Mar 2022 11:34:34 -0500 Subject: [PATCH] Fix sommelier on M98 (#6812) * add sommelier and updated libglvnd * xwayland test * test mesa build with glvnd * sommelier fixes via rebuilds of sommelier, mesa, xwayland --- packages/libglvnd.rb | 47 +++++++++++++++++-------------------------- packages/mesa.rb | 29 +++++++++++++++++--------- packages/sommelier.rb | 39 +++++++++++++++++++---------------- packages/xwayland.rb | 47 +++++++++---------------------------------- 4 files changed, 69 insertions(+), 93 deletions(-) diff --git a/packages/libglvnd.rb b/packages/libglvnd.rb index c7fc2ef1ad..d4ee8e472f 100644 --- a/packages/libglvnd.rb +++ b/packages/libglvnd.rb @@ -3,23 +3,23 @@ require 'package' class Libglvnd < Package description 'The GL Vendor-Neutral Dispatch library' homepage 'https://gitlab.freedesktop.org/glvnd/libglvnd' - version '1.3.2' + version '1.4.0' license 'MIT' compatibility 'all' - source_url 'https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v1.3.2/libglvnd-v1.3.2.tar.bz2' - source_sha256 '8eb697a879245c6246ffabf2c1ed72a5ae335769f0772f55cbe4fee3e50223fe' + source_url 'https://gitlab.freedesktop.org/glvnd/libglvnd.git' + git_hashtag "v#{version}" - binary_url ({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.3.2_armv7l/libglvnd-1.3.2-chromeos-armv7l.tar.xz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.3.2_armv7l/libglvnd-1.3.2-chromeos-armv7l.tar.xz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.3.2_i686/libglvnd-1.3.2-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.3.2_x86_64/libglvnd-1.3.2-chromeos-x86_64.tar.xz', + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.4.0_armv7l/libglvnd-1.4.0-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.4.0_armv7l/libglvnd-1.4.0-chromeos-armv7l.tar.zst', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.4.0_i686/libglvnd-1.4.0-chromeos-i686.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libglvnd/1.4.0_x86_64/libglvnd-1.4.0-chromeos-x86_64.tar.zst' }) - binary_sha256 ({ - aarch64: '70735287c0e3ec8a7adc8a0b73ff3094f64fc05033f00a7c97b3b9f135f89b5e', - armv7l: '70735287c0e3ec8a7adc8a0b73ff3094f64fc05033f00a7c97b3b9f135f89b5e', - i686: '0539bb9968725480639004fae14c4ef2014d13290ad1353ed8532fb601b9a1db', - x86_64: '24b0f3aa36dbe3832edc8d2ee787962416f5fb2cac13c1e31d71146adbe9660f', + binary_sha256({ + aarch64: '9f38d8734bbcd7e2258edf3a8e872093d10e71a5bcae250b211798413d2c617b', + armv7l: '9f38d8734bbcd7e2258edf3a8e872093d10e71a5bcae250b211798413d2c617b', + i686: '5e293d8f35f240ea212d1df3ca0fc852f60ac0fc79eb18d38489da7231022ac0', + x86_64: 'f17ee5a381d022cdc3ad36601ba4d2df0550b51a540e81c9c0486b61fca014bd' }) depends_on 'libxext' @@ -28,24 +28,13 @@ class Libglvnd < Package depends_on 'python3' => :build def self.build - system "env NOCONFIGURE=1 ./autogen.sh" - system "./configure #{CREW_OPTIONS} \ - --enable-egl \ - --enable-x11 \ - --enable-glx \ - --enable-gles1 \ - --enable-gles2 \ - --enable-headers \ - --enable-asm \ - --enable-tls" - system "make" + system "meson #{CREW_MESON_OPTIONS} \ + builddir" + system 'meson configure builddir' + system 'ninja -C builddir' end def self.install - system "make", "DESTDIR=#{CREW_DEST_DIR}", "install" - end - - def self.check - system "make", "check" + system "DESTDIR=#{CREW_DEST_DIR} ninja -C builddir install" end end diff --git a/packages/mesa.rb b/packages/mesa.rb index 1e5a95e886..9c95b75695 100644 --- a/packages/mesa.rb +++ b/packages/mesa.rb @@ -3,7 +3,7 @@ require 'package' class Mesa < Package description 'Open-source implementation of the OpenGL specification' homepage 'https://www.mesa3d.org' - @_ver = '21.3.5' + @_ver = '21.3.7' version @_ver license 'MIT' compatibility 'all' @@ -11,16 +11,16 @@ class Mesa < Package git_hashtag "mesa-#{@_ver}" binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.5_armv7l/mesa-21.3.5-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.5_armv7l/mesa-21.3.5-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.5_i686/mesa-21.3.5-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.5_x86_64/mesa-21.3.5-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.7_armv7l/mesa-21.3.7-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.7_armv7l/mesa-21.3.7-chromeos-armv7l.tar.zst', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.7_i686/mesa-21.3.7-chromeos-i686.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/mesa/21.3.7_x86_64/mesa-21.3.7-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: '21a732fc08bba3dc19bceffe5cc2d315de32ffd519cb8603fc338cf05946bdda', - armv7l: '21a732fc08bba3dc19bceffe5cc2d315de32ffd519cb8603fc338cf05946bdda', - i686: '598d0f51d38217f0846181aae988c13ca5b4f2869ea6de715210e14082b07bcd', - x86_64: '4fd1bb2096ccdf3c6fb23edd1ced3933295af5096a75f27022f1aa3b31c64ea7' + aarch64: '04d84c085f2be9415f95cf89d2601d6fb0f2cedade83933312082e669e4f1221', + armv7l: '04d84c085f2be9415f95cf89d2601d6fb0f2cedade83933312082e669e4f1221', + i686: '7ebbc2fd9a7af4712f634fb3ae9f9fa5c3d286fbe2632cacc5dc8dbbeb3ec03d', + x86_64: '05d91f448f095fd5bb89a1ddfb1284845ac20b7e4ee32b0201f1572eccf1f24c' }) depends_on 'glslang' => :build @@ -126,6 +126,7 @@ class Mesa < Package -Dgallium-drivers=#{@galliumdrivers} \ -Dprefer-crocus=true \ -Dosmesa=#{@osmesa} \ + -Dglvnd=false \ builddir" system 'meson configure builddir' system 'samu -C builddir' @@ -133,5 +134,15 @@ class Mesa < Package def self.install system "DESTDIR=#{CREW_DEST_DIR} samu -C builddir install" + # The following are hacks to keep sommelier from complaining. + Dir.chdir("#{CREW_DEST_LIB_PREFIX}/dri") do + FileUtils.ln_s '.', 'tls' unless File.exist?('tls') + end + if ARCH == 'x86_64' + FileUtils.mkdir_p "#{CREW_DEST_LIB_PREFIX}/gbm/tls" + Dir.chdir("#{CREW_DEST_LIB_PREFIX}/gbm/tls") do + FileUtils.ln_s '../../libgbm.so', 'i915_gbm.so' + end + end end end diff --git a/packages/sommelier.rb b/packages/sommelier.rb index 174e607b92..89eac6a9bc 100644 --- a/packages/sommelier.rb +++ b/packages/sommelier.rb @@ -3,23 +3,23 @@ require 'package' class Sommelier < Package description 'Sommelier works by redirecting X11 programs to the built-in ChromeOS Exo Wayland server.' homepage 'https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/sommelier/' - version '20210109-5' + version '20210109-6' license 'BSD-Google' compatibility 'all' source_url 'https://chromium.googlesource.com/chromiumos/platform2.git' git_hashtag 'f3b2e2b6a8327baa2e62ef61036658c258ab4a09' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-5_armv7l/sommelier-20210109-5-chromeos-armv7l.tar.xz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-5_armv7l/sommelier-20210109-5-chromeos-armv7l.tar.xz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-5_i686/sommelier-20210109-5-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-5_x86_64/sommelier-20210109-5-chromeos-x86_64.tar.xz', + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-6_armv7l/sommelier-20210109-6-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-6_armv7l/sommelier-20210109-6-chromeos-armv7l.tar.zst', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-6_i686/sommelier-20210109-6-chromeos-i686.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/sommelier/20210109-6_x86_64/sommelier-20210109-6-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: '2b270ec19410594ba6969f20e168cc91739f090315a8046a95e303cac71d723e', - armv7l: '2b270ec19410594ba6969f20e168cc91739f090315a8046a95e303cac71d723e', - i686: '0b8f8ee99968f1cd3c429c9a1a7ffb6577b8ec430b91c83d1f7fa1c3856e7a3b', - x86_64: 'b652d65be2330108b4232dbf79991cc27c755a4fed958480b62696f4499b036d', + aarch64: 'f3cc665556ebd157487b98ab2daefadf067fea0c43971e0c2dcc15628d9c8061', + armv7l: 'f3cc665556ebd157487b98ab2daefadf067fea0c43971e0c2dcc15628d9c8061', + i686: 'b370bc7c96b6018b3c348ee37262eee7981af0b32520649c3e6d2f8680d6e753', + x86_64: '32ad19aba00b96889c936c8efec6e09c7eb739a5863742f4537d4bed91e306bc' }) depends_on 'libdrm' @@ -49,7 +49,12 @@ class Sommelier < Package end def self.preflight - @container_check = `/usr/bin/crossystem inside_vm` == '1' ? true : false + case ARCH + when 'armv7l', 'aarch64' + @container_check = File.exist?('/.dockerenv') + when 'i686', 'x86_64' + @container_check = `/usr/bin/crossystem inside_vm` == '1' + end unless File.socket?('/var/run/chrome/wayland-0') || @container_check abort 'This package is not compatible with your device :/'.lightred end @@ -117,7 +122,7 @@ class Sommelier < Package # This file via: # crostini: /opt/google/cros-containers/bin/sommelier # https://source.chromium.org/chromium/chromium/src/+/master:third_party/chromite/third_party/lddtree.py;drc=46da9a8dfce28c96765dc7d061f0c6d7a52e7352;l=146 - IO.write 'sommelier_sh', <<~EOF + File.write 'sommelier_sh', <<~EOF #!/bin/bash function readlink(){ coreutils --coreutils-prog=readlink "$@" @@ -145,7 +150,7 @@ class Sommelier < Package EOF # sommelierd - IO.write 'sommelierd', <<~EOF + File.write 'sommelierd', <<~EOF #!/bin/bash -a source ${CREW_PREFIX}/etc/env.d/sommelier.env &>/dev/null @@ -199,7 +204,7 @@ class Sommelier < Package EOF # startsommelier - IO.write 'startsommelier', <<~EOF + File.write 'startsommelier', <<~EOF #!/bin/bash -a source ~/.sommelier-default.env &>/dev/null @@ -245,7 +250,7 @@ class Sommelier < Package EOF # stopsommelier - IO.write 'stopsommelier', <<~EOF + File.write 'stopsommelier', <<~EOF #!/bin/bash SOMM="$(pgrep -fc sommelier.elf 2> /dev/null)" if [[ "${SOMM}" -gt "0" ]]; then @@ -264,7 +269,7 @@ class Sommelier < Package EOF # restartsommelier - IO.write 'restartsommelier', <<~EOF + File.write 'restartsommelier', <<~EOF #!/bin/bash stopsommelier && startsommelier EOF @@ -294,8 +299,8 @@ class Sommelier < Package end end - IO.write("#{CREW_DEST_PREFIX}/etc/bash.d/sommelier", @bashd_sommelier) - IO.write("#{CREW_DEST_PREFIX}/etc/env.d/sommelier", @sommelierenv) + File.write("#{CREW_DEST_PREFIX}/etc/bash.d/sommelier", @bashd_sommelier) + File.write("#{CREW_DEST_PREFIX}/etc/env.d/sommelier", @sommelierenv) end def self.postinstall diff --git a/packages/xwayland.rb b/packages/xwayland.rb index 4622e2aba5..2fd519318f 100644 --- a/packages/xwayland.rb +++ b/packages/xwayland.rb @@ -4,23 +4,23 @@ class Xwayland < Package description 'X server configured to work with weston or sommelier' homepage 'https://x.org' @_ver = '22.1.0' - version @_ver + version "#{@_ver}-1" license 'MIT-with-advertising, ISC, BSD-3, BSD and custom' compatibility 'all' source_url 'https://gitlab.freedesktop.org/xorg/xserver.git' git_hashtag "xwayland-#{@_ver}" binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0_armv7l/xwayland-22.1.0-chromeos-armv7l.tar.zst', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0_armv7l/xwayland-22.1.0-chromeos-armv7l.tar.zst', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0_i686/xwayland-22.1.0-chromeos-i686.tar.zst', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0_x86_64/xwayland-22.1.0-chromeos-x86_64.tar.zst' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0-1_armv7l/xwayland-22.1.0-1-chromeos-armv7l.tar.zst', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0-1_armv7l/xwayland-22.1.0-1-chromeos-armv7l.tar.zst', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0-1_i686/xwayland-22.1.0-1-chromeos-i686.tar.zst', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/xwayland/22.1.0-1_x86_64/xwayland-22.1.0-1-chromeos-x86_64.tar.zst' }) binary_sha256({ - aarch64: 'aa65bcfdb34edc61b04db0c5970f579a11621b597788c801695fb32bcd2b1a6c', - armv7l: 'aa65bcfdb34edc61b04db0c5970f579a11621b597788c801695fb32bcd2b1a6c', - i686: '4cc31306f6cef4254394ed7cacbd5375880660b27976e347377a0b08342b7efc', - x86_64: '80dc3f551c7c171f0b654c64437e298f84832cc4b170895c1bebfff376425157' + aarch64: 'a8a49db5e9c13e9e29209af6be9f18cd5ac2925cefe6e06181686883194db3de', + armv7l: 'a8a49db5e9c13e9e29209af6be9f18cd5ac2925cefe6e06181686883194db3de', + i686: '69d6c3462f3a16f9a46a0ac87e55fa68edcf5fcd9bb85101ab58c6c6833a32f6', + x86_64: 'cdb5e4540b3ab08fbb336561047d2b0b7b20eb32760f60fc703a403d1a296ee6' }) depends_on 'dbus' @@ -49,15 +49,6 @@ class Xwayland < Package depends_on 'xkbcomp' depends_on 'xorg_lib' - case ARCH - when 'armv7l', 'aarch64' - PEER_CMD_PREFIX = '/lib/ld-linux-armhf.so.3'.freeze - when 'i686' - PEER_CMD_PREFIX = '/lib/ld-linux.so.2'.freeze - when 'x86_64' - PEER_CMD_PREFIX = '/lib64/ld-linux-x86-64.so.2'.freeze - end - def self.build system 'meson setup build' system "meson configure #{CREW_MESON_OPTIONS.sub("-Dcpp_args='-O2'", '')} \ @@ -69,30 +60,10 @@ class Xwayland < Package build" system 'meson configure build' system 'ninja -C build' - system "cat <<'EOF'> Xwayland_sh -#!/bin/bash -if base=$(readlink \"$0\" 2>/dev/null); then - case $base in - /*) base=$(readlink -f \"$0\" 2>/dev/null);; # if $0 is abspath symlink, make symlink fully resolved. - *) base=$(dirname \"$0\")/\"${base}\";; - esac -else - case $0 in - /*) base=$0;; - *) base=${PWD:-`pwd`}/$0;; - esac -fi -basedir=${base%/*} -# TODO(crbug/1003841): Remove LD_ARGV0 once -# ld.so supports forwarding the binary name. -LD_ARGV0=\"$0\" LD_ARGV0_REL=\"../bin/Xwayland.sh\" exec \"${basedir}/..#{PEER_CMD_PREFIX}\" --library-path \"${basedir}/../#{ARCH_LIB}\" --inhibit-rpath '' \"${base}.elf\" \"$@\" -EOF" end def self.install system "DESTDIR=#{CREW_DEST_DIR} ninja -C build install" - FileUtils.mv "#{CREW_DEST_PREFIX}/bin/Xwayland", "#{CREW_DEST_PREFIX}/bin/Xwayland.elf" - system "install -Dm755 Xwayland_sh #{CREW_DEST_PREFIX}/bin/Xwayland" # Get these from xorg_server package @deletefiles = %W[#{CREW_DEST_PREFIX}/bin/X #{CREW_DEST_MAN_PREFIX}/man1/Xserver.1] @deletefiles.each do |f|