[gmx-developers] pedantic change to gmx_chi.c (3.3.1) suggested
chris.neale at utoronto.ca
chris.neale at utoronto.ca
Tue Nov 13 05:55:03 CET 2007
The following change to the source code of 3.3.1 gmx_chi.c was
required on a new machine on which I have recently compiled the code.
I believe that the error here is in a perl script that the sysadmin
has written to wrap 'cc' for equivalent usage on different
architectures. In any event the change to the source code should not
hurt gromacs and may avoid a similar problem in the future for other
users. I do realize that it makes no sense that this affects
compilation. The difference is removal of a double semicolon in the
first line and removal of a space before the semicolon in the second
line. I am not sure which one didn't react well with the in-house 'cc'
perl script.
$ diff tools/gmx_chi_original.c tools/gmx_chi.c
1030,1031c1030,1031
< static bool
bNormHisto=TRUE,bChiProduct=FALSE,bHChi=FALSE,bRAD=FALSE,bPBC=TRUE;;
< static real core_frac=0.5 ;
---
> static bool
> bNormHisto=TRUE,bChiProduct=FALSE,bHChi=FALSE,bRAD=FALSE,bPBC=TRUE;
> static real core_frac=0.5;
Here is the last few lines of output from the make install command
before I made the change:
...
Making install in tools
make[2]: Entering directory `/home/cneale/exe/gromacs-3.3.1/src/tools'
source='gmx_chi.c' object='gmx_chi.lo' libtool=yes \
DEPDIR=.deps depmode=none /bin/sh ../../config/depcomp \
/bin/sh ../../libtool --tag=CC --mode=compile ccc -DHAVE_CONFIG_H -I.
-I. -I../../src -I/usr/X11R6/include -I../../include
-DGMXLIBDIR=\"/home/cneale/exe/gromacs-3.3.1/exec/share/top\"
-I/home/cneale/exe/fftw-3.1.2/exec/include -std1 -fast -O4 -no_ifo
-arch ev6 -unroll 2 -fp_reorder -c -o gmx_chi.lo gmx_chi.c
ccc -DHAVE_CONFIG_H -I. -I. -I../../src -I/usr/X11R6/include
-I../../include
-DGMXLIBDIR=\"/home/cneale/exe/gromacs-3.3.1/exec/share/top\"
-I/home/cneale/exe/fftw-3.1.2/exec/include -std1 -fast -O4 -no_ifo
-arch ev6 -unroll 2 -fp_reorder -c gmx_chi.c -o gmx_chi.o
cc: Error: gmx_chi.c, line 1031: Invalid statement. (badstmt)
static real core_frac=0.5 ;
--^
cc: Error: gmx_chi.c, line 1032: Missing ";". (nosemi)
t_pargs pa[] = {
----------^
cc: Error: gmx_chi.c, line 1033: Invalid expression. (badexpr)
{ "-r0", FALSE, etINT, {&r0},
----------------------------^
...
#####
Manufacturer: Compaq
Operating system: Red Hat Linux 7.2
Interconnect: Quadrics Elan3
$ gcc --version
2.96
$ f77 --version
2.96
$which cc
/opt/compile/bin/cc
$ ls -l /opt/compile/bin/cc
lrwxrwxrwx 1 root root 7 Mar 7 2007
/opt/compile/bin/cc -> compile
$ ls -l /opt/compile/bin/compile
-rwxr-xr-x 1 root root 13153 Mar 7 2007
/opt/compile/bin/compile
compile is a perl script written in-house by the maintainers of our cluster
$head -30 compile
#!/usr/bin/perl
#
# wrapper to do several things:
# - arrange for sensible defaults, since users often forget -O
# - optionally log compiler usage (timestamp, user, flags)
# - hide ugly library stuff, especially MPI
# - address these across different langs, systems, compilers, MPI's.
# the goal is to make it possible for a user to compile everywhere
# without changing their makefile/etc, using the obvious switches.
# they could put all this intelligence in the makefile, and we could
# factor the intelligence into a system-specific make include,
# but putting it in one place and using perl is more powerful.
#
# records each invocation to syslog. it is installed with several
# aliases (symlinks in the bin directory) to make it run whenever someone
# uses a generic cc/c++/f77/f90/mpicc/etc command.
#
# written by XXXXXXX--hidden by C. Neale (without premission)-XXXXX
#
use strict;
use User::pwent;
use Sys::Syslog;
use Pod::Usage;
=head1 NAME
compile - compile, with intelligence about language, mpi, etc.
=head1 SYNOPSIS
Thanks,
Chris.
More information about the gromacs.org_gmx-developers
mailing list