Differences between revisions 17 and 18
Revision 17 as of 2009-03-31 22:31:14
Size: 57754
Editor: PeterJeremy
Comment: Explain matplotlib failures
Revision 18 as of 2009-03-31 23:39:44
Size: 60392
Editor: PeterJeremy
Comment: Justify singular patches
Deletions are marked like this. Additions are marked like this.
Line 953: Line 953:
Correct configure script for amd64 by patching the autoconf inputs and re-running autoconf.

Several other trivial fixes to handle FreeBSD/amd64.

The rationale behind original code to disable `__cplusplus` in cf_gmp.h is unclear. The result using gcc4.3 on FreeBSD is definitely broken as cf_gmp.h includes gmp.h which includes string.h - which results in strcat() and friends being declared without a surrounding `extern "C" {...}` block. This causes the code to linvoke (non-existent) C++ versions of strcat(char *, const char *), rather than the standard C library strcat(). Commenting out this code fixes the problem.
By default, you get the following, which is corrected by the patch to singuname.sh:
{{{
make[2]: Entering directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src'
make[2]: *** No rule to make target `distclean'. Stop.
make[2]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src'
rm: /home/pjeremy/sage-3.4/local/bin/Singular*: No such file or directory
creating cache ./config.cache
checking uname for singular... unknown
configure: error: Unknown architecture: Check singuname.sh
Unable to configure Singular.
}}}

Correct configure script for amd64 by patching the autoconf inputs and re-running autoconf. This corrects a problem where linking libsingular.so reports lots of undefined references to both internal `om`* functions and functions within libncurses.

Several other trivial fixes to support dynamic linking on FreeBSD/amd64.

The rationale behind original code to disable `__cplusplus` in cf_gmp.h is unclear. The result using gcc4.3 on FreeBSD is definitely broken as cf_gmp.h includes gmp.h which includes string.h - which results in strcat() and friends being declared without a surrounding `extern "C" {...}` block. This causes the code to linvoke (non-existent) C++ versions of strcat(char *, const char *), rather than the standard C library strcat(). Commenting out this code fixes the problem. The failure looks
like:
{{{
g++ -O3 -g -fPIC -pipe -I. -I../kernel -I/home/pjeremy/sage-3.4/local/include -I/home/pjeremy/sage-3.4/local/include -I/home/pjeremy/sage-3.4/local/include -fno-implicit-templates -DNDEBUG -DOM_NDEBUG -Dx86_64_freebsd -DHAVE_CONFIG_H -DGENTABLE -o gentable claptmpl.o iparith.cc tesths.cc mpsr_Tok.cc grammar.o scanner.o attrib.o eigenval_ip.o extra.o fehelp.o feOpt.o ipassign.o ipconv.o ipid.o iplib.o ipprint.o ipshell.o lists.o sdb.o fglm.o interpolation.o silink.o subexpr.o janet.o wrapper.o libparse.o sing_win.o gms.o pcv.o maps_ip.o walk.o walk_ip.o cntrlc.o misc.o calcSVD.o slInit_Static.o mpsr_Put.o mpsr_PutPoly.o mpsr_GetPoly.o mpsr_sl.o mpsr_Get.o mpsr_GetMisc.o mpsr_Error.o ndbm.o sing_dbm.o -L../kernel -lkernel -L/home/pjeremy/sage-3.4/local/lib -L/home/pjeremy/sage-3.4/local/lib -lm -lsingfac -lsingcf -lntl -lgmp -lreadline -lncurses -lm -lomalloc ../kernel/mmalloc.o
iparith.cc:443: warning: deprecated conversion from string constant to 'char*'
...
iparith.cc:443: warning: deprecated conversion from string constant to 'char*'
mpsr_Tok.cc: In function 'void mpsr_ttGen()':
mpsr_Tok.cc:538: warning: deprecated conversion from string constant to 'char*'
/home/pjeremy/sage-3.4/local/lib/libsingcf.a(NTLconvert.o)(.text+0x2fa5): In function `convertZZ2CF(NTL::ZZ)':
/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/factory/NTLconvert.cc:649: undefined reference to `strcat(char*, char const*)'
/home/pjeremy/sage-3.4/local/lib/libsingcf.a(NTLconvert.o)(.text+0x2fbf):/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/factory/NTLconvert.cc:662: undefined reference to `strlen(char const*)'
collect2: ld returned 1 exit status
make[4]: *** [iparith.inc] Error 1
make[4]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/Singular'
}}}

Sage FreeBSD 7.x/amd64 and 8-current/amd64 build notes for Sage 3.4

Contents (up to the 2nd level)

Overall build environment differences

  • sh and /bin/sh are a POSIX shell, rather than bash.

  • make is the BSD make, not GNU make

Preparatory work

  • Install ports/shells/bash or ports/shells/bash3 (I used 3.2.48)
  • Install ports/devel/gmake
  • Install ports/lang/gcc43 - FreeBSD no longer ships with a Fortran compiler by default. I tried using g95 but ran into problems.
  • Install ports/devel/autoconf262
  • Install ports/converters/libiconv - This may be optional but is definitely used if found

It's likely there are other dependencies, I haven't tried building sage in a clean (tinderbox) environment.

Building Sage

