On 7/1/2019 8:11 AM, Johannes Schindelin wrote: > Hi Peff, > > On Sun, 30 Jun 2019, Jeff King wrote: > >> On Sun, Jun 30, 2019 at 10:59:34PM +0200, Johannes Sixt wrote: >> >>> Am 30.06.19 um 21:48 schrieb Eric Sunshine: >>>> On Sun, Jun 30, 2019 at 2:57 PM Johannes Sixt <j6t@xxxxxxxx> wrote: >>>>> diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh >>>>> @@ -443,7 +443,7 @@ test_expect_success 'repack with minimum size does not alter existing packs' ' >>>>> - MINSIZE=$(ls -l .git/objects/pack/*pack | awk "{print \$5;}" | sort -n | head -n 1) && >>>>> + MINSIZE=$(stat -c %s .git/objects/pack/*pack | sort -n | head -n 1) && >>>> >>>> Unfortunately, this is not portable. While "stat -c %s" works on Linux >>>> and MSYS2, neither that option nor the format directive are recognized >>>> on BSD-like platforms (I tested Mac OS and FreeBSD), which instead >>>> need "stat -f %z". >>> >>> Ouch! I did notice that stat(1) is not in POSIX, but hoped that it was >>> sufficiently portable. I need a new idea... >> >> If we are OK relying on rudimentary perl[1], then: >> >> perl -le "print((stat)[7]) for @ARGV" >> >> works. If you want it more readable, then maybe: >> >> perl -MFile::stat -le "print stat(\$_)->size for @ARGV" > > Or we stop introducing new Perl calls, and use the perfectly fine > `test-tool path-utils file-size` command: > > https://github.com/git/git/blob/v2.22.0/t/helper/test-path-utils.c#L302-L312 > > This solves not only portability problems but also avoids yet another > obstacle into making a `NO_PERL` test suite run really work without Perl. Thanks! This does seem like the best option. Thanks for bringing this to our attention. Here is a diff, and I'll prepare a full patch: diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index dd6083e61a2..5379e59168a 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -447,7 +447,7 @@ test_expect_success 'repack with minimum size does not alter existing packs' ' touch -m -t 201901010002 .git/objects/pack/pack-B* && touch -m -t 201901010003 .git/objects/pack/pack-A* && ls .git/objects/pack >expect && - MINSIZE=$(ls -l .git/objects/pack/*pack | awk "{print \$5;}" | sort -n | head -n 1) && + MINSIZE=$(test-tool path-utils file-size .git/objects/pack/*pack | sort -n | head -n 1) && git multi-pack-index repack --batch-size=$MINSIZE && ls .git/objects/pack >actual && test_cmp expect actual @@ -459,7 +459,7 @@ test_expect_success 'repack creates a new pack' ' cd dup && ls .git/objects/pack/*idx >idx-list && test_line_count = 5 idx-list && - THIRD_SMALLEST_SIZE=$(ls -l .git/objects/pack/*pack | awk "{print \$5;}" | sort -n | head -n 3 | tail -n 1) && + THIRD_SMALLEST_SIZE=$(test-tool path-utils file-size .git/objects/pack/*pack | sort -n | head -n 3 | tail -n 1) && BATCH_SIZE=$(($THIRD_SMALLEST_SIZE + 1)) && git multi-pack-index repack --batch-size=$BATCH_SIZE && ls .git/objects/pack/*idx >idx-list && Thanks, -Stolee