On Sun, Dec 25, 2011 at 08:37:24PM +1000, Allan McRae wrote: > The current calculation of the total file size for a package using "du" > suffers from issues in portability and correctness. Especially on btrfs, > this can result in clearly wrong package information such as: > > Download Size : 14684.29 KiB > Installed Size : 7628.00 KiB > > Use a slower but more accurate method involving "cat" and "wc" to > calculate total file size. > > Signed-off-by: Allan McRae <[email protected]> > --- > configure.ac | 1 - > scripts/Makefile.am | 1 - > scripts/makepkg.sh.in | 3 +-- > 3 files changed, 1 insertions(+), 4 deletions(-) > > diff --git a/configure.ac b/configure.ac > index fb1e0b3..6941054 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -245,7 +245,6 @@ esac > > AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes") > AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes") > -AC_PATH_PROGS([DUPATH], [du], [du], [/usr/bin$PATH_SEPARATOR/bin] ) > AC_SUBST(SIZECMD) > AC_SUBST(SEDINPLACE) > AC_SUBST(STRIP_BINARIES) > diff --git a/scripts/Makefile.am b/scripts/Makefile.am > index 328fbff..727de25 100644 > --- a/scripts/Makefile.am > +++ b/scripts/Makefile.am > @@ -53,7 +53,6 @@ edit = sed \ > -e 's|@BUILDSCRIPT[@]|$(BUILDSCRIPT)|g' \ > -e 's|@SIZECMD[@]|$(SIZECMD)|g' \ > -e 's|@SEDINPLACE[@]|$(SEDINPLACE)|g' \ > - -e 's|@DUPATH[@]|$(DUPATH)|g' \ > -e 's|@SCRIPTNAME[@]|$@|g' \ > -e 's|@configure_input[@]|Generated from [email protected]; do not edit by > hand.|g' > > diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in > index 8c6984d..c78db86 100644 > --- a/scripts/makepkg.sh.in > +++ b/scripts/makepkg.sh.in > @@ -1132,8 +1132,7 @@ write_pkginfo() { > else > local packager="Unknown Packager" > fi > - local size="$(@DUPATH@ -sk)" > - size="$(( ${size%%[^0-9]*} * 1024 ))" > + local size="$(find . | xargs cat 2>/dev/null | wc -c)"
Unsafe xargs usage. find . -print0 | xargs -0 2>/dev/null | wc -c Why can't we use @SIZECMD@ here? Same issues as du? > > msg2 "$(gettext "Generating %s file...")" ".PKGINFO" > echo "# Generated by makepkg $myver" > -- > 1.7.8.1 > >
