[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3832/8267] package: don't count every hardlink for PKGSIZE



commit 7379035e2653be8bf632f767706f48244c0ff970
Author: Ross Burton <ross burton intel com>
Date:   Fri Dec 16 18:06:20 2016 +0000

    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 <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/package.bbclass |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 1f79188..e177e77 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]