[Ifeffit] Fwd: problem compiling ifeffit

Bruce Ravel bravel at bnl.gov
Thu Oct 31 12:30:15 CDT 2013


Rene,

Support for the software is done via the Ifeffit Mailing List.  This
and all other questions should be asked in that forum.

   http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit

please note that I am CCing my answer to the mailing list.  All
follow-up discussion should be on the mailing list rather than by
responding to me directly.


Regarding the problem with png files and PGPLOT, the solution of
installing libpng12-devel is the much better solution.

Regarding the problem compiling the file decod.f, I am going to blame
Matt for that one.  It seems he made a change to that file in August
of 2012 (which is more recently than the last time I did a "git
pull" on ifeffit!)

Pulling and attempting to rebuild, I get the same result.  Fixing the
problem required editing the file encod.h to define the missing symbol
"jtait".  I just forked ifeffit, fixed the problem, and sent Matt a
pull request.  Here it is:

   https://github.com/newville/ifeffit/pull/4

If you follow the little link that says "97f6458", you'll see the
diff.  If you make the edit yourself, you should be able to finish
compilation.  Or wait for Matt to merge the pull request, do a git
pull, then finish building.

Regards,
B


-------- Original Message --------
Subject: problem compiling ifeffit
Date: Thu, 31 Oct 2013 17:36:24 +0100
From: René Genz <liebundartig at freenet.de>
To: <bravel at bnl.gov>

Dear Mr. Ravel,

today I tried to install the latest version of Demeter on Fedora 18 
x86_64 following the instructions:
http://bruceravel.github.io/demeter/pods/installation.pod.html

In the past I could install ifeffit on Fedora 16 x86_64.
But now I need your help.
I encountered a problem in compiling ifeffit. This problem is 
reproducible on Ubuntu 12.04 i686.


Furthermore, there are two minor things that I would like to mention as 
well:
- PGPLOT_install does not set return code, if PGPLOT was not properly 
installed

- ./configure of ifeffit echos the following line and continues without 
a problem
"./configure: line 3355: #include: command not found"





Details about the problem follow:


I used the default installation selection for Fedora (Gnome Desktop).
After installation I executed the following commands

$ sudo yum install -y perl gnuplot gcc gcc-gfortran libX11-devel ncurses 
ncurses-devel libpng libpng-devel giflib wxGTK-devel git

$ cd

$ git clone https://github.com/newville/ifeffit.git

$ cd ifeffit

$ sudo ./PGPLOT_install

The compilation started by the script fails.
The attached file
Demeter__F20__x86-64__PGPLOT_install.txt
shows the last part of the output.

I could work around this problem in two ways. Either
a) sudo ./PGPLOT_install --no-png
OR
b) sudo yum install libpng12-devel ; sudo ./PGPLOT_install


I used 'a)' and PGPLOT could be installed by the script.



So I continued with the compilation of ifeffit.
This is where I encountered a problem that I could not solve.





$ ./configure
was OK, just one line catched my attention
"./configure: line 3355: #include: command not found"

$ make
The full output is in
Demeter__F20_x86-64__ifeffit-configure-make.txt

Here is the last part of the output:
gfortran -g -O2 -fPIC -c iff_sync.f
gfortran -g -O2 -fPIC -c decod.f
decod.f:191.26:

         elseif (ic.eq.jtait) then
                            1
