The new LFR release says it uses DFHack r4. Apparently DFHack r4 is not actually a thing. Unless it is. Maybe. It's very confusing.
So anyway, it looks like what I'm supposed to do is build DFHack from git source code. I have a Debian 7.2 amd64 system. Many of the i386 libraries were already installed, as I have been playing DF on this system (including the previous LFR release with DFHack r3).
I installed the following packages:
- gcc-multilib
- libxml-libxml-perl
- libxml-libxslt-perl
- cmake
I did a
git clone https://github.com/peterix/dfhack, and then followed the instructions from Compile.html:
cd build
cmake .. -DCMAKE_BUILD_TYPE:string=Release -DCMAKE_INSTALL_PREFIX=/usr/local/src/df_linux
This aborted with an error about hash map and making sure I had 32-bit GCC >= 4.4. I couldn't find a definitive response to this, so I installed one additional package:
Then I tried the cmake command again... but instead of going through the "looking for..." steps, it only printed 3 lines. I figured that was bad. But there was no "cmake clean" command (I tried with and without the ..), so then I improvised and adapted the Mac OS X instructions:
cd ..
mkdir build-2
cd build-2
cmake .. -DCMAKE_BUILD_TYPE:string=Release -DCMAKE_INSTALL_PREFIX=/usr/local/src/df_linux
make install
This proceeded along with a bunch of warnings about variables that are too small to hold enums, until it aborted with this error:
Scanning dependencies of target eventful
[ 71%] Building CXX object plugins/CMakeFiles/eventful.dir/eventful.cpp.o
In file included from /usr/local/src/dfhack/library/include/df/unit.h:56:0,
from /usr/local/src/dfhack/plugins/eventful.cpp:11:
/usr/local/src/dfhack/library/include/df/tile_designation.h:19:38: warning: ‘df::tile_designation::<anonymous struct>::dig’ is too small to hold all values of ‘enum df::enums::tile_dig_designation::tile_dig_designation’ [enabled by default]
/usr/local/src/dfhack/library/include/df/tile_designation.h:27:37: warning: ‘df::tile_designation::<anonymous struct>::liquid_type’ is too small to hold all values of ‘enum df::enums::tile_liquid::tile_liquid’ [enabled by default]
/usr/local/src/dfhack/library/include/df/tile_designation.h:30:34: warning: ‘df::tile_designation::<anonymous struct>::traffic’ is too small to hold all values of ‘enum df::enums::tile_traffic::tile_traffic’ [enabled by default]
/usr/local/src/dfhack/plugins/eventful.cpp: In function ‘void enableEvent(int, int)’:
/usr/local/src/dfhack/plugins/eventful.cpp:232:15: error: ‘runtime_error’ is not a member of ‘std’
make[2]: *** [plugins/CMakeFiles/eventful.dir/eventful.cpp.o] Error 1
make[1]: *** [plugins/CMakeFiles/eventful.dir/all] Error 2
make: *** [all] Error 2
Now what?