The Sage build chain automatically unpacks and builds each spkg, however in order to build on FreeBSD, a number of spkgs need patching. Rather than manually unpack, patch and repack each spkg, I have instead modified base/sage-spkg to automatically apply a local patch if it exists. [Note that I am currently working through the build process documenting each subsystem failure before patching with a view to reducing manual activities and identifying patches that aren't required, thus there may be some differences between the patches attached and the patches described for a few days].

  • Unpack sage-3.4.tar
  • cd sage-3.4

  • mkdir -p local/bin spkg/patches

  • Create symlinks to mask name differences.
    • ln -s /usr/local/bin/gmake local/bin/make

    • ln -s /usr/local/bin/bash local/bin/sh

    • ln -s /usr/local/bin/gcc43 local/bin/gcc

    • ln -s /usr/local/bin/g++43 local/bin/g++

  • Unpack the attached shar archive: sage-3.4.shar

  • Apply patches to base build system
    • patch < spkg/patches/base.patch

  • Build Sage
    • SAGE_FORTRAN=/usr/local/bin/gfortran43 SAGE_FORTRAN_LIB=/usr/local/lib/gcc-4.3.4/libgfortran.so gmake

Current Status

Currently, the following tests fail. Two run out of swap (process exceeds 9GB) and 5 are numeric noise. There are also a number of core dumps.

        sage -t  "devel/sage/sage/schemes/elliptic_curves/lseries_ell.py"
        sage -t  "devel/sage/sage/schemes/elliptic_curves/ell_rational_field.py"
        sage -t  "devel/sage/sage/modules/free_module_element.pyx"
        sage -t  "devel/sage/sage/libs/pari/gen.pyx"
        sage -t  "devel/sage/sage/misc/getusage.py"
        sage -t  "devel/sage/sage/calculus/calculus.py"
        sage -t  "devel/sage/sage/combinat/partition.py"
        sage -t  "devel/sage/sage/lfunctions/sympow.py"
        sage -t  "devel/sage/sage/ext/fast_eval.pyx"
        sage -t  "devel/sage/sage/parallel/multiprocessing.py"
        sage -t  "devel/sage/sage/parallel/decorate.py"
        sage -t  "devel/sage/sage/rings/real_double.pyx"
        sage -t  "devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx"
        sage -t  "devel/sage/sage/rings/polynomial/polynomial_quotient_ring_element.py"
        sage -t  "devel/sage/sage/rings/polynomial/pbori.pyx"
        sage -t  "devel/sage/sage/rings/tests.py"
        sage -t  "devel/sage/sage/rings/integer.pyx"

sage -t "devel/sage/sage/schemes/elliptic_curves/lseries_ell.py"

System ran out of swap.

*** *** Error: TIMED OUT! PROCESS KILLED! *** ***
*** *** Error: TIMED OUT! *** ***
*** *** Error: TIMED OUT! *** ***
         [403.2 s]

sage -t "devel/sage/sage/schemes/elliptic_curves/ell_rational_field.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/schemes/elliptic_curves/ell_rational_field.py", line 1178:
    sage: E.analytic_rank(algorithm='sympow')
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_27[5]>", line 1, in <module>
        E.analytic_rank(algorithm='sympow')###line 1178:
    sage: E.analytic_rank(algorithm='sympow')
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 1208, in analytic_rank
        return sympow.analytic_rank(self)[0]
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/schemes/elliptic_curves/ell_rational_field.py", line 1182:
    sage: E.analytic_rank(algorithm='all')
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_27[6]>", line 1, in <module>
        E.analytic_rank(algorithm='all')###line 1182:
    sage: E.analytic_rank(algorithm='all')
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 1214, in analytic_rank
        self.analytic_rank('rubinstein'), self.analytic_rank('sympow')]))
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 1208, in analytic_rank
        return sympow.analytic_rank(self)[0]
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
1 items had failures:
   2 of   9 in __main__.example_27
***Test Failed*** 2 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_ell_rational_field.py
         [85.2 s]

sage -t "devel/sage/sage/modules/free_module_element.pyx"

Numeric noise.

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/modules/free_module_element.pyx", line 505:
    sage: vector(RDF, {1:pi, 1000:e})._sage_input_(SageInputBuilder(), False)
Expected:
    {call: {atomic:vector}({atomic:RDF}, {dict: {{atomic:1}:{atomic:3.1415926535897931}, {atomic:1000}:{atomic:2.7182818284590451}} })}
Got:
    {call: {atomic:vector}({atomic:RDF}, {dict: {{atomic:1}:{atomic:3.1415926535897931}, {atomic:1000}:{atomic:2.7182818284590455}} })}
**********************************************************************
1 items had failures:
   1 of  10 in __main__.example_8
***Test Failed*** 1 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_free_module_element.py
         [20.1 s]

sage -t "devel/sage/sage/libs/pari/gen.pyx"

System ran out of swap.

