[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20011111: McIDAS vis-a-via Solaris 7/8 (cont.)



>From: "James R. Frysinger" <address@hidden>
>Organization: College of Charleston
>Keywords: 200111061842.fA6Igt112242 McIDAS platfomrs

Jim,

>   Ah, well, not quite there yet.

Nuts!

>   Apologies in advance for the long message....  see below...

>> You should set those environment variables especially since it looks
>> like you are going to be using gcc to build instead ov a vendor
>> supplied compiler.  You will, of course, have to change tose settings
>> to match your setup.  They will end up looking like those listed for
>> Solaris x86:
>>
>> setenv CC /usr/local/gnu/bin/gcc
>> setenv CPPFLAGS -DNDEBUG
>> setenv CFLAGS -O
>> setenv FC /home/mcidas/mcidas7.8/src/mcfc
>> setenv FFLAGS -O
>> setenv CXX
>>
>> withe the exception that you want to specify the exact location of
>> gcc (e.g., /usr/local/bin/gcc, etc).

>   Here's the salient part of my .cshrc. Note that $HOME is 
>/export/home/mcidas on our box:
># umask
>umask 002
>
># local additions
>limit coredumpsize 0
>set cdpath = (. ~)
>
>set path=(/bin /usr/bin /usr/openwin/bin /opt/local/bin 
>/opt/SUNWspro/bin /usr/ccs/bin  /usr/ucb /usr/sbin /etc 
>/opt/local/tex/bin /export/home/mcidas/mcidas7.7/bin .)

/export/home/mcidas/mcidas7.7/bin?  A couple of things here:

o McIDAS gets installed so that ~mcidas/bin is where the executables get
  installed

o everything gets built in the ~/mcidasN.M/src directory (N.M -> 7.7,. 7.8,
  etc)

o you should be installing McIDAS 7.8 now

If you are installing so that the McIDAS executables are being put in
~/mcidasN.M/bin, please change to a standard install.  The standard
installation process handles everything based on the definition of the
Unix envoronment variable McINST_ROOT which should, in your case given
that the HOME directory for 'mcidas' appears to be /export/home/mcidas,
be:

McINST_ROOT=/export/home/mcidas

>setenv LD_LIBRARY_PATH 
>/usr/local/lib:/usr/openwin/lib:/usr/local/SUNWspro/lib:/usr/ccs/lib:/lib:/usr
> /lib/:/opt/SUNWmotif/lib

Do you have Sun compilers?  I thought not.  If not, then you do not need
the SUNWspro/lib directory in your LD_LIBRARY_PATH.  If yes, then why
are you trying to build with gcc/f2c?

># environmental variables needed to use f2c/gcc
>setenv CC /usr/local/bin/gcc
>setenv CPPFLAGS -DNDEBUG
>setenv CFLAGS -O
>setenv FC /export/home/mcidas/mcidas7.8/src/mcfc
>setenv FFLAGS -O
>setenv CXX

OK, this is good if gcc is in /usr/local/bin.  NOTE, however that you do
not have /usr/local/bin in your PATH:

>set path=(/bin /usr/bin /usr/openwin/bin /opt/local/bin 
>/opt/SUNWspro/bin /usr/ccs/bin  /usr/ucb /usr/sbin /etc 
>/opt/local/tex/bin /export/home/mcidas/mcidas7.7/bin .)

So, either your PATH (path) is wrong, or you do have Sun compilers and
should use them.  Which is the case?

># MCHOME and McINST_ROOT
>setenv MCHOME $HOME
>setenv McINST_ROOT $MCHOME

This is correct as I noted above.

># NOTE: conditional definition is only needed for C-shell users
>if ( ! ${?MCPATH} ) then
>setenv MCDATA $MCHOME/workdata
>setenv MCPATH ${MCDATA}:$MCHOME/data:$MCHOME/help
>setenv MCGUI $MCHOME/bin
>setenv MCTABLE_READ "${MCDATA}/MCTABLE.TXT;$MCHOME/data/ADDESITE.TXT"
>setenv MCTABLE_WRITE "$MCHOME/data/ADDESITE.TXT"
>setenv XCD_disp_file $MCDATA/DECOSTAT.DAT
>  if ( ! ${?PATH} ) then
>    setenv PATH ${MCGUI}
>  else
>    setenv PATH ${MCGUI}:$PATH
>  endif
>endif

I changed the conditional PATH clause above effective for 7.8.  It should
now read:

# NOTE: conditional definition is only needed for C-shell users
if ( ! ${?MCPATH} ) then
  setenv MCDATA $MCHOME/workdata
  setenv MCPATH ${MCDATA}:$MCHOME/data:$MCHOME/help
  setenv MCGUI  $MCHOME/bin
  setenv MCTABLE_READ "${MCDATA}/MCTABLE.TXT;$MCHOME/data/ADDESITE.TXT"
  setenv MCTABLE_WRITE "$MCHOME/data/ADDESITE.TXT"
  setenv XCD_disp_file $MCDATA/DECOSTAT.DAT
  if ( ! ${?path} ) then
    set path=${MCGUI}
  else
    set path=(${MCGUI} $path)
  endif
endif

># Limit ADDE transfers to compressed ones
>setenv MCCOMPRESS TRUE
>
>   I pulled down the updates out of the bugfix subdirectory into the 
>mcidas7.8/update directory here and did .mcunpack on them.

This was not necessary.  The distribution compressed tar file always
has all of the latest bugfixes and additions. The bugfix compressed
tar file, mcupdate.tar.Z, is made available to users who have an
existing installation and want to bring it up to current revision.

>At this 
>point, I figured I had unpacked both the mcidas7.8 tarball (since I had 
>done .mcinstall on it before) and the update tarball. Then I did 
>~mcidas/mcidas7.8/src and did make chksrc. No complaints. Then I did 
>make mcx. Got a long list of
>       compile foobar.c                done
>interspersed with an occasional
>       update  libsnafu.a      done
>then got this:

OK.

>.............long list........................................
>compile TIP.c:                  done
>update  libsdi.a:               done
>cd ../netcdf && make
>
>Making `all' in directory /export/home/mcidas/mcidas7.8/netcdf/libsrc
>
>c89 -c -g -I.  @CPPFLAGS@ attr.c
>sh: c89: not found
>*** Error code 1
>make: Fatal error: Command failed for target `attr.o'
>Current working directory /export/home/mcidas/mcidas7.8/netcdf/libsrc
>*** Error code 1
>make: Fatal error: Command failed for target `subdir_target'
>Current working directory /export/home/mcidas/mcidas7.8/netcdf
>*** Error code 1
>make: Fatal error: Command failed for target `libsrc/all'
>Current working directory /export/home/mcidas/mcidas7.8/netcdf
>*** Error code 1
>make: Fatal error: Command failed for target 
>`../netcdf/libsrc/libnetcdf.a'
>weather[31] 

Notice how the netCDF build is trying to use c89, not gcc.  This tells me
one or both of two things:

o your PATH does not include the directory containing gcc (and f2c?)

o you had not made the environment variables active (source .cshrc)
  before starting the build

>   I grepped the makelog with error and got only lines with files 
>containing that letter combination; grep fatal came up empty; grep 
>warning produced:
>argglo.c:150: warning: comparison between pointer and integer
>ftogif_.c:77: warning: assignment discards qualifiers from pointer 
>target type
>m0gpfl.c:286: warning: passing arg 3 of `glob' from incompatible 
>pointer type
>m0gpfl.c:328: warning: passing arg 1 of `Mcarrtofs' from incompatible 
>pointer type
>m0mmgr.c:1315: warning: comparison is always false due to limited range 
>of data type
>m0mmgr.c:1321: warning: comparison is always false due to limited range 
>of data type
>m0mmgr.c:1651: warning: comparison is always false due to limited range 
>of data type

 ...

Thewse are just warnings.

>   I did tail makelog and got:
>./mccomp -gcc -I. -I../netcdf/libsrc -I../jpeg -I../zlib -c servutil.c
>rm -f servutil.o
>gcc -c -I. -I../netcdf/libsrc -I../jpeg -I../zlib -I/usr/dt/include 
>-I/usr/openwin/include servutil.c
>compile servutil.c:             done

OK, so this says that gcc can be found.  This is somewhat confusing given
the PATH you listed above.

>   I have no idea what c89 is (part of makefile???)

c89 is a standard C compiler.  The configure process for the netCDF
portion of the build defaults to use of c89 unless you override it by
defining CC _before_ configure is run.

>or Error code1 but 
>the bit about CPPFLAGS makes me wonder if my environment is set wrong. 

I am guessing that you may have added the CC CPPFLAGS, etc envirronment
definitions to your .cshrc file, but you did not make them active in
your Unix session before starting to build McIDAS.

>That's why I included it at the top here.
>
>   I also checked for the files mentioned in the error flags and found:
>       mcidas7.8/netcdf/libsrc/attr.o  does not exist
>       mcidas7.8/netcdf/subdir_target  does not exist
>       mcidas7.8/netcdf/libsrc/all             does not exist
>       mcidas7.8/netcdf/libnetcdf.a    does not exist
>Was I supposed to have downloaded NetCDF too? I thought it was bundled 
>with McIDAS.

No, it is bulndled with McIDAS.

>   Where do I go from here, Tom? If I change something and then do make 
>again, should I first clear something so that make starts from the 
>beginning?

The absolute easiest thing to do is:

1) logoff

2) log back on

3) verify that CC, CPPFLAGS, etc are set in your environment:

   env | grep CC
   env | grep CPPFLAGS
   etc.

4) if 3) is OK, then do the following:

   cd mcidas7.8/src
   make clobber
   make all

The 'make clobber' step will remove all things made with previous make
attempts.  Puts you back at a known state.

>   While I'm burning up bandwidth, let me check my understanding on 
>this because I don't see a lot of information splashed about on the 
>home pages about the differences. I need only to make McIDAS-X and not 
>McIDAS-XCD, right? Isn't the latter just for developers?

McIDAS-XCD is the component of Unidata McIDAS that contains decoders
for all of the data you can receive through the IDD.  If you want
to decode the realtime NOAAPORT data in the IDD, then you will have
to build, install, and configure McIDAS-XCD.  For reference, XCD
stands for X Conventional Decoders.

>   Fortunately, I can do a lot of 'tweaking' at home via ssh which 
>saves me from running in just to check tiny details. I tend to want to 
>be there for the big make operations, though I suppose there's no real 
>need to be there unless I want to smell the smoke coming out of the box 
>as it churns away.

Right.  I build from home all of the time.  In fact, I am writing this email
from home.

>   Many thanks for your patience, too; you've been great with the 
>verbose and prompt replies, Tom.

No worries.  If you get a good, error free build and install, both of our
jobs will be easier in the future.

Tom