summaryrefslogtreecommitdiff
path: root/classes/package_ipk.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/package_ipk.bbclass')
-rw-r--r--classes/package_ipk.bbclass53
1 files changed, 31 insertions, 22 deletions
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index d4cb3b62e2..5d388dacd9 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -1,6 +1,5 @@
inherit package
-BOOTSTRAP_EXTRA_RDEPENDS += "opkg-collateral opkg"
IMAGE_PKGTYPE ?= "ipk"
IPKGCONF_TARGET = "${STAGING_ETCDIR_NATIVE}/opkg.conf"
@@ -17,7 +16,6 @@ python package_ipk_install () {
# Warning - this function is not multimachine safe (see stagingdir reference)!
#
- import os, sys, bb
pkg = bb.data.getVar('PKG', d, 1)
pkgfn = bb.data.getVar('PKGFN', d, 1)
rootfs = bb.data.getVar('IMAGE_ROOTFS', d, 1)
@@ -31,6 +29,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
@@ -54,7 +53,7 @@ python package_ipk_install () {
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):
+ not os.access(os.path.join(tmpdir, "stamps", "IPK_PACKAGE_INDEX_CLEAN"),os.R_OK)):
ret = os.system('ipkg-make-index -p %s %s ' % (os.path.join(ipkdir, "Packages"), ipkdir))
if (ret != 0 ):
raise bb.build.FuncFailed
@@ -67,10 +66,16 @@ python package_ipk_install () {
raise bb.build.FuncFailed
}
+do_package_update_index_ipk[lockfiles] = "${DEPLOY_DIR_IPK}.lock"
+do_package_update_index_ipk[nostamp] = "1"
+do_package_update_index_ipk[recrdeptask] += "do_package_write_ipk"
+do_package_update_index_ipk[recrdeptask] += "do_package_write_ipk"
+do_package_update_index_ipk[depends] += "ipkg-utils-native:do_populate_sysroot"
+
#
# Update the Packages index files in ${DEPLOY_DIR_IPK}
#
-package_update_index_ipk () {
+do_package_update_index_ipk () {
set -x
ipkgarchs="${PACKAGE_ARCHS}"
@@ -79,6 +84,7 @@ package_update_index_ipk () {
return
fi
+ mkdir -p ${DEPLOY_DIR_IPK}
touch ${DEPLOY_DIR_IPK}/Packages
ipkg-make-index -r ${DEPLOY_DIR_IPK}/Packages -p ${DEPLOY_DIR_IPK}/Packages -l ${DEPLOY_DIR_IPK}/Packages.filelist -m ${DEPLOY_DIR_IPK}
@@ -125,17 +131,20 @@ package_generate_ipkg_conf () {
echo "src oe-${SDK_SYS}-sdk-$arch file:${DEPLOY_DIR_IPK}/${SDK_SYS}-sdk-$arch" >> ${IPKGCONF_CANSDK}
fi
done
+ echo "lists_dir ext /var/lib/opkg" >> ${IPKGCONF_TARGET}
+ echo "lists_dir ext /var/lib/opkg" >> ${IPKGCONF_SDK}
+ echo "lists_dir ext /var/lib/opkg" >> ${IPKGCONF_CANSDK}
}
python do_package_ipk () {
- import sys, re, copy, bb
+ import re, copy
workdir = bb.data.getVar('WORKDIR', d, 1)
if not workdir:
bb.error("WORKDIR not defined, 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")
@@ -152,11 +161,14 @@ python do_package_ipk () {
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"))
+ pkgdest = bb.data.getVar('PKGDEST', d, 1)
+ bb.mkdirhier(pkgdest)
+
packages = bb.data.getVar('PACKAGES', d, True)
for pkg in packages.split():
localdata = bb.data.createCopy(d)
- pkgdest = bb.data.getVar('PKGDEST', d, 1)
root = "%s/%s" % (pkgdest, pkg)
+ bb.mkdirhier(root)
lf = bb.utils.lockfile(root + ".lock")
@@ -167,10 +179,9 @@ python do_package_ipk () {
pkgname = pkg
bb.data.setVar('PKG', pkgname, localdata)
- overrides = bb.data.getVar('OVERRIDES', localdata)
+ overrides = bb.data.getVar('OVERRIDES', localdata, True)
if not overrides:
raise bb.build.FuncFailed('OVERRIDES not defined')
- overrides = bb.data.expand(overrides, localdata)
bb.data.setVar('OVERRIDES', overrides + ':' + pkg, localdata)
bb.data.update_data(localdata)
@@ -180,15 +191,14 @@ python do_package_ipk () {
bb.mkdirhier(pkgoutdir)
os.chdir(root)
from glob import glob
- g = glob('*')
+ g = glob('*') + glob('.[!.]*')
try:
del g[g.index('CONTROL')]
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" % (pkg, bb.data.expand('${PV}-${PR}${DISTRO_PR}', localdata, True)))
+ bb.note("Not creating empty archive for %s-%s" % (pkg, bb.data.expand('${PV}-${PR}${DISTRO_PR}', localdata)))
bb.utils.unlockfile(lf)
continue
@@ -203,9 +213,9 @@ python do_package_ipk () {
fields = []
pe = bb.data.getVar('PE', d, 1)
if pe and int(pe) > 0:
- fields.append(["Version: %s:%s-%s%s\n", ['PE', 'PV', 'PR', 'DISTRO_PR']])
+ fields.append(["Version: %s:%s-%s\n", ['PE', 'PKGV', 'PKGR']])
else:
- fields.append(["Version: %s-%s%s\n", ['PV', 'PR', 'DISTRO_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']])
@@ -230,6 +240,7 @@ python do_package_ipk () {
raise KeyError(f)
ctrlfile.write(c % tuple(pullData(fs, localdata)))
except KeyError:
+ import sys
(type, value, traceback) = sys.exc_info()
ctrlfile.close()
bb.utils.unlockfile(lf)
@@ -260,10 +271,9 @@ python do_package_ipk () {
ctrlfile.write("Replaces: %s\n" % ", ".join(rreplaces))
if rconflicts:
ctrlfile.write("Conflicts: %s\n" % ", ".join(rconflicts))
- src_uri = bb.data.getVar("SRC_URI", localdata, 1)
- if src_uri:
- src_uri = re.sub("\s+", " ", src_uri)
- ctrlfile.write("Source: %s\n" % " ".join(src_uri.split()))
+ src_uri = bb.data.getVar("SRC_URI", localdata, 1) or d.getVar("FILE", True)
+ 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"]:
@@ -302,16 +312,14 @@ python do_package_ipk () {
}
python () {
- import bb
if bb.data.getVar('PACKAGES', d, True) != '':
deps = (bb.data.getVarFlag('do_package_write_ipk', 'depends', d) or "").split()
- deps.append('ipkg-utils-native:do_populate_staging')
- deps.append('fakeroot-native:do_populate_staging')
+ deps.append('ipkg-utils-native:do_populate_sysroot')
+ deps.append('fakeroot-native:do_populate_sysroot')
bb.data.setVarFlag('do_package_write_ipk', 'depends', " ".join(deps), d)
}
python do_package_write_ipk () {
- import bb
packages = bb.data.getVar('PACKAGES', d, True)
if not packages:
bb.debug(1, "No PACKAGES defined, nothing to package")
@@ -322,3 +330,4 @@ python do_package_write_ipk () {
}
do_package_write_ipk[dirs] = "${D}"
addtask package_write_ipk before do_package_write after do_package
+addtask package_update_index_ipk before do_rootfs