try:
self.installPkgs(dlpkgs)
+ if update_only:
+ self.installPreloadPkg()
except (RepoError, RpmError):
raise
except Exception as e:
self.show_unresolved_dependencies_msg(unresolved_dependencies)
raise RepoError("Unresolved dependencies, transaction failed.")
+ def installPreloadPkg(self):
+ def mychroot():
+ os.chroot(self.instroot)
+ os.chdir("/")
+
+ script = """#!/bin/bash
+if [ -f /usr/bin/install_preload_pkg ]; then
+ install_preload_pkg
+ if [ -f /tmp/.preload_install_error ]; then
+ if [ ! -d /tmp/.postscript/error ]; then
+ mkdir -p /tmp/.postscript/error
+ fi
+ echo 'preload install failed' > /tmp/.postscript/error/%{name}_error
+ else
+ if [ -f /usr/bin/pkgcmd ]; then
+ pkgcmd -l --global 1>&2
+ fi
+ fi
+else
+ echo 'pkgmgr-tool is not installed'
+fi
+exit 0
+"""
+ if os.path.exists(self.instroot + "/tmp"):
+ shutil.rmtree(self.instroot + "/tmp")
+ os.mkdir(self.instroot + "/tmp", 0o755)
+ (fd, path) = tempfile.mkstemp(prefix="install_preload_pkg-",
+ dir=self.instroot + "/tmp")
+ os.write(fd, script.encode())
+ os.close(fd)
+ os.chmod(path, 0o700)
+
+ try:
+ script_path = "/tmp/" + os.path.basename(path)
+ p = subprocess.Popen(['/bin/bash', script_path],
+ preexec_fn=mychroot,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ while p.poll() == None:
+ msger.info(p.stdout.readline().strip().decode())
+ if p.returncode != 0:
+ raise CreatorError("Failed to install preload packages")
+ except OSError as msg:
+ raise CreatorError("Failed to install preload packages : %s" % msg)
+ finally:
+ os.unlink(path)
+
def uninstallPkgs(self, package_objects):
def mychroot():
os.chroot(self.instroot)