Compiling WSPR for Linux

I have just succeeded in compiling WSPR for Linux. Hurrah! I feel like someone who has been lost in the jungle for two days and has just staggered out into the daylight, bruised and scratched but happy at what I achieved. But the experience is the ultimate proof that Linux will never succeed as an operating system, except as a plaything for computer hobbyists. It has taken me several hours to achieve what Windows users could do in about one minute and a few mouse clicks.

The adventure began by trying to find a Fortran compiler that would compile the software. The two in my distro's repository were not sufficient, so I downloaded, installed and tried g95 and then finally gfortran. That was the one it wanted!

Next, configure complained that portaudio v19 was needed. Of course, under Linux you can't just install a binary so I downloaded the source code and ran configure and make to build it. However although configure was successful, make produced a compilation error in PaJack_Initialize. By running configure --help I discovered that PaJack was an option that could be omitted using a switch, so I used that and managed to build a libportaudio binary.

I installed the binary. However, WSPR's configure continued to complain that it needed it. I searched for the location of the installed library and include files, used the configure switches to specify their exact locations, but it still complained that portaudio v19 was missing. Eventually I hacked the configure script to insert the actual location that portaudio had been installed to - they were in /usr/local/lib and ../include instead of just /usr/lib. Finally configure was happy, and produced a Makefile!

Now I was able to run make on WSPR, but this failed with an error "don't know how to compile Fortran code on platform 'posix'". This looked like being a deal breaker, as the error message didn't give me much of a clue as to what was wrong. I eventually solved the problem by hacking the Makefile created by configure and changing the line that said FCV=gnu95 (I think it was) to FCV=gnu. If that sounds like Linux guru expertise of the highest level I wish to point out that I actually spent about 20 minutes trying various things at random before hitting on this out of desperation.

The cry of joy I gave when WSPR finally compiled was probably received around the world and spotted on WSPRnet.org! But I was not out of the woods yet. Oh no! I still had to get the thing running.

When I ran python wspr.py the program complained that various Python modules were missing. I needed to install python-numeric, python-tk, python-imaging-tk and python-f2py. There is really no way to find out what is needed except by running the program and fixing the next thing it complains about until eventually it's satisfied.

Once all the required Python modules were there, WSPR complained that it could not find libportaudio again! The files were actually in the same directory as the WSPR program! To solve this I copied the libportaudio.so.2.0.0 I built to /usr/lib and then created a symbolic link to it called libportaudio.so.2. This procedure was repeated for libgfortran.so.3.0.0, which needed a symbolic link called libgfortran.so.3.

Then, finally, to my utter amazement and relief, the WSPR user interface appeared! Windows users don't know what they are missing, just running a setup program to install the software. There's no satisfaction in that. None whatever.

Now to hack the WSPR user interface so it fits the 800x480 screen of my Asus Eee PC! As this has been written in interpreted Python script code, it shouldn't be too hard. Though as I have never come across interpreted Python script code until now, it may not be that easy either. But after what I've just been through, I'm equal to any challenge!