ben-grande / qusal

Salt Formulas for Qubes OS.
14 stars 6 forks source link

Updating qusal components fails #50

Closed tlaurion closed 2 months ago

tlaurion commented 2 months ago

Commitment

I confirm that I have read the following resources:

Software version

Here is my current update script.

Brief summary

Here is my update script while imperfect (i see qusal hardcoded... Should be rewritten to abstract, half baked I know, should probably show all commits and maybe even changes related for review prior of acceptance by end-user; as of now its middle ground)

$ cat ./qusal-dom0_update.sh 
qube="qusal" # qube name where you downloaded the repository
file="/home/user/qusal" # path to the repository in the qube

echo "-----"
echo "Legend:"
echo " locality (qube/dom0): action performed"
echo "-----"

echo "dom0: Cleaning local dirs..."
rm -rf "/home/user/QubesIncoming/${qube}"
mkdir -p "/home/user/QubesIncoming/${qube}"

echo "$qube: Fetching updates from GitHub..."
qvm-run --pass-io qusal "git -C /home/user/qusal fetch"

echo "$qube: Getting the hash of the current HEAD..."
current_head=$(qvm-run --pass-io qusal "git -C /home/user/qusal rev-parse HEAD")

echo "$qube: Getting the hash of the upstream HEAD..."
upstream_head=$(qvm-run --pass-io qusal "git -C /home/user/qusal rev-parse @{u}")

if [ "$current_head" == "$upstream_head" ]; then
    echo "$qube: Your qusal repository is already up to date."
else
    echo "$qube: Showing commit logs between current version and upstream..."
    qvm-run --pass-io qusal "git -C /home/user/qusal log --oneline ${current_head}..${upstream_head}"

    read -p "Review the commit logs above. If you are sure you want to update to the upstream version, press Y: " -n 1 -r
    echo    # (optional) move to a new line
   if [[ $REPLY =~ ^[Yy]$ ]]
    then
        echo "$qube: Updating qusal code from GitHub..."
        qvm-run --pass-io qusal "git -C /home/user/qusal merge @{u}"
    else
        echo "Update aborted by user."
        exit 1
    fi
fi

echo "dom0: Overwriting qusal's code with $qube's current codebase..."
qvm-run --pass-io --localcmd="UPDATES_MAX_FILES=10000 \
  /usr/libexec/qubes/qfile-dom0-unpacker user \
  ~/QubesIncoming/${qube}" \
  "${qube}" /usr/lib/qubes/qfile-agent "${file}"

echo "dom0: Deploying qusal salt recipes to dom0 salt dirs..."
/home/user/QubesIncoming/qusal/qusal/scripts/setup.sh

echo "dom0: Shutting down $qube qube..."
qvm-shutdown --wait qusal

echo "Done!"

It's output:

(130)$ ./qusal-dom0_update.sh 
-----
Legend:
 locality (qube/dom0): action performed
-----
dom0: Cleaning local dirs...
qusal: Fetching updates from GitHub...
From https://github.com/ben-grande/qusal
   ec7f62f..5722a25  main       -> origin/main
Fetching submodule salt/dotfiles
From https://github.com/ben-grande/dotfiles
   d3222aa..84bae87  main       -> origin/main
