ryanrudolfoba/SteamOS-Waydroid-Installer

Install script crashes and burns if run over SSH, reports success anyway

Closed this issue · 3 comments

The most annoying part is it reports it completed successfully, however no shortcuts have actually been added to game mode, and it finished much quicker than when I later tried it through Konsole so I suspect Android was never actually downloaded and installed either.

I ran the uninstall script which similarly had a ton of error messages, though I didn't capture that output as I did it on the Deck itself.

Ran the install script via Konsole on the Deck and that worked much better.

Would be nice if the install script worked over SSH, if possible.

At least the install script should do minimal error checking and bail with cleanup if something goes wrong, and never report success incorrectly. The current behavior is confusing and misleading.

SteamOS Waydroid Installer Script by ryanrudolf
https://github.com/ryanrudolfoba/SteamOS-Waydroid-Installer
Checking if kernel is supported.
6.1.52-valve9-1-neptune-61 is supported. Proceed to next step.
Please enter current sudo password:
Checking if the sudo password is correct.
Sudo password is good!
Cloning into '/home/deck/AUR/waydroid/waydroid_script'...
remote: Enumerating objects: 717, done.
remote: Counting objects: 100% (327/327), done.
remote: Compressing objects: 100% (129/129), done.
remote: Total 717 (delta 260), reused 237 (delta 198), pack-reused 390
Receiving objects: 100% (717/717), 21.74 MiB | 1.25 MiB/s, done.
Resolving deltas: 100% (438/438), done.
Warning: The rootfs is already read-write!
         Nothing is performed.
==> Appending keys from archlinux.gpg...
==> Appending keys from holo.gpg...
==> Locally signing trusted keys in keyring...
  -> Locally signed 10 keys.
==> Importing owner trust values...
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: inserting ownertrust of 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
==> Disabling revoked keys in keyring...
  -> Disabled 33 keys.
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:  11  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:  11  signed:  80  trust: 1-, 0q, 0n, 10m, 0f, 0u
gpg: depth: 2  valid:  58  signed:  23  trust: 58-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2024-04-10
pacman keyring has been initialized!
binder kernel module has been installed!
loading packages...
warning: wlroots-0.16.2-1 is up to date -- reinstalling
warning: dnsmasq-2.89-1 is up to date -- reinstalling
warning: lxc-1:5.0.2-1 is up to date -- reinstalling
warning: libglibutil-1.0.74-1 is up to date -- reinstalling
warning: libgbinder-1.1.35-1 is up to date -- reinstalling
warning: python-gbinder-1.1.2-1 is up to date -- reinstalling
warning: waydroid-1.4.2-1 is up to date -- reinstalling
resolving dependencies...
looking for conflicting packages...

Packages (9) colord-1.4.6-1  dnsmasq-2.89-1  libgbinder-1.1.35-1  libglibutil-1.0.74-1  lxc-1:5.0.2-1
             python-gbinder-1.1.2-1  waydroid-1.4.2-1  weston-12.0.1-1  wlroots-0.16.2-1

