View Issue Details

IDProjectCategoryView StatusLast Update
0004208Spring engineLinuxpublic2018-02-13 01:39
Reporterapoleon Assigned ToKloot  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version95.0 
Summary0004208: glshaderSource stub signature does not match that in <GL/glext.h>.
DescriptionWhile packaging the official Debian version of spring 95.0, I had to unbundle the libs under includes/GL and to use Debian's system libraries.

However then spring fails to build from source because the glshaderSource stub in headlessStubs/glstub.c is outdated.

I'm attaching a patch that resolved the issue.
TagsNo tags attached.
Attached Files
glShaderSource.patch (Attachment missing)
fix-sdl-build.patch (Attachment missing)
Checked infolog.txt for Errors

Relationships

related to 0005033 resolvedjK Dedicated / headless builds still need glu.h 

Activities

jK

2013-12-14 00:30

developer   ~0012377

The files under include/* are fallbacks (esp. for headless build).
Spring already uses your syslibs when available.

apoleon

2013-12-14 11:29

reporter   ~0012383

Hmm, interesting. Unfortunately I can't confirm this here for my local build. To reproduce the issue you can remove the complete include/* folder and try to build spring only with system libraries on Debian such as libsdl1.2-dev and libopenal-dev. Spring will FTBFS because of two distinct issues:

1. The buildsystem can't detect the correct include path for the SDL.h header files and errors out in rts/lib/headlessStubs/sdlstub.c for example. In Debian there is currently a patch in place to detect the correct SDL include path. I'm attaching this patch. (It could probably be improved). I'm using the default values of the buildsystem thus I get spring, spring-dedicated and spring-headless in the end.

2. The second one is the already reported glShaderSource bug.

jK

2013-12-14 13:14

developer   ~0012385

Last edited: 2013-12-14 13:16

> The files under include/* are fallbacks (>>esp. for headless build<<).
The errors you get are from the headless build, which is a build without visual output (used for buildbot validation tests, AI testing, dedicated servers with AI support, ...). It uses `stubs` for SDL & GL, so we don't need heavy ifdef-flagging of all rendering code.
It uses just uses the Headers of those libraries, it doesn't link SDL, GL nor OpenAL.

apoleon

2013-12-14 14:40

reporter   ~0012386

I think I understand the reasoning for the headless build. What I don't understand is why you include those header files at all. I have compared SDL.h in the include directory with the SDL.h version currently shipped with Debian. They are almost identical and the differences are just marginal.

So the build fails because it requires the header files in include to be present but this seems redundant because almost the same header files are present as system libraries.

I suggest that the headless build should not assume that the header files are in include/SDL or include/GL but in /usr/include/SDL/ and should be updated so that glShaderSource is up-to-date with current releases of SDL. I can confirm that both patch addresses this issue.

jK

2013-12-14 14:44

developer   ~0012387

Last edited: 2013-12-14 14:50

> I think I understand the reasoning for the headless build. What I don't understand is why you include those header files at all. I have compared SDL.h in the include directory with the SDL.h version currently shipped with Debian. They are almost identical and the differences are just marginal.

The reasoning is that you want to be able to compile headless builds w/o having any of these libs installed (e.g. you compile headless often on pure servers with just ssh access and no gpu at all).
-> it doesn't link any of these libs, so why should you install them to compile a binary that doesn't link those? esp. when those libs got a HUGE list of dependencies and always result in a full x11 install.

apoleon

2013-12-16 19:02

reporter   ~0012412

I still don't understand the reasoning. Debian builds spring always on headless servers without gpu, even without internet access. It's true that a lot of dependencies are pulled in but you can mitigate that by using a chroot-environment such as sbuild, pbuilder or cowbuilder for Debian.

So in fact you just have to spend a little bit of disk space but you ensure that you are always compatible with the upstream header files of AL, GL and SDL. That's a huge benefit and you can avoid convenience copies and you still get a synced build.

Kloot

2018-02-13 01:39

developer   ~0018804

the headless GL headers were updated for 104, resolved afaict.

Issue History

Date Modified Username Field Change
2013-12-13 16:29 apoleon New Issue
2013-12-13 16:29 apoleon File Added: glShaderSource.patch
2013-12-14 00:30 jK Note Added: 0012377
2013-12-14 11:28 apoleon File Added: fix-sdl-build.patch
2013-12-14 11:29 apoleon Note Added: 0012383
2013-12-14 13:14 jK Note Added: 0012385
2013-12-14 13:15 jK Note Edited: 0012385
2013-12-14 13:16 jK Note Edited: 0012385
2013-12-14 14:40 apoleon Note Added: 0012386
2013-12-14 14:44 jK Note Added: 0012387
2013-12-14 14:44 jK Note Edited: 0012387
2013-12-14 14:45 jK Note Edited: 0012387
2013-12-14 14:46 jK Note Edited: 0012387
2013-12-14 14:50 jK Note Edited: 0012387
2013-12-16 19:02 apoleon Note Added: 0012412
2016-01-13 14:33 abma Relationship added related to 0005033
2018-02-13 01:39 Kloot Assigned To => Kloot
2018-02-13 01:39 Kloot Status new => resolved
2018-02-13 01:39 Kloot Resolution open => fixed
2018-02-13 01:39 Kloot Note Added: 0018804