Problem installing IO::Compress::Base

J

John Oliver

cpan[1]> install IO::Compress::Base
CPAN: Storable loaded ok (v2.15)
Going to read /root/.cpan/Metadata
Database was generated on Fri, 28 Sep 2007 17:36:46 GMT
Running install for module 'IO::Compress::Base'
Running make for P/PM/PMQS/IO-Compress-Base-2.006.tar.gz
CPAN: Digest::SHA loaded ok (v5.45)
CPAN: Compress::Zlib loaded ok (v1.42)
Checksum for
/root/.cpan/sources/authors/id/P/PM/PMQS/IO-Compress-Base-2.006.tar.gz
ok
Scanning cache /root/.cpan/build for sizes
.............................................................................DONE
IO-Compress-Base-2.006/
IO-Compress-Base-2.006/t/
IO-Compress-Base-2.006/t/compress/
IO-Compress-Base-2.006/t/compress/generic.pl
IO-Compress-Base-2.006/t/compress/zlib-generic.pl
IO-Compress-Base-2.006/t/compress/merge.pl
IO-Compress-Base-2.006/t/compress/oneshot.pl
IO-Compress-Base-2.006/t/compress/anyunc.pl
IO-Compress-Base-2.006/t/compress/newtied.pl
IO-Compress-Base-2.006/t/compress/prime.pl
IO-Compress-Base-2.006/t/compress/tied.pl
IO-Compress-Base-2.006/t/compress/truncate.pl
IO-Compress-Base-2.006/t/compress/multi.pl
IO-Compress-Base-2.006/t/compress/destroy.pl
IO-Compress-Base-2.006/t/compress/CompTestUtils.pm
IO-Compress-Base-2.006/t/compress/any.pl
IO-Compress-Base-2.006/t/000prereq.t
IO-Compress-Base-2.006/t/Test/
IO-Compress-Base-2.006/t/Test/More.pm
IO-Compress-Base-2.006/t/Test/Simple.pm
IO-Compress-Base-2.006/t/Test/Builder.pm
IO-Compress-Base-2.006/t/01misc.t
IO-Compress-Base-2.006/t/99pod.t
IO-Compress-Base-2.006/t/globmapper.t
IO-Compress-Base-2.006/Changes
IO-Compress-Base-2.006/lib/
IO-Compress-Base-2.006/lib/IO/
IO-Compress-Base-2.006/lib/IO/Uncompress/
IO-Compress-Base-2.006/lib/IO/Uncompress/Base.pm
IO-Compress-Base-2.006/lib/IO/Uncompress/AnyUncompress.pm
IO-Compress-Base-2.006/lib/IO/Compress/
IO-Compress-Base-2.006/lib/IO/Compress/Base.pm
IO-Compress-Base-2.006/lib/IO/Compress/Base/
IO-Compress-Base-2.006/lib/IO/Compress/Base/Common.pm
IO-Compress-Base-2.006/lib/File/
IO-Compress-Base-2.006/lib/File/GlobMapper.pm
IO-Compress-Base-2.006/private/
IO-Compress-Base-2.006/private/MakeUtil.pm
IO-Compress-Base-2.006/MANIFEST
IO-Compress-Base-2.006/META.yml
IO-Compress-Base-2.006/pod/
IO-Compress-Base-2.006/pod/FAQ.pod
IO-Compress-Base-2.006/Makefile.PL
IO-Compress-Base-2.006/README
CPAN: File::Temp loaded ok (v0.18)
CPAN: YAML loaded ok (v0.66)

CPAN.pm: Going to build P/PM/PMQS/IO-Compress-Base-2.006.tar.gz

