MacOS SpringRTS OSX Build
Moderator: Moderators
Re: MacOS SpringRTS OSX 10.10 Build
Hi man!
Please build spring 100 for mac! It was just released!
Thanks a lot!
Please build spring 100 for mac! It was just released!
Thanks a lot!
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Yay! On it's way!
@abama
Absolutely! Should I include any documentation with the 7z or just leave it with just the app? Why not have the .dmg with such documentation for the website link, and the 7z for springlobby? Regarding implementing my script for the build process, it's very much rigged for my computer and my own purposes (e.g. my own learning of bash), but it is pretty straight forward.. I'm sure some of it is useful to you.
@abama
Absolutely! Should I include any documentation with the 7z or just leave it with just the app? Why not have the .dmg with such documentation for the website link, and the 7z for springlobby? Regarding implementing my script for the build process, it's very much rigged for my computer and my own purposes (e.g. my own learning of bash), but it is pretty straight forward.. I'm sure some of it is useful to you.
Code: Select all
#! /bin/bash
#setup macports
#sudo port install gcc49 cmake libdevil p7zip libvorbis libsdl2 freetype glew xorg-libXcursor dylibbundler
#
#download the latest boost source and build against gcc49, but don't install. set using gcc : : g++-mp-4.9 ; in project-config.jam and replace darwin with gcc
#
#in cmake list file add
#set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /opt/local/lib)
ROOT=~/Spring
BUILD=~/Spring/build
BUNDLE=0
ERRORBUILD=0
BOOST=~/Documents/SpringDevStuff/boost_1_58_0
MYDIR=~/Documents/SpringDevStuff/Spring # Directory where the script is and will build the app/bundle
MACPORTS=`which port | sed s/[/]bin[/]port//`
# Clean old builds
if [ -d $MYDIR/*.app ]; then
rm -r $MYDIR/*.app
fi
if [ -e $MYDIR/*.dmg ]; then
rm $MYDIR/*.dmg
fi
if [ -e $MYDIR/log.txt ]; then
rm $MYDIR/log.txt
fi
while [ "$BUNDLE" != "n" ] && [ "$BUNDLE" != "y" ]; do
read -p "Do you want to bundle the app? : y/n " BUNDLE
done
cd ~/spring
mkdir $BUILD
cd $BUILD
REV=$(git describe --tags)
VERSION=`echo "${REV}" | tr '<>:\"/\\|?*' -`
echo "....Compiling Spring-${VERSION}"
cmake .. -DCMAKE_CXX_COMPILER=$MACPORTS/bin/g++-mp-4.9 -DCMAKE_C_COMPILER=$MACPORTS/bin/gcc-mp-4.9 -DGLEW_INCLUDE_DIR=$MACPORTS/include/GL -DBOOST_ROOT=$BOOST -DBoost_USE_STATIC_LIBS=YES -DGLEW_LIBRARIES=$MACPORTS/lib/libGLEW.a >>$MYDIR/log.txt 2>&1
make spring -j8 >>$MYDIR/log.txt 2>&1
make pr-downloader -j8 >>$MYDIR/log.txt 2>&1
echo "....Making Spring-${VERSION}.app"
#Generate the spring data folder (share) by installing into a temp directory
make install-spring DESTDIR=./temp >>$MYDIR/log.txt 2>&1
mkdir $BUILD/Spring.app
mkdir $BUILD/Spring.app/Contents
mkdir $BUILD/Spring.app/Contents/MacOS
mkdir $BUILD/Spring.app/Contents/Resources
mkdir $BUILD/Spring.app/Contents/lib
cp $BUILD/spring $BUILD/Spring.app/Contents/MacOS/spring
cp ~/Spring/installer/Mac/spring.icns $BUILD/Spring.app/Contents/Resources/spring.icns
cp -R $BUILD/temp/usr/local/share $BUILD/Spring.app/Contents/share
cat ~/Spring/installer/Mac/Info.plist | sed s/###VERSION###/${VERSION}/ > $BUILD/Spring.app/Contents/Info.plist
cp $BUILD/tools/pr-downloader/src/pr-downloader $BUILD/Spring.app/Contents/MacOS
dylibbundler -cd -b -x $BUILD/libunitsync.dylib -d $BUILD/Spring.app/Contents/MacOS -p @loader_path/../MacOS >>$MYDIR/log.txt 2>&1
dylibbundler -of -cd -b -x $BUILD/Spring.app/Contents/MacOS/spring -d $BUILD/Spring.app/Contents/lib -p @executable_path/../lib >>$MYDIR/log.txt 2>&1
install_name_tool -change $MACPORTS/lib/libX11.6.dylib @executable_path/../lib/libX11.6.dylib $BUILD/Spring.app/Contents/lib/libXcursor.1.dylib >>$MYDIR/log.txt 2>&1
dylibbundler -of -cd -b -x $BUILD/Spring.app/Contents/MacOS/pr-downloader -d $BUILD/Spring.app/Contents/lib -p @executable_path/../lib >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Interfaces/C/0.1/libAIInterface.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Interfaces/C/0.1 -p @loader_path/../0.1 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Interfaces/Java/0.1/libAIInterface.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Interfaces/Java/0.1 -p @loader_path/../0.1 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/AAI/0.9/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/AAI/0.9 -p @loader_path/../0.9 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/CppTestAI/0.1/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/CppTestAI/0.1 -p @loader_path/../0.1 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/E323AI/3.25.0/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/E323AI/3.25.0 -p @loader_path/../3.25.0 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/KAIK/0.13/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/KAIK/0.13 -p @loader_path/../0.13 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/NullAI/0.1/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/NullAI/0.1 -p @loader_path/../0.1 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/RAI/0.601/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/RAI/0.601 -p @loader_path/../0.601 >>$MYDIR/log.txt 2>&1
dylibbundler -cd -b -x $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/Shard/dev/libSkirmishAI.dylib -d $BUILD/Spring.app/Contents/share/games/spring/AI/Skirmish/Shard/dev -p @loader_path/../dev >>$MYDIR/log.txt 2>&1
if [ ! -e $BUILD/Spring.app/Contents/MacOS/spring ];then
echo "Error: App did not build correctly. Check log for details"
ERRORBUILD=1
fi
mv $BUILD/Spring.app $MYDIR/Spring_${VERSION}.app
rm -R $BUILD
if [ "$BUNDLE" = "y" ] && [ "$ERRORBUILD" = "0" ]; then
echo "REQUESTED....Bundling Spring-${VERSION}.app"
cd $MYDIR
mkdir ./Spring_${VERSION}-OSX-10.10
mkdir ./Spring_${VERSION}-OSX-10.10/Docs
mv ./Spring_${VERSION}.app ./Spring_${VERSION}-OSX-10.10/Spring_${VERSION}.app
cp $ROOT/AUTHORS $ROOT/COPYING $ROOT/FAQ $ROOT/gpl-2.0.html $ROOT/gpl-2.0.txt $ROOT/gpl-3.0.html $ROOT/gpl-3.0.txt $ROOT/LICENSE $ROOT/LICENSE.html $ROOT/README.markdown $ROOT/THANKS $ROOT/doc/changelog.txt ./Spring_${VERSION}-OSX-10.10/Docs
hdiutil create -volname Spring_${VERSION}-OSX-10.10 -srcfolder ./Spring_${VERSION}-OSX-10.10 -ov -format UDZO Spring_${VERSION}-OSX-10.10.dmg >>$MYDIR/log.txt 2>&1
rm -R ./Spring_${VERSION}-OSX-10.10
fi
if [ "$ERRORBUILD" = "1" ]; then
rm -R $MYDIR/*.app
else
rm $MYDIR/log.txt
fi
echo "Done!"
exit 0
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Ok I updated the first post with the Spring-100.0 dmg. Here is a 7z of just the app for SpringLobby
https://dl.dropboxusercontent.com/u/504 ... X-10.10.7z (It will have to be moved elsewhere, my dropbox account isn't the best place)
https://dl.dropboxusercontent.com/u/504 ... X-10.10.7z (It will have to be moved elsewhere, my dropbox account isn't the best place)
Re: MacOS SpringRTS OSX 10.10 Build
uploaded to this server:
https://springrts.com/dl/buildbot/defau ... osemite.7z
(adjusted the filename to the naming schema)
is this ok? if so i'll upload to sourceforge, too.
https://springrts.com/dl/buildbot/defau ... osemite.7z
(adjusted the filename to the naming schema)
is this ok? if so i'll upload to sourceforge, too.
Re: MacOS SpringRTS OSX 10.10 Build
imo no documentation is needed, would be better to place instructions to the download page imo. also idk if currently springlobby can automaticly pick up the file.darklord42 wrote:Yay! On it's way!
@abama
Absolutely! Should I include any documentation with the 7z or just leave it with just the app? Why not have the .dmg with such documentation for the website link, and the 7z for springlobby? Regarding implementing my script for the build process, it's very much rigged for my computer and my own purposes (e.g. my own learning of bash), but it is pretty straight forward.. I'm sure some of it is useful to you.Code: Select all
wrt the script: a lot of this is hardcoded in the "old" script, too:
https://github.com/spring/spring/blob/d ... _bundle.sh
i only miss that compile / upload works fully automated, atm its a lot of work/time to just put it on the server.
but thanks to apple, its very difficult / expensive to get a buildslave to just compile sth. (i.e. no virtualization allowed on non-mac machines)
maybe crosscompiling could be tried, not sure: https://github.com/tpoechtrager/osxcross
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Yeah I borrowed a lot from that script, including finding out that there must be code to find the resources in the app bundle, and how the resources should be installed into the app. The only problem with the build script is the portion that relinks the libraries, although very cleaver, doesn't seem to work. And being a novice in bash, I have no idea how to fix it. The program dylibbundler does it just fine. But as you point out, you need a mac to virtualize a mac
....I completely forgot that that was the case. I have heard of attempts to cross compile osx apps in linux. You may need an OSX SDK. I have a 10.7 sdk if you would like to play with it. (10.6 too, but sdl2 needs 10.7)
https://dl.dropboxusercontent.com/u/504 ... 0.7.sdk.7z
One of these days I'll try to remake my setup to build for 10.7. I imagine boost is going to be trouble for me.
....I completely forgot that that was the case. I have heard of attempts to cross compile osx apps in linux. You may need an OSX SDK. I have a 10.7 sdk if you would like to play with it. (10.6 too, but sdl2 needs 10.7)
https://dl.dropboxusercontent.com/u/504 ... 0.7.sdk.7z
One of these days I'll try to remake my setup to build for 10.7. I imagine boost is going to be trouble for me.
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
I somehow missed your first post. I suppose it's ok. Personally speaking, I prefer .dmg. It lets the user know that yes this is a mac download. And there is something nice about a disk image as oppose to a normal compressed archive. I can even put an alias in there of the Application folder to help people install it. In a drag and drop sort of way.
However practically speaking, I find creating the dmg image fixes permissions of the compiled app. (I get some strange permissions otherwise...) But i suppose it's alright to compress as dmg, copy the app out, and then compress to 7zip. I like 7zip, the compression size is better. But I would have thought you would want to include the license and changelog in a docs folder for the website download. A 7zip archive for springlobby to download and install automatically is one thing. The user never sees what was in the archive. But it's your call.
However practically speaking, I find creating the dmg image fixes permissions of the compiled app. (I get some strange permissions otherwise...) But i suppose it's alright to compress as dmg, copy the app out, and then compress to 7zip. I like 7zip, the compression size is better. But I would have thought you would want to include the license and changelog in a docs folder for the website download. A 7zip archive for springlobby to download and install automatically is one thing. The user never sees what was in the archive. But it's your call.
Re: MacOS SpringRTS OSX 10.10 Build
darklord42, for some reason springlobby 0.225 is crashing when you join battleroom (confirmed for 2 people)
could you please make build with latest dev version? I would like to test it
could you please make build with latest dev version? I would like to test it
Re: MacOS SpringRTS OSX 10.10 Build
Works for me usually… crashes if I try to join a server with a map I don't have. Or the server changes to a map I don't have.
Re: MacOS SpringRTS OSX 10.10 Build
we need to check this issue in the latest build. So we can report it to the lobby devs and probably they will be able to fix it before the release
Re: MacOS SpringRTS OSX 10.10 Build
hurry please! :)jamerlan wrote:we need to check this issue in the latest build.
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Sorry I didn't see you guys' posts earlier. Anyway .226 is out so I updated springlobby
To be honest I never had that issue even with .225 but certainly not during development. Hopefully it's been fixed whatever it was.
To be honest I never had that issue even with .225 but certainly not during development. Hopefully it's been fixed whatever it was.
Re: MacOS SpringRTS OSX 10.10 Build
thanks darklord42!
Just tested - still crashing :-) reported here: https://github.com/springlobby/springlobby/issues/553
Just tested - still crashing :-) reported here: https://github.com/springlobby/springlobby/issues/553
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Abama made a first attempt to fix.
https://www.dropbox.com/s/6bnqxmwv5x4d9 ... 0.dmg?dl=0
https://www.dropbox.com/s/6bnqxmwv5x4d9 ... 0.dmg?dl=0
Re: MacOS SpringRTS OSX 10.10 Build
Works! Thank you so much! for fixes and builds!
Re: MacOS SpringRTS OSX 10.10 Build
Wait, how do i get to Edit??
Re: MacOS SpringRTS OSX 10.10 Build
It wont let me open the spring lobby without crashing
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX 10.10 Build
Well I just updated springlobby, I doubt that's the problem. My question is edit what?
Re: MacOS SpringRTS OSX Build
I have tried to run a Java AI with this Spring:
It seems the java interface is broken. I wonder if someone can spot any obvious errors or methods of fixing this?
Code: Select all
[f=0000000] Error: Initializing AI Interface library from file "/Users/user/.spring/engine/100.0/Spring_100.0.app/Contents//share/games/spring/AI/Interfaces/Java/0.1/libAIInterface.dylib". The call to initStatic() returned unsuccessfuly.
-
- Posts: 96
- Joined: 26 Jul 2014, 07:11
Re: MacOS SpringRTS OSX Build
I knew a lot of the engines didn't work. Never found out why.. Hmm when I linked the library it added an erronius "/" before "share" I can probably get the build script to fix that. Only i don't see in my build script how it got there...
EDIT
I did a grep of the whole app (grep scans binaries as well) couldn't find it. I'm not even sure that's the issue.. If it didn't find the library it would be a different error correct? It's possible the java interface wasn't intended for the app setup. I just made use of the existing code and made my own buildscript following the existing one that made the app. I bet the code for finding resources in the app is quite old.
EDIT
I did a grep of the whole app (grep scans binaries as well) couldn't find it. I'm not even sure that's the issue.. If it didn't find the library it would be a different error correct? It's possible the java interface wasn't intended for the app setup. I just made use of the existing code and made my own buildscript following the existing one that made the app. I bet the code for finding resources in the app is quite old.