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
This commit is contained in:
Satadru Pramanik
2022-03-03 11:34:34 -05:00
committed by GitHub
parent 89c798a6fd
commit eb9e778dcc
4 changed files with 69 additions and 93 deletions

View File

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

View File

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

View File

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

View File

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