Error: Symbol 'jtait' at (1) has no IMPLICIT type
make[3]: *** [decod.o] Error 1
make[3]: Leaving directory `/home/user/ifeffit/src/lib'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/user/ifeffit/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/user/ifeffit'
make: *** [all-recursive-am] Error 2



The error message refers to
./src/lib/decod.f

I do not know how to solve this problem.
Do you have a suggestions how to solve this?

-- 
Kind regards,
René



-------------- next part --------------

[user at localhost ifeffit]$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking how to run the C preprocessor... gcc -E
checking for library containing strerror... none required
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for ranlib... ranlib
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
./configure: line 3355: #include: command not found
checking for perl... /usr/bin/perl
checking for python... /usr/bin/python
checking for gfortran... gfortran
checking whether we are using the GNU Fortran 77 compiler... yes
checking whether gfortran accepts -g... yes
checking how to get verbose linking output from gfortran... -v
checking for Fortran libraries of gfortran...  -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../.. -lgfortran -lm -lgcc_s -lquadmath
===  Fortran LIBS: -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2 -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../.. -lgfortran -lm -lgcc_s -lquadmath
will link to PGPLOT using -L/usr/local/share/ifeffit/pgplot -lpgplot_iff -lX11
configure: creating ./config.status
config.status: creating src/Makefile
config.status: creating src/pgstub/Makefile
config.status: creating src/cldata/Makefile
config.status: creating src/fefftab/Makefile
config.status: creating src/lib/Makefile
config.status: creating src/cmdline/Makefile
config.status: creating src/autobk/Makefile
config.status: creating src/feffit/Makefile
config.status: creating src/diffkk/Makefile
config.status: creating src/test/Makefile
config.status: creating src/feff6/Makefile
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: configuring in readline
configure: running /bin/sh './configure' --prefix=/usr/local  --cache-file=/dev/null --srcdir=.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu

Beginning configuration for readline-5.0 for x86_64-unknown-linux-gnu

checking whether make sets ${MAKE}... yes
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether gcc needs -traditional... no
checking for a BSD-compatible install... /usr/bin/install -c
checking for ar... ar
checking for ranlib... ranlib
checking for gcc option to accept ANSI C... none needed
checking for an ANSI C-conforming const... yes
checking for function prototypes... yes
checking whether char is unsigned... no
checking return type of signal handlers... void
checking for size_t... yes
checking for ssize_t... yes
checking for ANSI C header files... (cached) yes
checking whether stat file-mode macros are broken... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for lstat... yes
checking for memmove... yes
checking for putenv... yes
checking for select... yes
checking for setenv... yes
checking for setlocale... yes
checking for strcasecmp... yes
checking for strpbrk... yes
checking for tcgetattr... yes
checking for vsnprintf... yes
checking for isascii... yes
checking for isxdigit... yes
checking for working strcoll... yes
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking varargs.h usability... no
checking varargs.h presence... no
checking for varargs.h... no
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking sys/ptem.h usability... no
checking sys/ptem.h presence... no
checking for sys/ptem.h... no
checking sys/pte.h usability... no
checking sys/pte.h presence... no
checking for sys/pte.h... no
checking sys/stream.h usability... no
checking sys/stream.h presence... no
checking for sys/stream.h... no
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking termcap.h usability... yes
checking termcap.h presence... yes
checking for termcap.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking termio.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for memory.h... (cached) yes
checking for type of signal functions... posix
checking if signal handlers must be reinstalled when invoked... no
checking for presence of POSIX-style sigsetjmp/siglongjmp... present
checking for lstat... yes
checking whether or not strcoll and strcmp differ... no
checking whether the ctype macros accept non-ascii characters... yes
checking whether getpw functions are declared in pwd.h... yes
checking POSIX termios... yes
checking whether termios.h defines TIOCGWINSZ... no
checking whether sys/ioctl.h defines TIOCGWINSZ... yes
checking whether signal handlers are of type void... yes
checking for TIOCSTAT in sys/ioctl.h... no
checking for FIONREAD in sys/ioctl.h... yes
checking for speed_t in sys/types.h... no
checking for struct winsize in sys/ioctl.h and termios.h... sys/ioctl.h
checking for struct dirent.d_ino... yes
checking for struct dirent.d_fileno... yes
checking for tgetent... no
checking for tgetent in -ltermcap... yes
checking which library has the termcap functions... using libtermcap
checking wctype.h usability... yes
checking wctype.h presence... yes
checking for wctype.h... yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for mbsrtowcs... yes
checking for mbrtowc... yes
checking for mbrlen... yes
checking for wctomb... yes
checking for wcwidth... yes
checking for wcsdup... yes
checking for mbstate_t... yes
checking for nl_langinfo and CODESET... yes
checking configuration for building shared libraries... supported
configure: creating ./config.status
config.status: creating Makefile
config.status: creating shlib/Makefile
config.status: creating config.h
config.status: executing default commands
===
===  ifeffit 1.2.12 Configuration Results:
===  linking to PGPLOT with: -L/usr/local/share/ifeffit/pgplot -lpgplot_iff -lX11
===  using TERMCAP_LIB   -L/usr/lib64 -lncurses
===
===  ready for next step: type 'make' then 'make install'








[user at localhost ifeffit]$ make
make  all-recursive
make[1]: Entering directory `/home/user/ifeffit'
Making all in readline
make[2]: Entering directory `/home/user/ifeffit/readline'
rm -f readline.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O readline.c
rm -f vi_mode.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O vi_mode.c
rm -f funmap.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O funmap.c
rm -f keymaps.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O keymaps.c
rm -f parens.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O parens.c
rm -f search.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O search.c
rm -f rltty.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O rltty.c
rm -f complete.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O complete.c
complete.c: In function ‘compute_lcd_of_matches’:
complete.c:1154:8: warning: passing argument 1 of ‘rl_filename_dequoting_function’ discards ‘const’ qualifier from pointer target type [enabled by default]
complete.c:1154:8: note: expected ‘char *’ but argument is of type ‘const char *’
rm -f bind.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O bind.c
rm -f isearch.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O isearch.c
rm -f display.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O display.c
rm -f signals.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O signals.c
rm -f util.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O util.c
rm -f kill.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O kill.c
rm -f undo.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O undo.c
rm -f macro.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O macro.c
rm -f input.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O input.c
rm -f callback.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O callback.c
rm -f terminal.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O terminal.c
rm -f text.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O text.c
rm -f nls.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O nls.c
rm -f misc.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O misc.c
rm -f compat.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O compat.c
rm -f xmalloc.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O xmalloc.c
rm -f history.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O history.c
rm -f histexpand.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O histexpand.c
rm -f histfile.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O histfile.c
rm -f histsearch.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O histsearch.c
rm -f shell.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O shell.c
rm -f mbutil.o
gcc -c -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O mbutil.c
rm -f tilde.o
gcc -DHAVE_CONFIG_H   -I. -I. -DRL_LIBRARY_VERSION='"5.0"' -g -O -DREADLINE_LIBRARY -c ./tilde.c
rm -f libreadline.a
ar cr libreadline.a readline.o vi_mode.o funmap.o keymaps.o parens.o search.o rltty.o complete.o bind.o isearch.o display.o signals.o util.o kill.o undo.o macro.o input.o callback.o terminal.o text.o nls.o misc.o compat.o xmalloc.o history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o tilde.o
test -n "ranlib" && ranlib libreadline.a
rm -f libhistory.a
ar cr libhistory.a history.o histexpand.o histfile.o histsearch.o shell.o mbutil.o xmalloc.o
test -n "ranlib" && ranlib libhistory.a
make[2]: Leaving directory `/home/user/ifeffit/readline'
Making all in src
make[2]: Entering directory `/home/user/ifeffit/src'
Making all in pgstub
make[3]: Entering directory `/home/user/ifeffit/src/pgstub'
gfortran  -g -O2 -c pgstub.f
rm -f libnopgplot.a
ar cru libnopgplot.a pgstub.o 
ranlib libnopgplot.a
make[3]: Leaving directory `/home/user/ifeffit/src/pgstub'
Making all in cldata
make[3]: Entering directory `/home/user/ifeffit/src/cldata'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/user/ifeffit/src/cldata'
Making all in fefftab
make[3]: Entering directory `/home/user/ifeffit/src/fefftab'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/user/ifeffit/src/fefftab'
Making all in lib
make[3]: Entering directory `/home/user/ifeffit/src/lib'
gfortran -g -O2 -fPIC -c ifeffit.f
gfortran -g -O2 -fPIC -c cifeffit.f
gfortran -g -O2 -fPIC -c str.f
gfortran -g -O2 -fPIC -c misc_vars.f
gfortran -g -O2 -fPIC -c isamac.f
gfortran -g -O2 -fPIC -c iff_load.f
gfortran -g -O2 -fPIC -c iread.f
gfortran -g -O2 -fPIC -c misc_io.f
gfortran -g -O2 -fPIC -c iff_save.f
gfortran -g -O2 -fPIC -c iff_eval.f
gfortran -g -O2 -fPIC -c misc_arr.f
gfortran -g -O2 -fPIC -c iff_erase.f
gfortran -g -O2 -fPIC -c iff_sync.f
gfortran -g -O2 -fPIC -c decod.f
decod.f:191.26:

       elseif (ic.eq.jtait) then                                        
                          1
