1inherit package 2 3IMAGE_PKGTYPE ?= "tar" 4 5python do_package_tar () { 6 import subprocess 7 8 oldcwd = os.getcwd() 9 10 workdir = d.getVar('WORKDIR') 11 if not workdir: 12 bb.error("WORKDIR not defined, unable to package") 13 return 14 15 outdir = d.getVar('DEPLOY_DIR_TAR') 16 if not outdir: 17 bb.error("DEPLOY_DIR_TAR not defined, unable to package") 18 return 19 20 dvar = d.getVar('D') 21 if not dvar: 22 bb.error("D not defined, unable to package") 23 return 24 25 packages = d.getVar('PACKAGES') 26 if not packages: 27 bb.debug(1, "PACKAGES not defined, nothing to package") 28 return 29 30 pkgdest = d.getVar('PKGDEST') 31 32 bb.utils.mkdirhier(outdir) 33 bb.utils.mkdirhier(dvar) 34 35 for pkg in packages.split(): 36 localdata = bb.data.createCopy(d) 37 root = "%s/%s" % (pkgdest, pkg) 38 39 overrides = localdata.getVar('OVERRIDES', False) 40 localdata.setVar('OVERRIDES', '%s:%s' % (overrides, pkg)) 41 42 bb.utils.mkdirhier(root) 43 basedir = os.path.dirname(root) 44 tarfn = localdata.expand("${DEPLOY_DIR_TAR}/${PKG}-${PKGV}-${PKGR}.tar.gz") 45 os.chdir(root) 46 dlist = os.listdir(root) 47 if not dlist: 48 bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV'), localdata.getVar('PKGR'))) 49 continue 50 args = "tar -cz --exclude=CONTROL --exclude=DEBIAN -f".split() 51 ret = subprocess.call(args + [tarfn] + dlist) 52 if ret != 0: 53 bb.error("Creation of tar %s failed." % tarfn) 54 55 os.chdir(oldcwd) 56} 57 58python () { 59 if d.getVar('PACKAGES') != '': 60 deps = ' tar-native:do_populate_sysroot virtual/fakeroot-native:do_populate_sysroot' 61 d.appendVarFlag('do_package_write_tar', 'depends', deps) 62 d.setVarFlag('do_package_write_tar', 'fakeroot', "1") 63} 64 65 66python do_package_write_tar () { 67 bb.build.exec_func("read_subpackage_metadata", d) 68 bb.build.exec_func("do_package_tar", d) 69} 70do_package_write_tar[dirs] = "${D}" 71addtask package_write_tar before do_build after do_packagedata do_package 72