What is needed for a proper Mac support

What is needed for a proper Mac support

Discuss everything related to compiling and running Spring on Mac OS X.

Moderator: Moderators

matyhaty
Posts: 13
Joined: 22 May 2014, 15:12

What is needed for a proper Mac support

Post by matyhaty »

What is needed for proper Mac support

Ive heard rumors that a decent build bot is the missing article?

Is that the case, if so ill try and sort something out.

What we need is a true Mac App - one file, in Applications - done.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: What is needed for a proper Mac support

Post by Silentwings »

I would guess that what is needed is for someone who uses a mac to regularly self-compile and work out how to solve the compile errors it produces.
matyhaty
Posts: 13
Joined: 22 May 2014, 15:12

Re: What is needed for a proper Mac support

Post by matyhaty »

Is there such a person around?
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: What is needed for a proper Mac support

Post by Silentwings »

Currently, afaik, no; there have been requests for a mac user to volunteer.
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: What is needed for a proper Mac support

Post by abma »

What is needed for proper Mac support
- basicly a osx buildslave: http://springrts.com/phpbb/viewtopic.ph ... 16#p563216
(osx >=10.7, 2GB RAM/64bit/maybe 15GB of disk space)
- "housing" for the machine, should be 24/7 available, ideally with ssh root access to installed required libs, normal user access should work, too.
- as it mostly does upload stuff, upload speed should be to slow, imo >=1MBIT should be fast enough.


ideally the person who "supports" the housing should have some c++ and administrator knowledge.

thats a basic howto get it compile / setup the buildslave
http://springrts.com/wiki/Building_Spring_on_MacOSX

very likely it doesn't compile atm, but it should be a good start for how to set it up.
moobyfr
Posts: 6
Joined: 24 Dec 2013, 12:25

Re: What is needed for a proper Mac support

Post by moobyfr »

I'm looking at the build process, unfortunately, I made C++ 10 years ago, so I'm a little outdated on the subject.
Currently, I still have 4 differents build errors,
- 1 related to openGL
- 1 about boost linkage (libstdc++ difference with installed version)
- 1 about C++
- 1 about libunwind

I'm trying directly on 10.10, but I should be able to get an old mac to build on 10.9 too.
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

Made an attempt to compile spring for 10.10
1) libc++ vs libstdc++
So far only boost as dependecy is restricted to libstdc++. Compile boost1.57 with gcc4.9 from macports. Solved so far.
Also clang/libc++ is the default one for OS X >= 10.9 so maybe it is better to teach spring clang.
2) couldn't find libunwind
There is system libunwind (in Cocoa framework?). With little modification to CMakeLists.txt it is solved.
3) several compile errors.
Patched few places in dirty manner (libunwind doesn't work properly). Solved but patch needs testing and refinement.
4) On spring loading - crashed at "OpenAL info: ... Available devices:"
Not solved. Will try no-audio or fix libunwind later.

Updated.
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: What is needed for a proper Mac support

Post by abma »

lamer wrote:Also clang/libc++ is the default one for OS X >= 10.9 so maybe it is better to teach spring clang.
impossible, it won't sync! gcc must be used!


can you create a pull request when you solve errors please?
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

With no-sound spring loads.
Tested Kernel Panic and Balanced Annihilation (only singleplayer for few minutes).
KP4.6 and BA8.06 fails on load with error

Code: Select all

[f=0000000] [LuaIntro] Loading widgets   <>=vfs  **=raw  ()=unknown
[f=0000000] [LuaIntro] Loading widget:      Circuit Growth         <circuitgrowth.lua>
[f=0000000] [LuaIntro] Loading widget:      LoadProgress           <loadprogress.lua>
[f=0000000] [LuaIntro] LuaIntro v1.0 (Lua 5.1)
terminate called after throwing an instance of 'opengl_error'
  what():  Could not activate worker rendering context
[f=0000000] [CrashHandler] Error: Abort trap: 6 (SIGABRT) in spring 98.0.1-218-g340f70e develop
[f=0000000] [CrashHandler] Error: Halted Stacktrace for Spring 98.0.1-218-g340f70e develop using libunwind:
(CrashHandler still broken, nothing interesting there)

With --safemode BA plays fine (some camera issues but thats could be due new engine features). Couldn't test latest ZK (it works on linux with 98.0.1-218 engine for sure) as they don't provide sdz packages anymore.
can you create a pull request when you solve errors please?
Yes. But public pr must wait as there is still issues (opengl, sound, crashhandler) and holidays are coming.
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

For those who'd like to early test compilation and desyncs (OS X 10.10, engine 98.0.1-218).
#1 macports

Code: Select all

