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


Reply via email to