xref: /OK3568_Linux_fs/yocto/poky/meta/classes/package_tar.bbclass (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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