trouble compiling some ports

Christian Baer christian.baer at uni-dortmund.de
Sun Jul 22 19:33:28 UTC 2007


Hello Folks!

Currently I am setting up a new computer (Sun U60) with FreeBSD and I am
in serious guano. :-/

I am currently running 6.2-p6, of course with the ports up to date.
Normally the ports would not be the install method of choice since the
processors of this machine are relatively slow and compiling of slightly
bigger projects seems to take forever - especially since most ports
won't compile with multipal jobs. However, probably because of the
fact that all UltraSPARC CPUs that FreeBSD supports are this slow and
AFAIK cross-plattform-compiling is not supported (yet), many of the
packages are really ancient. So if you want up to date software, you
have to use the ports.

First I tried to install portupgrade. That however failed with an error
message that lets me think, there is still some confusion because this
port was moved from sysutils/ to ports-mgmt/.[1,7] This suspicion is
hardened by the fact that ruby won't compile when it is built as a
dependency of portupgrade, however it *does* compile and install
without any complications if this is done directly from the
/usr/ports/lang/ruby18/ directory.

Well, since that didn't work I decided to get busy on the MTA. I don't
much like Sendmail (although I had some thoughts about getting re-
aquainted) and Postfix is a little more what I want. Postfix requires
Perl 5.8 to work and if that isn't installed, the Postfix port does that
for me. Because I like to at least look at the options of each port
before I build and install anything, I decided to install Perl 5.8 "on
foot" (from the port of course). But that too refused to work. The build
stops with an error code 1 while still saying that everything is ok[2].

To verify what happened, the port offers a "make test" which I ran.
While this is running it spits out several messages like this one:

lib/Test/Simple/t/threads.................skipping test on this platform

where I have to admit that I don't understand why these specific test do
not apply to my plattform. There are some that I understand (like some
tests for Win32), but not all of them. Well I guess the programmer knew
what he/she was doing and left it at that.

make test also spits out three error messages[3,4,5] which I haven't
included in the correct order, I'm afraid. The end of the test script
shows an error message[6] which doesn't really make me feel confident
about installing what I've just built.

Note #1:
You may find that in the messages shown below, Perl was compiled with
the -mcpu option which tends to break some ports (or even make
buildworld). I know about this and have tried several very conservative
options, down to only "-O -pipe". I have also tried not only p6 but also
the current -STABLE, compiled with different compiler-options - which I
might say is *very* ball-busting on such a slow machine.

Note #2:
Someone in a German newsgroup told me that this problem (Perl won't
compile) seems to apply to AMD64 as well. This would *really* surprise
me as Perl is widely used and I didn't find any reports of this problem
anywhere else.

Note #3:
The error message noted in [3] seems a bit more that a coincidence:
1111111111111111111111111111111100000000000000000000000000000000 returned,
1000000000000000000000000000000000000000000000000000000000000000 expected.
There were thoughts about big-/little-endian (SPARC is big-endian)
problems but also about a bug in gcc's data-types.

Can anyone help?

Regards,
Chris


[1] last lines from portupgrade's build
/usr/local/bin/ruby18 -p  -e 'sub %r:/usr/local:, "/usr/local"'
ports.rb > .build/ports.rb
/usr/local/bin/ruby18 -wc portsdb.rb
Syntax OK
/usr/local/bin/ruby18 -p  -e 'sub %r:/usr/local:, "/usr/local"'
portsdb.rb > .build/portsdb.rb
===> man (all)
Warning: Object directory not changed from original
/usr/ports/ports-mgmt/portupgrade/work/pkgtools-2.3.1/man
gzip -cn pkg_deinstall.1 > pkg_deinstall.1.gz
gzip -cn pkg_fetch.1 > pkg_fetch.1.gz
gzip -cn pkg_glob.1 > pkg_glob.1.gz
gzip -cn pkg_sort.1 > pkg_sort.1.gz
gzip -cn pkgdb.1 > pkgdb.1.gz
gzip -cn portcvsweb.1 > portcvsweb.1.gz
gzip -cn portsclean.1 > portsclean.1.gz
gzip -cn portsdb.1 > portsdb.1.gz
gzip -cn portupgrade.1 > portupgrade.1.gz
gzip -cn portversion.1 > portversion.1.gz
gzip -cn pkgtools.conf.5 > pkgtools.conf.5.gz
===> misc (all)
===> misc/bash (all)
Warning: Object directory not changed from original
/usr/ports/ports-mgmt/portupgrade/work/pkgtools-2.3.1/misc/bash
===> misc/tcsh (all)
Warning: Object directory not changed from original
/usr/ports/ports-mgmt/portupgrade/work/pkgtools-2.3.1/misc/tcsh
===> misc/zsh (all)
Warning: Object directory not changed from original
/usr/ports/ports-mgmt/portupgrade/work/pkgtools-2.3.1/misc/zsh 