qusal: Getting the hash of the current HEAD...
qusal: Getting the hash of the upstream HEAD...
qusal: Showing commit logs between current version and upstream...
5722a25 fix: discover non-root username at runtime
e84959b fix: update fedora mirror list with upstream
760fdd9 doc: cacher documentation duplicates sections
bfd7b22 fix: incorrect path to repo rewriter service
234afc3 doc: update cacher table of contents
1ede2e1 fix: allow update check to work on cacher clients
a6f7d23 doc: wrong cacher header position
648bdad fix: remove updatevm tag after DomU uninstallation
7ec71cc feat: bump Mirage Firewall version
69745df fix: update dotfiles module
Review the commit logs above. If you are sure you want to update to the upstream version, press Y: Y
qusal: Updating qusal code from GitHub...
Updating ec7f62f..5722a25
Fast-forward
 salt/dom0/dotfiles.sls                             |   8 +-
 salt/dom0/files/autostart/xprofile.desktop         |   4 +-
 salt/dom0/gui-user.jinja                           |   9 +
 salt/dom0/kde.sls                                  |  12 +-
 salt/dom0/screenshot.sls                           |   8 +-
 salt/dotfiles                                      |   2 +-
 salt/sys-cacher/README.md                          |  48 +--
 salt/sys-cacher/deinit.top                         |   6 +-
 .../sys-cacher/files/client/bin/apt-cacher-ng-repo | 328 +++++++++++++++++----
 .../systemd/qubes-apt-cacher-ng-repo.service       |  15 +
 salt/sys-cacher/files/server/conf/acng.conf        |   2 +-
 .../sys-cacher/files/server/mirrors/fedora_mirrors |  46 ++-
 salt/sys-cacher/install-client.sls                 |  30 +-
 salt/sys-cacher/uninstall-client.sls               |   8 +-
 salt/sys-cacher/uninstall-client.top               |   2 +-
 salt/sys-mirage-firewall/create.sls                |   4 +-
 salt/utils/macros/sync-appmenus.sls                |   5 +-
 17 files changed, 415 insertions(+), 122 deletions(-)
 create mode 100644 salt/dom0/gui-user.jinja
 create mode 100644 salt/sys-cacher/files/client/systemd/qubes-apt-cacher-ng-repo.service
dom0: Overwriting qusal's code with qusal's current codebase...

dom0: Deploying qusal salt recipes to dom0 salt dirs...
dom0: Shutting down qusal qube...
Done!

So we understand that sys-cacher and dom0 were updated between said used versions.

Steps to reproduce

Look above.

Now. sys-cacher updated properly doing

$ sudo qubesctl top.enable sys-cacher browser
sudo qubesctl --targets=tpl-browser,sys-cacher-browser,tpl-sys-cacher,sys-cacher state.apply
sudo qubesctl top.disable sys-cacher browser
sudo qubesctl state.apply sys-cacher.appmenus,sys-cacher.tag
sudo qubesctl --skip-dom0 --targets="$(qvm-ls --no-spinner --raw-list --tags updatevm-sys-cacher | tr "\n" ",")" state.apply sys-cacher.install-client
local:
    ----------
    sys-cacher.top:
        ----------
        status:
            enabled
    browser.top:
        ----------
        status:
            enabled
local:
----------
          ID: debian-12-minimal-template-installed
    Function: qvm.template_installed
        Name: debian-12-minimal
      Result: True
     Comment: Template debian-12-minimal version 4.2.0 already installed
     Started: 18:43:33.954340
    Duration: 476.514 ms
     Changes:   
----------
          ID: dvm-debian-12-minimal-absent
    Function: qvm.absent
        Name: debian-minimal-dvm
      Result: True
     Comment: [SKIP] The VM with the name 'debian-minimal-dvm' is already missing. None
     Started: 18:43:34.430978
    Duration: 376.019 ms
     Changes:   
----------
          ID: dvm-debian-12-minimal-absent
    Function: qvm.absent
        Name: debian-12-minimal-dvm
      Result: True
     Comment: [SKIP] The VM with the name 'debian-12-minimal-dvm' is already missing. None
     Started: 18:43:34.807439
    Duration: 278.915 ms
     Changes:   
----------
          ID: debian-12-minimal
    Function: qvm.vm
      Result: True
     Comment: ====== ['present'] ======
              [SKIP] A VM with the name 'debian-12-minimal' already exists.

              ====== ['prefs'] ======
              [SKIP] audiovm            : None
              [SKIP] label              : black
              [SKIP] include_in_backups : False
              [SKIP] maxmem             : 600
              [SKIP] memory             : 300
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: SET 'menu-items' = qubes-open-file-manager.desktop qubes-run-terminal.desktop qubes-start.desktop
              [SKIP] Feature already in desired state: SET 'default-menu-items' = qubes-open-file-manager.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:35.087021
    Duration: 395.299 ms
     Changes:   
