#6344 closed defect (fixed)
1.6.0: FTBFS on [kFreeBSD,Hurd]
Reported by: | SF/ownerless | Owned by: | fuzzie |
---|---|---|---|
Priority: | normal | Component: | Port: BSD |
Version: | Keywords: | build | |
Cc: | Game: |
Description
Starting with version 1.6.0 ScummVM FTBFS on kFreeBSD and GNU Hurd with "undefined reference" errors.
See more in the following build logs:
https://buildd.debian.org/status/fetch.php?pkg=scummvm&arch=hurd-i386&ver=1.6.0%2Bdfsg-1&stamp=1370195444 https://buildd.debian.org/status/fetch.php?pkg=scummvm&arch=kfreebsd-i386&ver=1.6.0%2Bdfsg-1&stamp=1370194083 https://buildd.debian.org/status/fetch.php?pkg=scummvm&arch=kfreebsd-amd64&ver=1.6.0%2Bdfsg-1&stamp=1370192434
Ticket imported from: #3614268. Ticket imported from: bugs/6344.
Attachments (2)
Change History (16)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
If it is `configure` script I can't quite identify the change since 1.5.0 that might be responsible for this. 1.5.0 was building just fine but 1.6.0 is failing to build somewhere in new engines as far as I understand....
comment:3 by , 11 years ago
Do you know if 1.5.0 actually worked on any of these platforms? I did remove the fallback main() in 1.6.0, because it produced invalid binaries (they would crash at startup).
comment:4 by , 11 years ago
Owner: | set to |
---|
comment:5 by , 11 years ago
Hmm, you're right, I've just tried scummvm-1.5.0 on Hurd and kfreebsd-i386 and got the following error on start:
scummvm: common/system.cpp:130: virtual FilesystemFactory* OSystem::getFilesystemFactory(): Assertion `_fsFactory' failed.
Just as you've said perhaps ScummVM was never working on those platforms even though it was building. Thanks.
by , 11 years ago
Attachment: | hurd+kfreebsd.patch added |
---|
basic configure support for GNU Hurd and kFreeBSD
comment:6 by , 11 years ago
With the attached patch I was able to build ScummVM successfully on kFreeBSD (with --disable-alsa) and on GNU Hurd (with --disable-alsa --disable-timidity). I was able to run ScummVM on both platforms.
Just to note that without --disable-timidity Hurd FTBFS:
backends/midi/timidity.cpp: In member function ‘virtual int MidiDriver_TIMIDITY::open()’: backends/midi/timidity.cpp:151:21: error: ‘MAXHOSTNAMELEN’ was not declared in this scope backends/midi/timidity.cpp:161:19: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:163:19: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:166:21: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:176:39: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:185:72: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:218:36: error: ‘timidity_host’ was not declared in this scope backends/midi/timidity.cpp:228:66: error: ‘timidity_host’ was not declared in this scope make[2] *** [backends/midi/timidity.o] Error 1
I filed the following pull request:
https://github.com/scummvm/scummvm/pull/338
comment:7 by , 11 years ago
ownerless: Thank you for the patch and pull request. This has now been merged.
However, it should not be necessary to pass --disable-alsa or --disable-timidity explicitly as they should autodetect by tests in the configure script. If you could take a look at these tests, and see why they are failing to auto-detect that your platform lacks support for ALSA / timidity, then that would be good... Worst case, we can add a forced disable for these hosts, but the more optimal solution would be to fix the tests.
comment:8 by , 11 years ago
Thank you for merging.
I'm not yet familiar with tests so I just wanted to share something that made build possible to begin with. Indeed there is a potential for improvements.
Alsa is not available on non-linux platforms so override (instead of check) might be OK.
As for --disable-timidity on Hurd I don't really understand why it is needed: timidity library is there so in theory it could work if someone understands how to fix it and how to write functional test for `configure`. Thanks.
comment:9 by , 11 years ago
The errors you already copy-pasted below show that timidity itself may not be the problem but rather the constant MAXHOSTNAMELEN.
comment:10 by , 11 years ago
Right, lack of MAXHOSTNAMELEN is a notorious cause for FTBFS on GNU Hurd. I had a look at similar cases and produced a trivial fix for this, see attached "posix.patch". Using this patch I successfully built ScummVM-1.6.0 on Hurd without --disable-timidity. Not only it builds but works as well. :)
comment:11 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:12 by , 11 years ago
The first patch for configure support has been merged into master.
There is a pull request for the second patch (for MAXHOSTNAMELEN tp NI_MAXHOST) here: https://github.com/scummvm/scummvm/pull/339
So I'm closing this bug, as it's obsolete now
comment:13 by , 6 years ago
Component: | → Ports |
---|
comment:14 by , 6 years ago
Component: | Ports → Port: BSD |
---|
Best guess: host types of kfreebsd- and hurd- aren't supported by our configure (which means you don't get a main() due to POSIX not getting set, for example), and for some reason we don't error out.