diff options
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oe/package_manager.py | 47 | ||||
-rw-r--r-- | meta/lib/oe/rootfs.py | 5 | ||||
-rw-r--r-- | meta/lib/oe/sdk.py | 4 |
3 files changed, 51 insertions, 5 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py index 969292c093..d3e8a0885b 100644 --- a/meta/lib/oe/package_manager.py +++ b/meta/lib/oe/package_manager.py @@ -805,7 +805,10 @@ class OpkgPM(PackageManager): bb.utils.mkdirhier(self.opkg_dir) - self._create_config() + if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS', True) or "") != "1": + self._create_config() + else: + self._create_custom_config() """ This function will change a package's status in /var/lib/opkg/status file. @@ -835,6 +838,45 @@ class OpkgPM(PackageManager): os.rename(status_file + ".tmp", status_file) + def _create_custom_config(self): + bb.note("Building from feeds activated!") + + with open(self.config_file, "w+") as config_file: + priority = 1 + for arch in self.pkg_archs.split(): + config_file.write("arch %s %d\n" % (arch, priority)) + priority += 5 + + for line in (self.d.getVar('IPK_FEED_URIS', True) or "").split(): + feed_match = re.match("^[ \t]*(.*)##([^ \t]*)[ \t]*$", line) + + if feed_match is not None: + feed_name = feed_match.group(1) + feed_uri = feed_match.group(2) + + bb.note("Add %s feed with URL %s" % (feed_name, feed_uri)) + + config_file.write("src/gz %s %s\n" % (feed_name, feed_uri)) + + """ + Allow to use package deploy directory contents as quick devel-testing + feed. This creates individual feed configs for each arch subdir of those + specified as compatible for the current machine. + NOTE: Development-helper feature, NOT a full-fledged feed. + """ + if (self.d.getVar('FEED_DEPLOYDIR_BASE_URI', True) or "") != "": + for arch in self.pkg_archs.split(): + cfg_file_name = os.path.join(self.target_rootfs, + self.d.getVar("sysconfdir", True), + "opkg", + "local-%s-feed.conf" % arch) + + with open(cfg_file_name, "w+") as cfg_file: + cfg_file.write("src/gz local-%s %s/%s" % + arch, + self.d.getVar('FEED_DEPLOYDIR_BASE_URI', True), + arch) + def _create_config(self): with open(self.config_file, "w+") as config_file: priority = 1 @@ -847,7 +889,8 @@ class OpkgPM(PackageManager): for arch in self.pkg_archs.split(): pkgs_dir = os.path.join(self.deploy_dir, arch) if os.path.isdir(pkgs_dir): - config_file.write("src oe-%s file:%s\n" % (arch, pkgs_dir)) + config_file.write("src oe-%s file:%s\n" % + (arch, pkgs_dir)) def update(self): self.deploy_dir_lock() diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py index 95c275875f..7455a865a4 100644 --- a/meta/lib/oe/rootfs.py +++ b/meta/lib/oe/rootfs.py @@ -534,8 +534,9 @@ class OpkgRootfs(Rootfs): opkg_post_process_cmds = self.d.getVar('OPKG_POSTPROCESS_COMMANDS', True) rootfs_post_install_cmds = self.d.getVar('ROOTFS_POSTINSTALL_COMMAND', True) - # update PM index files - self.pm.write_index() + # update PM index files, unless users provide their own feeds + if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS', True) or "") != "1": + self.pm.write_index() execute_pre_post_process(self.d, opkg_pre_process_cmds) diff --git a/meta/lib/oe/sdk.py b/meta/lib/oe/sdk.py index b54e51697c..518076e75d 100644 --- a/meta/lib/oe/sdk.py +++ b/meta/lib/oe/sdk.py @@ -216,7 +216,9 @@ class OpkgSdk(Sdk): def _populate_sysroot(self, pm, manifest): pkgs_to_install = manifest.parse_initial_manifest() - pm.write_index() + if (self.d.getVar('BUILD_IMAGES_FROM_FEEDS', True) or "") != "1": + pm.write_index() + pm.update() for pkg_type in self.install_order: |