From 7379035e2653be8bf632f767706f48244c0ff970 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Fri, 16 Dec 2016 18:06:20 +0000 Subject: 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 ] (From OE-Core rev: e82a7f879419828b42b5cc71e6229c8235090f21) Signed-off-by: Ross Burton Signed-off-by: Richard Purdie --- meta/classes/package.bbclass | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 -- cgit 1.2.3-korg