Hi all,
Thanks to everybody who has contributed over the past couple of days on the 
various bulletin boards I have posted to. As is always the case, the solution 
was quite simple but completely passed me by. I'm going to use Mac inexperience 
as an excuse here... :-)

So the original problem was not being able to compile a working executable of 
CNS v1.21 from source on Mac OSX 10.6.3. The reason for compiling from source 
is because in order to run CNS from Aria 2.3, a program used in NMR automated 
peak assignment and structure calculation, CNS needs to be recompiled with 
Aria-specific source code. With fink-installed gfortran/gcc 4.5 compilers, CNS 
compiles and links with no warnings or errors, but fails at the execution 
stage. With fink-installed 4.4, CNS compiles successfully but when executed 
produces a simple "segmentation fault" message.

The problem here is the fink-installed compilers. Harry Powell and Daniel 
O'Donovan have guided me to the light - the High Performance Computing for Mac 
OS X webpage (http://hpc.sourceforge.net) has binaries for the gcc 4.5 compiler 
package, which installs in /usr/local/. Compilation with this compiler set 
produces a working CNS executable. The only other modification is to copy the 
Makefile.header.2.gfortran file from 
cns_solve_1.21/instlib/machine/supported/intel-x86_64bit-linux to 
cns_solve_1.21/instlib/machine/supported/intel-x86_64bit-linux. Compile with 
'make install compiler=gfortran', making sure that /usr/local/path is in $PATH.

With the Intel 11.1 compilers (and I used the evaluation version here), CNS 
compiles successfully, but fails on execution. Thanks to Axel Brunger and 
Benjamin Bardiaux, for sharing that the Intel fortran compiler is not 
compatible with Xcode 3.2.2, although it does not seem to break gfortran in 
this case. A little more information can be found here:

http://software.intel.com/en-us/articles/intel-fortran-for-mac-os-x-incompatible-with-xcode-322/

Thanks goes to Benjamin Bardiaux for the link. The webpage suggests two fixes. 
One is to add the '-use-asm' option to both the compilation and linker lines. 
This seems to work, and produces a working CNS executable. Not until now did I 
consider Xcode to be the problem, and at no point over the past few days did I 
come across or register the intel webpage linked above during my hours of 
google-trawling.

The other option is to reinstall Xcode 3.2.1, which I assume is the version 
Axel Brunger said he reinstalled. This can be downloaded from the Mac 
Development Centre. Then reinstall the Intel fortran compiler. I have not tried 
this option, since the first option seems to have worked quite well.

Thanks once again,
Pryank



On 9 Jun 2010, at 19:54, Axel Brunger wrote:

Please note that the latest version of Xcode in Mac OS X 10.6.3
breaks the Intel Fortran and C compilers.  It is possible that Xcode also
breaks gfortran, but I haven't tested it.  I've reverted to the
Xcode version that came with the original Snow Leopard release.

Intel is aware of the problem, but so far there have been no
updates of the Intel compilers to fix the problem with Xcode.

Axel Brunger

On Jun 9, 2010, at 11:35 AM, Ethan Merritt wrote:

On Wednesday 09 June 2010 10:45:07 am James Holton wrote:
I have often wondered how it is that one can actually run and play games
like Pac-Man(R) on a modern PC using the actual bit-for-bit contents of
the EPROM cartridges that I used to put into my Atari 2600 (circa 1982),
but for some reason programs written just a few years ago will neither
compile nor run on the "latest and greatest" linux/gcc systems.

I seriously doubt that your Atari PacMan program was written in Fortran!
But more to the point, to run it now you run an emulator for the original
Atari chipset.  PacMac runs around thinking he really is on an Atari console,
blissfully unaware that the console is only an emulated simulation of the
original long-gone world.  Welcome to the matrix.

Am I missing something?

I think you are missing the mark twice in mentioning "linux/gcc".

The complaint under discussion is with OSX, not a linux system.
With rare exceptions, old linux programs run just fine on an up-to-date
linux system, so long as you also install equally old versions of the
support libraries.  Do you have a counter-example in mind?

In the specific case of old Fortran programs, the reality is that in the
era of commercial Fortran compilers there was great divergence in the
details of the implementation, particular with regard to I/O commands.
gcc/f77/g77 was never a good Fortran compiler, and was particularly bad at
compiling code idioms used by "real-world" Fortran code written for
compilers supported by IBM, DEC, CDC, etc.   gfortran is somewhat better,
but still far from perfect.


As to Pryank's problem:

Pryank Patel wrote:

Hi all,
I've posted this in the hope that somebody in the CCP4 community may
have come across this problem and can shed some light. I've posted
this question on other lists (cnsbb, ccpnmr and aria - the reason will
become clear), but with no success so far.

I have recently acquired a Macbook Pro running OSX 10.6.3, (Kernel
version 10.3.0) and am unable to compile cns v1.21 from source, using
either the gcc 4.2.1/4.4/4.5 compilers (4.4 and 4.5 installed using
fink), and the Intel 11.1 (evaluation) compilers.

I may be mis-remembering, but I have it in mind that the cns source code
requires selecting or porting a set of compiler-specific routines in one
of the source modules.  These are work-arounds for the variability in
Fortran implementations mentioned above.   Did you tweak this file
appropriately for each of the compilers you tried?

As a practical matter, you might want to look into running a VMWare layer
on your machine so that you can compile and run linux executables rather
than fighting the native OSX environment.   You too can join PacMac in
the happy world recreated in the matrix :-)

