diff options
author | Allan McRae <allan@archlinux.org> | 2012-12-16 22:32:54 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2013-01-03 12:03:10 +1000 |
commit | 241d6b884a3a6c883b6c61a3b175d17e7d317fc5 (patch) | |
tree | 0e45b5375174c4b1fceb5a00657875657fd4d793 | |
parent | d5a6ce8ca124d1eea343314b23110e006eb313d5 (diff) | |
download | pacman-241d6b884a3a6c883b6c61a3b175d17e7d317fc5.tar.xz |
makepkg: use --apparent-size when du supports it
Amazingly, using "sleep 1" to convince btrfs to report correct file
sizes is only a 90% fix. Sometimes more sleep is needed.
Instead we use the --apparent-size argument to du to get actual file
sizes. This is used only on Linux as the various BSDs do not support
this argument.
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | scripts/Makefile.am | 1 | ||||
-rw-r--r-- | scripts/makepkg.sh.in | 7 |
3 files changed, 6 insertions, 6 deletions
diff --git a/configure.ac b/configure.ac index 8ec0eab8..6059fe5e 100644 --- a/configure.ac +++ b/configure.ac @@ -300,6 +300,7 @@ GCC_GNU89_INLINE_CC INODECMD="stat -c '%i %n'" SIZECMD="stat -c %s" SEDINPLACE="sed -i" +DUFLAGS="-sk --apparent-size" STRIP_BINARIES="--strip-all" STRIP_SHARED="--strip-unneeded" STRIP_STATIC="--strip-debug" @@ -308,12 +309,14 @@ case "${host_os}" in INODECMD="stat -f '%i %n'" SIZECMD="stat -f %z" SEDINPLACE="sed -i \"\"" + DUFLAGS="-sk" ;; darwin*) host_os_darwin=yes INODECMD="/usr/bin/stat -f '%i %n'" SIZECMD="/usr/bin/stat -f %z" SEDINPLACE="/usr/bin/sed -i ''" + DUFLAGS="-sk" STRIP_BINARIES="" STRIP_SHARED="-S" STRIP_STATIC="-S" @@ -325,6 +328,7 @@ AC_PATH_PROGS([DUPATH], [du], [du], [/usr/bin$PATH_SEPARATOR/bin] ) AC_SUBST(INODECMD) AC_SUBST(SIZECMD) AC_SUBST(SEDINPLACE) +AC_SUBST(DUFLAGS) AC_SUBST(STRIP_BINARIES) AC_SUBST(STRIP_SHARED) AC_SUBST(STRIP_STATIC) diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 2bd64118..c3c1d73a 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -57,6 +57,7 @@ edit = sed \ -e "s|@INODECMD[@]|$(INODECMD)|g" \ -e 's|@SIZECMD[@]|$(SIZECMD)|g' \ -e 's|@SEDINPLACE[@]|$(SEDINPLACE)|g' \ + -e 's|@DUFLAGS[@]|$(DUFLAGS)|g' \ -e 's|@DUPATH[@]|$(DUPATH)|g' \ -e 's|@SCRIPTNAME[@]|$@|g' \ -e 's|@configure_input[@]|Generated from $@.sh.in; do not edit by hand.|g' diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index ff3fa5b8..ceaab612 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1704,12 +1704,7 @@ write_pkginfo() { local packager="Unknown Packager" fi - # btrfs's delayed allocation causes the stat buffers from the kernel to "lie" - # to us momentarily and report 0 blocks allocated (which is how du calculates - # size). Sleeping for a second here is about the dirtiest thing possible, - # but avoids reporting entirely bogus install sizes. - sleep 1 - local size="$(@DUPATH@ -sk)" + local size="$(@DUPATH@ @DUFLAGS@)" size="$(( ${size%%[^0-9]*} * 1024 ))" msg2 "$(gettext "Generating %s file...")" ".PKGINFO" |