Opened 5 years ago

Closed 5 years ago

Last modified 12 months ago

#6697 closed defect

BUILD: make test doesn't work OOTB

Reported by: SF/ownerless Owned by: lordhoto
Priority: normal Component: Port: Linux
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 lordhoto, 5 years ago

Owner: set to lordhoto
Status: newclosed
Summary: FTBFS in `"make test`"BUILD: make test doesn't work OOTB

comment:2 by lordhoto, 5 years ago

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.

comment:3 by SF/ownerless, 5 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 lordhoto, 5 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 SF/ownerless, 5 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 digitall, 12 months ago

Component: Port: Linux
Note: See TracTickets for help on using tickets.