Subject: bug#5927: `xz' command not found when running 'make dist and distcheck'

From: "jeff.liu" <[email-masked]>
Date: Mon, 12 Apr 2010 13:54:43 +0800

Pádraig Brady wrote:
> On 11/04/10 15:42, jeff.liu wrote:
>> Hello,
>>
>> I run into a problem when running `make dist/distcheck' on "uBuntu 8.0.4 - the Hardy Heron".
>>
>> The error message shows the `xz` command not found:
>> ...
>> tardir=coreutils-8.4.84-8c4b6-dirty && /bin/bash
>> /home/jeff/opensource_dev/coreutils/build-aux/missing --run tar chof - "$tardir" | xz -c
>>> coreutils-8.4.84-8c4b6-dirty.tar.xz
>> /bin/bash: xz: command not found
>> WARNING: I can't seem to be able to run `tar' with the given arguments.
>>          You may want to install GNU tar or Free paxutils, or check the
>>          command line arguments.
>> make: *** [dist] Error 127
>>
>>
>> Is it make sense to add the pre-checking for `xz-utils' in 'boottrap.conf' like below?
>>
>> >From e6f6bb41a4bb443cf894c151390182d23b2f957d Mon Sep 17 00:00:00 2001
>> From: Jie Liu <[email-masked]>
>> Date: Sun, 11 Apr 2010 22:40:52 +0800
>> Subject: [PATCH] Add `xz-utils` pre-checking in bootstrap.conf
>>
>> Signed-off-by: Jie Liu <[email-masked]>
>> ---
>>  bootstrap.conf |    1 +
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/bootstrap.conf b/bootstrap.conf
>> index ad7d6d5..55b2f60 100644
>> --- a/bootstrap.conf
>> +++ b/bootstrap.conf
>> @@ -321,6 +321,7 @@ makeinfo   -
>>  perl       5.5
>>  rsync      -
>>  tar        -
>> +xz         -
>>  "
>>
>>  # Automake requires that ChangeLog exist.
> 
> Note we used to have a requirement on the equivalent lzma util
> but that was removed due to being unavailable on our build bot for example
> http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=cc0f637b
> However things have moved forward and xz should be packaged for most
> systems, so I think we should probably apply this to get early warning
> about the xz dependency.
Thanks for the info!

But I am facing another 'make distcheck' issue even if `xz' available but the `tar' does not updated
to the version which support '-J' or '-xz' options.

The 'make distcheck' error shown as following:
.....
.....
mkdir -p /home/jeff/opensource_dev/coreutils/tests/torture/coreutils/test
/bin/bash /home/jeff/opensource_dev/coreutils/build-aux/missing --run tar -Jxf
coreutils-8.4.86-e6f6bb.tar.xz -C /home/jeff/opensource_dev/coreutils/tests/torture/coreutils/test
tar: invalid option -- J
Try `tar --help' or `tar --usage' for more information.
WARNING: I can't seem to be able to run `tar' with the given arguments.
         You may want to install GNU tar or Free paxutils, or check the
         command line arguments.
make[2]: *** [my-distcheck] Error 1
make[2]: Leaving directory `/home/jeff/opensource_dev/coreutils'
make[1]: *** [distcheck-hook] Error 2
make[1]: Leaving directory `/home/jeff/opensource_dev/coreutils'
make: *** [distcheck] Error 1

AFAICS, there have 3 ways to fix this problem:
1st, add `tar' version requirement for which at least support the xz package format in
bootstrap.conf, but looks this fix is not reasonable.

2nd, by referring to the link
http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=cc0f637b), maybe a better way is
just skipping the pre-checking for `xz' as well as 'tar -Jxf' during 'make distcheck' if the
'xz-utils' does not shipped with the system.

3rd, still enable the pre-checking for `xz' in bootstrap.conf, but skip `tar -Jxf' in 'make
distcheck' stage.

> cheers,
> Pádraig.

Cheers,
-Jeff