mirror of
https://git.yoctoproject.org/poky
synced 2026-04-26 18:32:13 +02:00
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:
committed by
Richard Purdie
parent
b224c4e152
commit
19cd7a1776
@@ -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 = []
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user