Sync the install root before saving it.
authorwanchao-xu <wanchao.xu@samsung.com>
Fri, 6 Sep 2024 05:41:17 +0000 (13:41 +0800)
committerwanchao-xu <wanchao.xu@samsung.com>
Fri, 6 Sep 2024 05:41:17 +0000 (13:41 +0800)
  * Install root is mounted to loop device, some files may be missed before sync.

Change-Id: I87f687fecdfab5cdf674b92aa17d141f3425f436
Signed-off-by: wanchao-xu <wanchao.xu@samsung.com>
mic/imager/loop.py
plugins/backend/zypppkgmgr.py

index f732e8bb2d40f84e613d65ee53da301b610d2625..c924160fb3fdc7a4c9a6c94377fb594f03612b41 100644 (file)
@@ -368,6 +368,7 @@ class LoopImageCreator(BaseImageCreator):
                 os.unlink(cachedir)
 
         try:
+            runner.quiet('sync')
             shutil.copytree(self._imgdir, cachedir)
         except (OSError, IOError) as e:
             shutil.rmtree(cachedir, ignore_errors=True)
index 6a1e788248388a908e6dea154c0b0f9cf5f9f32b..97f245c20338188dbf015e6f57be38f84407c3b9 100644 (file)
@@ -1024,6 +1024,45 @@ if [ -f /usr/bin/install_preload_pkg ]; then
       pkgcmd -l --global 1>&2
     fi
   fi
+
+  PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+  _ro_packages_dir="/usr/share/packages"
+  _rw_packages_dir="/opt/share/packages"
+  _skel_dir="/etc/skel/apps_rw"
+  _subdir_list="$(dir $_skel_dir)"
+
+  for entry in "$_ro_packages_dir"/*.xml; do
+    if [ -f "$entry" ]; then
+      chsmack -a "System" $entry
+    fi
+  done
+
+  for entry in "$_rw_packages_dir"/*.xml; do
+    if [ -f "$entry" ]; then
+      chsmack -a "System" $entry
+    fi
+  done
+
+  for entry in $_subdir_list; do
+    _bin_symlink="$_skel_dir/$entry/bin"
+    _lib_symlink="$_skel_dir/$entry/lib"
+    _res_symlink="$_skel_dir/$entry/res"
+    _shared_res_symlink="$_skel_dir/$entry/shared/res"
+    _target_list="$_bin_symlink $_lib_symlink $_res_symlink $_shared_res_symlink"
+
+    for sub_entry in $_target_list; do
+      if [ -h "$sub_entry" ]; then
+        chsmack -a "User::Home" $sub_entry
+      fi
+    done
+
+    for sub_entry in "$_skel_dir/$entry"/*.xml; do
+      if [ -h "$sub_entry" ]; then
+        chsmack -a "User::Home" $sub_entry
+      fi
+    done
+  done
 else
   echo 'pkgmgr-tool is not installed'
 fi