Sure, I could submit a configure.ac patch to do the perl checks.
The make check fails because UnitTests_LDADD in the test/Makefile.am
doesn't include $(BOOST_LDFLAGS), so if boost is in a non-standard
location (for example MacPorts puts it in /opt/local), the Makefile
can't find it at link time. I sent a patch for that yesterday to the
list, but can attach it to a JIRA ticket if need be.
On 8/13/2010 5:12 PM, Rush Manbert wrote:
Well, if it's a runtime requirement, then the configure should check for it,
but only if --with-perl=yes, and fail if it's not installed. Then if I don't
want to install it I can just configure with --with-perl=no.
HOWEVER, I started fresh and configured like this:
./configure --prefix=/Users/rmanbert/Kits/thrift/thrift-0.4.0_Install
--with-boos
t=/Volumes/DevSsd/devSsd/dev/client/thirdPartyLibs/installedMac/individual/boost
--with-zlib=/Volumes/DevSsd/devSsd/dev
/client/thirdPartyLibs/installedMac/individual/zlib --enable-gen-perl=no
--with-perl=no
The configure succeeded, but the make fails like this:
../compiler/cpp/thrift --gen cpp:dense ThriftTest.thrift
[FAILURE:/Users/rmanbert/Kits/thrift/thrift-0.4.0/test/ThriftTest.thrift:27] No
generator named 'perl' could be found!
make[3]: *** [gen-cpp/ThriftTest_types.cpp] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
which seems like a bug of a different stripe, and it makes me wonder whether
any of the --enable-lang-gen options really work if you set them to no.
So I started fresh again and configured like this:
./configure --prefix=/Users/rmanbert/Kits/thrift/thrift-0.4.0_Install
--with-boost=/Volumes/DevSsd/devSsd/dev/client/thirdPartyLibs/installedMac/individual/boost
--with-zlib=/Volumes/DevSsd/devSsd/dev/client/third
PartyLibs/installedMac/individual/zlib --with-perl=no
Configure succeeds.
Make succeeds.
Make check fails with this:
libtool: link: g++ -g -O2 -o .libs/UnitTests UnitTestMain.o TMemoryBufferTest.o
TBufferBaseTest.o -Wl,-bind_at_load ./.libs/libtestgencpp.a
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/cpp/.libs/libthrift.dylib
-lboost_unit_test_framework -lpthread
ld: library not found for -lboost_unit_test_framework
collect2: ld returned 1 exit status
make[3]: *** [UnitTests] Error 1
make[2]: *** [check-am] Error 2
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1
because all of my boost libraries have threading, debug, etc. encoded into their names. So on my
system the boost unit test library is named "libboost_unit_test_framework-mt.a" or
"libboost_unit_test_framework-mt-d.a".
The thrift libraries themselves got built, so it was okay that the libraries
they need use this naming convention. Why does a link associated with the tests
fail?
So now I'm sort of -2. ;-)
This is because:
1) The perl librarues require Bit::Vector to be installed, but it's not checked
for at configure time. I think it should fail unless you have specified
--with-perl=no.
(If we all agree on this, I'll file the Jira. Maybe you can submit the patrch?)
2) The C++ library tests have a hardcoded notion of what the name of the boost
unit test library is, which doesn't match the boost library naming conventions.
(available here:
http://www.boost.org/doc/libs/1_43_0/more/getting_started/unix-variants.html#library-naming
)
IIRC, this used to work, because I run the make check as part of our standard
build of the libraries, but we're still running off of pre-0.1 code.
There also seems to be a problem with specifying --enable-lang-gen=no to
configure, but I'll let that one go.
- Rush
On Aug 13, 2010, at 4:11 PM, Michael Lum wrote:
It looks like Bit::Vector is referenced in Thrift::BinaryProtocol as well as
the Makefile.PL, so it appears to be a runtime dependency, not just a test one.
The other way to do this is to not build the Thrift perl libraries if the
module detection fails, by tweaking the WITH_PERL variable.
On 8/13/2010 3:29 PM, Rush Manbert wrote:
If I read it correctly, the effect of this patch is that the configure will
fail on stock OSX 10.6.4. (That's what I have - no special Perl modules
installed) Is that correct?
I don't use Perl any more, so don't know what you get in a standard Perl
installation. If Bit::Vector isn't included, then I would tend to classify this
more as a bug in the tests and I wouldn't make the config fail if it's not
there. But possibly this is specific to OSX?
- Rush
On Aug 13, 2010, at 3:00 PM, Michael Lum wrote:
It's complaining about Bit::Vector not being there. I'm not sure if its
required by the Thrift library itself, or just the tests, but one way to
address it would be this patch, which checks for Bit::Vector at configure time.
--- configure.ac.orig 2010-08-13 14:31:33.000000000 -0700
+++ configure.ac 2010-08-13 14:58:56.000000000 -0700
@@ -118,6 +118,9 @@
AX_THRIFT_LIB(perl, [Perl], yes)
if test "$with_perl" = "yes"; then
AC_PATH_PROG([PERL], [perl])
+ if test -n "`$PERL -MBit::Vector -e exit 2>&1`"; then
+ AC_MSG_ERROR([Perl module Bit::Vector not installed])
+ fi
fi
AM_CONDITIONAL(WITH_PERL, [test -n "$PERL"])
On 8/13/2010 1:34 PM, Rush Manbert wrote:
On Aug 12, 2010, at 9:40 PM, Bryan Duxbury wrote:
Hi all,
As discussed, in all the time it took for us to finally release Thrift 0.3,
we've accumulated enough changes for Thrift 0.4!
I propose we accept
http://people.apache.org/~bryanduxbury/thrift-0.4.0-rc0.tar.gz<http://people.apache.org/%7Ebryanduxbury/thrift-0.4.0-rc0.tar.gz>as
the official Thrift 0.4.0 release.
<snip>
I used the tarball on Mac OS X 10.6.4, Xcode 3.2.2, boost 1.42, zlib 1.2.3.
configures fine.
make completes successfully.
make check errors like so:
Making check in perl
Making check in test
make check-local
../../../compiler/cpp/thrift --gen perl ../../../test/ThriftTest.thrift
make -f Makefile-perl.mk
find blib -name 'Makefile*' -exec rm -f {} \;
make check-local
/opt/local/bin/perl -Iblib/lib
-I/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl -I./test/gen-perl \
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test.pl
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/*.t
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/memory_buffer....Can't
locate Bit/Vector.pm in @INC (@INC contains: blib/lib
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl ./test/gen-perl
/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl
/opt/local/lib/perl5/5.8.9/darwin-2level
/opt/local/lib/perl5/5.8.9/darwin-2level /opt/local/lib/perl5/5.8.9 .
/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl
/opt/local/lib/perl5/5.8.9/darwin-2level /
op
t/
local/lib/perl5/5.8.9 .) at blib/lib/Thrift/BinaryProtocol.pm line 31.
BEGIN failed--compilation aborted at blib/lib/Thrift/BinaryProtocol.pm line 31.
Compilation failed in require at
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/memory_buffer.t line 27.
BEGIN failed--compilation aborted at
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/memory_buffer.t line 27.
# Looks like your test died before it could output anything.
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/memory_buffer....dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-6
Failed 6/6 tests, 0.00% okay
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/processor........Can't
locate Bit/Vector.pm in @INC (@INC contains: blib/lib
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl ./test/gen-perl
/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl
/opt/local/lib/perl5/5.8.9/darwin-2level
/opt/local/lib/perl5/5.8.9/darwin-2level /opt/local/lib/perl5/5.8.9 .
/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl
/opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level
/opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl
/opt/local/lib/perl5/5.8.9/darwin-2level /
op
t/
local/lib/perl5/5.8.9 .) at blib/lib/Thrift/BinaryProtocol.pm line 31.
BEGIN failed--compilation aborted at blib/lib/Thrift/BinaryProtocol.pm line 31.
Compilation failed in require at
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/processor.t line 26.
BEGIN failed--compilation aborted at
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/processor.t line 26.
# Looks like your test died before it could output anything.
/Users/rmanbert/Kits/thrift/thrift-0.4.0/lib/perl/test/processor........dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-2
Failed 2/2 tests, 0.00% okay
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
/Users/rmanbert/Kits/thrift/thrift-0.4.0/ 255 65280 6 12 1-6
/Users/rmanbert/Kits/thrift/thrift-0.4.0/ 255 65280 2 4 1-2
Failed 2/2 test scripts. 8/8 subtests failed.
Files=2, Tests=8, 1 wallclock secs ( 0.05 cusr + 0.02 csys = 0.07 CPU)
Failed 2/2 test programs. 8/8 subtests failed.
make[4]: *** [check-local] Error 255
make[3]: *** [check-am] Error 2
make[2]: *** [check-recursive] Error 1
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1
So I guess it's a -1 from me.
- Rush