----------
          ID: dvm-debian-minimal
    Function: qvm.vm
      Result: True
     Comment: ====== ['present'] ======
              [SKIP] A VM with the name 'dvm-debian-minimal' already exists.

              ====== ['prefs'] ======
              [SKIP] audiovm            : None
              [SKIP] template_for_dispvms: True
              [SKIP] label              : red
              [SKIP] include_in_backups : False
              [SKIP] maxmem             : 400
              [SKIP] memory             : 300
              [SKIP] template           : debian-12-minimal
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: ENABLE 'appmenus-dispvm' = Enabled
              [SKIP] Feature already in desired state: SET 'menu-items' = qubes-open-file-manager.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:35.482830
    Duration: 379.892 ms
     Changes:   
----------
          ID: debian-minimal-set-default_template
    Function: cmd.run
        Name: qubes-prefs default_template debian-12-minimal
      Result: True
     Comment: Command "qubes-prefs default_template debian-12-minimal" run
     Started: 18:43:35.875445
    Duration: 459.336 ms
     Changes:   
              ----------
              pid:
                  44121
              retcode:
                  0
              stderr:
              stdout:
----------
          ID: tpl-browser-clone
    Function: qvm.clone
        Name: tpl-browser
      Result: True
     Comment: [SKIP] A VM with the name 'tpl-browser' already exists. None
     Started: 18:43:36.335046
    Duration: 309.819 ms
     Changes:   
----------
          ID: tpl-browser
    Function: qvm.vm
      Result: True
     Comment: ====== ['prefs'] ======
              [SKIP] audiovm            : None
              [SKIP] maxmem             : 2000
              [SKIP] memory             : 300

              ====== ['features'] ======
              [SKIP] Feature already in desired state: SET 'default-menu-items' = firefox-esr.desktop chromium.desktop google-chrome.desktop qubes-run-terminal.desktop qubes-start.desktop
              [SKIP] Feature already in desired state: SET 'menu-items' = firefox-esr.desktop chromium.desktop google-chrome.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:36.645616
    Duration: 119.326 ms
     Changes:   
----------
          ID: dvm-browser
    Function: qvm.vm
      Result: True
     Comment: ====== ['present'] ======
              [SKIP] A VM with the name 'dvm-browser' already exists.

              ====== ['prefs'] ======
              [SKIP] audiovm            : *default*
              [SKIP] template_for_dispvms: True
              [SKIP] label              : red
              [SKIP] include_in_backups : False
              [SKIP] maxmem             : 2000
              [SKIP] memory             : 300
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: ENABLE 'appmenus-dispvm' = Enabled
              [SKIP] Feature already in desired state: ENABLE 'service.qubes-ctap-proxy' = Enabled
              [SKIP] Feature already in desired state: DISABLE 'service.tracker' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.evolution-data-server' = Disabled
              [SKIP] Feature already in desired state: SET 'menu-items' = firefox-esr.desktop chromium.desktop google-chrome.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:36.765129
    Duration: 362.039 ms
     Changes:   
----------
          ID: tpl-sys-cacher-clone
    Function: qvm.clone
        Name: tpl-sys-cacher
      Result: True
     Comment: [SKIP] A VM with the name 'tpl-sys-cacher' already exists. None
     Started: 18:43:37.127488
    Duration: 298.403 ms
     Changes:   
----------
          ID: tpl-sys-cacher
    Function: qvm.vm
      Result: True
     Comment: ====== ['prefs'] ======
              [SKIP] autostart          : False
              [SKIP] audiovm            : None
              [SKIP] include_in_backups : False
              [SKIP] maxmem             : 500
              [SKIP] memory             : 300
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: DISABLE 'service.cups' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.cups-browsed' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.tracker' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.evolution-data-server' = Disabled
              [SKIP] Feature already in desired state: SET 'menu-items' = cacher-browser.desktop qubes-run-terminal.desktop qubes-start.desktop
              [SKIP] Feature already in desired state: SET 'default-menu-items' = cacher-browser.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:37.426503
    Duration: 109.341 ms
     Changes:   