sudo port install gcc49 cmake libdevil p7zip libvorbis libsdl2 freetype glew xorg-libXcursor
sudo port select --set gcc mp-gcc49
#2 boost
Download src and compile with gcc49.
Unfortunately i forgot actual steps :(.
#3 download and install java (jdk) for less compile errors or JavaAI support.
#4 get spring with dirty fixes

Code: Select all

git clone https://github.com/rlcevg/spring.git
git checkout dirty_osx
cmake . -DCMAKE_CXX_COMPILER=/opt/local/bin/g++-mp-4.9 -DCMAKE_C_COMPILER=/opt/local/bin/gcc-mp-4.9 -DGLEW_INCLUDE_DIR=/opt/local/include/GL -DCMAKE_INCLUDE_PATH=/path/to/our/boost -DCMAKE_LIBRARY_PATH=/path/to/our/boost/stage/lib -DNO_SOUND=1
make spring -j8
#5 install
For testing purpose just copy games + maps into spring, place AI interface and skirmish AI into proper places.
Place "Fullscreen = 0" into springsettings.cfg
#6 run

Code: Select all

DYLD_LIBRARY_PATH=/path/to/our/boost/stage/lib ./spring --safemode
You may try to compile without NO_SOUND flag, fails to run for me.
Camera is a bit broken: do not zoom too much or it will start act like scrolling.
moobyfr
Posts: 6
Joined: 24 Dec 2013, 12:25

Re: What is needed for a proper Mac support

Post by moobyfr »

We have a working spring running on OS X (develop branch from git), without sound, no safemode needed, and no grave artefact. (only saw the color from jammer being red and green instead of red :)

http://manu.agat.net/screen00005.png

I'll have a try on the v98 to try some online gaming, and after that see how to package it correctly.
Next week, I'll get a mac at work to set up a buildbot.

Nice work for developers to have such a easy compilation possible on OS X :p
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

Sound fix is coming (1 line fix :D ) and libunwind (just a matter of stacktrace symbolication) too.
But can't cope with opengl fix, doesn't work for me without --safemode yet :(
moobyfr
Posts: 6
Joined: 24 Dec 2013, 12:25

Re: What is needed for a proper Mac support

Post by moobyfr »

I've made a online gaming, this was harder. springlobby from git use wx which I had compiled with libc++ :/
the 0.201 was already working, but when it detect a mod, it crash, ... Had to rename the mod, join a game, rename the mod, and so I can join a running game .
for those interested, my github is https://github.com/moobyfr/spring for my config
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: What is needed for a proper Mac support

Post by abma »

what about a pull request?
moobyfr
Posts: 6
Joined: 24 Dec 2013, 12:25

Re: What is needed for a proper Mac support

Post by moobyfr »

As soon we understand why my version works, and not 'lamer' 's version
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: What is needed for a proper Mac support

Post by abma »

what doesn't work for lamer?

if it crashes, try to set DebugGL=1 and see if some error before the crash appears in infolog.txt.

if this isn't not useful, try with gdb attached to spring, i.e.
gdb ./spring

> run
.... wait till it crashes
> bt
if the stacktrace isn't useful, create a debug build.
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

I think i stuck with compatibility profile that describes only version 2.1
Here is description

Thread describes how to overcome the issue.

But now i ran into

Code: Select all

Needed OpenGL extension(s) not found:
   GL_ARB_multitexture GL_ARB_texture_env_combine GL_ARB_texture_compression

Update your graphic-card driver!
  Graphic card:   NVIDIA GeForce GTX 670 OpenGL Engine
  OpenGL version: 4.1 NVIDIA-10.0.43 310.41.05f01
Digging deeper
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

Looks like spring is bound to OpenGL 2.1 + GLSL 1.2 on OS X. As when i try to run higher GL version with

Code: Select all

SDL_GL_SetAttribute( SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE );
it fails to get some old extensions and screen is black.

Also found last broken part of the puzzle. Now everything works.
Except compiling in debug mode - it has illegal instructions and failing asserts :)

PR
lamer
Posts: 153
Joined: 08 Mar 2014, 23:13

Re: What is needed for a proper Mac support

Post by lamer »

Spent some time with springlobby trying to compile it with libstdc++. Main issue is wxWidgets 3.0, it won't compile.

With gcc4.9 following error occurs on ./configure (10.6 >= MacOSX.sdk <= 10.8 ):

Code: Select all

...
checking if __CF_USE_FRAMEWORK_INCLUDES__ is required... configure: error: in `/Users/bob/devel/spring/wxWidgets-3.0.2/builddir':
configure: error: no.  CoreFoundation not available.
wxWidgets with clang, -std=gnu++98 -stdlib=libstdc++, sdk 10.6 and dependencies + app with gcc4.9: compiles, links but springlobby.app crashes with

Code: Select all

springlobby(2620,0x7fff7e917300) malloc: *** error for object 0x7fff7e749a30: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
With sdk >= 10.9 wxWidgets shouldn't compile for libstdc++, because it links with system libs and they are libc++.

Now why would we want libstdc++ wxWidgets when springlobby is running fine with libc++? Because it fails to load libunitsync (libstdc++) on request.
1) Is there an easy way to forbid springlobby from using libunitsync?

As alternative to springlobby maybe it is possible to modify flobby for OS X if it doesn't use libunitsync.
2) Any other suggestions? Weblobby?
User avatar
Anarchid
Posts: 1384
Joined: 30 Nov 2008, 04:31

Re: What is needed for a proper Mac support

Post by Anarchid »

I think weblobby is supposed to work on mac, but you might have to compile it and my info is not fresh.

!invok ikinz
Post Reply

Return to “Mac OS X”