#6697 closed defect
BUILD: make test doesn't work OOTB
Reported by: | SF/ownerless | Owned by: | lordhoto |
---|---|---|---|
Priority: | normal | Component: | Port: Linux |
Version: | Keywords: | ||
Cc: | Game: |
Description
On Debian "testing" ScummVM-1.7.0 FTBFS in "make test
":
./test/cxxtest/cxxtestgen.py --runner=StdioPrinter --no-std --no-eh --include=./test/cxxtest_mingw.h -o test/runner.cpp test/common/hashmap.h test/common/fixedstack.h test/common/stream.h test/common/memoryreadstream.h test/common/seekablesubreadstream.h test/common/str.h test/common/memorywritestream.h test/common/array.h test/common/list.h test/common/subreadstream.h test/common/rational.h test/common/math.h test/common/pack.h test/common/queue.h test/common/memoryreadstreamendian.h test/common/util.h test/common/algorithm.h test/common/huffman.h test/common/hash-str.h test/common/bitstream.h test/common/bufferedreadstream.h test/common/ptr.h test/common/bufferedseekablereadstream.h test/common/tokenizer.h test/common/endian.h test/common/func.h test/common/rendermode.h test/common/stack.h test/common/md5.h test/common/serializer.h test/common/rect.h test/audio/helper.h test/audio/audiostream.h test/audio/raw.h test/audio/timestamp.h g++ -Wall -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -ansi -W -Wno-unused-parameter -Wno-empty-body -pedantic -Wno-long-long -O2 -Wuninitialized -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-reorder -Wpointer-arith -Wcast-qual -Wshadow -Wnon-virtual-dtor -Wwrite-strings -fno-exceptions -fcheck-new -DHAVE_CONFIG_H -DRELEASE_BUILD -DSDL_BACKEND -DPOSIX -DDATA_PATH=\"/usr/share/scummvm\" -DPLUGIN_DIRECTORY=\"/usr/lib/scummvm\" -DENABLE_SCUMM=STATIC_PLUGIN -DENABLE_SCUMM_7_8 -DENABLE_HE -DENABLE_AGI=STATIC_PLUGIN -DENABLE_AGOS=STATIC_PLUGIN -DENABLE_AGOS2 -DENABLE_CGE=STATIC_PLUGIN -DENABLE_CINE=STATIC_PLUGIN -DENABLE_COMPOSER=STATIC_PLUGIN -DENABLE_CRUISE=STATIC_PLUGIN -DENABLE_DRACI=STATIC_PLUGIN -DENABLE_DRASCULA=STATIC_PLUGIN -DENABLE_DREAMWEB=STATIC_PLUGIN -DENABLE_GOB=STATIC_PLUGIN -DENABLE_GROOVIE=STATIC_PLUGIN -DENABLE_HOPKINS=STATIC_PLUGIN -DENABLE_HUGO=STATIC_PLUGIN -DENABLE_KYRA=STATIC_PLUGIN -DENABLE_LOL -DENABLE_EOB -DENABLE_LURE=STATIC_PLUGIN -DENABLE_MADE=STATIC_PLUGIN -DENABLE_MOHAWK=STATIC_PLUGIN -DENABLE_MORTEVIELLE=STATIC_PLUGIN -DENABLE_NEVERHOOD=STATIC_PLUGIN -DENABLE_PARALLACTION=STATIC_PLUGIN -DENABLE_PEGASUS=STATIC_PLUGIN -DENABLE_QUEEN=STATIC_PLUGIN -DENABLE_SAGA=STATIC_PLUGIN -DENABLE_IHNM -DENABLE_SCI=STATIC_PLUGIN -DENABLE_SKY=STATIC_PLUGIN -DENABLE_SWORD1=STATIC_PLUGIN -DENABLE_SWORD2=STATIC_PLUGIN -DENABLE_TEENAGENT=STATIC_PLUGIN -DENABLE_TINSEL=STATIC_PLUGIN -DENABLE_TOLTECS=STATIC_PLUGIN -DENABLE_TONY=STATIC_PLUGIN -DENABLE_TOON=STATIC_PLUGIN -DENABLE_TOUCHE=STATIC_PLUGIN -DENABLE_TSAGE=STATIC_PLUGIN -DENABLE_TUCKER=STATIC_PLUGIN -DENABLE_VOYEUR=STATIC_PLUGIN -DENABLE_WINTERMUTE=STATIC_PLUGIN -I. -I. -I./engines -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/freetype2 -I./test/cxxtest -Wno-format -o test/runner test/runner.cpp audio/libaudio.a common/libcommon.a -L/usr/lib/x86_64-linux-gnu -lSDL -lm -lvorbisfile -lvorbis -logg -lFLAC -logg -lmad -lasound -ljpeg -lpng -lz -ltheoradec -lz -lmpeg2 -lfluidsynth -lfreetype -lz -lpng12 -lGL common/libcommon.a(system.o): In function `instance': /tmp/buildd/scummvm-1.7.0+dfsg/./common/singleton.h:70: undefined reference to `Common::Singleton<GUI::EventRecorder>::_singleton' common/libcommon.a(system.o): In function `makeInstance': /tmp/buildd/scummvm-1.7.0+dfsg/./common/singleton.h:52: undefined reference to `GUI::EventRecorder::EventRecorder()' common/libcommon.a(system.o): In function `instance': /tmp/buildd/scummvm-1.7.0+dfsg/./common/singleton.h:71: undefined reference to `Common::Singleton<GUI::EventRecorder>::_singleton' common/libcommon.a(system.o): In function `getSavefileManager': /tmp/buildd/scummvm-1.7.0+dfsg/common/system.cpp:165: undefined reference to `GUI::EventRecorder::getSaveManager(Common::SaveFileManager*)' /tmp/buildd/scummvm-1.7.0+dfsg/common/system.cpp:165: undefined reference to `GUI::EventRecorder::getSaveManager(Common::SaveFileManager*)' collect2: error: ld returned 1 exit status test/module.mk:32: recipe for target 'test/runner' failed make[2] *** [test/runner] Error 1
This appears to be a regression from 1.6.0.
Ticket imported from: bugs/6697.
Change History (6)
comment:1 by , 10 years ago
Owner: | set to |
---|---|
Status: | new → closed |
Summary: | FTBFS in `"make test`" → BUILD: make test doesn't work OOTB |
comment:2 by , 10 years ago
comment:3 by , 10 years ago
Thanks for your comments. But perhaps "--disable-eventrecorder" should be default if it is work-in-progress? Besides "it's known" (to whom?) also doesn't feel right as there is no README note about it etc.
With "--disable-eventrecorder" there is a following test failure:
In RenderModeTestSuite::test_get_render_mode_code_back_and_forth: ./test/common/rendermode.h:52: Error: Expected (Common::getRenderModeCode(Common::parseRenderMode("FMTOWNS")) != "fmtowns"), found (fmtowns) ....................................................... Failed 1 of 213 tests Success rate: 99% test/module.mk:30: recipe for target 'test' failed
comment:4 by , 10 years ago
We only really consider "make test" for developers, we don't expect anyone else to really use it. Thus, we didn't write about this issue anywhere. But, if I can find a nice spot where to put it, I'll add it (probably somewhere on our wiki, but it seems it completely misses out on the unit tests right now...).
Disabling the WIP event recorder would probably cause too much internal discussion, thus I would really like to avoid that.
That's an interesting failure case. It seems it's related to the fact that gcc always uses string pooling with -O2 (maybe others too) but doesn't do it without that. It seems the unit test is simply crazy and wants to make sure it's not the same pointer.... I will look into fixing that. It should however be no issue in reality. Thanks for reporting.
comment:5 by , 10 years ago
"make test" is useful not only to developers but also to package maintainers (like myself) who run tests automatically in the end of the build process in order to check generated binaries. In Debian it is especially important because we build for many architectures of which only few may be available to maintainer to actually run application.
Thanks again for your quick response and for taking out problematic test.
comment:6 by , 6 years ago
Component: | → Port: Linux |
---|
Yes, "make test" doesn't work when you don't pass "--disable-eventrecorder" to configure. It's known and you should really just not use "make test" when building right now. You can also pass "--disable-eventrecorder" to configure since that one is still WIP anyway. Your choice really. Closing as later.