No reboot after RW Update if there is A/B Update 92/265792/3
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>
Thu, 28 Oct 2021 15:08:40 +0000 (17:08 +0200)
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>
Fri, 5 Nov 2021 10:51:21 +0000 (11:51 +0100)
Change-Id: Ic2fa8cd56972b5c3676ebd6294bedf2eab5a8720

packaging/system-rw-update.spec
units/update-post.service [new file with mode: 0644]
upgrade/update-post.sh [new file with mode: 0755]
upgrade/update.sh.in

index aa184e26e7d80daaaab3e0a035c7efa325c64468..4ede81a85dd406281fb4419c8b50c01dfcdb977c 100644 (file)
@@ -44,6 +44,7 @@ cp upgrade/rw-update-macro.inc %{buildroot}%{upgrade_dir}
 cp upgrade/update-init.sh %{buildroot}%{upgrade_dir}
 cp upgrade/update.sh %{buildroot}%{upgrade_dir}
 cp upgrade/update-checkpoint-create.sh %{buildroot}%{upgrade_dir}
+cp upgrade/update-post.sh %{buildroot}%{upgrade_dir}
 mkdir -p %{buildroot}%{_unitdir}/system-update.target.wants
 install -m 644 units/offline-update.service %{buildroot}%{_unitdir}
 ln -s ../offline-update.service %{buildroot}%{_unitdir}/system-update.target.wants/
@@ -66,6 +67,10 @@ ln -s ../data-checkpoint.target %{buildroot}%{_unitdir}/system-update.target.wan
 mkdir -p %{buildroot}%{_unitdir}/data-checkpoint.target.wants
 ln -s ../data-checkpoint.service %{buildroot}%{_unitdir}/data-checkpoint.target.wants/data-checkpoint.service
 
+# RW-Update finalize
+install -m 644 units/update-post.service %{buildroot}%{_unitdir}
+ln -s ../update-post.service %{buildroot}%{_unitdir}/system-update.target.wants
+
 %clean
 rm -rf %{buildroot}
 
@@ -82,6 +87,7 @@ fi
 %license LICENSE.Apache-2.0
 %TZ_SYS_UPGRADE/*
 %{_unitdir}/offline-update.service
+%{_unitdir}/update-post.service
 %{_unitdir}/system-update.target.wants
 %{_unitdir}/udev-sdb-init.service
 %{_unitdir}/udev-trigger-dmbow@.service
diff --git a/units/update-post.service b/units/update-post.service
new file mode 100644 (file)
index 0000000..1c9ee29
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=RW Update finalization
+DefaultDependencies=no
+Wants=offline-update.service
+After=offline-update.service
+IgnoreOnIsolate=true
+
+[Service]
+Type=oneshot
+SmackProcessLabel=System::Privileged
+ExecStart=/usr/share/upgrade/update-post.sh
+
diff --git a/upgrade/update-post.sh b/upgrade/update-post.sh
new file mode 100755 (executable)
index 0000000..8f454c7
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+if [[ $(</proc/cmdline) =~ partition_ab= ]]
+then
+    systemctl isolate default.target
+else
+    reboot -f
+fi
+
index 4fc63a64f381b8c979d41d548d81398f984f671e..1277e48979095868bde0045641fd159bdca1d875 100755 (executable)
@@ -204,9 +204,10 @@ if [ -e ${SDB_RULE} ]; then
        rm ${SDB_RULE}
 fi
 
+rm /opt/.do_rw_update
+
 /bin/sync
 NOTIFY "----------------------------------------------------------------------"
 
 COMMIT_CHANGES
-#Reboot
-reboot -f
+#Reboot by update-finalize.service