*** *** Error: TIMED OUT! PROCESS KILLED! *** ***
*** *** Error: TIMED OUT! *** ***
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/libs/pari/gen.pyx", line 8827:
    sage: print "ignore this";  get_memory_usage()                       # random output
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_283[2]>", line 1, in <module>
        print "ignore this";  get_memory_usage()                       # random output###line 8827:
    sage: print "ignore this";  get_memory_usage()                       # random output
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 81, in get_memory_usage
        raise NotImplementedError, "memory usage not implemented on platform %s"%U
    NotImplementedError: memory usage not implemented on platform freebsd
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/libs/pari/gen.pyx", line 8830:
    sage: print "ignore this";  get_memory_usage()                       # random output
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_283[4]>", line 1, in <module>
        print "ignore this";  get_memory_usage()                       # random output###line 8830:
    sage: print "ignore this";  get_memory_usage()                       # random output
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 81, in get_memory_usage
        raise NotImplementedError, "memory usage not implemented on platform %s"%U
    NotImplementedError: memory usage not implemented on platform freebsd
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/libs/pari/gen.pyx", line 8833:
    sage: print "ignore this";  get_memory_usage()                       # random output
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_283[6]>", line 1, in <module>
        print "ignore this";  get_memory_usage()                       # random output###line 8833:
    sage: print "ignore this";  get_memory_usage()                       # random output
      File "/home/peter/sage/saFor whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_gen.py*** *** Error: TIMED OUT! *** ***
         [363.3 s]

sage -t "devel/sage/sage/misc/getusage.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/misc/getusage.py", line 25:
    sage: print "ignore this";  top()              # random output
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_1[2]>", line 1, in <module>
        print "ignore this";  top()              # random output###line 25:
    sage: print "ignore this";  top()              # random output
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 38, in top
        raise NotImplementedError, "top not implemented on platform %s"%U
    NotImplementedError: top not implemented on platform freebsd
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/misc/getusage.py", line 68:
    sage: t = get_memory_usage()
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_2[2]>", line 1, in <module>
        t = get_memory_usage()###line 68:
    sage: t = get_memory_usage()
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 81, in get_memory_usage
        raise NotImplementedError, "memory usage not implemented on platform %s"%U
    NotImplementedError: memory usage not implemented on platform freebsd
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/misc/getusage.py", line 69:
    sage: get_memory_usage(t)          # amount of memory more than when we defined t.
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_2[3]>", line 1, in <module>
        get_memory_usage(t)          # amount of memory more than when we defined t.###line 69:
    sage: get_memory_usage(t)          # amount of memory more than when we defined t.
    NameError: name 't' is not defined
**********************************************************************
2 items had failures:
   1 of   3 in __main__.example_1
   2 of   4 in __main__.example_2
***Test Failed*** 3 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_getusage.py
         [9.2 s]

sage -t "devel/sage/sage/calculus/calculus.py"

Numeric noise.

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/calculus/calculus.py", line 3161:
    sage: numerical_integral(f, 0, 1)
Expected:
    (0.52848223225314706, 6.8392846084921134e-07)
Got:
    (0.52848223225314706, 6.8392846084921049e-07)
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/calculus/calculus.py", line 3792:
    sage: a.find_root(0,0.002)
Expected:
    0.0004110514049349341...
Got:
    0.00041105140493493428
**********************************************************************
2 items had failures:
   1 of  16 in __main__.example_73
   1 of  25 in __main__.example_84
***Test Failed*** 2 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_calculus.py
         [108.9 s]

sage -t "devel/sage/sage/combinat/partition.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3390:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3393:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3396:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3399:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3402:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3405:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3408:
    sage: number_of_partitions( n - (n % 385) + 369) % 385 == 0
Expected:
    True
Got:
    False
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/combinat/partition.py", line 3416:
    sage: len([n for n in [1..500] if number_of_partitions(n) != number_of_partitions(n,algorithm='pari')])
Expected:
    0
Got:
    17
**********************************************************************
1 items had failures:
   8 of  40 in __main__.example_125
***Test Failed*** 8 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_partition.py
         [27.7 s]

sage -t "devel/sage/sage/lfunctions/sympow.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/lfunctions/sympow.py", line 265:
    sage: sympow.analytic_rank(EllipticCurve('11a'))
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_7[2]>", line 1, in <module>
        sympow.analytic_rank(EllipticCurve('11a'))###line 265:
    sage: sympow.analytic_rank(EllipticCurve('11a'))
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/lfunctions/sympow.py", line 269:
    sage: sympow.analytic_rank(EllipticCurve('389a'))
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_7[4]>", line 1, in <module>
        sympow.analytic_rank(EllipticCurve('389a'))###line 269:
    sage: sympow.analytic_rank(EllipticCurve('389a'))
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/lfunctions/sympow.py", line 273:
    sage: sympow.analytic_rank(EllipticCurve([1, -1, 0, -79, 289]))
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_7[6]>", line 1, in <module>
        sympow.analytic_rank(EllipticCurve([Integer(1), -Integer(1), Integer(0), -Integer(79), Integer(289)]))###line 273:
    sage: sympow.analytic_rank(EllipticCurve([1, -1, 0, -79, 289]))
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/lfunctions/sympow.py", line 277:
    sage: sympow.analytic_rank(EllipticCurve([1, 1, 0, -2582, 48720]))  # long
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_7[8]>", line 1, in <module>
        sympow.analytic_rank(EllipticCurve([Integer(1), Integer(1), Integer(0), -Integer(2582), Integer(48720)]))  # long###line 277:
    sage: sympow.analytic_rank(EllipticCurve([1, 1, 0, -2582, 48720]))  # long
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/lfunctions/sympow.py", line 287, in analytic_rank
        raise RuntimeError, "failed to compute analytic rank"
    RuntimeError: failed to compute analytic rank
**********************************************************************
1 items had failures:
   4 of  10 in __main__.example_7
***Test Failed*** 4 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_sympow.py
         [16.7 s]

sage -t "devel/sage/sage/ext/fast_eval.pyx"

Numeric noise.

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/ext/fast_eval.pyx", line 934:
    sage: f(9)
