summaryrefslogtreecommitdiffstats
path: root/meta/classes/package_deb.bbclass
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-05 22:08:56 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-06 11:02:27 +0000
commit0331fc280525bf96707927379accfba7b5e8651b (patch)
treea1dc8807065c4a72286150264b7777006d9b9600 /meta/classes/package_deb.bbclass
parent1eefcf0ba8c5c74312c78fbcf5f27c3840a6578a (diff)
downloadpoky-0331fc280525bf96707927379accfba7b5e8651b.tar.gz
package_deb/package_ipk: Cleanup control file handling/races
If you Ctrl+C ppackage_write_{deb/ipk} control files can get left lying around and make it into another packaging format. This ensures we cleanup all known control files before starting packaging. We can simplify some of the globbing as a result. (From OE-Core rev: 7f8c728c82a17621461be2114c1afab3713a808e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/package_deb.bbclass')
-rw-r--r--meta/classes/package_deb.bbclass15
1 files changed, 8 insertions, 7 deletions
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index 6a8e080138..d18c250ecc 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -202,6 +202,12 @@ python do_package_deb () {
202 202
203 pkgdest = d.getVar('PKGDEST', True) 203 pkgdest = d.getVar('PKGDEST', True)
204 204
205 def cleanupcontrol(root):
206 for p in ['CONTROL', 'DEBIAN']:
207 p = os.path.join(root, p)
208 if os.path.exists(p):
209 bb.utils.prunedir(p)
210
205 for pkg in packages.split(): 211 for pkg in packages.split():
206 localdata = bb.data.createCopy(d) 212 localdata = bb.data.createCopy(d)
207 root = "%s/%s" % (pkgdest, pkg) 213 root = "%s/%s" % (pkgdest, pkg)
@@ -224,13 +230,9 @@ python do_package_deb () {
224 bb.utils.mkdirhier(pkgoutdir) 230 bb.utils.mkdirhier(pkgoutdir)
225 231
226 os.chdir(root) 232 os.chdir(root)
233 cleanupcontrol(root)
227 from glob import glob 234 from glob import glob
228 g = glob('*') 235 g = glob('*')
229 try:
230 del g[g.index('DEBIAN')]
231 del g[g.index('./DEBIAN')]
232 except ValueError:
233 pass
234 if not g and localdata.getVar('ALLOW_EMPTY') != "1": 236 if not g and localdata.getVar('ALLOW_EMPTY') != "1":
235 bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV', True), localdata.getVar('PKGR', True))) 237 bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV', True), localdata.getVar('PKGR', True)))
236 bb.utils.unlockfile(lf) 238 bb.utils.unlockfile(lf)
@@ -402,11 +404,10 @@ python do_package_deb () {
402 os.chdir(basedir) 404 os.chdir(basedir)
403 ret = subprocess.call("PATH=\"%s\" dpkg-deb -b %s %s" % (localdata.getVar("PATH", True), root, pkgoutdir), shell=True) 405 ret = subprocess.call("PATH=\"%s\" dpkg-deb -b %s %s" % (localdata.getVar("PATH", True), root, pkgoutdir), shell=True)
404 if ret != 0: 406 if ret != 0:
405 bb.utils.prunedir(controldir)
406 bb.utils.unlockfile(lf) 407 bb.utils.unlockfile(lf)
407 raise bb.build.FuncFailed("dpkg-deb execution failed") 408 raise bb.build.FuncFailed("dpkg-deb execution failed")
408 409
409 bb.utils.prunedir(controldir) 410 cleanupcontrol(root)
410 bb.utils.unlockfile(lf) 411 bb.utils.unlockfile(lf)
411} 412}
412 413