diff options
Diffstat (limited to 'meta/classes/package_ipk.bbclass')
| -rw-r--r-- | meta/classes/package_ipk.bbclass | 352 |
1 files changed, 251 insertions, 101 deletions
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass index 1aa2c814b..73ec0ee14 100644 --- a/meta/classes/package_ipk.bbclass +++ b/meta/classes/package_ipk.bbclass @@ -2,22 +2,25 @@ inherit package IMAGE_PKGTYPE ?= "ipk" -IPKGCONF_TARGET = "${STAGING_ETCDIR_NATIVE}/opkg.conf" -IPKGCONF_SDK = "${STAGING_ETCDIR_NATIVE}/opkg-sdk.conf" +IPKGCONF_TARGET = "${WORKDIR}/opkg.conf" +IPKGCONF_SDK = "${WORKDIR}/opkg-sdk.conf" + +PKGWRITEDIRIPK = "${WORKDIR}/deploy-ipks" + +# Program to be used to build opkg packages +OPKGBUILDCMD ??= "opkg-build" python package_ipk_fn () { - from bb import data - bb.data.setVar('PKGFN', bb.data.getVar('PKG',d), d) + d.setVar('PKGFN', d.getVar('PKG')) } python package_ipk_install () { - import os, sys - pkg = bb.data.getVar('PKG', d, 1) - pkgfn = bb.data.getVar('PKGFN', d, 1) - rootfs = bb.data.getVar('IMAGE_ROOTFS', d, 1) - ipkdir = bb.data.getVar('DEPLOY_DIR_IPK', d, 1) - stagingdir = bb.data.getVar('STAGING_DIR', d, 1) - tmpdir = bb.data.getVar('TMPDIR', d, 1) + pkg = d.getVar('PKG', True) + pkgfn = d.getVar('PKGFN', True) + rootfs = d.getVar('IMAGE_ROOTFS', True) + ipkdir = d.getVar('DEPLOY_DIR_IPK', True) + stagingdir = d.getVar('STAGING_DIR', True) + tmpdir = d.getVar('TMPDIR', True) if None in (pkg,pkgfn,rootfs): raise bb.build.FuncFailed("missing variables (one or more of PKG, PKGFN, IMAGEROOTFS)") @@ -25,6 +28,7 @@ python package_ipk_install () { bb.mkdirhier(rootfs) os.chdir(rootfs) except OSError: + import sys (type, value, traceback) = sys.exc_info() print value raise bb.build.FuncFailed @@ -32,7 +36,7 @@ python package_ipk_install () { # Generate ipk.conf if it or the stamp doesnt exist conffile = os.path.join(stagingdir,"ipkg.conf") if not os.access(conffile, os.R_OK): - ipkg_archs = bb.data.getVar('PACKAGE_ARCHS',d) + ipkg_archs = d.getVar('PACKAGE_ARCHS') if ipkg_archs is None: bb.error("PACKAGE_ARCHS missing") raise FuncFailed @@ -47,8 +51,7 @@ python package_ipk_install () { f.close() - if (not os.access(os.path.join(ipkdir,"Packages"), os.R_OK) or - not os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"),os.R_OK): + if not os.access(os.path.join(ipkdir,"Packages"), os.R_OK) or not os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"),os.R_OK): ret = os.system('opkg-make-index -p %s %s ' % (os.path.join(ipkdir, "Packages"), ipkdir)) if (ret != 0 ): raise bb.build.FuncFailed @@ -61,29 +64,157 @@ python package_ipk_install () { raise bb.build.FuncFailed } +package_tryout_install_multilib_ipk() { + #try install multilib + multilib_tryout_dirs="" + for item in ${MULTILIB_VARIANTS}; do + local target_rootfs="${MULTILIB_TEMP_ROOTFS}/${item}" + local ipkg_args="-f ${INSTALL_CONF_IPK} -o ${target_rootfs} --force_overwrite" + local selected_pkg="" + local pkgname_prefix="${item}-" + local pkgname_len=${#pkgname_prefix} + for pkg in ${INSTALL_PACKAGES_MULTILIB_IPK}; do + local pkgname=$(echo $pkg | awk -v var=$pkgname_len '{ pkgname=substr($1, 1, var); print pkgname; }' ) + if [ ${pkgname} = ${pkgname_prefix} ]; then + selected_pkg="${selected_pkg} ${pkg}" + fi + done + if [ ! -z "${selected_pkg}" ]; then + rm -f ${target_rootfs} + mkdir -p ${target_rootfs}/${opkglibdir} + opkg-cl ${ipkg_args} update + opkg-cl ${ipkg_args} install ${selected_pkg} + multilib_tryout_dirs="${multilib_tryout_dirs} ${target_rootfs}" + fi + done +} + +split_multilib_packages() { + INSTALL_PACKAGES_NORMAL_IPK="" + INSTALL_PACKAGES_MULTILIB_IPK="" + for pkg in ${INSTALL_PACKAGES_IPK}; do + is_multilib=0 + for item in ${MULTILIB_VARIANTS}; do + local pkgname_prefix="${item}-" + local pkgname_len=${#pkgname_prefix} + local pkgname=$(echo $pkg | awk -v var=$pkgname_len '{ pkgname=substr($1, 1, var); print pkgname; }' ) + if [ ${pkgname} = ${pkgname_prefix} ]; then + is_multilib=1 + break + fi + done + + if [ ${is_multilib} = 0 ]; then + INSTALL_PACKAGES_NORMAL_IPK="${INSTALL_PACKAGES_NORMAL_IPK} ${pkg}" + else + INSTALL_PACKAGES_MULTILIB_IPK="${INSTALL_PACKAGES_MULTILIB_IPK} ${pkg}" + fi + done +} + +# +# install a bunch of packages using opkg +# the following shell variables needs to be set before calling this func: +# INSTALL_ROOTFS_IPK - install root dir +# INSTALL_CONF_IPK - configuration file +# INSTALL_PACKAGES_IPK - packages to be installed +# INSTALL_PACKAGES_ATTEMPTONLY_IPK - packages attemped to be installed only +# INSTALL_PACKAGES_LINGUAS_IPK - additional packages for uclibc +# INSTALL_TASK_IPK - task name + +package_install_internal_ipk() { + + local target_rootfs="${INSTALL_ROOTFS_IPK}" + local conffile="${INSTALL_CONF_IPK}" + local package_attemptonly="${INSTALL_PACKAGES_ATTEMPTONLY_IPK}" + local package_linguas="${INSTALL_PACKAGES_LINGUAS_IPK}" + local task="${INSTALL_TASK_IPK}" + + split_multilib_packages + + local package_to_install="${INSTALL_PACKAGES_NORMAL_IPK}" + local package_multilib="${INSTALL_PACKAGES_MULTILIB_IPK}" + + mkdir -p ${target_rootfs}${localstatedir}/lib/opkg/ + + local ipkg_args="-f ${conffile} -o ${target_rootfs} --force-overwrite --force_postinstall" + + opkg-cl ${ipkg_args} update + + # Uclibc builds don't provide this stuff... + if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then + if [ ! -z "${package_linguas}" ]; then + for i in ${package_linguas}; do + opkg-cl ${ipkg_args} install $i + done + fi + fi + + if [ ! -z "${package_to_install}" ]; then + opkg-cl ${ipkg_args} install ${package_to_install} + fi + + if [ ! -z "${package_attemptonly}" ]; then + opkg-cl ${ipkg_args} install ${package_attemptonly} > "${WORKDIR}/temp/log.do_${task}_attemptonly.${PID}" || true + fi + + package_tryout_install_multilib_ipk + if [ ! -z "${MULTILIB_CHECK_FILE}" ]; then + #sanity check + multilib_sanity_check ${target_rootfs} ${multilib_tryout_dirs} || exit 1 + fi + + if [ ! -z "${package_multilib}" ]; then + opkg-cl ${ipkg_args} install ${package_multilib} + fi +} + +ipk_log_check() { + target="$1" + lf_path="$2" + + lf_txt="`cat $lf_path`" + for keyword_die in "exit 1" "Collected errors" ERR Fail + do + if (echo "$lf_txt" | grep -v log_check | grep "$keyword_die") >/dev/null 2>&1 + then + echo "log_check: There were error messages in the logfile" + echo -e "log_check: Matched keyword: [$keyword_die]\n" + echo "$lf_txt" | grep -v log_check | grep -C 5 -i "$keyword_die" + echo "" + do_exit=1 + fi + done + test "$do_exit" = 1 && exit 1 + true +} + # # Update the Packages index files in ${DEPLOY_DIR_IPK} # package_update_index_ipk () { set -x - ipkgarchs="${PACKAGE_ARCHS}" + ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS} ${SDK_PACKAGE_ARCHS}" if [ ! -z "${DEPLOY_KEEP_PACKAGES}" ]; then return fi - touch ${DEPLOY_DIR_IPK}/Packages - opkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK} - + packagedirs="${DEPLOY_DIR_IPK}" for arch in $ipkgarchs; do - if [ -e ${DEPLOY_DIR_IPK}/$arch/ ] ; then - touch ${DEPLOY_DIR_IPK}/$arch/Packages - opkg-make-index -r ${DEPLOY_DIR_IPK}/$arch/Packages -p ${DEPLOY_DIR_IPK}/$arch/Packages -l ${DEPLOY_DIR_IPK}/$arch/Packages.filelist -m ${DEPLOY_DIR_IPK}/$arch/ - fi - if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/ ] ; then - touch ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages - opkg-make-index -r ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages -p ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages -l ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages.filelist -m ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/ + packagedirs="$packagedirs ${DEPLOY_DIR_IPK}/$arch" + done + + multilib_archs="${MULTILIB_ARCHS}" + for arch in $multilib_archs; do + packagedirs="$packagedirs ${DEPLOY_DIR_IPK}/$arch" + done + + for pkgdir in $packagedirs; do + if [ -e $pkgdir/ ]; then + touch $pkgdir/Packages + flock $pkgdir/Packages.flock -c "opkg-make-index -r $pkgdir/Packages -p $pkgdir/Packages -m $pkgdir/" fi done } @@ -95,85 +226,79 @@ package_update_index_ipk () { # package_generate_ipkg_conf () { package_generate_archlist - echo "src oe file:${DEPLOY_DIR_IPK}" >> ${IPKGCONF_TARGET} echo "src oe file:${DEPLOY_DIR_IPK}" >> ${IPKGCONF_SDK} - ipkgarchs="${PACKAGE_ARCHS}" + ipkgarchs="${SDK_PACKAGE_ARCHS}" for arch in $ipkgarchs; do if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then - echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_TARGET} + echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_SDK} fi - if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages ] ; then - echo "src oe-${BUILD_ARCH}-$arch-sdk file:${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk" >> ${IPKGCONF_SDK} + done + + echo "src oe file:${DEPLOY_DIR_IPK}" >> ${IPKGCONF_TARGET} + ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS}" + for arch in $ipkgarchs; do + if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then + echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_TARGET} fi done } package_generate_archlist () { - ipkgarchs="${PACKAGE_ARCHS}" + ipkgarchs="${SDK_PACKAGE_ARCHS}" + priority=1 + for arch in $ipkgarchs; do + echo "arch $arch $priority" >> ${IPKGCONF_SDK} + priority=$(expr $priority + 5) + done + + ipkgarchs="${ALL_MULTILIB_PACKAGE_ARCHS}" priority=1 for arch in $ipkgarchs; do echo "arch $arch $priority" >> ${IPKGCONF_TARGET} - echo "arch ${BUILD_ARCH}-$arch-sdk $priority" >> ${IPKGCONF_SDK} priority=$(expr $priority + 5) done } python do_package_ipk () { - import sys, re, copy + import re, copy + import textwrap - workdir = bb.data.getVar('WORKDIR', d, 1) - if not workdir: - bb.error("WORKDIR not defined, unable to package") + workdir = d.getVar('WORKDIR', True) + outdir = d.getVar('PKGWRITEDIRIPK', True) + tmpdir = d.getVar('TMPDIR', True) + pkgdest = d.getVar('PKGDEST', True) + if not workdir or not outdir or not tmpdir: + bb.error("Variables incorrectly set, unable to package") return - import os # path manipulations - outdir = bb.data.getVar('DEPLOY_DIR_IPK', d, 1) - if not outdir: - bb.error("DEPLOY_DIR_IPK not defined, unable to package") - return - - dvar = bb.data.getVar('D', d, 1) - if not dvar: - bb.error("D not defined, unable to package") - return - bb.mkdirhier(dvar) - - packages = bb.data.getVar('PACKAGES', d, 1) - if not packages: - bb.debug(1, "PACKAGES not defined, nothing to package") + packages = d.getVar('PACKAGES', True) + if not packages or packages == '': + bb.debug(1, "No packages; nothing to do") return - tmpdir = bb.data.getVar('TMPDIR', d, 1) - + # We're about to add new packages so the index needs to be checked + # so remove the appropriate stamp file. if os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"), os.R_OK): os.unlink(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN")) - if packages == []: - bb.debug(1, "No packages; nothing to do") - return - for pkg in packages.split(): localdata = bb.data.createCopy(d) - pkgdest = bb.data.getVar('PKGDEST', d, 1) root = "%s/%s" % (pkgdest, pkg) lf = bb.utils.lockfile(root + ".lock") - bb.data.setVar('ROOT', '', localdata) - bb.data.setVar('ROOT_%s' % pkg, root, localdata) - pkgname = bb.data.getVar('PKG_%s' % pkg, localdata, 1) + localdata.setVar('ROOT', '') + localdata.setVar('ROOT_%s' % pkg, root) + pkgname = localdata.getVar('PKG_%s' % pkg, True) if not pkgname: pkgname = pkg - bb.data.setVar('PKG', pkgname, localdata) + localdata.setVar('PKG', pkgname) - overrides = bb.data.getVar('OVERRIDES', localdata, True) - if not overrides: - raise bb.build.FuncFailed('OVERRIDES not defined') - bb.data.setVar('OVERRIDES', overrides + ':' + pkg, localdata) + localdata.setVar('OVERRIDES', pkg) bb.data.update_data(localdata) basedir = os.path.join(os.path.dirname(root)) - arch = bb.data.getVar('PACKAGE_ARCH', localdata, 1) + arch = localdata.getVar('PACKAGE_ARCH', True) pkgoutdir = "%s/%s" % (outdir, arch) bb.mkdirhier(pkgoutdir) os.chdir(root) @@ -184,9 +309,8 @@ python do_package_ipk () { del g[g.index('./CONTROL')] except ValueError: pass - if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1": - from bb import note - note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1))) + if not g and localdata.getVar('ALLOW_EMPTY') != "1": + bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV', True), localdata.getVar('PKGR', True))) bb.utils.unlockfile(lf) continue @@ -199,15 +323,16 @@ python do_package_ipk () { raise bb.build.FuncFailed("unable to open control file for writing.") fields = [] - pe = bb.data.getVar('PE', d, 1) + pe = d.getVar('PKGE', True) if pe and int(pe) > 0: - fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']]) + fields.append(["Version: %s:%s-%s\n", ['PKGE', 'PKGV', 'PKGR']]) else: - fields.append(["Version: %s-%s\n", ['PV', 'PR']]) + fields.append(["Version: %s-%s\n", ['PKGV', 'PKGR']]) fields.append(["Description: %s\n", ['DESCRIPTION']]) fields.append(["Section: %s\n", ['SECTION']]) fields.append(["Priority: %s\n", ['PRIORITY']]) fields.append(["Maintainer: %s\n", ['MAINTAINER']]) + fields.append(["License: %s\n", ['LICENSE']]) fields.append(["Architecture: %s\n", ['PACKAGE_ARCH']]) fields.append(["OE: %s\n", ['PN']]) fields.append(["Homepage: %s\n", ['HOMEPAGE']]) @@ -215,7 +340,7 @@ python do_package_ipk () { def pullData(l, d): l2 = [] for i in l: - l2.append(bb.data.getVar(i, d, 1)) + l2.append(d.getVar(i, True)) return l2 ctrlfile.write("Package: %s\n" % pkgname) @@ -223,44 +348,54 @@ python do_package_ipk () { try: for (c, fs) in fields: for f in fs: - if bb.data.getVar(f, localdata) is None: + if localdata.getVar(f) is None: raise KeyError(f) - ctrlfile.write(c % tuple(pullData(fs, localdata))) + # Special behavior for description... + if 'DESCRIPTION' in fs: + summary = localdata.getVar('SUMMARY', True) or localdata.getVar('DESCRIPTION', True) or "." + description = localdata.getVar('DESCRIPTION', True) or "." + description = textwrap.dedent(description).strip() + ctrlfile.write('Description: %s\n' % summary) + ctrlfile.write('%s\n' % textwrap.fill(description, width=74, initial_indent=' ', subsequent_indent=' ')) + else: + ctrlfile.write(c % tuple(pullData(fs, localdata))) except KeyError: + import sys (type, value, traceback) = sys.exc_info() ctrlfile.close() bb.utils.unlockfile(lf) raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value) # more fields - bb.build.exec_func("mapping_rename_hook", localdata) + mapping_rename_hook(localdata) + + rdepends = bb.utils.explode_dep_versions(localdata.getVar("RDEPENDS", True) or "") + rrecommends = bb.utils.explode_dep_versions(localdata.getVar("RRECOMMENDS", True) or "") + rsuggests = bb.utils.explode_dep_versions(localdata.getVar("RSUGGESTS", True) or "") + rprovides = bb.utils.explode_dep_versions(localdata.getVar("RPROVIDES", True) or "") + rreplaces = bb.utils.explode_dep_versions(localdata.getVar("RREPLACES", True) or "") + rconflicts = bb.utils.explode_dep_versions(localdata.getVar("RCONFLICTS", True) or "") - rdepends = bb.utils.explode_deps(bb.data.getVar("RDEPENDS", localdata, 1) or "") - rrecommends = bb.utils.explode_deps(bb.data.getVar("RRECOMMENDS", localdata, 1) or "") - rsuggests = (bb.data.getVar("RSUGGESTS", localdata, 1) or "").split() - rprovides = (bb.data.getVar("RPROVIDES", localdata, 1) or "").split() - rreplaces = (bb.data.getVar("RREPLACES", localdata, 1) or "").split() - rconflicts = (bb.data.getVar("RCONFLICTS", localdata, 1) or "").split() if rdepends: - ctrlfile.write("Depends: %s\n" % ", ".join(rdepends)) + ctrlfile.write("Depends: %s\n" % bb.utils.join_deps(rdepends)) if rsuggests: - ctrlfile.write("Suggests: %s\n" % ", ".join(rsuggests)) + ctrlfile.write("Suggests: %s\n" % bb.utils.join_deps(rsuggests)) if rrecommends: - ctrlfile.write("Recommends: %s\n" % ", ".join(rrecommends)) + ctrlfile.write("Recommends: %s\n" % bb.utils.join_deps(rrecommends)) if rprovides: - ctrlfile.write("Provides: %s\n" % ", ".join(rprovides)) + ctrlfile.write("Provides: %s\n" % bb.utils.join_deps(rprovides)) if rreplaces: - ctrlfile.write("Replaces: %s\n" % ", ".join(rreplaces)) + ctrlfile.write("Replaces: %s\n" % bb.utils.join_deps(rreplaces)) if rconflicts: - ctrlfile.write("Conflicts: %s\n" % ", ".join(rconflicts)) - src_uri = bb.data.getVar("SRC_URI", localdata, 1) + ctrlfile.write("Conflicts: %s\n" % bb.utils.join_deps(rconflicts)) + src_uri = localdata.getVar("SRC_URI", True) or "None" if src_uri: src_uri = re.sub("\s+", " ", src_uri) ctrlfile.write("Source: %s\n" % " ".join(src_uri.split())) ctrlfile.close() for script in ["preinst", "postinst", "prerm", "postrm"]: - scriptvar = bb.data.getVar('pkg_%s' % script, localdata, 1) + scriptvar = localdata.getVar('pkg_%s' % script, True) if not scriptvar: continue try: @@ -272,7 +407,7 @@ python do_package_ipk () { scriptfile.close() os.chmod(os.path.join(controldir, script), 0755) - conffiles_str = bb.data.getVar("CONFFILES", localdata, 1) + conffiles_str = localdata.getVar("CONFFILES", True) if conffiles_str: try: conffiles = file(os.path.join(controldir, 'conffiles'), 'w') @@ -284,28 +419,43 @@ python do_package_ipk () { conffiles.close() os.chdir(basedir) - ret = os.system("PATH=\"%s\" %s %s %s" % (bb.data.getVar("PATH", localdata, 1), - bb.data.getVar("OPKGBUILDCMD",d,1), pkg, pkgoutdir)) + ret = os.system("PATH=\"%s\" %s %s %s" % (localdata.getVar("PATH", True), + d.getVar("OPKGBUILDCMD",1), pkg, pkgoutdir)) if ret != 0: bb.utils.unlockfile(lf) raise bb.build.FuncFailed("opkg-build execution failed") bb.utils.prunedir(controldir) bb.utils.unlockfile(lf) + } +SSTATETASKS += "do_package_write_ipk" +do_package_write_ipk[sstate-name] = "deploy-ipk" +do_package_write_ipk[sstate-inputdirs] = "${PKGWRITEDIRIPK}" +do_package_write_ipk[sstate-outputdirs] = "${DEPLOY_DIR_IPK}" + +python do_package_write_ipk_setscene () { + sstate_setscene(d) +} +addtask do_package_write_ipk_setscene + python () { - import bb - if bb.data.getVar('PACKAGES', d, True) != '': - deps = (bb.data.getVarFlag('do_package_write_ipk', 'depends', d) or "").split() - deps.append('opkg-utils-native:do_populate_staging') - deps.append('fakeroot-native:do_populate_staging') - bb.data.setVarFlag('do_package_write_ipk', 'depends', " ".join(deps), d) + if d.getVar('PACKAGES', True) != '': + deps = ' opkg-utils-native:do_populate_sysroot virtual/fakeroot-native:do_populate_sysroot' + d.appendVarFlag('do_package_write_ipk', 'depends', deps) + d.setVarFlag('do_package_write_ipk', 'fakeroot', "1") + d.setVarFlag('do_package_write_ipk_setscene', 'fakeroot', "1") } python do_package_write_ipk () { bb.build.exec_func("read_subpackage_metadata", d) bb.build.exec_func("do_package_ipk", d) } -do_package_write_ipk[dirs] = "${D}" +do_package_write_ipk[dirs] = "${PKGWRITEDIRIPK}" +do_package_write_ipk[umask] = "022" addtask package_write_ipk before do_package_write after do_package + +PACKAGEINDEXES += "package_update_index_ipk;" +PACKAGEINDEXDEPS += "opkg-utils-native:do_populate_sysroot" +PACKAGEINDEXDEPS += "opkg-native:do_populate_sysroot" |