Total Download Size:    1.72 MiB
Total Installed Size:  43.88 MiB
Net Upgrade Size:      11.97 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages...
 colord-1.4.6-1-x86_64                      1757.1 KiB  1361 KiB/s 00:01 [########################################] 100%(9/9) checking keys in keyring                                           [########################################] 100%
(8/9) checking package integrity                                         [########################################] 100%
(8/9) loading package files                                              [########################################] 100%
(9/9) checking for file conflicts                                        [########################################] 100%
(9/9) checking available disk space                                      [########################################] 100%
:: Processing package changes...
(1/9) reinstalling wlroots                                               [########################################] 100%
(2/9) reinstalling dnsmasq                                               [########################################] 100%
(3/9) reinstalling lxc                                                   [########################################] 100%
(4/9) reinstalling libglibutil                                           [########################################] 100%
(5/9) reinstalling libgbinder                                            [########################################] 100%
(6/9) reinstalling python-gbinder                                        [########################################] 100%
(7/9) reinstalling waydroid                                              [########################################] 100%
(8/9) installing colord                                                  [########################################] 100%
Optional dependencies for colord
    argyllcms: color profiling
    colord-sane: SANE support
(9/9) installing weston                                                  [########################################] 100%
Optional dependencies for weston
    xorg-xwayland: support x11 backend [installed]
    libpipewire: support pipewire backend [installed]
    freerdp: support rdp backend [installed]
    neatvnc: support vnc backend
:: Running post-transaction hooks...
(1/9) Creating system user accounts...
Creating group 'colord' with GID 959.
Creating user 'colord' (Color management daemon) with UID 959 and GID 959.
(2/9) Reloading system manager configuration...
(3/9) Creating temporary files...
/usr/lib/tmpfiles.d/steamos.conf:6: Duplicate line for path "/root", ignoring.
/usr/lib/tmpfiles.d/steamos.conf:23: Duplicate line for path "/var/empty", ignoring.
/usr/lib/tmpfiles.d/tmp.conf:12: Duplicate line for path "/var/tmp", ignoring.
/usr/lib/tmpfiles.d/var.conf:19: Duplicate line for path "/var/cache", ignoring.
(4/9) Reloading device manager configuration...
(5/9) Arming ConditionNeedsUpdate...
(6/9) Reloading system bus configuration...
(7/9) Compiling GSettings XML schema files...
(8/9) Updating icon theme caches...
(9/9) Updating the desktop file MIME type cache...
waydroid and cage has been installed!
mkdir: cannot create directory ‘/var/lib/waydroid’: File exists
cp: cannot create regular file '/var/lib/waydroid/overlay/system/usr/keylayout/': No such file or directory
Config file missing. Lets configure waydroid.
ln: failed to create symbolic link '/var/lib/waydroid/images': No such file or directory
ln: failed to create symbolic link '/var/lib/waydroid/cache_http': No such file or directory
Run 'waydroid log' for details. Alternatively you can use '--details-to-stdout' to get more output, e.g. 'waydroid --details-to-stdout init'.
Collecting tqdm
  Downloading tqdm-4.66.1-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.3/78.3 kB 2.1 MB/s eta 0:00:00
Collecting requests
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 5.7 MB/s eta 0:00:00
Collecting InquirerPy
  Downloading InquirerPy-0.3.4-py3-none-any.whl (67 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.7/67.7 kB 3.7 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2
  Downloading charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.3/140.3 kB 1.6 MB/s eta 0:00:00
Collecting idna<4,>=2.5
  Downloading idna-3.6-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.6/61.6 kB 5.3 MB/s eta 0:00:00
Collecting urllib3<3,>=1.21.1
  Downloading urllib3-2.2.0-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.9/120.9 kB 2.2 MB/s eta 0:00:00
Collecting certifi>=2017.4.17
  Downloading certifi-2024.2.2-py3-none-any.whl (163 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 163.8/163.8 kB 2.2 MB/s eta 0:00:00
Collecting pfzy<0.4.0,>=0.3.1
  Downloading pfzy-0.3.4-py3-none-any.whl (8.5 kB)
Collecting prompt-toolkit<4.0.0,>=3.0.1
  Downloading prompt_toolkit-3.0.43-py3-none-any.whl (386 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 386.1/386.1 kB 1.9 MB/s eta 0:00:00
Collecting wcwidth
  Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Installing collected packages: wcwidth, urllib3, tqdm, prompt-toolkit, pfzy, idna, charset-normalizer, certifi, requests, InquirerPy
Successfully installed InquirerPy-0.3.4 certifi-2024.2.2 charset-normalizer-3.3.2 idna-3.6 pfzy-0.3.4 prompt-toolkit-3.0.43 requests-2.31.0 tqdm-4.66.1 urllib3-2.2.0 wcwidth-0.2.13

[notice] A new release of pip available: 22.3.1 -> 24.0
[notice] To update, run: python3 -m pip install --upgrade pip
ERROR: Cannot locate waydroid config file, reinit wayland and try again!
Error with casualsnek script.
tee: /var/lib/waydroid/waydroid_base.prop: No such file or directory
Adding shortcuts to game mode. Please wait.
Unsupported file type
Android_Waydroid_Cage.sh shortcut has been added to game mode.
Unsupported file type
Android_Waydroid_Weston.sh shortcut has been added to game mode.
Unsupported file type
steamos-nested-desktop shortcut has been added to game mode.
Waydroid has been successfully installed!

To be fair, the install instructions mentions to run it in desktop mode not via ssh. Alternatively you can run it in a virtual tty although it will fail to add the game mode shortcuts as Steam client wont launch without a GUI.

I've updated the github with the info regarding running the script on ssh or virtual tty sessions.
Script is a work in progress and I look for ways to improve it. I'll add more sanity checks in addition to the existing sanity checks. Thank you for your feedback.

updated the script thank you for your feedback!

added more sanity checks -
Exit immediately if not running on Desktop Mode. Script needs to be run in Desktop Mode as mentioned in README.
Perform cleanup when waydroid initialization fails and exit immediately.