Up/Downgrade not needed.
Checking if your kit is complete...
Looks good
Writing Makefile for IO::Compress::Base
cp lib/IO/Uncompress/Base.pm blib/lib/IO/Uncompress/Base.pm
cp lib/IO/Uncompress/AnyUncompress.pm
blib/lib/IO/Uncompress/AnyUncompress.pm
cp lib/File/GlobMapper.pm blib/lib/File/GlobMapper.pm
cp lib/IO/Compress/Base.pm blib/lib/IO/Compress/Base.pm
cp lib/IO/Compress/Base/Common.pm blib/lib/IO/Compress/Base/Common.pm
Manifying blib/man3/IO::Uncompress::AnyUncompress.3pm
Manifying blib/man3/IO::Uncompress::Base.3pm
Manifying blib/man3/IO::Compress::Base.3pm
Manifying blib/man3/File::GlobMapper.3pm
PMQS/IO-Compress-Base-2.006.tar.gz
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/000prereq.....ok
t/01misc........Use of uninitialized value in concatenation (.) or
string at /usr/lib/perl5/5.8.8/Scalar/Util.pm line 30.

# Failed test (t/01misc.t at line 29)
# You don't have the XS version of Scalar::Util
# Looks like you failed 1 test of 78.
t/01misc........dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 3
Failed 1/78 tests, 98.72% okay (less 1 skipped test: 76 okay,
97.44%)
t/99pod.........skipped
all skipped: Test::pod 1.00 required for testing POD
t/globmapper....ok
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/01misc.t 1 256 78 1 3
1 test and 1 subtest skipped.
Failed 1/4 test scripts. 1/147 subtests failed.
Files=4, Tests=147, 0 wallclock secs ( 0.17 cusr + 0.05 csys = 0.22
CPU)
Failed 1/4 test programs. 1/147 subtests failed.
make: *** [test_dynamic] Error 255
PMQS/IO-Compress-Base-2.006.tar.gz
/usr/bin/make test -- NOT OK
//hint// To get more information about failing tests, try:
reports PMQS/IO-Compress-Base-2.006.tar.gz
Running make install
make test had returned bad status, won't install without force
Failed during this command:
PMQS/IO-Compress-Base-2.006.tar.gz : make_test NO
 
B

Ben Morrow

Quoth John Oliver said:
# Failed test (t/01misc.t at line 29)
# You don't have the XS version of Scalar::Util

Seems fairly self-explanatory to me... you need to (re-)install
Scalar::Util, so you get the XS version.

Arguably IO-Compress-Base ought to depend on Task::Weaken, which is
supposed to fix this problem; I guess Paul is more interested in not
introducing new potential problems.

Ben
 
J

John Oliver

Seems fairly self-explanatory to me... you need to (re-)install
Scalar::Util, so you get the XS version.

For the archives, as inevitably someone will email me about this in two
years... :)

This was fixed by removing and reinstalling all perl packages (RHEL 5).
There is no Scalar::Util::XS and no way that I can see of determining
whether or not Scalar::Util is "XS" or not. I mention this because
Google was of no help whatsoever with this... a few mentions of others
getting the same error, but no explanations of how
to determine whether or not you're installing an "XS" version of
Scalar::Util This was probably one of the packages installed via RPM,
and it's a complete mystery to me how from one install I do not have XS
but another I do. I know nothing about perl other than to (try to)
install whatever modules a given program needs, and I know i'm not the
only one in that boat :)
 
S

sisyphus1

but no explanations of how
to determine whether or not you're installing an "XS" version of
Scalar::Util

Yes - I didn't spot any such explanation.

At the beginning of the Scalar-List-Utils Makefile.PL you'll find:

my $do_xs = can_cc();

where 'can_cc' is a Module::Install sub. The return of 'can_cc'
determines whether it's an XS build or a pure perl build.

The IO::Compress::Base test file (01misc.t) determines whether you
have the XS or pure perl version of Scalar::Util by calling the
CompTestUtils.pm subroutine 'gotScalarUtilXS' which looks like:

sub gotScalarUtilXS
{
eval ' use Scalar::Util "dualvar" ';
return $@ ? 0 : 1 ;
}

Apparently, 'dualvar' is available only with the xs build.
(CompTestUtils.pm is part of the IO::Compress::Base source.)

