package_manager.py: move postinst_intercept dir initialization from RootFS to PackageManager class

This will allow handling postinst_intercepts when populating SDKs (which
use PackageManager class directly, and do not utilize RootFS class).

(From OE-Core rev: 9454fd328040fd58c981d028a74fcf181bde8e89)

Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin
2018-04-03 18:45:19 +03:00
committed by Richard Purdie
parent b224c4e152
commit 19cd7a1776
2 changed files with 20 additions and 18 deletions

View File

@@ -12,6 +12,7 @@ import oe.utils
import oe.path
import string
from oe.gpg_sign import get_signer
import hashlib
# this can be used by all PM backends to create the index files in parallel
def create_index(arg):
@@ -331,6 +332,21 @@ class PackageManager(object, metaclass=ABCMeta):
self.target_rootfs = target_rootfs
self.deploy_dir = None
self.deploy_lock = None
self._initialize_intercepts()
def _initialize_intercepts(self):
bb.note("Initializing intercept dir for %s" % self.target_rootfs)
postinst_intercepts_dir = self.d.getVar("POSTINST_INTERCEPTS_DIR")
if not postinst_intercepts_dir:
postinst_intercepts_dir = self.d.expand("${COREBASE}/scripts/postinst-intercepts")
# As there might be more than one instance of PackageManager operating at the same time
# we need to isolate the intercept_scripts directories from each other,
# hence the ugly hash digest in dir name.
self.intercepts_dir = os.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts-%s" %(hashlib.sha256(self.target_rootfs.encode()).hexdigest()) )
bb.utils.remove(self.intercepts_dir, True)
shutil.copytree(postinst_intercepts_dir, self.intercepts_dir)
@abstractmethod
def update(self):
@@ -699,8 +715,7 @@ class RpmPM(PackageManager):
os.environ['OFFLINE_ROOT'] = self.target_rootfs
os.environ['IPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['OPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['INTERCEPT_DIR'] = oe.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts")
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
@@ -1178,8 +1193,7 @@ class OpkgPM(OpkgDpkgPM):
os.environ['OFFLINE_ROOT'] = self.target_rootfs
os.environ['IPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['OPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['INTERCEPT_DIR'] = os.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts")
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
try:
@@ -1440,8 +1454,7 @@ class DpkgPM(OpkgDpkgPM):
os.environ['OFFLINE_ROOT'] = self.target_rootfs
os.environ['IPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['OPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['INTERCEPT_DIR'] = os.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts")
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
os.environ['NATIVE_ROOT'] = self.d.getVar('STAGING_DIR_NATIVE')
failed_pkgs = []

View File

@@ -178,20 +178,10 @@ class Rootfs(object, metaclass=ABCMeta):
post_process_cmds = self.d.getVar("ROOTFS_POSTPROCESS_COMMAND")
rootfs_post_install_cmds = self.d.getVar('ROOTFS_POSTINSTALL_COMMAND')
postinst_intercepts_dir = self.d.getVar("POSTINST_INTERCEPTS_DIR")
if not postinst_intercepts_dir:
postinst_intercepts_dir = self.d.expand("${COREBASE}/scripts/postinst-intercepts")
intercepts_dir = os.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts")
bb.utils.remove(intercepts_dir, True)
bb.utils.mkdirhier(self.image_rootfs)
bb.utils.mkdirhier(self.deploydir)
shutil.copytree(postinst_intercepts_dir, intercepts_dir)
execute_pre_post_process(self.d, pre_process_cmds)
if self.progress_reporter:
@@ -312,8 +302,7 @@ class Rootfs(object, metaclass=ABCMeta):
def _run_intercepts(self):
intercepts_dir = os.path.join(self.d.getVar('WORKDIR'),
"intercept_scripts")
intercepts_dir = self.pm.intercepts_dir
bb.note("Running intercept scripts:")
os.environ['D'] = self.image_rootfs