mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 13:29:49 +00:00
package_deb.bbclass: Fix packaging functions to use versioned dependency package functions correctly
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
@@ -20,13 +20,13 @@ python package_deb_fn () {
|
|||||||
|
|
||||||
addtask package_deb_install
|
addtask package_deb_install
|
||||||
python do_package_deb_install () {
|
python do_package_deb_install () {
|
||||||
pkg = bb.data.getVar('PKG', d, 1)
|
pkg = bb.data.getVar('PKG', d, True)
|
||||||
pkgfn = bb.data.getVar('PKGFN', d, 1)
|
pkgfn = bb.data.getVar('PKGFN', d, True)
|
||||||
rootfs = bb.data.getVar('IMAGE_ROOTFS', d, 1)
|
rootfs = bb.data.getVar('IMAGE_ROOTFS', d, True)
|
||||||
debdir = bb.data.getVar('DEPLOY_DIR_DEB', d, 1)
|
debdir = bb.data.getVar('DEPLOY_DIR_DEB', d, True)
|
||||||
apt_config = bb.data.expand('${STAGING_ETCDIR_NATIVE}/apt/apt.conf', d)
|
apt_config = bb.data.expand('${STAGING_ETCDIR_NATIVE}/apt/apt.conf', d)
|
||||||
stagingbindir = bb.data.getVar('STAGING_BINDIR_NATIVE', d, 1)
|
stagingbindir = bb.data.getVar('STAGING_BINDIR_NATIVE', d, True)
|
||||||
tmpdir = bb.data.getVar('TMPDIR', d, 1)
|
tmpdir = bb.data.getVar('TMPDIR', d, True)
|
||||||
|
|
||||||
if None in (pkg,pkgfn,rootfs):
|
if None in (pkg,pkgfn,rootfs):
|
||||||
raise bb.build.FuncFailed("missing variables (one or more of PKG, PKGFN, IMAGE_ROOTFS)")
|
raise bb.build.FuncFailed("missing variables (one or more of PKG, PKGFN, IMAGE_ROOTFS)")
|
||||||
@@ -68,28 +68,28 @@ python do_package_deb_install () {
|
|||||||
python do_package_deb () {
|
python do_package_deb () {
|
||||||
import re, copy
|
import re, copy
|
||||||
|
|
||||||
workdir = bb.data.getVar('WORKDIR', d, 1)
|
workdir = bb.data.getVar('WORKDIR', d, True)
|
||||||
if not workdir:
|
if not workdir:
|
||||||
bb.error("WORKDIR not defined, unable to package")
|
bb.error("WORKDIR not defined, unable to package")
|
||||||
return
|
return
|
||||||
|
|
||||||
outdir = bb.data.getVar('DEPLOY_DIR_DEB', d, 1)
|
outdir = bb.data.getVar('DEPLOY_DIR_DEB', d, True)
|
||||||
if not outdir:
|
if not outdir:
|
||||||
bb.error("DEPLOY_DIR_DEB not defined, unable to package")
|
bb.error("DEPLOY_DIR_DEB not defined, unable to package")
|
||||||
return
|
return
|
||||||
|
|
||||||
dvar = bb.data.getVar('D', d, 1)
|
dvar = bb.data.getVar('D', d, True)
|
||||||
if not dvar:
|
if not dvar:
|
||||||
bb.error("D not defined, unable to package")
|
bb.error("D not defined, unable to package")
|
||||||
return
|
return
|
||||||
bb.mkdirhier(dvar)
|
bb.mkdirhier(dvar)
|
||||||
|
|
||||||
packages = bb.data.getVar('PACKAGES', d, 1)
|
packages = bb.data.getVar('PACKAGES', d, True)
|
||||||
if not packages:
|
if not packages:
|
||||||
bb.debug(1, "PACKAGES not defined, nothing to package")
|
bb.debug(1, "PACKAGES not defined, nothing to package")
|
||||||
return
|
return
|
||||||
|
|
||||||
tmpdir = bb.data.getVar('TMPDIR', d, 1)
|
tmpdir = bb.data.getVar('TMPDIR', d, True)
|
||||||
|
|
||||||
if os.access(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"),os.R_OK):
|
if os.access(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"),os.R_OK):
|
||||||
os.unlink(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"))
|
os.unlink(os.path.join(tmpdir, "stamps", "DEB_PACKAGE_INDEX_CLEAN"))
|
||||||
@@ -100,14 +100,14 @@ python do_package_deb () {
|
|||||||
|
|
||||||
for pkg in packages.split():
|
for pkg in packages.split():
|
||||||
localdata = bb.data.createCopy(d)
|
localdata = bb.data.createCopy(d)
|
||||||
pkgdest = bb.data.getVar('PKGDEST', d, 1)
|
pkgdest = bb.data.getVar('PKGDEST', d, True)
|
||||||
root = "%s/%s" % (pkgdest, pkg)
|
root = "%s/%s" % (pkgdest, pkg)
|
||||||
|
|
||||||
lf = bb.utils.lockfile(root + ".lock")
|
lf = bb.utils.lockfile(root + ".lock")
|
||||||
|
|
||||||
bb.data.setVar('ROOT', '', localdata)
|
bb.data.setVar('ROOT', '', localdata)
|
||||||
bb.data.setVar('ROOT_%s' % pkg, root, localdata)
|
bb.data.setVar('ROOT_%s' % pkg, root, localdata)
|
||||||
pkgname = bb.data.getVar('PKG_%s' % pkg, localdata, 1)
|
pkgname = bb.data.getVar('PKG_%s' % pkg, localdata, True)
|
||||||
if not pkgname:
|
if not pkgname:
|
||||||
pkgname = pkg
|
pkgname = pkg
|
||||||
bb.data.setVar('PKG', pkgname, localdata)
|
bb.data.setVar('PKG', pkgname, localdata)
|
||||||
@@ -121,7 +121,7 @@ python do_package_deb () {
|
|||||||
bb.data.update_data(localdata)
|
bb.data.update_data(localdata)
|
||||||
basedir = os.path.join(os.path.dirname(root))
|
basedir = os.path.join(os.path.dirname(root))
|
||||||
|
|
||||||
pkgoutdir = os.path.join(outdir, bb.data.getVar('PACKAGE_ARCH', localdata, 1))
|
pkgoutdir = os.path.join(outdir, bb.data.getVar('PACKAGE_ARCH', localdata, True))
|
||||||
bb.mkdirhier(pkgoutdir)
|
bb.mkdirhier(pkgoutdir)
|
||||||
|
|
||||||
os.chdir(root)
|
os.chdir(root)
|
||||||
@@ -133,7 +133,7 @@ python do_package_deb () {
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
|
if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
|
||||||
bb.note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
|
bb.note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, True), bb.data.getVar('PR', localdata, True)))
|
||||||
bb.utils.unlockfile(lf)
|
bb.utils.unlockfile(lf)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ python do_package_deb () {
|
|||||||
raise bb.build.FuncFailed("unable to open control file for writing.")
|
raise bb.build.FuncFailed("unable to open control file for writing.")
|
||||||
|
|
||||||
fields = []
|
fields = []
|
||||||
pe = bb.data.getVar('PE', d, 1)
|
pe = bb.data.getVar('PE', d, True)
|
||||||
if pe and int(pe) > 0:
|
if pe and int(pe) > 0:
|
||||||
fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']])
|
fields.append(["Version: %s:%s-%s\n", ['PE', 'PV', 'PR']])
|
||||||
else:
|
else:
|
||||||
@@ -169,10 +169,10 @@ python do_package_deb () {
|
|||||||
def pullData(l, d):
|
def pullData(l, d):
|
||||||
l2 = []
|
l2 = []
|
||||||
for i in l:
|
for i in l:
|
||||||
data = bb.data.getVar(i, d, 1)
|
data = bb.data.getVar(i, d, True)
|
||||||
if data is None:
|
if data is None:
|
||||||
raise KeyError(f)
|
raise KeyError(f)
|
||||||
if i == 'DPKG_ARCH' and bb.data.getVar('PACKAGE_ARCH', d, 1) == 'all':
|
if i == 'DPKG_ARCH' and bb.data.getVar('PACKAGE_ARCH', d, True) == 'all':
|
||||||
data = 'all'
|
data = 'all'
|
||||||
l2.append(data)
|
l2.append(data)
|
||||||
return l2
|
return l2
|
||||||
@@ -192,30 +192,34 @@ python do_package_deb () {
|
|||||||
|
|
||||||
bb.build.exec_func("mapping_rename_hook", localdata)
|
bb.build.exec_func("mapping_rename_hook", localdata)
|
||||||
|
|
||||||
rdepends = bb.utils.explode_deps(unicode(bb.data.getVar("RDEPENDS", localdata, 1) or ""))
|
rdepends = bb.utils.explode_dep_versions(bb.data.getVar("RDEPENDS", localdata, True) or "")
|
||||||
rdepends = [dep for dep in rdepends if not '*' in dep]
|
for dep in rdepends:
|
||||||
rrecommends = bb.utils.explode_deps(unicode(bb.data.getVar("RRECOMMENDS", localdata, 1) or ""))
|
if '*' in dep:
|
||||||
rrecommends = [rec for rec in rrecommends if not '*' in rec]
|
del rdepends[dep]
|
||||||
rsuggests = bb.utils.explode_deps(unicode(bb.data.getVar("RSUGGESTS", localdata, 1) or ""))
|
rrecommends = bb.utils.explode_dep_versions(bb.data.getVar("RRECOMMENDS", localdata, True) or "")
|
||||||
rprovides = bb.utils.explode_deps(unicode(bb.data.getVar("RPROVIDES", localdata, 1) or ""))
|
for dep in rrecommends:
|
||||||
rreplaces = bb.utils.explode_deps(unicode(bb.data.getVar("RREPLACES", localdata, 1) or ""))
|
if '*' in dep:
|
||||||
rconflicts = bb.utils.explode_deps(unicode(bb.data.getVar("RCONFLICTS", localdata, 1) or ""))
|
del rrecommends[dep]
|
||||||
|
rsuggests = bb.utils.explode_dep_versions(bb.data.getVar("RSUGGESTS", localdata, True) or "")
|
||||||
|
rprovides = bb.utils.explode_dep_versions(bb.data.getVar("RPROVIDES", localdata, True) or "")
|
||||||
|
rreplaces = bb.utils.explode_dep_versions(bb.data.getVar("RREPLACES", localdata, True) or "")
|
||||||
|
rconflicts = bb.utils.explode_dep_versions(bb.data.getVar("RCONFLICTS", localdata, True) or "")
|
||||||
if rdepends:
|
if rdepends:
|
||||||
ctrlfile.write(u"Depends: %s\n" % bb.utils.join_deps(rdepends))
|
ctrlfile.write("Depends: %s\n" % unicode(bb.utils.join_deps(rdepends)))
|
||||||
if rsuggests:
|
if rsuggests:
|
||||||
ctrlfile.write(u"Suggests: %s\n" % bb.utils.join_deps(rsuggests))
|
ctrlfile.write("Suggests: %s\n" % unicode(bb.utils.join_deps(rsuggests)))
|
||||||
if rrecommends:
|
if rrecommends:
|
||||||
ctrlfile.write(u"Recommends: %s\n" % bb.utils.join_deps(rrecommends))
|
ctrlfile.write("Recommends: %s\n" % unicode(bb.utils.join_deps(rrecommends)))
|
||||||
if rprovides:
|
if rprovides:
|
||||||
ctrlfile.write(u"Provides: %s\n" % bb.utils.join_deps(rprovides))
|
ctrlfile.write("Provides: %s\n" % unicode(bb.utils.join_deps(rprovides)))
|
||||||
if rreplaces:
|
if rreplaces:
|
||||||
ctrlfile.write(u"Replaces: %s\n" % bb.utils.join_deps(rreplaces))
|
ctrlfile.write("Replaces: %s\n" % unicode(bb.utils.join_deps(rreplaces)))
|
||||||
if rconflicts:
|
if rconflicts:
|
||||||
ctrlfile.write(u"Conflicts: %s\n" % bb.utils.join_deps(rconflicts))
|
ctrlfile.write("Conflicts: %s\n" % unicode(bb.utils.join_deps(rconflicts)))
|
||||||
ctrlfile.close()
|
ctrlfile.close()
|
||||||
|
|
||||||
for script in ["preinst", "postinst", "prerm", "postrm"]:
|
for script in ["preinst", "postinst", "prerm", "postrm"]:
|
||||||
scriptvar = bb.data.getVar('pkg_%s' % script, localdata, 1)
|
scriptvar = bb.data.getVar('pkg_%s' % script, localdata, True)
|
||||||
if not scriptvar:
|
if not scriptvar:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
@@ -228,7 +232,7 @@ python do_package_deb () {
|
|||||||
scriptfile.close()
|
scriptfile.close()
|
||||||
os.chmod(os.path.join(controldir, script), 0755)
|
os.chmod(os.path.join(controldir, script), 0755)
|
||||||
|
|
||||||
conffiles_str = bb.data.getVar("CONFFILES", localdata, 1)
|
conffiles_str = bb.data.getVar("CONFFILES", localdata, True)
|
||||||
if conffiles_str:
|
if conffiles_str:
|
||||||
try:
|
try:
|
||||||
conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
|
conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
|
||||||
@@ -240,7 +244,7 @@ python do_package_deb () {
|
|||||||
conffiles.close()
|
conffiles.close()
|
||||||
|
|
||||||
os.chdir(basedir)
|
os.chdir(basedir)
|
||||||
ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir))
|
ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, True), root, pkgoutdir))
|
||||||
if ret != 0:
|
if ret != 0:
|
||||||
bb.utils.unlockfile(lf)
|
bb.utils.unlockfile(lf)
|
||||||
raise bb.build.FuncFailed("dpkg-deb execution failed")
|
raise bb.build.FuncFailed("dpkg-deb execution failed")
|
||||||
|
|||||||
Reference in New Issue
Block a user