blockattack / blockattack-game

Block Attack - Rise of the Blocks - the game
https://blockattack.net
GNU General Public License v2.0
34 stars 8 forks source link

BlockAttack 2.5.0 build process is broken on Archlinux. #17

Closed FredBezies closed 5 years ago

FredBezies commented 5 years ago

I tried to build BlockAttack 2.5.0 on Archlinux using this AUR package and tweaked it to download and use 2.5.0 source code.

But build process crashes around 12%:

[ 12%] Building CXX object CMakeFiles/blockattack.dir/source/code/ReplayPlayer.cpp.o
/home/fred/blockattack/src/blockattack-game-2.5.0/source/code/ReadKeyboard.cpp:25:10: fatal error: utf8.h: No such file or directory
   25 | #include "utf8.h"
      |          ^~~~~~~~
compilation terminated.

Of course, I installed utf8cpp to get utf8.h file, but it didn't work. Any idea?

sago007 commented 5 years ago

I have only tested with utf8cpp version 2.3.4. There has recently been a version 3.X.Y released which I have not tested. It does not look like 3.X.Y should break anything used by BlockAttack.

I noticed that the install procedure for utf8cpp in Archlinux was changed recently: https://aur.archlinux.org/cgit/aur.git/commit/?h=utf8cpp&id=27c2be0041da931c0df52dc3941a3f7b5590a5bf Does the file /usr/include/utf8.h still exist? Or has it perhaps moved? Looking at the CMakeFile for utf8cpp it looks like the header is now placed in "/usr/include/utf8cpp/utf8.h" (I am not good at reading CMake files, so I may be wrong)

I used to copy utf8 into the source like this:

cp source/misc/travis_help/utf8_v2_3_4/source/utf8.h source/code/ && \
cp -r source/misc/travis_help/utf8_v2_3_4/source/utf8 source/code/
FredBezies commented 5 years ago

Well, it looks like you nailed the problem.

Just look at this pacman -Ql utf8cpp output:

pacman -Ql utf8cpp
utf8cpp /usr/
utf8cpp /usr/include/
utf8cpp /usr/include/utf8cpp/
utf8cpp /usr/include/utf8cpp/utf8.h
utf8cpp /usr/include/utf8cpp/utf8/
utf8cpp /usr/include/utf8cpp/utf8/checked.h
utf8cpp /usr/include/utf8cpp/utf8/core.h
utf8cpp /usr/include/utf8cpp/utf8/cpp11.h
utf8cpp /usr/include/utf8cpp/utf8/unchecked.h
utf8cpp /usr/lib/
utf8cpp /usr/lib/cmake/
utf8cpp /usr/lib/cmake/utf8cpp/
utf8cpp /usr/lib/cmake/utf8cpp/utf8cppConfig.cmake

So some modifications are needed in order to find the new path of utf8.h file.

sago007 commented 5 years ago

It looks like it now installs a utf8cppConfig.cmake

It can properly be done by adding something like:

find_package(UTF8CPP QUIET)
include_directories(${UTF8CPP_INCLUDE_DIR})

To the CMakeLists.txt file. But CMake is not my strong side and it will take some time before I can test it.

sago007 commented 5 years ago

I tried getting it to work with CMake but it could not find the cmake-file. It was looking for:

UTF8CPPConfig.cmake
utf8cpp-config.cmake

but the file that is installed is utf8cppConfig.cmake, suggesting that it is not designed for case sensitive filesystems.

I think this needs to be taken upstream to utf8cpp.

ghost commented 5 years ago

I was able to build it with utf8cpp from AUR by changing the include lines to:

#include <utf8cpp/utf8.h>

@FredBezies I added a patch and updated the AUR blockattack package. ;)

FredBezies commented 5 years ago

Thanks for the fix. I was out of free time lately.