Closed rastersoft closed 6 years ago
Also neither "1.1" nor "1.2" branches compile.
master is unbuildable yet ( yeah, I’m too lazy to create branch for unfinished stuff )
may you try
git checkout 12f06a4707518b3c7ec17c976c11189d8ba8c648
and then build?
okay, I split stuff in progress into https://github.com/dougmencken/HeadOverHeels/tree/shadowcaster so since yet master is buildable again
your experience of building it would be very welcome
Building after the checkout returns
In file included from gui/GuiManager.cpp:12:0:
gui/Screen.hpp:73:29: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double gui::Screen::delayBetweenFrames’ of non-integral type [-fpermissive]
static const double delayBetweenFrames = 0.1 ;
^~~~~~~~~~~~~~~~~~
will try master again...
Receive exactly the same error when building master...
In file included from gui/GuiManager.cpp:12:0:
gui/Screen.hpp:73:29: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double gui::Screen::delayBetweenFrames’ of non-integral type [-fpermissive]
static const double delayBetweenFrames = 0.1 ;
^~~~~~~~~~~~~~~~~~
some compilers ( by teh way, which one do you use? ) don’t accept “java-like” static const initialization, wait for fix
I'm using GCC 7.2.0
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 7.2.0-19' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 7.2.0 (Debian 7.2.0-19)
how is it yet?
It compiles. But now I do a "sudo make install" and it installs everything into "/game", but doens't work. I go to the folder "/game/bin" and run "./headoverheels" and receive:
PathToGame is "./headoverheels"
FullPathToGame is "/game/bin/./headoverheels"
SharePath is "share/headoverheels/"
reading from file "share/headoverheels/font.png" to create font "regular-white"
headoverheels: gui/Font.cpp:20: gui::Font::Font(const string&, const string&, int, bool): La declaración `bitmapFont' no se cumple.
Shutting down Allegro due to signal #6
Abortado
And if I try with full path: /game/bin/headoverheels
PathToGame is "/game/bin/headoverheels"
FullPathToGame is "/game/bin/headoverheels"
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Shutting down Allegro due to signal #6
Abortado
if you use cygwin-build.sh you may run it via ./_rootdir/game/bin/headoverheels just from directory of building
how about using gdb to see backtrace to look what’s with that std::length_error
I got where the problem is, it’s at https://github.com/dougmencken/HeadOverHeels/blob/master/src/Ism.cpp#L123 std::string sharePath ()
@rastersoft, do you have “enough coding skills” to fix it yourself? ( I just don’t have GNU/Linux on my boxes yet ) if not, it would be a long series of tries&misses when I write possible solutions and you try them
I'll try...
I already added some debugs, but never reaches them. It's like the error is in other place...
(gdb) r
Starting program: /home/raster/juegos/HeadOverHeels/_rootdir/game/bin/headoverheels
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
PathToGame is "/home/raster/juegos/HeadOverHeels/_rootdir/game/bin/headoverheels"
FullPathToGame is "/home/raster/juegos/HeadOverHeels/_rootdir/game/bin/headoverheels"
[New Thread 0x7fffed01e700 (LWP 31669)]
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Thread 1 "headoverheels" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No existe el fichero o el directorio.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff5970cf7 in __GI_abort () at abort.c:90
#2 0x00007ffff62e4b85 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff62e2956 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff62e29a1 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff62e2be4 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff630b1df in std::__throw_length_error(char const*) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff6371bcc in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x00005555555bff1f in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*> (this=this@entry=0x7fffffffe4d0,
__beg=__beg@entry=0x55555593f290 "/usr/share/locale/es_ES.UTF-8.utf8/LC_MESSAGES/messages.mo", __end=<optimized out>) at /usr/include/c++/7/bits/basic_string.tcc:219
#9 0x00005555555c0b2e in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct_aux<char const*> (__end=<optimized out>,
__beg=0x55555593f290 "/usr/share/locale/es_ES.UTF-8.utf8/LC_MESSAGES/messages.mo", this=0x7fffffffe4d0) at /usr/include/c++/7/bits/basic_string.h:236
#10 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*> (__end=<optimized out>,
__beg=0x55555593f290 "/usr/share/locale/es_ES.UTF-8.utf8/LC_MESSAGES/messages.mo", this=0x7fffffffe4d0) at /usr/include/c++/7/bits/basic_string.h:255
#11 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (__a=..., __n=<optimized out>, __s=0x55555593f290 "/usr/share/locale/es_ES.UTF-8.utf8/LC_MESSAGES/messages.mo",
this=0x7fffffffe4d0) at /usr/include/c++/7/bits/basic_string.h:502
#12 isomot::sharePath[abi:cxx11]() () at Ism.cpp:147
#13 0x00005555555f8438 in gui::GuiManager::GuiManager (this=0x555555908dd0) at gui/GuiManager.cpp:56
#14 0x00005555555f8efb in gui::GuiManager::getInstance () at gui/GuiManager.cpp:92
#15 0x0000555555565065 in main (argc=<optimized out>, argv=<optimized out>) at main.cpp:19
If I launch it with Valgrind, it returns several invalid accesses, but seems to start...
in gui::GuiManager::GuiManager (this=0x555555908dd0) at gui/GuiManager.cpp:56 is std::string pathToFont = isomot::sharePath();
so may you re-pull master and try it ?
on my side it outputs
PathToGame is "./headoverheelsroot/game/bin/headoverheels"
FullPathToGame is "/Volumes/hfsplushd/Development/HeadOverHeels/boo/./headoverheelsroot/game/bin/headoverheels"
2018-01-14 14:30:18.003 headoverheels[11875:3803] Warning once: This application, or a library it uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw and move to Quartz.
>:> getting SharePath... cpath is "./headoverheelsroot/game/bin/headoverheels"
>:> getting SharePath... filename is "headoverheels"
>:> getting SharePath... containername is "bin"
SharePath is "./headoverheelsroot/game/share/headoverheels/"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "regular-white"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "big-white"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "regular-orange"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "regular-cyan"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "regular-yellow"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "big-orange"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "big-cyan"
reading from file "./headoverheelsroot/game/share/headoverheels/font.png" to create font "big-yellow"
parse "./headoverheelsroot/game/share/headoverheels/sounds.xml"
read list of sounds from sounds.xml
parse "/Users/powermac/.headoverheels/preferences.xml"
language "de_DE"
parse "./headoverheelsroot/game/share/headoverheels/text/de_DE.xml"
parse "./headoverheelsroot/game/share/headoverheels/text/en_US.xml"
as for several invalid accesses I want to see that too, because there’s no valgrind on osx@ppc, nor -fsanitize=address
Ok, the error seems to be at
std::string container = std::string( cpath, strlen( cpath ) - strlen( filename ) - 1 );
cpath is an empty string, so strlen(cpath) is 0, and strlen(filename) is also 0...
Ok, it seems that it is not recognizing nor CYGWIN neither __WIN32, because it is calling
const char* cpath = pathToGame().c_str ();
instead of
const char* cpath = FullPathToGame.c_str ();
They’re equal on your side, as I see
Yes, if I remove the lines
#if defined ( __CYGWIN__ ) || defined ( __WIN32 )
const char* cpath = FullPathToGame.c_str ();
#else
const char* cpath = pathToGame().c_str ();
#endif
and replace them with just
const char* cpath = FullPathToGame.c_str ();
It seems to work.
May you try updated master?
Looks like new GCCs “optimize out” functions like that pathToGame()
It works!!!! Thanks!!!!
nice, so some screencap of game from your side, and maybe open other bug for bad memory accesses, okay?
okay to close this, @rastersoft ?
Yes, 100% ok
When I try to compile the code in my Debian Linux with the "cygwin-build.sh" script, I receive these errors:
"setWhichMask", "whichMask", "setWhichShade" and so on only appear in "Mediator.cpp" file, nowhere else...