summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2016-12-16 18:06:20 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-12-17 09:56:45 +0000
commite82a7f879419828b42b5cc71e6229c8235090f21 (patch)
treea469df713c575f19fbd9e1c9b050cc01ea8073d5
parent2782f98a641afc135fb0976434165e1317d1d040 (diff)
downloadopenembedded-core-e82a7f879419828b42b5cc71e6229c8235090f21.tar.gz
openembedded-core-e82a7f879419828b42b5cc71e6229c8235090f21.tar.bz2
openembedded-core-e82a7f879419828b42b5cc71e6229c8235090f21.zip
package: don't count every hardlink for PKGSIZE
When calculating PKGSIZE we sum the size of files after doing lstat() so we don't count directory metadata overhead, but were not correctly handling hardlinks. This results in packages such as e2fsprogs-mke2fs having PKGSIZE of 1.5M when it's actually a single 300K binary with five hardlinks. [ YOCTO #10423 ] Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/classes/package.bbclass5
1 files changed, 4 insertions, 1 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 1f79188236..e177e775e5 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1342,11 +1342,14 @@ python emit_pkgdata() {
pkgdestpkg = os.path.join(pkgdest, pkg)
files = {}
total_size = 0
+ seen = set()
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
+ if fstat.st_ino not in seen:
+ seen.add(fstat.st_ino)
+ total_size += fstat.st_size
d.setVar('FILES_INFO', json.dumps(files))
subdata_file = pkgdatadir + "/runtime/%s" % pkg