[2] End of the Perl 5.8 build
        Making threads::shared (dynamic)
Writing Makefile for threads::shared
cp shared.pm ../../../lib/threads/shared.pm
../../../miniperl "-I../../../lib" "-I../../../lib"
../../../lib/ExtUtils/xsubpp  -typemap ../../../lib/ExtUtils/typemap
-typemap typemap  shared.xs > shared.xsc && mv shared.xsc shared.c
cc -c    -DAPPLLIB_EXP="/usr/local/lib/perl5/5.8.8/BSDPAN"
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe
-Wdeclaration-after-statement -I/usr/local/include -O2 -pipe
-mcpu=ultrasparc -mtune=ultrasparc    -DVERSION=\"0.94\"
-DXS_VERSION=\"0.94\" -DPIC -fPIC "-I../../.."   shared.c
Running Mkbootstrap for threads::shared ()
chmod 644 shared.bs
rm -f ../../../lib/auto/threads/shared/shared.so
cc  -shared  -L/usr/local/lib shared.o  -o
../../../lib/auto/threads/shared/shared.so
chmod 755 ../../../lib/auto/threads/shared/shared.so
cp shared.bs ../../../lib/auto/threads/shared/shared.bs
chmod 644 ../../../lib/auto/threads/shared/shared.bs

        Making Errno (nonxs)
Writing Makefile for Errno
../../miniperl "-I../../lib" "-I../../lib" Errno_pm.PL Errno.pm
cp Errno.pm ../../lib/Errno.pm
*** Error code 1 (ignored)

        Everything is up to date. Type 'make test' to run test suite.



[3] error message from Perl "make test"
lib/integer...............................#   Failed test 'left shift'
#   in ../lib/integer.t at line 49.
#          got: '-4294967296'
#     expected: '-9223372036854775808'
FAILED at test 10



[4] error message from Perl "make test"
t/op/pack.................................# Failed at op/pack.t line 631
# Failed at op/pack.t line 631
FAILED at test 514



[5] error message from Perl "make test"
t/op/groups...............................FAILED at test 1



[6] End of Perl's make test
t/x2p/s2p.................................ok
Failed 3 test scripts out of 938, 99.68% okay.
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
###   ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory:
###   setenv LD_LIBRARY_PATH `pwd`:$LD_LIBRARY_PATH; cd t; ./perl
harness
###   LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd
t; ./perl harness
###   export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; cd t; ./perl
harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
u=10.40  s=5.69  cu=768.08  cs=172.31  scripts=938  tests=117578
*** Error code 1

Stop in /usr/ports/lang/perl5.8/work/perl-5.8.8.
*** Error code 1

Stop in /usr/ports/lang/perl5.8/work/perl-5.8.8.
*** Error code 1

Stop in /usr/ports/lang/perl5.8/work/perl-5.8.8.
*** Error code 1

Stop in /usr/ports/lang/perl5.8.
sunny# t/op/pack.................................# Failed at op/pack.t
line 631
t/op/pack.................................#: Command not found.
# Failed at op/pack.t line 631
FAILED at test 514 



[7] Cleaning up the ports directory was a really good idea, but it could
have been done a little more completely. Why weren't the language-ports
like 'korean' put into their own subdirectory?


More information about the freebsd-questions mailing list