Expected:
    2.0
Got:
    2.0000000000000004
**********************************************************************
1 items had failures:
   1 of   9 in __main__.example_22
***Test Failed*** 1 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_fast_eval.py
         [8.5 s]

sage -t "devel/sage/sage/parallel/multiprocessing.py"

A mysterious error (perphaps a memory error?) occurred, which may have crashed doctest.
         [9.4 s]

sage -t "devel/sage/sage/parallel/decorate.py"

A mysterious error (perphaps a memory error?) occurred, which may have crashed doctest.
         [6.1 s]

sage -t "devel/sage/sage/rings/real_double.pyx"

Numeric noise.

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/real_double.pyx", line 727:
    sage: sage_input(RDF(-e), verify=True, preparse=False)
Expected:
    # Verified
    -RDF(2.7182818284590451)
Got:
    # Verified
    -RDF(2.7182818284590455)
**********************************************************************
1 items had failures:
   1 of  12 in __main__.example_40
***Test Failed*** 1 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_real_double.py
         [11.2 s]

sage -t "devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 593:
    sage: g, u, v = F.xgcd(G)
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[4]>", line 1, in <module>
        g, u, v = F.xgcd(G)###line 593:
    sage: g, u, v = F.xgcd(G)
    RuntimeError
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 594:
    sage: g, u, v
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[5]>", line 1, in <module>
        g, u, v###line 594:
    sage: g, u, v
    NameError: name 'g' is not defined
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 596:
    sage: u*F + v*G
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[6]>", line 1, in <module>
        u*F + v*G###line 596:
    sage: u*F + v*G
    NameError: name 'u' is not defined
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 604:
    sage: g, u, v = F.xgcd(G)
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[11]>", line 1, in <module>
        g, u, v = F.xgcd(G)###line 604:
    sage: g, u, v = F.xgcd(G)
    RuntimeError
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 605:
    sage: g, u, v
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[12]>", line 1, in <module>
        g, u, v###line 605:
    sage: g, u, v
    NameError: name 'g' is not defined
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 607:
    sage: u*F + v*G
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_20[13]>", line 1, in <module>
        u*F + v*G###line 607:
    sage: u*F + v*G
    NameError: name 'u' is not defined
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 1167:
    sage: r = f.resultant(g); r
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_39[4]>", line 1, in <module>
        r = f.resultant(g); r###line 1167:
    sage: r = f.resultant(g); r
    RuntimeError
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_integer_dense_flint.pyx", line 1169:
    sage: r.parent() is ZZ
Expected:
    True
Got:
    False
**********************************************************************
2 items had failures:
   6 of  14 in __main__.example_20
   2 of   6 in __main__.example_39
***Test Failed*** 8 failures.
Warning: FLINT stack memory allocation cleanup detected mismatched allocation/releases
Abort trap (core dumped)
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_polynomial_integer_dense_flint.py
         [20.8 s]

sage -t "devel/sage/sage/rings/polynomial/polynomial_quotient_ring_element.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 31:
    sage: z^2
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_0[7]>", line 1, in <module>
        z**Integer(2)###line 31:
    sage: z^2
      File "element.pyx", line 1215, in sage.structure.element.RingElement.__pow__ (sage/structure/element.c:8955)
      File "element.pyx", line 2857, in sage.structure.element.generic_power_c (sage/structure/element.c:18561)
      File "element.pyx", line 1152, in sage.structure.element.RingElement.__mul__ (sage/structure/element.c:8615)
      File "element.pyx", line 1156, in sage.structure.element.RingElement._mul_ (sage/structure/element.c:8670)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 199, in _mul_
        return PolynomialQuotientRingElement(R, prod, check=False)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 133, in __init__
        S = P((R.leading_coefficient()/B.leading_coefficient())) * X**(R.degree()-B.degree())
      File "element.pyx", line 1236, in sage.structure.element.RingElement.__div__ (sage/structure/element.c:9099)
      File "element.pyx", line 1240, in sage.structure.element.RingElement._div_ (sage/structure/element.c:9158)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 244, in _div_
        return self * ~right
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 284, in __invert__
        g, _, a = self.parent().modulus().xgcd(self._polynomial)
    RuntimeError
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 36:
    sage: z^6
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_0[8]>", line 1, in <module>
        z**Integer(6)###line 36:
    sage: z^6
      File "element.pyx", line 1215, in sage.structure.element.RingElement.__pow__ (sage/structure/element.c:8955)
      File "element.pyx", line 2862, in sage.structure.element.generic_power_c (sage/structure/element.c:18613)
      File "element.pyx", line 1152, in sage.structure.element.RingElement.__mul__ (sage/structure/element.c:8615)
      File "element.pyx", line 1156, in sage.structure.element.RingElement._mul_ (sage/structure/element.c:8670)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 199, in _mul_
        return PolynomialQuotientRingElement(R, prod, check=False)
      File "/home/peter/sage/sAssertion failed: (diff == regind * size), function arena_run_reg_dalloc, file /usr/src/lib/libc/stdlib/malloc.c, line 2536.
age-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 133, in __init__
        S = P((R.leading_coefficient()/B.leading_coefficient())) * X**(R.degree()-B.degree())
      File "element.pyx", line 1236, in sage.structure.element.RingElement.__div__ (sage/structure/element.c:9099)
      File "element.pyx", line 1240, in sage.structure.element.RingElement._div_ (sage/structure/element.c:9158)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 244, in _div_
        return self * ~right
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/polynomial/polynomial_quotient_ring_element.py", line 284, in __invert__
        g, _, a = self.parent().modulus().xgcd(self._polynomial)
    RuntimeError