----------
          ID: sys-cacher
    Function: qvm.vm
      Result: True
     Comment: ====== ['present'] ======
              [SKIP] A VM with the name 'sys-cacher' already exists.

              ====== ['prefs'] ======
              [SKIP] autostart          : False
              [SKIP] audiovm            : None
              [SKIP] label              : gray
              [SKIP] include_in_backups : True
              [SKIP] maxmem             : 0
              [SKIP] memory             : 500
              [SKIP] provides_network   : True
              [SKIP] template           : tpl-sys-cacher
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: ENABLE 'servicevm' = Enabled
              [SKIP] Feature already in desired state: ENABLE 'service.crond' = Enabled
              [SKIP] Feature already in desired state: DISABLE 'service.cups' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.cups-browsed' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.tinyproxy' = Disabled
              [SKIP] Feature already in desired state: SET 'menu-items' = cacher-browser.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:37.536063
    Duration: 903.523 ms
     Changes:   
              ----------
              qvm.features:
                  ----------
                  qvm.features:
                      ----------
                      service.meminfo-writer:
                          ----------
                          new:
                          old:
                              None
----------
          ID: sys-cacher-browser
    Function: qvm.vm
      Result: True
     Comment: ====== ['present'] ======
              [SKIP] A VM with the name 'sys-cacher-browser' already exists.

              ====== ['prefs'] ======
              [SKIP] autostart          : False
              [SKIP] audiovm            : None
              [SKIP] label              : gray
              [SKIP] include_in_backups : False
              [SKIP] maxmem             : 500
              [SKIP] memory             : 300
              [SKIP] netvm              : None
              [SKIP] template           : tpl-browser
              [SKIP] vcpus              : 1

              ====== ['features'] ======
              [SKIP] Feature already in desired state: DISABLE 'service.cups' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.cups-browsed' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.tracker' = Disabled
              [SKIP] Feature already in desired state: DISABLE 'service.evolution-data-server' = Disabled
              [SKIP] Feature already in desired state: SET 'menu-items' = cacher-browser.desktop qubes-run-terminal.desktop qubes-start.desktop
     Started: 18:43:38.440090
    Duration: 402.462 ms
     Changes:   
----------
          ID: sys-cacher-absent-rpc-policy
    Function: file.absent
        Name: /etc/qubes/policy.d/75-sys-cacher.policy
      Result: True
     Comment: File /etc/qubes/policy.d/75-sys-cacher.policy is not present
     Started: 18:43:38.857606
    Duration: 0.847 ms
     Changes:   
----------
          ID: sys-cacher-set-rpc-policy
    Function: file.managed
        Name: /etc/qubes/policy.d/45-sys-cacher.policy
      Result: True
     Comment: File /etc/qubes/policy.d/45-sys-cacher.policy is in the correct state
     Started: 18:43:38.858552
    Duration: 16.063 ms
     Changes:   
----------
          ID: sys-cacher-extend-volume
    Function: cmd.run
        Name: qvm-volume extend sys-cacher:private 20Gi
      Result: True
     Comment: Command "qvm-volume extend sys-cacher:private 20Gi" run
     Started: 18:43:38.874837
    Duration: 711.622 ms
     Changes:   
              ----------
              pid:
                  44357
              retcode:
                  0
              stderr:
              stdout:

Summary for local
-------------
Succeeded: 16 (changed=3)
Failed:     0
-------------
Total states run:     16
Total run time:    5.599 s
tpl-sys-cacher: OK
tpl-browser: OK
sys-cacher: OK
sys-cacher-browser: OK
local:
    ----------
    disabled:
        - sys-cacher.top
        - browser.top
    unchanged:
        - sys-cacher.top
        - browser.top
local:
----------
          ID: tpl-browser-start
    Function: qvm.start
        Name: tpl-browser
      Result: True
     Comment: qvm.state running
              Running None
     Started: 18:46:24.381322
    Duration: 9103.121 ms
     Changes:   
----------
          ID: tpl-browser-sync-appmenus
    Function: cmd.run
        Name: qvm-sync-appmenus tpl-browser
      Result: True
     Comment: Command "qvm-sync-appmenus tpl-browser" run
     Started: 18:46:33.487436
    Duration: 3805.185 ms
     Changes:   
              ----------
              pid:
                  60803
              retcode:
                  0
              stderr:
                  tpl-browser: Updating qubes-run-terminal
                  tpl-browser: Updating thunar-settings
                  tpl-browser: Updating qubes-open-file-manager
                  tpl-browser: Updating chromium
                  tpl-browser: Updating debian-xterm
                  tpl-browser: Updating vim
                  tpl-browser: Updating qvm-open-in-dvm
                  tpl-browser: Updating debian-uxterm
                  tpl-browser: Updating thunar
                  tpl-browser: Updating thunar-bulk-rename
                  tpl-browser: Creating appmenus
                  dvm-browser: Creating appmenus
                  sys-cacher-browser: Creating appmenus
                  sys-syncthing-browser: Creating appmenus
              stdout:
