I've tweaked the IRAF spec files some more. They are in
https://github.com/joequant/iraf in the debug branch under the rpm
directory. The main changes involved setting up the environment variables
to be a bit more robust.
I've also done work on getting IRAF to work with gfortran. It's not
working, but I've gotten it to compile, and I think I know what the main
problem is. The trouble is that rpp generates code that looks like
Integer Memi(1)
Common /mem/ memd
equivalence (memi, memd)
The trouble is that in f90, the compiler optimizes out array overflows, so
that this won't work to get a memory pointer. I tried a few workarounds,
they work, but they aren't clean. The correct fix should be to generate
code that looks like
Integer, pointer:: memi
memi = memd