Error: Symbol 'jtait' at (1) has no IMPLICIT type
make[3]: *** [decod.o] Error 1
make[3]: Leaving directory `/home/user/ifeffit/src/lib'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/user/ifeffit/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/user/ifeffit'
make: *** [all-recursive-am] Error 2
[user at localhost ifeffit]$ 


./src/lib/decod.f

-------------- next part --------------

$ sudo ./PGPLOT_install 
...


Warning: Possible change of value in conversion from REAL(4) to INTEGER(4) at (1)
gcc -c -Wall -fPIC -DPG_PPU -O -I. -I/usr/X11R6/include /home/user/ifeffit/pgplot/drivers/pndriv.c
/home/user/ifeffit/pgplot/drivers/pndriv.c: In function ‘write_image_file’:
/home/user/ifeffit/pgplot/drivers/pndriv.c:225:7: error: dereferencing pointer to incomplete type
make: *** [pndriv.o] Error 1
 = Cleaning up and preparing for test
 = = = = = = = = = = = = = = = = = = = = = = = = = = 
 = Uh-oh.  PGPLOT is missing some important files!
 = It looks like PGPLOT failed during building or
 = is only partially installed.
 = 
 = Please consult the PGPLOT installation instructions
 = in the subdirectory  pgplot/, and the log file:
 =    /home/user/ifeffit/PGPLOT_install.log
 = which contains a full list of commands run.
 =
 = You may want to repeat these steps by hand or 
 = consult the PGPLOT installations instructions 
 = in install-unix.txt
 = = = = = = = = = = = = = = = = = = = = = = = = = =


More information about the Ifeffit mailing list