summaryrefslogtreecommitdiffstats
path: root/meta/classes/package_tar.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/package_tar.bbclass')
-rw-r--r--meta/classes/package_tar.bbclass68
1 files changed, 68 insertions, 0 deletions
diff --git a/meta/classes/package_tar.bbclass b/meta/classes/package_tar.bbclass
new file mode 100644
index 0000000000..2d6fc8fe21
--- /dev/null
+++ b/meta/classes/package_tar.bbclass
@@ -0,0 +1,68 @@
1inherit package
2
3IMAGE_PKGTYPE ?= "tar"
4
5python do_package_tar () {
6 import subprocess
7 workdir = d.getVar('WORKDIR', True)
8 if not workdir:
9 bb.error("WORKDIR not defined, unable to package")
10 return
11
12 outdir = d.getVar('DEPLOY_DIR_TAR', True)
13 if not outdir:
14 bb.error("DEPLOY_DIR_TAR not defined, unable to package")
15 return
16
17 dvar = d.getVar('D', True)
18 if not dvar:
19 bb.error("D not defined, unable to package")
20 return
21
22 packages = d.getVar('PACKAGES', True)
23 if not packages:
24 bb.debug(1, "PACKAGES not defined, nothing to package")
25 return
26
27 pkgdest = d.getVar('PKGDEST', True)
28
29 bb.utils.mkdirhier(outdir)
30 bb.utils.mkdirhier(dvar)
31
32 for pkg in packages.split():
33 localdata = bb.data.createCopy(d)
34 root = "%s/%s" % (pkgdest, pkg)
35
36 overrides = localdata.getVar('OVERRIDES')
37 localdata.setVar('OVERRIDES', '%s:%s' % (overrides, pkg))
38 bb.data.update_data(localdata)
39
40 bb.utils.mkdirhier(root)
41 basedir = os.path.dirname(root)
42 tarfn = localdata.expand("${DEPLOY_DIR_TAR}/${PKG}-${PKGV}-${PKGR}.tar.gz")
43 os.chdir(root)
44 from glob import glob
45 if not glob('*'):
46 bb.note("Not creating empty archive for %s-%s-%s" % (pkg, localdata.getVar('PKGV', True), localdata.getVar('PKGR', True)))
47 continue
48 ret = subprocess.call("tar -czf %s %s" % (tarfn, '.'), shell=True)
49 if ret != 0:
50 bb.error("Creation of tar %s failed." % tarfn)
51}
52
53python () {
54 if d.getVar('PACKAGES', True) != '':
55 deps = (d.getVarFlag('do_package_write_tar', 'depends') or "").split()
56 deps.append('tar-native:do_populate_sysroot')
57 deps.append('virtual/fakeroot-native:do_populate_sysroot')
58 d.setVarFlag('do_package_write_tar', 'depends', " ".join(deps))
59 d.setVarFlag('do_package_write_tar', 'fakeroot', "1")
60}
61
62
63python do_package_write_tar () {
64 bb.build.exec_func("read_subpackage_metadata", d)
65 bb.build.exec_func("do_package_tar", d)
66}
67do_package_write_tar[dirs] = "${D}"
68addtask package_write_tar before do_build after do_packagedata do_package