**********************************************************************
1 items had failures:
   2 of  20 in __main__.example_0
***Test Failed*** 2 failures.
Warning: FLINT stack memory allocation cleanup detected mismatched allocation/releases
Abort trap (core dumped)
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_polynomial_quotient_ring_element.py
         [20.4 s]

sage -t "devel/sage/sage/rings/tests.py"

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/tests.py", line 222:
    sage: sage.rings.tests.test_random_elements(trials=10)
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_11[2]>", line 1, in <module>
        sage.rings.tests.test_random_elements(trials=Integer(10))###line 222:
    sage: sage.rings.tests.test_random_elements(trials=10)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/tests.py", line 230, in test_random_elements
        print "survived %s tests (memory usage = %s)"%(i, get_memory_usage())
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 81, in get_memory_usage
        raise NotImplementedError, "memory usage not implemented on platform %s"%U
    NotImplementedError: memory usage not implemented on platform freebsd
**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/tests.py", line 249:
    sage: sage.rings.tests.test_random_arith(trials=10)
Exception raised:
    Traceback (most recent call last):
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1231, in run_one_test
        self.run_one_example(test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/sagedoctest.py", line 38, in run_one_example
        OrigDocTestRunner.run_one_example(self, test, example, filename, compileflags)
      File "/home/peter/sage/sage-3.4/local/bin/ncadoctest.py", line 1172, in run_one_example
        compileflags, 1) in test.globs
      File "<doctest __main__.example_12[2]>", line 1, in <module>
        sage.rings.tests.test_random_arith(trials=Integer(10))###line 249:
    sage: sage.rings.tests.test_random_arith(trials=10)
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/rings/tests.py", line 256, in test_random_arith
        print "survived %s tests (memory usage = %s)"%(i, get_memory_usage())
      File "/home/peter/sage/sage-3.4/local/lib/python2.5/site-packages/sage/misc/getusage.py", line 81, in get_memory_usage
        raise NotImplementedError, "memory usage not implemented on platform %s"%U
    NotImplementedError: memory usage not implemented on platform freebsd
**********************************************************************
2 items had failures:
   1 of   3 in __main__.example_11
   1 of   3 in __main__.example_12
***Test Failed*** 2 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_tests.py
         [8.9 s]

sage -t "devel/sage/sage/rings/integer.pyx"

Numeric noise.

**********************************************************************
File "/home/peter/sage/sage-3.4/devel/sage/sage/rings/integer.pyx", line 1388:
    sage: 2^float(1.5)       # python float
Expected:
    2.8284271247461903
Got:
    2.8284271247461898
**********************************************************************
1 items had failures:
   1 of  26 in __main__.example_34
***Test Failed*** 1 failures.
For whitespace errors, see the file /home/peter/sage/sage-3.4/tmp/.doctest_integer.py
         [16.7 s]

Notes on spkgs and attached patches

A number of the following patches change make to ${MAKE} and/or use gmake instead of make on FreeBSD. The former is the recommended way to recursively invoke make to ensure that the subordinate make is the same as the parent make (and also ensures that the two make instances will communicate on things like '-jX'). The latter fixes date from early versions of this patchset before I decided to symlink GNU make as local/bin/make and should no longer be necessary (though I haven't verified this).

base.patch

  • The patch to base/sage-spkg enables the local patching that the rest of the patches rely on
  • The patch to standard/deps ensures that bash is used.

atlas-3.8.3.p0

Various fixes to make it compile on FreeBSD

  • sysctl is not in the default user path so use an explicit pathname (optional)

  • The newer AMD CPUs all identify as 'Athlon' so use the existence of multiple cores to distinguish between K7 (i386) and later (Hammer) CPUs. (optional)
  • Correct various sysctl OIDs to match the names FreeBSD uses. (optional)
  • FreeBSD uses an '_fbsd' suffix on the ELF format supported by ld - prevents ld: unrecognised emulation mode: elf_x86_64 error during atlas build.

  • Treat shared libraries the same as Linux - otherwise they aren't correctly detected by (eg) numpy.
  • Building the libclapack.so should result in a libclapack.so being created. This appears to be a copy-and-paste error in atlas

numpy error from 2nd last point above:

atlas_blas_info:
  libraries f77blas,cblas,atlas_r not found in /home/pjeremy/sage-3.4/local/lib
  NOT AVAILABLE

/home/pjeremy/sage-3.4/spkg/build/numpy-1.2.0.p0/src/numpy/distutils/system_info.py:1340: UserWarning: 
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  warnings.warn(AtlasNotFoundError.__doc__)
...
atlas_info:
  libraries f77blas,cblas,atlas_r not found in /home/pjeremy/sage-3.4/local/lib
  libraries lapack_atlas not found in /home/pjeremy/sage-3.4/local/lib
numpy.distutils.system_info.atlas_info
  NOT AVAILABLE

/home/pjeremy/sage-3.4/spkg/build/numpy-1.2.0.p0/src/numpy/distutils/system_info.py:1247: UserWarning: 
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  warnings.warn(AtlasNotFoundError.__doc__)
...
/home/pjeremy/sage-3.4/local/bin/gfortran -Wall build/temp.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/lapack_litemodule.o build/temp.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/python_xerbla.o -L/home/pjeremy/sage-3.4/local/lib -L/usr/local/lib/gcc-4.3.4/gcc/x86_64-portbld-freebsd7.0/4.3.4 -llapack -lblas -lgfortran -o build/lib.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/lapack_lite.so
build/temp.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/lapack_litemodule.o(.text+0x41): In function `check_object':
numpy/linalg/lapack_litemodule.c:103: undefined reference to `PyType_IsSubtype'
build/temp.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/lapack_litemodule.o(.text+0x7b):numpy/linalg/lapack_litemodule.c:114: undefined reference to `PyErr_Format'
build/temp.freebsd-7.0-STABLE-amd64-2.5/numpy/linalg/lapack_litemodule.o(.text+0xb7):numpy/linalg/lapack_litemodule.c:109: undefined reference to `PyErr_Format'
...

clisp-2.46.p7

The FreeBSD/amd64 process memory map is incompatible with the memory mapping done by clisp. The patch moves the memory map down 8 bits. An alternative (used by the FreeBSD clisp port) is to pass --disable-mmap to configure.

eclib-20080310.p7

Various 'make' fixes - see above.

ecm-6.2.1.p0

Portability fixes so the configure script works with a POSIX shell.

fortran-20071120.p5

FreeBSD doesn't have a '-f' option on readlink

freetype-2.3.5.p0

Various 'make' fixes - see above.

gap-4.4.12.p1

Patches (mostly taken from the FreeBSD port) to make gap compile on FreeBSD.

gd-2.0.35.p1

Patch needed to make gd correctly detect libiconv. Otherwise it fails with:

checking for shared library run path origin... done
checking for iconv... no, consider installing GNU libiconv
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking whether iconv.h defines iconv_t... yes
...
 gcc -DHAVE_CONFIG_H -I. -I. -I. -I/home/pjeremy/sage-3.4/local/include/freetype2 -I/home/pjeremy/sage-3.4/local/include -I/home/pjeremy/sage-3.4/local/include -fPIC -g -I/home/pjeremy/sage-3.4/local/include -I/home/pjeremy/sage-3.4/local/include/freetype2/ -MT gdkanji.lo -MD -MP -MF .deps/gdkanji.Tpo -c gdkanji.c  -fPIC -DPIC -o .libs/gdkanji.o
gdkanji.c:30: error: conflicting types for 'libiconv'
/usr/local/include/iconv.h:83: error: previous declaration of 'libiconv' was here
gdkanji.c:40: error: conflicting types for 'libiconv'
/usr/local/include/iconv.h:83: error: previous declaration of 'libiconv' was here
make[4]: *** [gdkanji.lo] Error 1
make[4]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/gd-2.0.35.p1/src'

gmp-mpir-0.9

Various 'make' fixes - see above.

iml-1.0.1.p11

Remove a stray warning by not attempting to execute ${CFLAGS}

libgcrypt-1.4.3.p0

Chase shared library name difference on FreeBSD. Otherwise the gnutls build fails:

gcc -std=gnu99 -shared  .libs/gnutls_openssl.o .libs/openssl_compat.o -Wl,--whole-archive ../lgl/.libs/liblgnu.a ../lib/minitasn1/.libs/libminitasn1.a -Wl,--no-whole-archive  -Wl,--rpath -Wl,/home/pjeremy/sage-3.4/local/lib -Wl,--rpath -Wl,/usr/local/lib -L/home/pjeremy/sage-3.4/spkg/build/gnutls-2.2.1.p1/src/lib/.libs -L/home/pjeremy/sage-3.4/local/lib -lgcrypt -L/usr/local/lib -lintl -liconv -lgpg-error -lgnutls  -Wl,-soname -Wl,libgnutls-openssl.so.27 -o .libs/libgnutls-openssl.so.27
/usr/bin/ld: /home/pjeremy/sage-3.4/local/lib/libgcrypt.a(libgcrypt_la-visibility.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC
/home/pjeremy/sage-3.4/local/lib/libgcrypt.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
libtool: install: error: relink `libgnutls-openssl.la' with the above command before installing it
make[5]: *** [install-libLTLIBRARIES] Error 1
make[5]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/gnutls-2.2.1.p1/src/libextra'

libgpg_error-1.6.p0

Chase shared library name difference on FreeBSD. Otherwise the gnutls build fails:

gcc -std=gnu99 -shared  .libs/gnutls_openssl.o .libs/openssl_compat.o -Wl,--whole-archive ../lgl/.libs/liblgnu.a ../lib/minitasn1/.libs/libminitasn1.a -Wl,--no-whole-archive  -Wl,--rpath -Wl,/home/pjeremy/sage-3.4/local/lib -Wl,--rpath -Wl,/usr/local/lib -L/home/pjeremy/sage-3.4/spkg/build/gnutls-2.2.1.p1/src/lib/.libs -L/home/pjeremy/sage-3.4/local/lib -lgcrypt -L/usr/local/lib -lintl -liconv -lgpg-error -lgnutls  -Wl,-soname -Wl,libgnutls-openssl.so.27 -o .libs/libgnutls-openssl.so.27
/usr/bin/ld: /home/pjeremy/sage-3.4/local/lib/libgpg-error.a(libgpg_error_la-strsource.o): relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
/home/pjeremy/sage-3.4/local/lib/libgpg-error.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
libtool: install: error: relink `libgnutls-openssl.la' with the above command before installing it
make[5]: *** [install-libLTLIBRARIES] Error 1
make[5]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/gnutls-2.2.1.p1/src/libextra'

libm4ri-20090128

The configure script is pretty much beyond redemption on FreeBSD. Instead fix the autoconf inputs to support FreeBSD and re-run autoconf. The libm4ri fixes have all be forwarded to the libm4ri maintainer and accepted by them.

Also ensure that CPPFLAGS from the environment is passed into the libm4ri build process.

linbox-1.1.6

Detect FreeBSD and appropriately select BLAS and Atlas libraries.

matplotlib-0.98.5.3rc0-svn6910.p3

Add hooks to ensure that the local Sage versions of dependencies are used by FreeBSD. Otherwise you get:

BUILDING MATPLOTLIB
            matplotlib: 0.98.6svn
                python: 2.5.2 (r252:60911, Apr  1 2009, 08:50:05)  [GCC
                        4.3.4 20090326 (prerelease)]
              platform: freebsd7

REQUIRED DEPENDENCIES
                 numpy: no
                        * You must install numpy 1.1 or later to build
                        * matplotlib.
Error building matplotlib package.

Add support for FreeBSD later than 6.x. Otherwise you get :

REQUIRED DEPENDENCIES
Traceback (most recent call last):
  File "setup.py", line 119, in <module>
    if not check_for_numpy():
  File "/home/pjeremy/sage-3.4/spkg/build/matplotlib-0.98.5.3rc0-svn6910.p3/src/setupext.py", line 499, in check_for_numpy
    add_base_flags(module)
  File "/home/pjeremy/sage-3.4/spkg/build/matplotlib-0.98.5.3rc0-svn6910.p3/src/setupext.py", line 320, in add_base_flags
    [os.path.join(p, 'include') for p in basedir[sys.platform] ])
KeyError: 'freebsd7'
Error building matplotlib package.

gcc4.3 (though not gcc4.2) appears to define putchar() in a way that breaks the putchar() definitions inside ttconv. I couldn't quickly identify what the underlying cause was so I took the easy way out and undef'd the offending putchar() macro.

Individual character bounding boxes in AFM files do not have to be integral so convert each bounding box to a list of floats, rather than a list of ints. This corrects a problem where most of the tests would fail with ValueError: invalid literal for int() with base 10: '539.621'.

mpfr-2.4.1

Portability fixes so the configure script works with a POSIX shell.

ntl-5.4.2.p6

Correctly pass -fPIC when building the shared library.

numpy-1.2.0.p0

Correctly pass -fPIC when building the shared library. Various fixes to handle correct fortran and library detection on FreeBSD.

pari-2.3.3.p0

FreeBSD refers to the x86_64 architecture under its original name of 'amd64' so use this as an alias for x86_64. The `-fPIC' fix is needed to correct:

gcc  -o libpari-gmp.so.2.3.3 -shared -O3 -Wall -fno-strict-aliasing -fomit-frame-pointer -Wl,-shared,-soname=libpari-gmp.so.2 mp.o mpinl.o Flx.o Qfb.o RgX.o alglin1.o alglin2.o arith1.o arith2.o base1.o base2.o base3.o base4.o base5.o bibli1.o bibli2.o buch1.o buch2.o buch3.o buch4.o galconj.o gen1.o gen2.o gen3.o ifactor1.o perm.o polarit1.o polarit2.o polarit3.o rootpol.o subcyclo.o subgroup.o trans1.o trans2.o trans3.o anal.o compat.o default.o errmsg.o es.o init.o intnum.o members.o sumiter.o aprcl.o elldata.o elliptic.o galois.o groupid.o kummer.o mpqs.o nffactor.o part.o stark.o subfield.o thue.o -lc -lm -L/home/pjeremy/sage-3.4/local/lib -lgmp 
/usr/bin/ld: mp.o: relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC
mp.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[3]: *** [libpari-gmp.so.2.3.3] Error 1
make[3]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/pari-2.3.3.p0/src/Ofreebsd-amd64'

python-2.5.2.p9

Include the python patches from the FreeBSD port. This adds support for FreeBSD 7 and 8.

The patch to Lib/test/seq_tests.py disables the memory-exhaustion tests on 64-bit architectures. Otherwise, those tests allocate a 32GB chunk of memory and attempt to use it all. The default process size on FreeBSD/amd64 allows the allocation to succeed but actually using the memory generally results in swap exhaustion. This fix comes from python-2.5.4.

r-2.6.1.p22

Pass CFLAGS, CPPFLAGS and LDFLAGS from the environment into the build process.

readline-5.2.p6

Chase shared library name difference on FreeBSD. Without this if, the build fails with

...
gcc -shared  -o libreadline.so.5 readline.so vi_mode.so funmap.so keymaps.so parens.so search.so rltty.so complete.so bind.so isearch.so display.so signals.so util.so kill.so undo.so macro.so input.so callback.so terminal.so text.so nls.so misc.so xmalloc.so history.so histexpand.so histfile.so histsearch.so shell.so mbutil.so tilde.so compat.so 
rm -f libhistory.so.5
gcc -shared  -o libhistory.so.5 history.so histexpand.so histfile.so histsearch.so shell.so mbutil.so xmalloc.so 
make[3]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/readline-5.2.p6/src/shlib'
( cd shlib ; make -w DESTDIR= install )
make[3]: Entering directory `/home/pjeremy/sage-3.4/spkg/build/readline-5.2.p6/src/shlib'
/bin/sh ../support/mkdirs /home/pjeremy/sage-3.4/local/lib
/bin/sh ../support/shlib-install -O freebsd -d /home/pjeremy/sage-3.4/local/lib -b /home/pjeremy/sage-3.4/local/bin -i "/usr/bin/install -c -m 644" libhistory.so.5
/bin/sh ../support/shlib-install -O freebsd -d /home/pjeremy/sage-3.4/local/lib -b /home/pjeremy/sage-3.4/local/bin -i "/usr/bin/install -c -m 644" libreadline.so.5
install: you may need to run ldconfig
make[3]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/readline-5.2.p6/src/shlib'
make[2]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/readline-5.2.p6/src'
Readline's build claims to have finished, but files that should have been built weren't.

Applying the fix from FreeBSD ports to remove the check on objformat does not correct the above problem.

sage-3.4

FreeBSD does not include a definition for log2() in libm. Use a simplistic definition of log2(x) = log2(e) * ln(x)

sage_scripts-3.4

Patch sage-spkg to apply local patches. This patch also disables deletion of the spkg/build/FOO temporary directories - which was useful during porting. This latter patch can be safely removed.

singular-3-0-4-4-20080711.p4

By default, you get the following, which is corrected by the patch to singuname.sh:

make[2]: Entering directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src'
make[2]: *** No rule to make target `distclean'.  Stop.
make[2]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src'
rm: /home/pjeremy/sage-3.4/local/bin/Singular*: No such file or directory
creating cache ./config.cache
checking uname for singular... unknown
configure: error: Unknown architecture: Check singuname.sh
Unable to configure Singular.

Correct configure script for amd64 by patching the autoconf inputs and re-running autoconf. This corrects a problem where linking libsingular.so reports lots of undefined references to both internal om* functions and functions within libncurses.

Several other trivial fixes to support dynamic linking on FreeBSD/amd64.

The rationale behind original code to disable __cplusplus in cf_gmp.h is unclear. The result using gcc4.3 on FreeBSD is definitely broken as cf_gmp.h includes gmp.h which includes string.h - which results in strcat() and friends being declared without a surrounding extern "C" {...} block. This causes the code to linvoke (non-existent) C++ versions of strcat(char *, const char *), rather than the standard C library strcat(). Commenting out this code fixes the problem. The failure looks like:

g++ -O3 -g -fPIC -pipe -I. -I../kernel -I/home/pjeremy/sage-3.4/local/include -I/home/pjeremy/sage-3.4/local/include  -I/home/pjeremy/sage-3.4/local/include -fno-implicit-templates -DNDEBUG -DOM_NDEBUG -Dx86_64_freebsd -DHAVE_CONFIG_H -DGENTABLE -o gentable claptmpl.o iparith.cc tesths.cc mpsr_Tok.cc grammar.o scanner.o attrib.o eigenval_ip.o extra.o fehelp.o feOpt.o ipassign.o ipconv.o ipid.o iplib.o ipprint.o ipshell.o lists.o sdb.o fglm.o interpolation.o silink.o subexpr.o janet.o wrapper.o libparse.o sing_win.o gms.o pcv.o maps_ip.o walk.o walk_ip.o cntrlc.o misc.o calcSVD.o  slInit_Static.o mpsr_Put.o mpsr_PutPoly.o mpsr_GetPoly.o mpsr_sl.o mpsr_Get.o mpsr_GetMisc.o mpsr_Error.o ndbm.o sing_dbm.o  -L../kernel -lkernel -L/home/pjeremy/sage-3.4/local/lib -L/home/pjeremy/sage-3.4/local/lib -lm -lsingfac -lsingcf -lntl -lgmp -lreadline -lncurses -lm  -lomalloc ../kernel/mmalloc.o
iparith.cc:443: warning: deprecated conversion from string constant to 'char*'
...
iparith.cc:443: warning: deprecated conversion from string constant to 'char*'
mpsr_Tok.cc: In function 'void mpsr_ttGen()':
mpsr_Tok.cc:538: warning: deprecated conversion from string constant to 'char*'
/home/pjeremy/sage-3.4/local/lib/libsingcf.a(NTLconvert.o)(.text+0x2fa5): In function `convertZZ2CF(NTL::ZZ)':
/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/factory/NTLconvert.cc:649: undefined reference to `strcat(char*, char const*)'
/home/pjeremy/sage-3.4/local/lib/libsingcf.a(NTLconvert.o)(.text+0x2fbf):/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/factory/NTLconvert.cc:662: undefined reference to `strlen(char const*)'
collect2: ld returned 1 exit status
make[4]: *** [iparith.inc] Error 1
make[4]: Leaving directory `/home/pjeremy/sage-3.4/spkg/build/singular-3-0-4-4-20080711.p4/src/Singular'

tachyon-0.98beta.p8

tachyon does include BSD support (though the code advises that it hasn't been tested for a while). Looking though the source code, there's no obvious bitrot so add FreeBSD support to the spkg-install script. As noted, I haven't added support for either threaded or 64-bit tachyon. The former shouldn't be too difficult to add and the MacOS-X port implies it is optional. The 64-bit support is solely an optimisation - a test to detect wrap-around of long integers is removed since wrap-around isn't possible with 64-bit longs.