MULTILIBRE_ALLOW_REP = "${OPKGLIBDIR}/opkg"
-ipk_insert_feed_uris () {
-
- echo "Building from feeds activated!"
-
- for line in ${IPK_FEED_URIS}
- do
- # strip leading and trailing spaces/tabs, then split into name and uri
- line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`"
- feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`"
- feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`"
-
- echo "Added $feed_name feed with URL $feed_uri"
-
- # insert new feed-sources
- echo "src/gz $feed_name $feed_uri" >> ${IPKGCONF_TARGET}
- done
-
- # 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 [ -n "${FEED_DEPLOYDIR_BASE_URI}" ]; then
- for arch in ${PACKAGE_ARCHS}
- do
- echo "src/gz local-$arch ${FEED_DEPLOYDIR_BASE_URI}/$arch" >> ${IMAGE_ROOTFS}/etc/opkg/local-$arch-feed.conf
- done
- fi
-}
-
python () {
if d.getVar('BUILD_IMAGES_FROM_FEEDS', True):
flags = flags.replace("do_deploy", "")
flags = flags.replace("do_populate_sysroot", "")
d.setVarFlag('do_rootfs', 'recrdeptask', flags)
- d.setVar('OPKG_PREPROCESS_COMMANDS', "ipk_insert_feed_uris")
+ d.setVar('OPKG_PREPROCESS_COMMANDS', "")
d.setVar('OPKG_POSTPROCESS_COMMANDS', '')
}
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.
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
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()
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)