----------
          ID: tpl-browser-shutdown
    Function: qvm.shutdown
        Name: tpl-browser
      Result: True
     Comment: qvm.state halted
              Halted None
     Started: 18:46:37.294296
    Duration: 14362.81 ms
     Changes:   
----------
          ID: tpl-sys-cacher-start
    Function: qvm.start
        Name: tpl-sys-cacher
      Result: True
     Comment: qvm.state running
              Running None
     Started: 18:46:51.657806
    Duration: 7903.502 ms
     Changes:   
----------
          ID: tpl-sys-cacher-sync-appmenus
    Function: cmd.run
        Name: qvm-sync-appmenus tpl-sys-cacher
      Result: True
     Comment: Command "qvm-sync-appmenus tpl-sys-cacher" run
     Started: 18:46:59.562564
    Duration: 1708.123 ms
     Changes:   
              ----------
              pid:
                  62980
              retcode:
                  0
              stderr:
                  tpl-sys-cacher: Updating qubes-run-terminal
                  tpl-sys-cacher: Failed to get icon for qubes-run-terminal: No icon received
                  tpl-sys-cacher: Updating cacher-browser-general
                  tpl-sys-cacher: Failed to get icon for cacher-browser-general: No icon received
                  tpl-sys-cacher: Updating qubes-open-file-manager
                  tpl-sys-cacher: Failed to get icon for qubes-open-file-manager: No icon received
                  tpl-sys-cacher: Updating debian-xterm
                  tpl-sys-cacher: Failed to get icon for debian-xterm: No icon received
                  tpl-sys-cacher: Updating vim
                  tpl-sys-cacher: Failed to get icon for vim: No icon received
                  tpl-sys-cacher: Updating cacher-browser
                  tpl-sys-cacher: Failed to get icon for cacher-browser: No icon received
                  tpl-sys-cacher: Updating qvm-open-in-dvm
                  tpl-sys-cacher: Updating debian-uxterm
                  tpl-sys-cacher: Failed to get icon for debian-uxterm: No icon received
                  tpl-sys-cacher: Creating appmenus
                  sys-cacher: Creating appmenus
              stdout:
----------
          ID: tpl-sys-cacher-shutdown
    Function: qvm.shutdown
        Name: tpl-sys-cacher
      Result: True
     Comment: qvm.state halted
              Halted None
     Started: 18:47:01.272864
    Duration: 17185.429 ms
     Changes:   
----------
          ID: sys-cacher-browser-start
    Function: qvm.start
        Name: sys-cacher-browser
      Result: True
     Comment: qvm.state running
              Running None
     Started: 18:47:18.458921
    Duration: 8639.711 ms
     Changes:   
----------
          ID: sys-cacher-browser-sync-appmenus
    Function: cmd.run
        Name: qvm-sync-appmenus sys-cacher-browser
      Result: True
     Comment: Command "qvm-sync-appmenus sys-cacher-browser" run
     Started: 18:47:27.099941
    Duration: 1504.698 ms
     Changes:   
              ----------
              pid:
                  65134
              retcode:
                  0
              stderr:
                  sys-cacher-browser: Updating cacher-browser
                  sys-cacher-browser: Creating appmenus
              stdout:
