Menu

#6697 BUILD: make test doesn't work OOTB

*None
closed-later
None
5
2015-02-19
2014-08-06
onlyjob
No

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.

Discussion

  • Johannes Schickel

    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.

     
    • onlyjob

      onlyjob - 2014-08-07

      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 
      
       
  • Johannes Schickel

    • summary: FTBFS in "make test" --> BUILD: make test doesn't work OOTB
    • status: open --> closed-later
    • assigned_to: Johannes Schickel
     
  • Johannes Schickel

    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.

     
    • onlyjob

      onlyjob - 2014-08-10

      "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.

       
MongoDB Logo MongoDB