summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-12-02 18:50:45 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-03 17:45:49 +0000
commit7fe0e7ea21d3c366328cc77ca7001a37ba1e16fa (patch)
tree21e57e270e23e881abaf787d004717c9ab2ebc01
parent1a050aff7a51ee5bb40bd774a62170d6312f05e3 (diff)
downloadtizen-distro-7fe0e7ea21d3c366328cc77ca7001a37ba1e16fa.tar.gz
tizen-distro-7fe0e7ea21d3c366328cc77ca7001a37ba1e16fa.tar.bz2
tizen-distro-7fe0e7ea21d3c366328cc77ca7001a37ba1e16fa.zip
classes/package: record PKGSIZE as total file size in pkgdata
We were using "du -sk" to collect the total size of all files in each package for writing out to PKGSIZE in each pkgdata file; however this reports the total space used on disk not the total size of all files, which means it is dependent on the block size and filesystem being used for TMPDIR on the build host. Instead, take the total of the size reported by lstat() for each packaged file, which we are already collecting for FILES_INFO in any case. Note: this changes PKGSIZE to be reported in bytes instead of kilobytes since this is what lstat reports, but this is really what we should be storing anyway so that we have the precision if we need it. Fixes [YOCTO #5334] (From OE-Core rev: 29615b36fca696822a715ece2afbe0bf9a43ed61) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/package.bbclass12
-rwxr-xr-xscripts/oe-pkgdata-util6
2 files changed, 8 insertions, 10 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index cce2499122..2eb970dac5 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1127,14 +1127,6 @@ python emit_pkgdata() {
f.write('%s: %s\n' % (var, encode(val)))
return
- def get_directory_size(dir):
- if os.listdir(dir):
- with os.popen('du -sk %s' % dir) as f:
- size = int(f.readlines()[0].split('\t')[0])
- else:
- size = 0
- return size
-
def write_extra_pkgs(variants, pn, packages, pkgdatadir):
for variant in variants:
with open("%s/%s-%s" % (pkgdatadir, variant, pn), 'w') as fd:
@@ -1181,9 +1173,11 @@ python emit_pkgdata() {
pkgdestpkg = os.path.join(pkgdest, pkg)
files = {}
+ total_size = 0
for f in pkgfiles[pkg]:
relpth = os.path.relpath(f, pkgdestpkg)
fstat = os.lstat(f)
+ total_size += fstat.st_size
files[os.sep + relpth] = fstat.st_size
d.setVar('FILES_INFO', json.dumps(files))
@@ -1220,7 +1214,7 @@ python emit_pkgdata() {
for dfile in (d.getVar('FILERDEPENDSFLIST_' + pkg, True) or "").split():
write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile)
- sf.write('%s_%s: %s\n' % ('PKGSIZE', pkg, get_directory_size(pkgdest + "/%s" % pkg)))
+ sf.write('%s_%s: %d\n' % ('PKGSIZE', pkg, total_size))
sf.close()
# Symlinks needed for reverse lookups (from the final package name)
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 03c8f95305..a373116b2c 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -184,7 +184,11 @@ def read_value(args, usage, debug=False):
if qvar == "PKGSIZE":
# append packagename
qvar = "%s_%s" % (var, mappedpkg)
- print(readvar(revlink, qvar))
+ # PKGSIZE is now in bytes, but we we want it in KB
+ pkgsize = (int(readvar(revlink, qvar)) + 1024 // 2) // 1024
+ print("%d" % pkgsize)
+ else:
+ print(readvar(revlink, qvar))
def lookup_pkg(args, usage, debug=False):
if len(args) < 2: