Ticket #9042 (closed defect: fixed)
Cython fails to build on OpenSolaris x64
|Reported by:||drkirkby||Owned by:||drkirkby|
|Cc:||robertwb, jsp||Work issues:|
|Report Upstream:||N/A||Reviewers:||David Kirkby|
|Authors:||Robert Bradshaw||Merged in:||sage-4.5.alpha0|
- Sun Ultra 27 3.33 GHz Intel W3580 Xeon. Quad core. 8 threads. 12 GB RAM
- OpenSolaris 2009.06 snv_134 X86
- Sage 4.4.2
- gcc 4.4.4
How gcc 4.4.4 was configured
Since the configuration of gcc is fairly critical on OpenSolaris, here's how it was built.
drkirkby@hawk:~/sage-4.4.2$ gcc -v Using built-in specs. Target: i386-pc-solaris2.11 Configured with: ../gcc-4.4.4/configure --prefix=/usr/local/gcc-4.4.4 --with-as=/usr/local/binutils-2.20/bin/as --with-ld=/usr/ccs/bin/ld --with-gmp=/usr/local --with-mpfr=/usr/local Thread model: posix gcc version 4.4.4 (GCC)
gcc 4.3.4 was failing to build iconv.
How the Sage build was attempted
- 64-bit build. SAGE64 was set to "yes"
- #9008 update zlib to latest upstream release to allow a 64-bit library to be built.
- #9009 update mercurial spkg to build 64-bit.
- #7982 update sage_fortran so it can build 64-bit binaries.
- Run 'make -k' so make did not stop on errors, so errors can be listed.
How Python was build
It should be noted that python builds as a 64-bit application. There is no need to set any environment variables like CFLAGS for Python to build 64-bit.
drkirkby@hawk:~/sage-4.4.2$ file local/bin/python local/bin/python: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, not stripped
We can see a few modules did not build
ailed to find the necessary bits to build these modules: _bsddb bsddb185 dl gdbm imageop linuxaudiodev ossaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name. Failed to build these modules: _curses _curses_panel _socket _ssl _tkinter sunaudiodev
The problem with Cython
This is related to #8116, which was closed as invalid, but it would appear the problem can still rear its ugly head.
copying Cython/Includes/python_version.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Includes copying Cython/Includes/numpy.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Includes copying Cython/Includes/python_bytes.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Includes copying Cython/Includes/python_method.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Includes copying Cython/Includes/python_ref.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Includes copying Cython/Plex/Scanners.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Plex copying Cython/Compiler/Parsing.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Compiler copying Cython/Compiler/Scanning.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Compiler copying Cython/Compiler/Visitor.pxd -> build/lib.solaris-2.11-i86pc-2.6/Cython/Compiler copying Cython/Runtime/refnanny.pyx -> build/lib.solaris-2.11-i86pc-2.6/Cython/Runtime running build_ext building 'Cython.Plex.Scanners' extension creating build/temp.solaris-2.11-i86pc-2.6 creating build/temp.solaris-2.11-i86pc-2.6/export creating build/temp.solaris-2.11-i86pc-2.6/export/home creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2 creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1 creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src/Cython creating build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src/Cython/Plex gcc -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/export/home/drkirkby/sage-4.4.2/local/include/python2.6 -c /export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src/Cython/Plex/Scanners.c -o build/temp.solaris-2.11-i86pc-2.6/export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src/Cython/Plex/Scanners.o In file included from /export/home/drkirkby/sage-4.4.2/local/include/python2.6/Python.h:58, from /export/home/drkirkby/sage-4.4.2/spkg/build/cython-0.12.1/src/Cython/Plex/Scanners.c:4: /export/home/drkirkby/sage-4.4.2/local/include/python2.6/pyport.h:685:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." error: command 'gcc' failed with exit status 1 Error installing Cython real 0m4.426s user 0m3.907s sys 0m0.505s sage: An error occurred while installing cython-0.12.1
The likely cause
The -m64 flag is not being used in the compile line shown, but Python was built 64-bit, so I suspect the issue is related to a mix of 32-bit and 64-bit code.
Other OpenSolaris issues
Some other problems which are failing to allow Sage to build 64-bit on OpenSolaris are listed at #9026.
- Summary changed from Cython fails to build in OpenSolaris x64 to Cython fails to build on OpenSolaris x64
- Status changed from needs_review to needs_work
- Status changed from needs_review to positive_review
- Reviewers set to David Kirkby
- Authors set to Robert Bradsure
comment:10 Changed 3 years ago by rlm
- Status changed from positive_review to closed
- Resolution set to fixed
- Merged in set to sage-4.5.alpha0
- Authors changed from Robert Bradsure to Robert Bradshaw