def _uninstall_uneeded(self): if base_contains("IMAGE_FEATURES", "package-management", True, False, self.d): return delayed_postinsts = self._get_delayed_postinsts() if delayed_postinsts is None: installed_pkgs_dir = self.d.expand('${WORKDIR}/installed_pkgs.txt') pkgs_to_remove = list() with open(installed_pkgs_dir, "r+") as installed_pkgs: pkgs_installed = installed_pkgs.read().split('\n') for pkg_installed in pkgs_installed[:]: pkg = pkg_installed.split()[0] if pkg in ["update-rc.d", "base-passwd", self.d.getVar("ROOTFS_BOOTSTRAP_INSTALL", True) ]: pkgs_to_remove.append(pkg) pkgs_installed.remove(pkg_installed) if len(pkgs_to_remove) > 0: self.pm.remove(pkgs_to_remove, False) # Update installed_pkgs.txt open(installed_pkgs_dir, "w+").write('\n'.join(pkgs_installed)) if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")): self._exec_shell_cmd(["update-rc.d", "-f", "-r", self.d.getVar('IMAGE_ROOTFS', True), "run-postinsts", "remove"]) else: self._save_postinsts() self.pm.remove_packaging_data()
def create(self): bb.note("###### Generate rootfs #######") pre_process_cmds = self.d.getVar("ROOTFS_PREPROCESS_COMMAND", True) post_process_cmds = self.d.getVar("ROOTFS_POSTPROCESS_COMMAND", True) intercepts_dir = os.path.join(self.d.getVar('WORKDIR', True), "intercept_scripts") bb.utils.remove(intercepts_dir, True) bb.utils.mkdirhier(self.image_rootfs) bb.utils.mkdirhier(self.deploy_dir_image) shutil.copytree( self.d.expand("${COREBASE}/scripts/postinst-intercepts"), intercepts_dir) shutil.copy( self.d.expand("${COREBASE}/meta/files/deploydir_readme.txt"), self.deploy_dir_image + "/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt") execute_pre_post_process(self.d, pre_process_cmds) # call the package manager dependent create method self._create() sysconfdir = self.image_rootfs + self.d.getVar('sysconfdir', True) bb.utils.mkdirhier(sysconfdir) with open(sysconfdir + "/version", "w+") as ver: ver.write(self.d.getVar('BUILDNAME', True) + "\n") self._run_intercepts() execute_pre_post_process(self.d, post_process_cmds) if base_contains("IMAGE_FEATURES", "read-only-rootfs", True, False, self.d): delayed_postinsts = self._get_delayed_postinsts() if delayed_postinsts is not None: bb.fatal("The following packages could not be configured" "offline and rootfs is read-only: %s" % delayed_postinsts) if self.d.getVar('USE_DEVFS', True) != "1": self._create_devfs() self._uninstall_uneeded() self._insert_feed_uris() self._run_ldconfig() self._generate_kernel_module_deps() self._cleanup()
def create(self): bb.note("###### Generate rootfs #######") pre_process_cmds = self.d.getVar("ROOTFS_PREPROCESS_COMMAND", True) post_process_cmds = self.d.getVar("ROOTFS_POSTPROCESS_COMMAND", True) intercepts_dir = os.path.join(self.d.getVar('WORKDIR', True), "intercept_scripts") bb.utils.remove(intercepts_dir, True) bb.utils.mkdirhier(self.image_rootfs) bb.utils.mkdirhier(self.deploy_dir_image) shutil.copytree(self.d.expand("${COREBASE}/scripts/postinst-intercepts"), intercepts_dir) shutil.copy(self.d.expand("${COREBASE}/meta/files/deploydir_readme.txt"), self.deploy_dir_image + "/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt") execute_pre_post_process(self.d, pre_process_cmds) # call the package manager dependent create method self._create() sysconfdir = self.image_rootfs + self.d.getVar('sysconfdir', True) bb.utils.mkdirhier(sysconfdir) with open(sysconfdir + "/version", "w+") as ver: ver.write(self.d.getVar('BUILDNAME', True) + "\n") self._run_intercepts() execute_pre_post_process(self.d, post_process_cmds) if base_contains("IMAGE_FEATURES", "read-only-rootfs", True, False, self.d): delayed_postinsts = self._get_delayed_postinsts() if delayed_postinsts is not None: bb.fatal("The following packages could not be configured" "offline and rootfs is read-only: %s" % delayed_postinsts) if self.d.getVar('USE_DEVFS', True) != "1": self._create_devfs() self._uninstall_uneeded() self._insert_feed_uris() self._run_ldconfig() self._generate_kernel_module_deps() self._cleanup()
def _insert_feed_uris(self): if base_contains("IMAGE_FEATURES", "package-management", True, False, self.d): self.pm.insert_feeds_uris()