Installing the unofficial builds

General


I strongly recommend you backup your existing fahmon installation before using these builds (or at least the config folder)

If you are just starting out with fahmon, you first need to download the official 2.1.5 build from http://fahmon.silent-blade.org and extract the contents to a suitable location.
Then download the latest unofficial build and extract the contents over the official build. For Windows users this will replace fahmon.exe, and for Linux users this will replace most of the contents of the src and include directories

Windows Installation


There isn't one. Just run fahmon.exe and everything will work just fine!

Linux Installation


Slightly more complicated.

If you've compiled fahmon before, you should have no difficulties, as nothing in the compilation procedure has changed. Once you've copied over the unofficial files, you simply

[me@mybox ~]$ cd path/to/fahmon/src
[me@mybox ~]$ scons

If you've never install fahmon before or are new to Linux, here's what you need to do

To compile fahmon you need several packages installed on your machine, these are:

  • g++
  • scons
  • wxgtk both the runtimes and the header files

In most distros the headers are part of the devel packages:

  • ubuntu (edgy, but not dapper): scons, libwxgtk2.6-dev, wx-common, g++
  • PCLinuxOS 0.93: scons, libwxgtk2.6-devel, libwxgtk2.6, wxGTK2.6, gcc-c++

Installing these packages is fairly painless, you can either use a gui package manager like synaptic, or use the shell, with a one-liner. In ubuntu all you need do (assuming the packages are in the repositores) is issue this from the shell:

[me@mybox ~]$ apt-get install scons libwxgtk2.6-dev wx-common g++

If you get error messages about not being able to locate packages, or you can't fund them in your GUI package manager, you may need to update your list of repositories (you don't need to for PCLinuxOS). Please consult your own respective distros documentation/website for instructions on how to do this.

Assuming you've got this far and installed the packages listed above, you need to test wxGTK to make sure it's installed correctly. To do this, open a shell and type

[me@mybox ~]$ wx-config --list

If wxGTK is installed correctly you should get some output like this:

[me@mybox ~]$ Default config is gtk2-unicode-release-2.6
Default config will be used for output
Alternate matches:
  gtk2-unicode-debug-2.6

After you've confirmed that wxGTK is installed correctly its fairly painless to compile fahmon. Simply navigate to the location you've extracted fahmon to, I'll assume it's in a directory called "fahmon" in your home directory, cd into the src directory and run scons:

[me@mybox ~]$ cd ~/fahmon
[me@mybox ~]$ cd src
[me@mybox ~]$ scons

Lots of scary looking information will start flowing up your console window at this point, don't be alarmed though, it's doing exactly what it should.
It will look a lot like this:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o aboutDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include aboutDialog.cpp
g++ -o base64Codec.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include base64Codec.cpp
g++ -o benchmark.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmark.cpp
g++ -o benchmarksDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmarksDialog.cpp
g++ -o benchmarksManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include benchmarksManager.cpp
g++ -o client.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include client.cpp
g++ -o clientDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientDialog.cpp
g++ -o clientHelperThread.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientHelperThread.cpp
g++ -o clientsManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include clientsManager.cpp
g++ -o core.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include core.cpp
g++ -o dataInputStream.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include dataInputStream.cpp
g++ -o dataOutputStream.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include dataOutputStream.cpp
g++ -o eta.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include eta.cpp
g++ -o fahlogAnalyzer.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include fahlogAnalyzer.cpp
g++ -o firstTimeDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include firstTimeDialog.cpp
g++ -o htmlParser.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include htmlParser.cpp
g++ -o httpDownloader.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include httpDownloader.cpp
g++ -o listViewClients.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include listViewClients.cpp
g++ -o main.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include main.cpp
g++ -o mainDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include mainDialog.cpp
g++ -o messagesFrame.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include messagesFrame.cpp
g++ -o messagesManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include messagesManager.cpp
g++ -o pathManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include pathManager.cpp
g++ -o preference.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preference.cpp
g++ -o preferencesDialog.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preferencesDialog.cpp
g++ -o preferencesManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include preferencesManager.cpp
g++ -o progressManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include progressManager.cpp
g++ -o project.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include project.cpp
g++ -o projectHelperThread.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include projectHelperThread.cpp
g++ -o projectsManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include projectsManager.cpp
projectsManager.cpp: In member function `bool ProjectsManager::Update_DownloadProjectsFile(wxString&, ProgressManager&, wxString&)':
projectsManager.cpp:291: warning: `wxUint32 portused' might be used uninitialized in this function
g++ -o staticBoldedText.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include staticBoldedText.cpp
g++ -o staticUrl.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include staticUrl.cpp
g++ -o tools.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include tools.cpp
g++ -o trayManager.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include trayManager.cpp
g++ -o workUnitFrame.o -c -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -pthread -O2 -D_FAHMON_LINUX_ -Wall -Wno-strict-aliasing -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -I/home/uncle_fungus/FahMon/include workUnitFrame.cpp
g++ -o fahmon -pthread aboutDialog.o base64Codec.o benchmark.o benchmarksDialog.o benchmarksManager.o client.o clientDialog.o clientHelperThread.o clientsManager.o core.o dataInputStream.o dataOutputStream.o eta.o fahlogAnalyzer.o firstTimeDialog.o htmlParser.o httpDownloader.o listViewClients.o main.o mainDialog.o messagesFrame.o messagesManager.o pathManager.o preference.o preferencesDialog.o preferencesManager.o progressManager.o project.o projectHelperThread.o projectsManager.o staticBoldedText.o staticUrl.o tools.o trayManager.o workUnitFrame.o -L/usr/X11R6/lib -lwx_gtk2_xrc-2.6 -lwx_gtk2_qa-2.6 -lwx_gtk2_html-2.6 -lwx_gtk2_adv-2.6 -lwx_gtk2_core-2.6 -lwx_base_xml-2.6 -lwx_base_net-2.6 -lwx_base-2.6
scons: done building targets.

If there are no errors then fahmon has been compiled correctly, ignore any "warning" messages.
If you get lots of errors that look something like:

sh: O cannot find specified file.

it means you haven't got g++ installed, or it's not installed properly

Running fahmon in Linux


Because fahmon needs to be run from its own directory in Linux, you can't just double click on the application and expect it to work. What you need to do is create a script that launchs fahmon correctly. You can then create a shortcut/link to this script on your desktop etc. Using the same assumption as above with regard to the location of fahmon, open up an shell and enter this into it:

[me@mybox ~]$ cd ~
[me@mybox ~]$ cat > fahmon.sh << EOF
#!/bin/sh
cd ~/fahmon/src
./fahmon
EOF

Press enter. This will have created a shell script in your home directory, called fahmon.sh which starts fahmon in the correct way. The last thing you need to do is run this command from the shell:

[me@mybox ~]$ chmod +x ~/fahmon.sh

Now your script is finished, and you've just given yourself execute permissions over it. So now you can start fahmon, either by double clicking the shell script in your file manager, or by running it from a shell:

[me@mybox ~]$ ~/fahmon.sh

From the instructions above it looks terribly laborious and difficult. In fact it isn't, assuming nothing breaks (like you forgot to make sure the packages were in the repositories), then it should take a maximum of 2 minutes from start to finish to get fahmon compiled from source.