Ethan



I am aware that
there are Mac OSX binaries available, but I am also using CNS for NMR
structure calculation with the Aria 2.3 program, and to run that
successfully CNS needs to be re-compiled with Aria-specific source code.

With the gcc4.5 compilers, CNS compiles and links with no warnings or
errors, but fails at the execution stage. When I try to execute cns,
either with './cns' or by running one of the test scripts, I get the
following:
 dmemory error code = ******
 %ALLHP error encountered: fatal coding error
   (CNS is in mode: SET ABORT=NORMal END)
 *****************************************************
 ABORT mode will terminate program execution.
 *****************************************************
 Program will stop immediately.
          ============================================================
           Maximum dynamic memory allocation:           0 bytes
           Maximum dynamic memory overhead:             8 bytes
           Program started at:  on
           Program stopped at: 14:32:05 on 07-Jun-2010
           CPU time used:       0.0036 seconds
          ============================================================


With 4.2.1 (using gfortran), CNS fails at the linking stage with
"Undefined symbols:" errors. With 4.4, CNS compiles successfully, but
when executed produces a simple "segmentation fault" message.

With the 11.1 Intel compilers, CNS compiles successfully, but fails on
execution:

forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line
Source
cns                000000010029C7BE  _xtarmoin_         1813
xdeclare.f
cns                000000010029C68E  _xreres_           764
xdeclare.f
cns                000000010003E04A  _MAIN__            167         cns.f
cns                000000010000184C  Unknown            Unknown
Unknown
cns                00000001000017E4  Unknown            Unknown
Unknown


I have checked my shell stack limit, and to make sure, I set the shell
stacksize using "ulimit -s 65532" (which I believe is the upper limit
on Mac OSX) and by using the ifort linker option. Both of which made
no difference.

I then added some compiler options in an attempt to obtain more
debugging information, including "-check bounds -g" and
"-heap-arrays". The following occurs on execution:

forrtl: severe (408): fort: (2): Subscript #1 of the array HEAP has
value 155357288 which is greater than the up
per bound of 15

Image              PC                Routine            Line        Source
cns                000000010087410C  Unknown               Unknown
Unknown
cns                0000000100872C44  Unknown               Unknown
Unknown
cns                000000010082BCCE  Unknown               Unknown
Unknown
cns                00000001007E36AA  Unknown               Unknown
Unknown
cns                00000001007E3AF7  Unknown               Unknown
Unknown
cns                00000001002B48A4  _allhp_                   326  heap.f
cns                00000001002B7EC6  _heapvfy_                  93
heapvfy.f
cns                0000000100071409  _MAIN__                    60  cns.f
cns                0000000100000D5C  Unknown               Unknown
Unknown
cns                0000000100000CF4  Unknown               Unknown
Unknown


Any help/ideas would be very much appreciated.

Best wishes,
Pryank








--
Ethan A Merritt
Biomolecular Structure Center,  K-428 Health Sciences Bldg
University of Washington, Seattle 98195-7742

Axel T. Brunger
Investigator,  Howard Hughes Medical Institute
Professor of Molecular and Cellular Physiology
Stanford University

Web:    http://atbweb.stanford.edu<http://atbweb.stanford.edu/>
Email:  brun...@stanford.edu<mailto:brun...@stanford.edu>
Phone:  +1 650-736-1031
Fax:    +1 650-745-1463







Reply via email to