mirror of
https://github.com/commaai/agnos-builder.git
synced 2026-07-24 08:12:04 +08:00
Remove Qt + weston (#502)
* bye bye * add libwayland-egl.so.1, libeglSubDriverWayland.so(.patched) back to agnos-display 0.0.2 * moved libffi6 to libs/ * revert deb for now, too hard to review --------- Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
This commit is contained in:
@@ -51,14 +51,6 @@ COPY ./userspace/compile-lpac.sh /tmp/agnos/
|
||||
RUN --mount=type=cache,target=/root/.ccache,id=lpac,sharing=shared \
|
||||
/tmp/agnos/compile-lpac.sh
|
||||
|
||||
# qtwayland5
|
||||
FROM agnos-compiler AS agnos-compiler-qtwayland5
|
||||
COPY ./userspace/qtwayland/*.deb /tmp/agnos/
|
||||
COPY ./userspace/compile-qtwayland5.sh /tmp/agnos/
|
||||
COPY ./userspace/qtwayland/patch* /tmp/agnos/
|
||||
RUN --mount=type=cache,target=/root/.ccache,id=qtwayland5,sharing=shared \
|
||||
/tmp/agnos/compile-qtwayland5.sh
|
||||
|
||||
# ################## #
|
||||
# ###### Base ###### #
|
||||
# ################## #
|
||||
@@ -87,15 +79,6 @@ RUN /tmp/agnos/openpilot_dependencies.sh
|
||||
COPY ./userspace/openpilot_python_dependencies.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/openpilot_python_dependencies.sh
|
||||
|
||||
# Install old Qt 5.12.8, libwayland 1.9.0-1 and deps
|
||||
COPY ./userspace/qtwayland/*.deb /tmp/agnos/
|
||||
RUN apt-get -o Dpkg::Options::="--force-overwrite" install -yq \
|
||||
/tmp/agnos/qt-5.12.8.deb \
|
||||
/tmp/agnos/libwayland-1.9.0-1.deb \
|
||||
/tmp/agnos/libicu66_66.1-2ubuntu2.1_arm64.deb \
|
||||
/tmp/agnos/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb \
|
||||
/tmp/agnos/libffi6_3.2.1-8_arm64.deb
|
||||
|
||||
# ################### #
|
||||
# ###### AGNOS ###### #
|
||||
# ################### #
|
||||
@@ -153,12 +136,6 @@ RUN source $XDG_DATA_HOME/venv/bin/activate && \
|
||||
COPY ./userspace/install_extras.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/install_extras.sh
|
||||
|
||||
COPY --from=agnos-compiler-qtwayland5 /tmp/qtwayland5.deb /tmp/qtwayland5.deb
|
||||
RUN cd /tmp && apt-get -o Dpkg::Options::="--force-overwrite" install -yq --allow-downgrades ./qtwayland5.deb
|
||||
|
||||
# Patched libeglSubDriverWayland with fixed nullptr deref in CommitBuffer
|
||||
COPY ./userspace/files/libeglSubDriverWayland.so.patched /lib/aarch64-linux-gnu/libeglSubDriverWayland.so
|
||||
|
||||
COPY ./userspace/home/ /home/$USERNAME/
|
||||
COPY ./userspace/home/.config/ /root/.config
|
||||
RUN chown -R $USERNAME: /home/$USERNAME/.config
|
||||
@@ -194,10 +171,6 @@ COPY ./userspace/libs32/* /usr/lib/arm-linux-gnueabihf/
|
||||
#COPY ./userspace/files/linux-headers-4.9.103+_4.9.103+-1_arm64.deb /tmp/
|
||||
#RUN dpkg -i /tmp/linux-headers-4.9.103+_4.9.103+-1_arm64.deb
|
||||
|
||||
# Weston with hacked touch rotate and color correction
|
||||
COPY ./userspace/files/weston /usr/bin/weston
|
||||
COPY ./userspace/files/gl-renderer.so /usr/lib/arm-linux-gnueabihf/weston
|
||||
|
||||
# Setup systemd services
|
||||
COPY ./userspace/services.sh /tmp/agnos
|
||||
RUN /tmp/agnos/services.sh
|
||||
@@ -226,9 +199,6 @@ COPY ./userspace/files/avahi-override.conf /etc/systemd/system/avahi-daemon.serv
|
||||
# Prevent polkitd memory leak from getting out of hand by restarting it every ~day
|
||||
COPY ./userspace/files/polkit-override.conf /etc/systemd/system/polkit.service.d/override.conf
|
||||
|
||||
# Remove qt network bearer plugins
|
||||
RUN rm -rf /usr/lib/aarch64-linux-gnu/qt5/plugins/bearer
|
||||
|
||||
# Add iptable rules to block incoming traffic on wwan0
|
||||
COPY ./userspace/etc/iptables/rules.v4 /etc/iptables/rules.v4
|
||||
|
||||
|
||||
@@ -87,4 +87,4 @@ Some concrete things on the roadmap:
|
||||
- [ ] mainline Linux kernel https://github.com/commaai/openpilot/issues/32386
|
||||
- [ ] fully open source
|
||||
- [ ] anything from `firmware/`: XBL, ABL, etc.
|
||||
- [ ] Weston https://github.com/commaai/agnos-builder/issues/16
|
||||
- [x] <s>Weston https://github.com/commaai/agnos-builder/issues/16</s> deleted!
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
usr/comma/wlan.ko filter=lfs diff=lfs merge=lfs -text
|
||||
usr/comma/wifi filter=lfs diff=lfs merge=lfs -text
|
||||
files/weston filter=lfs diff=lfs merge=lfs -text
|
||||
files/libeglSubDriverWayland.so.patched filter=lfs diff=lfs merge=lfs -text
|
||||
usr/comma/reset filter=lfs diff=lfs merge=lfs -text
|
||||
usr/comma/setup filter=lfs diff=lfs merge=lfs -text
|
||||
usr/comma/installer filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
VERSION=5.12.9
|
||||
|
||||
# Install build requirements
|
||||
dpkg --add-architecture armhf
|
||||
|
||||
apt-get update && apt-get install -yq --no-install-recommends \
|
||||
libc6:armhf \
|
||||
libdbus-1-3 \
|
||||
libegl-dev \
|
||||
libexpat1:armhf \
|
||||
libfontconfig-dev \
|
||||
libfreetype6 \
|
||||
libgles-dev \
|
||||
libglib2.0-dev \
|
||||
libharfbuzz-dev \
|
||||
libpcre2-dev \
|
||||
libwayland-dev \
|
||||
libxcomposite-dev \
|
||||
libxkbcommon-dev \
|
||||
zlib1g-dev
|
||||
|
||||
apt-get -o Dpkg::Options::="--force-overwrite" install -yq \
|
||||
/tmp/agnos/qt-5.12.8.deb \
|
||||
/tmp/agnos/libwayland-1.9.0-1.deb \
|
||||
/tmp/agnos/libicu66_66.1-2ubuntu2.1_arm64.deb \
|
||||
/tmp/agnos/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb \
|
||||
/tmp/agnos/libffi6_3.2.1-8_arm64.deb
|
||||
|
||||
# Patched qtwayland that outputs a fixed screen size
|
||||
# Clone qtwayland submodule, checkout, apply patch, qmake, make
|
||||
cd /tmp
|
||||
git clone --branch v${VERSION} --depth 1 https://github.com/qt/qtwayland.git
|
||||
cd qtwayland
|
||||
|
||||
git apply /tmp/agnos/patch-qtwayland-v5.12
|
||||
|
||||
# qtwayland is incorrectly built against libdl.so instead of libdl.so.2
|
||||
# https://stackoverflow.com/a/75855054/639708
|
||||
ln -s libdl.so.2 /usr/lib/aarch64-linux-gnu/libdl.so
|
||||
|
||||
qmake
|
||||
export MAKEFLAGS="-j$(nproc)"
|
||||
make
|
||||
|
||||
OUTPUT_DIR=/tmp/qtwayland5
|
||||
mkdir $OUTPUT_DIR
|
||||
make install INSTALL_ROOT=$OUTPUT_DIR
|
||||
|
||||
mkdir $OUTPUT_DIR/DEBIAN
|
||||
cat << EOF > $OUTPUT_DIR/DEBIAN/control
|
||||
Package: qtwayland5
|
||||
Version: ${VERSION}-1
|
||||
Architecture: all
|
||||
Maintainer: Andrei Radulescu <andi.radulescu@gmail.com>
|
||||
Replaces: qtwayland5, libqt5waylandclient5, libqt5waylandcompositor5
|
||||
Installed-Size: `du -s $OUTPUT_DIR | awk '{print $1}'`
|
||||
Homepage: https://comma.ai
|
||||
Description: Patched qtwayland that outputs a fixed screen size
|
||||
EOF
|
||||
|
||||
dpkg-deb --root-owner-group --build $OUTPUT_DIR /tmp/qtwayland5.deb
|
||||
@@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
#After=weston-ready.service
|
||||
#After=
|
||||
|
||||
[Service]
|
||||
#Type=simple
|
||||
@@ -10,7 +10,6 @@ Restart=no
|
||||
# exit if connected to 5V
|
||||
ExecStartPre=/bin/bash -c "if [ $(cat /sys/class/hwmon/hwmon1/in1_input) -le 6500 ]; then echo 'Exiting, connected to 5V'; exit 1; fi"
|
||||
|
||||
#ExecStart=/bin/bash -c "source /etc/profile && /usr/comma/tests/test_weston.py"
|
||||
ExecStart=/bin/bash -c "source /etc/profile && /usr/comma/tests/test_sounds.py"
|
||||
|
||||
[Install]
|
||||
|
||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:34b01105549bba97710ded5916a24a318d4b7dbe91fe4e617ca320a7d98f6a39
|
||||
size 197632
|
||||
@@ -26,9 +26,7 @@ if [ -d /etc/profile.d ]; then
|
||||
unset i
|
||||
fi
|
||||
|
||||
# display setup
|
||||
export XDG_RUNTIME_DIR="/var/tmp/weston"
|
||||
export QT_QPA_PLATFORM="wayland-egl"
|
||||
export XDG_RUNTIME_DIR="/var/tmp/xdg"
|
||||
|
||||
# python setup
|
||||
export PYTHONPATH="/data/pythonpath"
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7e38b2701eaa61471dfb2418b606846c0512afd90f67bfc0d65dcf5178fb51b8
|
||||
size 782832
|
||||
@@ -1,28 +0,0 @@
|
||||
[Unit]
|
||||
PartOf=weston.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
Restart=no
|
||||
Environment="XDG_RUNTIME_DIR=/var/tmp/weston"
|
||||
|
||||
ExecStart=/bin/echo "waiting for wayland socket"
|
||||
ExecStart=/bin/bash -c "while [ ! -e \"$XDG_RUNTIME_DIR/wayland-0\" ]; do sleep 0.1; done"
|
||||
|
||||
# still starting after socket comes up
|
||||
ExecStart=/bin/sleep 0.5
|
||||
|
||||
ExecStart=/bin/echo "fixing permissions"
|
||||
ExecStart=/bin/bash -c "chown -R comma: $XDG_RUNTIME_DIR"
|
||||
ExecStart=/bin/bash -c "chmod -R 700 $XDG_RUNTIME_DIR"
|
||||
|
||||
# these are set by udev rules, but udev is slow
|
||||
ExecStart=/bin/bash -c "chgrp gpu /dev/ion /dev/kgsl-3d0"
|
||||
ExecStart=/bin/bash -c "chmod 660 /dev/ion /dev/kgsl-3d0"
|
||||
|
||||
ExecStart=/bin/echo "turning on display"
|
||||
ExecStart=/bin/bash -c "echo 500 > /sys/class/backlight/panel0-backlight/brightness"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,31 +0,0 @@
|
||||
[Unit]
|
||||
Description=Weston
|
||||
Conflicts=getty@tty1.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=no
|
||||
KillSignal=SIGKILL
|
||||
Environment="XDG_RUNTIME_DIR=/var/tmp/weston"
|
||||
|
||||
UtmpIdentifier=tty1
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
|
||||
ExecStartPre=/bin/bash -c "/usr/local/venv/bin/python -c 'import fcntl; KDSETMODE = 0x4B3A; KD_TEXT = 0x00; fd = open(\"/dev/tty1\", \"w\"); fcntl.ioctl(fd, KDSETMODE, KD_TEXT); fd.close()'"
|
||||
ExecStartPre=/bin/bash -c "/usr/local/venv/bin/python -c 'from PIL import Image; img=Image.open(\"/usr/comma/bg.jpg\"); (img.rotate(180) if open(\"/sys/devices/platform/vendor/vendor:gpio-som-id/som_id\").read().strip() == \"1\" else img).save(\"/tmp/bg.jpg\")'"
|
||||
ExecStartPre=/bin/bash -c "mkdir -p $XDG_RUNTIME_DIR"
|
||||
ExecStartPre=/bin/bash -c "chown -R comma: $XDG_RUNTIME_DIR"
|
||||
ExecStartPre=/bin/bash -c "chmod -R 700 $XDG_RUNTIME_DIR"
|
||||
|
||||
ExecStartPre=/bin/bash -c "mkdir -p /data/misc/display || true"
|
||||
ExecStartPre=/bin/bash -c "echo 0 > /data/misc/display/sdm_dbg_cfg.txt || true"
|
||||
ExecStartPre=/bin/bash -c "echo 0 > /data/misc/display/gbm_dbg_cfg.txt || true"
|
||||
|
||||
ExecStartPre=/bin/chvt 1
|
||||
ExecStart=/usr/bin/weston --idle-time=0 --tty=1 --config=/usr/comma/weston.ini
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,3 +0,0 @@
|
||||
The Thundercomm version of Weston has a bug where it doesn't allow opening the input devices.
|
||||
This patch bypasses that.
|
||||
Source used to build: libinput commit f0997536a7a3e384bfe64b67c5c1f874656042c6
|
||||
@@ -1,97 +0,0 @@
|
||||
diff --git a/src/evdev.c b/src/evdev.c
|
||||
index c3c02d2a..ef773e6a 100644
|
||||
--- a/src/evdev.c
|
||||
+++ b/src/evdev.c
|
||||
@@ -1991,7 +1991,7 @@ evdev_notify_added_device(struct evdev_device *device)
|
||||
static bool
|
||||
evdev_device_have_same_syspath(struct udev_device *udev_device, int fd)
|
||||
{
|
||||
- struct udev *udev = udev_device_get_udev(udev_device);
|
||||
+ struct udev *udev = udev_device_get_udev(udev_device);
|
||||
struct udev_device *udev_device_new = NULL;
|
||||
struct stat st;
|
||||
bool rc = false;
|
||||
@@ -1999,9 +1999,13 @@ evdev_device_have_same_syspath(struct udev_device *udev_device, int fd)
|
||||
if (fstat(fd, &st) < 0)
|
||||
goto out;
|
||||
|
||||
+ printf("st_rdev: %d\n", st.st_rdev);
|
||||
udev_device_new = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
|
||||
if (!udev_device_new)
|
||||
goto out;
|
||||
+
|
||||
+ printf("same syspath: %s %s\n", udev_device_get_syspath(udev_device_new),
|
||||
+ udev_device_get_syspath(udev_device));
|
||||
|
||||
rc = streq(udev_device_get_syspath(udev_device_new),
|
||||
udev_device_get_syspath(udev_device));
|
||||
@@ -2174,6 +2178,8 @@ evdev_device_create(struct libinput_seat *seat,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+ log_error(libinput, "%s: evdev_device_create\n", sysname);
|
||||
+
|
||||
if (udev_device_should_be_ignored(udev_device)) {
|
||||
log_debug(libinput, "%s: device is ignored\n", sysname);
|
||||
return NULL;
|
||||
@@ -2182,7 +2188,8 @@ evdev_device_create(struct libinput_seat *seat,
|
||||
/* Use non-blocking mode so that we can loop on read on
|
||||
* evdev_device_data() until all events on the fd are
|
||||
* read. mtdev_get() also expects this. */
|
||||
- fd = open_restricted(libinput, devnode,
|
||||
+ //fd = open_restricted(libinput, devnode,
|
||||
+ fd = open(devnode,
|
||||
O_RDWR | O_NONBLOCK | O_CLOEXEC);
|
||||
if (fd < 0) {
|
||||
log_info(libinput,
|
||||
@@ -2193,8 +2200,11 @@ evdev_device_create(struct libinput_seat *seat,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (!evdev_device_have_same_syspath(udev_device, fd))
|
||||
+ printf("Opened fd: %d from devnode %s\n", fd, devnode);
|
||||
+ if (!evdev_device_have_same_syspath(udev_device, fd)){
|
||||
+ log_error(libinput, "%s: not same syspath\n", sysname);
|
||||
goto err;
|
||||
+ }
|
||||
|
||||
device = zalloc(sizeof *device);
|
||||
|
||||
@@ -2204,8 +2214,10 @@ evdev_device_create(struct libinput_seat *seat,
|
||||
evdev_drain_fd(fd);
|
||||
|
||||
rc = libevdev_new_from_fd(fd, &device->evdev);
|
||||
- if (rc != 0)
|
||||
+ if (rc != 0){
|
||||
+ log_error(libinput, "%s: new_from_fd failed\n", sysname);
|
||||
goto err;
|
||||
+ }
|
||||
|
||||
libevdev_set_clock_id(device->evdev, CLOCK_MONOTONIC);
|
||||
libevdev_set_device_log_function(device->evdev,
|
||||
@@ -2241,16 +2253,22 @@ evdev_device_create(struct libinput_seat *seat,
|
||||
evdev_pre_configure_model_quirks(device);
|
||||
|
||||
device->dispatch = evdev_configure_device(device);
|
||||
- if (device->dispatch == NULL || device->seat_caps == 0)
|
||||
+ if (device->dispatch == NULL || device->seat_caps == 0){
|
||||
+ log_error(libinput, "%s: device->dispatch or device->seat_caps %d failed\n", sysname, device->seat_caps);
|
||||
goto err;
|
||||
+ }
|
||||
|
||||
device->source =
|
||||
libinput_add_fd(libinput, fd, evdev_device_dispatch, device);
|
||||
- if (!device->source)
|
||||
+ if (!device->source){
|
||||
+ log_error(libinput, "%s: device->source failed\n", sysname);
|
||||
goto err;
|
||||
+ }
|
||||
|
||||
- if (!evdev_set_device_group(device, udev_device))
|
||||
+ if (!evdev_set_device_group(device, udev_device)){
|
||||
+ log_error(libinput, "%s: set device group failed\n", sysname);
|
||||
goto err;
|
||||
+ }
|
||||
|
||||
list_insert(seat->devices_list.prev, &device->base.link);
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
libffi.so.6.0.4
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,80 +0,0 @@
|
||||
# Ubuntu 24.04 + "old" weston
|
||||
|
||||
The following need to work together in Ubuntu 24.04 (noble):
|
||||
- "old" weston
|
||||
- libwayland
|
||||
- qtwayland
|
||||
- qt
|
||||
|
||||
The "old" weston is built with:
|
||||
- libwayland-dev_1.9.0-1
|
||||
- libwayland-server_1.9.0-1
|
||||
- libwayland-client_1.9.0-1
|
||||
- libwayland-cursor_1.9.0-1
|
||||
|
||||
These are roughly from Xenial (16.04 - https://launchpad.net/ubuntu/xenial/arm64/libwayland-dev/1.9.0-1).
|
||||
|
||||
In Ubuntu 20.04 (focal) even if libwayland is 1.18.0-1, the protocol between
|
||||
the server (1.9.0-1) and client (1.18.0-1) was still compatible. Unfortunately,
|
||||
this is not the case anymore in Ubuntu 24.04 (noble), where libwayland 1.22.0
|
||||
is not compatible anymore with 1.9.0.
|
||||
|
||||
Because of this:
|
||||
- libwayland-*_1.9.0-1 packages can't be installed anymore from noble, but a
|
||||
custom deb has been built (libwayland-1.9.0-1.deb) - this includes all
|
||||
libwayland packages in one package
|
||||
- libwayland has a dependency (libffi6)
|
||||
- libwayland-1.9.0-1.deb can be rebuilt with `build-libwayland-deb.sh`
|
||||
|
||||
Also, Qt 5.15 from Ubuntu 24.04 (noble) doesn't compile with these old
|
||||
dependencies, 5.12 being the last major being able to be compiled, so:
|
||||
- a custom qt-5.12.8.deb has been built, since qt from focal has a lot of
|
||||
dependencies not existing in Ubuntu 24.04 (noble)
|
||||
- qt has two non-qt related dependencies (libicu66, libssl1.1)
|
||||
- qt-5.12.8.deb can be rebuilt with `build-qt-deb.sh`
|
||||
|
||||
The dependencies for the two custom debs can be downloaded from Launchpad:
|
||||
```
|
||||
curl -LO https://launchpad.net/ubuntu/+archive/primary/+files/libffi6_3.2.1-8_arm64.deb
|
||||
curl -LO https://launchpad.net/ubuntu/+archive/primary/+files/libicu66_66.1-2ubuntu2.1_arm64.deb
|
||||
curl -LO https://launchpad.net/ubuntu/+archive/primary/+files/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb
|
||||
```
|
||||
\* libffi6_armhf is also needed, but already exits in libs32
|
||||
|
||||
# When updating weston & removing custom debs
|
||||
After removing qt-5.12.8.deb add these back:
|
||||
```
|
||||
libqt5opengl5-dev \
|
||||
libqt5sql5-sqlite \
|
||||
libqt5svg5-dev \
|
||||
libqt5multimedia5-plugins \
|
||||
qml-module-qtquick2 \
|
||||
qtbase5-dev \
|
||||
qtchooser \
|
||||
qt5-qmake \
|
||||
qtbase5-dev-tools \
|
||||
qtbase5-private-dev \
|
||||
qtdeclarative5-dev \
|
||||
qtdeclarative5-private-dev \
|
||||
qtlocation5-dev \
|
||||
qtmultimedia5-dev \
|
||||
qtpositioning5-dev \
|
||||
qtwayland5 \
|
||||
```
|
||||
|
||||
In case of uncertainty, qt5-default was a metapackage for:
|
||||
```
|
||||
qtbase5-dev
|
||||
qtchooser
|
||||
qt5-qmake
|
||||
qtbase5-dev-tools
|
||||
```
|
||||
More info: https://packages.ubuntu.com/focal/qt5-default
|
||||
|
||||
After removing libwayland-1.9.0-1.deb add these back:
|
||||
```
|
||||
libwayland-client0:armhf \
|
||||
libwayland-cursor0:armhf \
|
||||
libwayland-server0:armhf \
|
||||
libwayland-dev \
|
||||
```
|
||||
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
################################################################################
|
||||
# Custom libwayland is created by combining libwayland client0, cursor0, server0
|
||||
# and dev 1.9.0-1 from Ubuntu 16.04 (xenial) for both aarch64 and armhf, without
|
||||
# getting into dependency hell.
|
||||
################################################################################
|
||||
|
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
||||
TMP=$DIR/tmp
|
||||
TMP_SRC=$TMP/libwayland-src-debs
|
||||
|
||||
# Create a new folder `libwayland-1.9.0-1` and put the metadata in
|
||||
# `libwayland-1.9.0-1/DEBIAN/control`:
|
||||
|
||||
mkdir -p $TMP
|
||||
cd $TMP
|
||||
mkdir -p libwayland-1.9.0-1/DEBIAN
|
||||
|
||||
cat << EOF > libwayland-1.9.0-1/DEBIAN/control
|
||||
Package: libwayland-xenial
|
||||
Version: 1.9.0-1
|
||||
Architecture: all
|
||||
Maintainer: Andrei Radulescu andi.radulescu@gmail.com
|
||||
Depends: libc6 (>= 2.17), libexpat1 (>= 2.0.1), libffi6 (>= 3.2)
|
||||
Replaces: libwayland-dev, libwayland-client0, libwayland-cursor0, libwayland-server0
|
||||
Installed-Size: 0
|
||||
Homepage: https://comma.ai
|
||||
Description: libwayland client0, cursor0, server0 and dev 1.9.0-1 from Ubuntu Xenial
|
||||
EOF
|
||||
|
||||
# Download the official debs:
|
||||
mkdir -p $TMP_SRC
|
||||
cd $TMP_SRC
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-dev_1.9.0-1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-dev_1.9.0-1_armhf.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-client0_1.9.0-1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-client0_1.9.0-1_armhf.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-cursor0_1.9.0-1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-cursor0_1.9.0-1_armhf.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-server0_1.9.0-1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libwayland-server0_1.9.0-1_armhf.deb
|
||||
|
||||
# And unpack them:
|
||||
for deb in *.deb; do dpkg-deb -R "$deb" "${deb%.deb}"; done
|
||||
|
||||
# Copy all files in libwayland-1.9.0-1
|
||||
cd $TMP
|
||||
cp -a $TMP_SRC/*/usr libwayland-1.9.0-1
|
||||
|
||||
# Package the deb and clean up everything else
|
||||
dpkg-deb --root-owner-group --build "libwayland-1.9.0-1" "libwayland-1.9.0-1.deb"
|
||||
mv libwayland-1.9.0-1.deb $DIR
|
||||
rm -rf libwayland-1.9.0-1 $TMP_SRC
|
||||
@@ -1,95 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
################################################################################
|
||||
# Custom qt is created by combining qt packages from from Ubuntu 20.04 (focal)
|
||||
# without getting into dependency hell.
|
||||
################################################################################
|
||||
|
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
||||
TMP=$DIR/tmp
|
||||
TMP_SRC=$TMP/qt-src-debs
|
||||
|
||||
# Create a new folder `qt-5.12.8` and put the metadata in
|
||||
# `qt-5.12.8/DEBIAN/control`:
|
||||
|
||||
mkdir -p $TMP
|
||||
cd $TMP
|
||||
mkdir -p qt-5.12.8/DEBIAN
|
||||
|
||||
cat << EOF > qt-5.12.8/DEBIAN/control
|
||||
Package: qt-focal
|
||||
Version: 5.12.8
|
||||
Architecture: all
|
||||
Maintainer: Andrei Radulescu andi.radulescu@gmail.com
|
||||
Depends: libicu66 (>= 66.1-1~), libdouble-conversion3 (>= 2.0.0), libssl1.1
|
||||
Replaces: qtbase5-dev, qtchooser, qt5-qmake, qtbase5-dev-tools
|
||||
Installed-Size: 0
|
||||
Homepage: https://comma.ai
|
||||
Description: Qt 5.12.8 from Ubuntu 20.04
|
||||
EOF
|
||||
|
||||
# Download the official debs:
|
||||
mkdir -p $TMP_SRC
|
||||
cd $TMP_SRC
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtbase5-dev_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtbase5-dev-tools_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtbase5-private-dev_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qt5-qmake_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qt5-qmake-bin_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtdeclarative5-dev-tools_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5core5a_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5network5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5gui5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5dbus5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5concurrent5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5widgets5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5xml5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5opengl5-dev_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5opengl5_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5svg5-dev_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5svg5_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimedia5-plugins_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimedia5_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimediagsttools5_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimediawidgets5_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtdeclarative5-dev_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtdeclarative5-private-dev_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtlocation5-dev_5.12.8+dfsg-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5location5_5.12.8+dfsg-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5location5-plugins_5.12.8+dfsg-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5location5-plugin-mapboxgl_5.12.8+dfsg-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtmultimedia5-dev_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimedia5_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5multimediaquick5_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5waylandclient5_5.12.8-0ubuntu1_arm64.deb
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/libqt5waylandcompositor5_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtwayland5_5.12.8-0ubuntu1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qt5-default_5.12.8+dfsg-0ubuntu2.1_arm64.deb
|
||||
|
||||
curl -sSLO https://launchpad.net/ubuntu/+archive/primary/+files/qtchooser_66-2build1_arm64.deb
|
||||
|
||||
# And unpack them:
|
||||
for deb in *.deb; do dpkg-deb -R "$deb" "${deb%.deb}"; done
|
||||
|
||||
# Copy all files in qt-5.12.8
|
||||
cd $TMP
|
||||
cp -a $TMP_SRC/*/usr qt-5.12.8
|
||||
|
||||
# Package the deb and clean up everything else
|
||||
dpkg-deb --root-owner-group --build "qt-5.12.8" "qt-5.12.8.deb"
|
||||
mv qt-5.12.8.deb $DIR
|
||||
rm -rf qt-5.12.8 $TMP_SRC
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d0f8d2b7613167317ec4f9bf65125a2e13c5f357e5acb5cc1fa9ed488c3c88b0
|
||||
size 17016
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ccfbd8e68fadcf4cc3975cdae42d1786733963f75d0b180f96c13782e185635b
|
||||
size 8359564
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:36b33bc85a8c75d539f00dcda80cf9d618a0ee56aec46761347409caeebb9028
|
||||
size 1158832
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4b06c0ea60c33fb5bb2e16e0d340296dec22e178af5210b5405d7bf26e1c6527
|
||||
size 160312
|
||||
@@ -1,25 +0,0 @@
|
||||
diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
|
||||
index 1fe0125e..7899c94e 100644
|
||||
--- a/src/client/qwaylandscreen.cpp
|
||||
+++ b/src/client/qwaylandscreen.cpp
|
||||
@@ -94,6 +94,7 @@ QString QWaylandScreen::model() const
|
||||
|
||||
QRect QWaylandScreen::geometry() const
|
||||
{
|
||||
+ return QRect(0, 0, 2160, 1080);
|
||||
if (zxdg_output_v1::isInitialized()) {
|
||||
return mXdgGeometry;
|
||||
} else {
|
||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglclientbufferintegration.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglclientbufferintegration.cpp
|
||||
index 4b3a635c..d0e70f29 100644
|
||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglclientbufferintegration.cpp
|
||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglclientbufferintegration.cpp
|
||||
@@ -76,7 +76,7 @@ QWaylandEglClientBufferIntegration::~QWaylandEglClientBufferIntegration()
|
||||
|
||||
void QWaylandEglClientBufferIntegration::initialize(QWaylandDisplay *display)
|
||||
{
|
||||
- if (q_hasEglExtension(EGL_NO_DISPLAY, "EGL_EXT_platform_base")) {
|
||||
+ if (false && q_hasEglExtension(EGL_NO_DISPLAY, "EGL_EXT_platform_base")) {
|
||||
if (q_hasEglExtension(EGL_NO_DISPLAY, "EGL_KHR_platform_wayland") ||
|
||||
q_hasEglExtension(EGL_NO_DISPLAY, "EGL_EXT_platform_wayland") ||
|
||||
q_hasEglExtension(EGL_NO_DISPLAY, "EGL_MESA_platform_wayland")) {
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8f10abc73eafab7e1e26a912b0cd5eece3df708f94868cd37b5bb717c6003fac
|
||||
size 18782360
|
||||
@@ -95,7 +95,7 @@ def perform_controlled_shutdown():
|
||||
|
||||
# Kill services that draw a lot of power
|
||||
printk("Killing services")
|
||||
subprocess.call(["/usr/bin/systemctl", "kill", "--signal=9", "weston", "comma"])
|
||||
subprocess.call(["/usr/bin/systemctl", "kill", "--signal=9", "comma"])
|
||||
set_screen_power(False)
|
||||
|
||||
printk("Halt")
|
||||
|
||||
@@ -5,7 +5,6 @@ from tabulate import tabulate
|
||||
# serial with timestamps:
|
||||
# grabserial -d /dev/serial/by-id/usb-FTDI_FT230X* -t
|
||||
|
||||
# systemd-analyze critical-chain weston.service
|
||||
# systemd-analyze critical-chain comma.service
|
||||
|
||||
# boot chart:
|
||||
@@ -36,8 +35,6 @@ if __name__ == "__main__":
|
||||
ts['kernel'] = float(l[3][:-1])
|
||||
#ts['systemd'] = float(l[6][:-1])
|
||||
|
||||
# includes /sbin/init -> weston being ready to display stuff
|
||||
ts['weston'] = get_journal_time("Finished weston-ready.service") - tot_since_kern()
|
||||
ts['comma'] = get_journal_time("Starting comma.service") - tot_since_kern()
|
||||
|
||||
# print
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
def run(cmd):
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
|
||||
def timestamp_cmd(cmd):
|
||||
cnt = 0
|
||||
while True:
|
||||
cnt += 1
|
||||
print("try ", cnt)
|
||||
run("sudo chmod -R 700 /var/tmp/weston/")
|
||||
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
t = time.monotonic()
|
||||
time.sleep(0.5)
|
||||
r = proc.poll()
|
||||
if r is not None:
|
||||
continue
|
||||
break
|
||||
print("r", r)
|
||||
return t
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
run("sudo systemctl stop weston")
|
||||
run("sudo rm -rf /var/tmp/weston/wayland-0")
|
||||
time.sleep(0.5)
|
||||
#run("sudo systemctl restart weston-ready")
|
||||
|
||||
run("sudo systemctl restart weston --no-block")
|
||||
st = time.monotonic()
|
||||
#ts = defaultdict()
|
||||
|
||||
cnt = 0
|
||||
while not os.path.exists("/var/tmp/weston/wayland-0"):
|
||||
time.sleep(0.1)
|
||||
cnt += 1
|
||||
t = time.monotonic()
|
||||
print(f"- socket at {t - st:.2f}s")
|
||||
|
||||
t = timestamp_cmd('/usr/comma/setup')
|
||||
print(f"- setup works {t - st:.2f}s")
|
||||
|
||||
t = timestamp_cmd('cd /data/openpilot/selfdrive/ui/ && ./spinner')
|
||||
print(f"- spinner works {t - st:.2f}s")
|
||||
@@ -44,10 +44,6 @@ def test_wifi():
|
||||
networks = out.strip().splitlines()[1:]
|
||||
assert len(networks) > 5
|
||||
|
||||
def test_color_calibration():
|
||||
out = subprocess.check_output("journalctl -u weston", shell=True, encoding='utf8')
|
||||
assert out.count("Successfully setup color correction") == 3
|
||||
|
||||
def test_python_shims():
|
||||
subprocess.check_call("cd /data/openpilot && scons -h", shell=True, stdout=subprocess.DEVNULL)
|
||||
|
||||
@@ -64,7 +60,4 @@ def test_boot_time():
|
||||
a = out.splitlines()[0]
|
||||
print(out, a)
|
||||
|
||||
# check weston service
|
||||
|
||||
# check comma service
|
||||
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import time
|
||||
import hashlib
|
||||
import subprocess
|
||||
|
||||
"""
|
||||
journalctl -o short-monotonic -u weston -u weston-ready -u agnos-tests
|
||||
"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
socket_exists = os.path.exists("/var/tmp/weston/wayland-0")
|
||||
is_active = subprocess.check_output("systemctl is-active weston", shell=True, encoding='utf8').strip()
|
||||
|
||||
d = b""
|
||||
for fn in ('/lib/systemd/system/weston.service', '/lib/systemd/system/weston-ready.service'):
|
||||
with open(fn, 'rb') as f:
|
||||
d += f.read()
|
||||
h = hashlib.sha1(d).hexdigest()
|
||||
|
||||
# weston should be ready to go at this point
|
||||
cmd = '/usr/comma/setup'
|
||||
cmd = 'cd /data/openpilot/selfdrive/ui/ && ./ui'
|
||||
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
for i in range(10):
|
||||
r = proc.poll()
|
||||
if r is not None:
|
||||
break
|
||||
time.sleep(1)
|
||||
|
||||
rc = proc.returncode
|
||||
proc.kill()
|
||||
out, err = proc.stdout.read(), proc.stderr.read()
|
||||
|
||||
with open('/data/weston_log', 'a') as f:
|
||||
f.write(f"{is_active=}, {socket_exists=}, {rc=} / {h} / {cmd}\n")
|
||||
if rc is not None:
|
||||
f.write(f" stdout: {out}\n")
|
||||
f.write(f" stderr: {err}\n")
|
||||
os.sync()
|
||||
|
||||
os.system("sudo su -c 'tail /data/weston_log > /dev/console'")
|
||||
os.system("sudo su -c 'wc -l /data/weston_log > /dev/console'")
|
||||
|
||||
if rc is None:
|
||||
time.sleep(2)
|
||||
os.system("sudo reboot")
|
||||
@@ -1,4 +0,0 @@
|
||||
[shell]
|
||||
background-image=/tmp/bg.jpg
|
||||
background-type=scale-crop
|
||||
close-animation=none
|
||||
Reference in New Issue
Block a user