summaryrefslogtreecommitdiffstats
path: root/meta
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
commitf4e91404f8722b4fb1700e4c9fe13f0dfd7ebda3 (patch)
treee7f66b889c78a0e617f5a857f2af537985ce663d /meta
parent4a75e83b29d6736a17d3a461774adb18b8ff5abf (diff)
downloadpoky-f4e91404f8722b4fb1700e4c9fe13f0dfd7ebda3.tar.gz
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>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/package.bbclass12
1 files changed, 3 insertions, 9 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() {
1127 f.write('%s: %s\n' % (var, encode(val))) 1127 f.write('%s: %s\n' % (var, encode(val)))
1128 return 1128 return
1129 1129
1130 def get_directory_size(dir):
1131 if os.listdir(dir):
1132 with os.popen('du -sk %s' % dir) as f:
1133 size = int(f.readlines()[0].split('\t')[0])
1134 else:
1135 size = 0
1136 return size
1137
1138 def write_extra_pkgs(variants, pn, packages, pkgdatadir): 1130 def write_extra_pkgs(variants, pn, packages, pkgdatadir):
1139 for variant in variants: 1131 for variant in variants:
1140 with open("%s/%s-%s" % (pkgdatadir, variant, pn), 'w') as fd: 1132 with open("%s/%s-%s" % (pkgdatadir, variant, pn), 'w') as fd:
@@ -1181,9 +1173,11 @@ python emit_pkgdata() {
1181 1173
1182 pkgdestpkg = os.path.join(pkgdest, pkg) 1174 pkgdestpkg = os.path.join(pkgdest, pkg)
1183 files = {} 1175 files = {}
1176 total_size = 0
1184 for f in pkgfiles[pkg]: 1177 for f in pkgfiles[pkg]:
1185 relpth = os.path.relpath(f, pkgdestpkg) 1178 relpth = os.path.relpath(f, pkgdestpkg)
1186 fstat = os.lstat(f) 1179 fstat = os.lstat(f)
1180 total_size += fstat.st_size
1187 files[os.sep + relpth] = fstat.st_size 1181 files[os.sep + relpth] = fstat.st_size
1188 d.setVar('FILES_INFO', json.dumps(files)) 1182 d.setVar('FILES_INFO', json.dumps(files))
1189 1183
@@ -1220,7 +1214,7 @@ python emit_pkgdata() {
1220 for dfile in (d.getVar('FILERDEPENDSFLIST_' + pkg, True) or "").split(): 1214 for dfile in (d.getVar('FILERDEPENDSFLIST_' + pkg, True) or "").split():
1221 write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile) 1215 write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile)
1222 1216
1223 sf.write('%s_%s: %s\n' % ('PKGSIZE', pkg, get_directory_size(pkgdest + "/%s" % pkg))) 1217 sf.write('%s_%s: %d\n' % ('PKGSIZE', pkg, total_size))
1224 sf.close() 1218 sf.close()
1225 1219
1226 # Symlinks needed for reverse lookups (from the final package name) 1220 # Symlinks needed for reverse lookups (from the final package name)