----------
          ID: sys-cacher-browser-shutdown
    Function: qvm.shutdown
        Name: sys-cacher-browser
      Result: True
     Comment: qvm.state halted
              Halted None
     Started: 18:47:28.606212
    Duration: 11305.691 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-deb-11-heads
    Function: qvm.tags
        Name: deb-11-heads
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:39.912467
    Duration: 511.224 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-deb-12-xfce-spotify
    Function: qvm.tags
        Name: deb-12-xfce-spotify
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:40.423867
    Duration: 480.065 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-deb12_no_gnat-heads-docker
    Function: qvm.tags
        Name: deb12_no_gnat-heads-docker
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,restore_incomplete,updatevm-sys-cacher None
     Started: 18:47:40.904126
    Duration: 470.261 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-deb12_with_gnat-heads-docker
    Function: qvm.tags
        Name: deb12_with_gnat-heads-docker
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,restore_incomplete,updatevm-sys-cacher None
     Started: 18:47:41.374544
    Duration: 464.405 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-11
    Function: qvm.tags
        Name: debian-11
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:41.839125
    Duration: 508.531 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-12-extrepo-heads
    Function: qvm.tags
        Name: debian-12-extrepo-heads
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,restore_incomplete,updatevm-sys-cacher None
     Started: 18:47:42.347840
    Duration: 461.917 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-12-minimal
    Function: qvm.tags
        Name: debian-12-minimal
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:42.809961
    Duration: 508.813 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-12-xfce
    Function: qvm.tags
        Name: debian-12-xfce
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:43.318956
    Duration: 455.483 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-12-xfce-vpn
    Function: qvm.tags
        Name: debian-12-xfce-vpn
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:43.774589
    Duration: 410.651 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-debian-luban3d
    Function: qvm.tags
        Name: debian-luban3d
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,audiovm-dom0,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:44.185390
    Duration: 464.602 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-f37-builder
    Function: qvm.tags
        Name: f37-builder
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:44.650240
    Duration: 473.729 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-fedora-37
    Function: qvm.tags
        Name: fedora-37
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:45.124141
    Duration: 492.338 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-fedora-37-xfce-printer
    Function: qvm.tags
        Name: fedora-37-xfce-printer
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:45.616632
    Duration: 449.277 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-fedora-38-xfce
    Function: qvm.tags
        Name: fedora-38-xfce
      Result: True
     Comment: [SKIP] All requested tags already set: audiovm-disp-sys-audio,created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:46.066028
    Duration: 364.792 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-fedora-39
    Function: qvm.tags
        Name: fedora-39
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:46.430940
    Duration: 452.162 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-fedora-39-minimal
    Function: qvm.tags
        Name: fedora-39-minimal
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:46.883202
    Duration: 454.85 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-browser
    Function: qvm.tags
        Name: tpl-browser
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:47.338151
    Duration: 441.128 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-dev
    Function: qvm.tags
        Name: tpl-dev
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:47.779391
    Duration: 403.484 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-fetcher
    Function: qvm.tags
        Name: tpl-fetcher
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:48.183049
    Duration: 416.162 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-media
    Function: qvm.tags
        Name: tpl-media
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:48.599356
    Duration: 491.642 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-mgmt
    Function: qvm.tags
        Name: tpl-mgmt
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:49.091170
    Duration: 389.864 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-qubes-builder
    Function: qvm.tags
        Name: tpl-qubes-builder
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:49.481173
    Duration: 339.315 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-reader
    Function: qvm.tags
        Name: tpl-reader
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:49.820616
    Duration: 386.967 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-sys-audio
    Function: qvm.tags
        Name: tpl-sys-audio
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:50.207741
    Duration: 379.25 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-sys-cacher
    Function: qvm.tags
        Name: tpl-sys-cacher
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:50.587131
    Duration: 442.62 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-sys-git
    Function: qvm.tags
        Name: tpl-sys-git
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:51.029880
    Duration: 444.179 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-sys-pgp
    Function: qvm.tags
        Name: tpl-sys-pgp
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:51.474202
    Duration: 474.598 ms
     Changes:   
----------
          ID: sys-cacher-tag-for-tpl-sys-syncthing
    Function: qvm.tags
        Name: tpl-sys-syncthing
      Result: True
     Comment: [SKIP] All requested tags already set: created-by-dom0,guivm-dom0,updatevm-sys-cacher None
     Started: 18:47:51.948966
    Duration: 464.37 ms
     Changes:   

Summary for local
-------------
Succeeded: 37 (changed=3)
Failed:     0
-------------
Total states run:     37
Total run time:   88.015 s
deb12_with_gnat-heads-docker: OK
deb-12-xfce-spotify: OK
deb-11-heads: OK
deb12_no_gnat-heads-docker: OK
debian-11: OK
debian-12-extrepo-heads: OK
debian-12-minimal: OK
debian-12-xfce: OK
debian-12-xfce-vpn: OK
fedora-37: OK
f37-builder: OK
debian-luban3d: OK
fedora-38-xfce: OK
fedora-39-minimal: OK
fedora-37-xfce-printer: OK
fedora-39: OK
tpl-fetcher: OK
tpl-browser: OK
tpl-media: OK
tpl-dev: OK
tpl-mgmt: OK
tpl-qubes-builder: OK
tpl-reader: OK
tpl-sys-audio: OK
tpl-sys-cacher: OK
tpl-sys-git: OK
tpl-sys-syncthing: OK
tpl-sys-pgp: OK
wyng-wdcloud: OK
heads-tests-deb12: OK

But dom0 failed

[user@dom0 ~]
$ sudo qubesctl top.enable dom0
sudo qubesctl state.apply
sudo qubesctl top.disable dom0
local:
    ----------
    dom0.top:
        ----------
        status:
            enabled
[ERROR   ] Rendering exception occurred
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/salt/utils/templates.py", line 476, in render_jinja_tmpl
    output = template.render(**decoded_context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/jinja2/environment.py", line 1291, in render
    self.environment.handle_exception()
  File "/usr/lib/python3.11/site-packages/jinja2/environment.py", line 925, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 53, in top-level template code
  File "/usr/lib/python3.11/site-packages/jinja2/sandbox.py", line 326, in getattr
    value = getattr(obj, attribute)
            ^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'gui_user' is undefined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/salt/utils/templates.py", line 218, in render_tmpl
    output = render_str(tmplstr, context, tmplpath)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/salt/utils/templates.py", line 482, in render_jinja_tmpl
    raise SaltRenderError("Jinja variable {}{}".format(exc, out), line, tmplstr)
salt.exceptions.SaltRenderError: Jinja variable 'gui_user' is undefined; line 53

---
[...]
    - require:
      - cmd: {{ slsdotpath }}-disable-lightdm

"{{ slsdotpath }}-activity-notifier":
  file.managed:
    - name: {{ gui_user.gui_user_home }}/.config/autostart-scripts/kde-activity-changed-notifier    <======================
    - source: salt://{{ slsdotpath }}/files/autostart-scripts/kde-activity-changed-notifier
    - user: {{ gui_user.gui_user }}
    - group: {{ gui_user.gui_user }}
    - mode: '0755'
    - makedirs: True
[...]
---
[CRITICAL] Rendering SLS 'base:dom0.kde' failed: Jinja variable 'gui_user' is undefined; line 53

---
[...]
    - require:
      - cmd: {{ slsdotpath }}-disable-lightdm

"{{ slsdotpath }}-activity-notifier":
  file.managed:
    - name: {{ gui_user.gui_user_home }}/.config/autostart-scripts/kde-activity-changed-notifier    <======================
    - source: salt://{{ slsdotpath }}/files/autostart-scripts/kde-activity-changed-notifier
    - user: {{ gui_user.gui_user }}
    - group: {{ gui_user.gui_user }}
    - mode: '0755'
    - makedirs: True
[...]
---
local:
    Data failed to compile:
----------
    Rendering SLS 'base:dom0.kde' failed: Jinja variable 'gui_user' is undefined; line 53

---
[...]
    - require:
      - cmd: {{ slsdotpath }}-disable-lightdm

"{{ slsdotpath }}-activity-notifier":
  file.managed:
    - name: {{ gui_user.gui_user_home }}/.config/autostart-scripts/kde-activity-changed-notifier    <======================
    - source: salt://{{ slsdotpath }}/files/autostart-scripts/kde-activity-changed-notifier
    - user: {{ gui_user.gui_user }}
    - group: {{ gui_user.gui_user }}
    - mode: '0755'
    - makedirs: True
[...]
---
DOM0 configuration failed, not continuing
local:
    ----------
    disabled:
        - dom0.top
    unchanged:
        - dom0.top
[user@dom0 ~]

Expected behavior

Success updating components.

Actual behavior

dom0 salt deployment on update failed.