Cheers,
Rob
 
P

Paul Marquess

Ben said:
Seems fairly self-explanatory to me... you need to (re-)install
Scalar::Util, so you get the XS version.

Arguably IO-Compress-Base ought to depend on Task::Weaken, which is
supposed to fix this problem; I guess Paul is more interested in not
introducing new potential problems.

Having a dependency on Task::Weaken would only make sense if I was using
weaken, which I'm not. I use Scalar::Util for readonly

Paul
 
B

Ben Morrow

Quoth Paul Marquess said:
Having a dependency on Task::Weaken would only make sense if I was using
weaken, which I'm not.

Except that Task::Weaken ought to have been called
Task::Get::Me::The::_Real_::Scalar::Util :).
I use Scalar::Util for readonly

So, why are you testing for the XS version? /me is confused...

Ben
 
S

sisyphus359

..
..
So, why are you testing for the XS version? /me is confused...

But it's the IO::Compress::Base test file (t/01misc.t), not the OP,
that's "testing for the XS version".

Or, is it *me* that's confused ...

Cheers,
Rob
 
P

Paul Marquess

Ben said:
Except that Task::Weaken ought to have been called
Task::Get::Me::The::_Real_::Scalar::Util :).


So, why are you testing for the XS version? /me is confused...

Sorry, I spoke too soon.

I used to use Scalar::Util in IO::Compress::Base for both dualvar &
readonly, but I don't any more. dualvar needs the XS build of Scalar::Util.

The IO::Compress modules that derive from IO::Compress::Base all need
Scalar::Util for both dualvar & readonly. So although I don't strictly
need to test for Scalar::Util in IO::Compress::Base, it just means a
prerequisite module gets tested a bit sooner than is needed.

Paul
 
C

Charlton Wilbur

(a long log, of which the salient point is thus:)

JO> # Failed test (t/01misc.t at line 29)
JO> # You don't have the XS version of Scalar::Util

Something possibly related: one of RedHat's recent Perl RPMs screws up
Scalar::Util, at least the non-XS version, and this may be the root
cause of what you're seeing.

I don't know if it's the real problem here, but it's something to check.

Charlton
 
P

Paul Marquess

John said:
For the archives, as inevitably someone will email me about this in two
years... :)

This was fixed by removing and reinstalling all perl packages (RHEL 5).
There is no Scalar::Util::XS and no way that I can see of determining
whether or not Scalar::Util is "XS" or not. I mention this because
Google was of no help whatsoever with this... a few mentions of others
getting the same error, but no explanations of how
to determine whether or not you're installing an "XS" version of
Scalar::Util This was probably one of the packages installed via RPM,
and it's a complete mystery to me how from one install I do not have XS
but another I do. I know nothing about perl other than to (try to)
install whatever modules a given program needs, and I know i'm not the
only one in that boat :)

Reinstalling all packages seems a fairly drastic step. I would have thought
that reinstalling Scalar::Util would have been enough to sort this out.

Paul
 
P

Philip Sharman

I would have thought
that reinstalling Scalar::Util would have been enough to sort this out.

I would have thought so too, but it didn't work for me.

(I'm using RedHat Enterprise Linux 4. I deleted
/usr/lib/perl5/5.8.5/Scalar/ and reinstalled Scalar::Util. I still get
the same error message.)

Any help on this would be greatly appreciated. How can I get an "XS
version"?

Thanks, Philip.
 
S

sisyphus

Any help on this would be greatly appreciated. How can I get an "XS
version"?

When Paul mentioned "reinstalling Scalar::Util" he meant that the
reinstallation be done by building from the CPAN source distribution
of Scalar::Util. Is that what you tried ? (Reinstalling an RPM
wouldn't help if the RPM package is not an XS build.)

Even then, building Scalar::Util from source won't give you an XS
build if a C compiler is not found - in which case (I think) you'll be
informed, during the build process, that you're not getting the XS
build.

Cheers,
Rob
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top