How to build Oolite source on Ubuntu

For discussion of ports to POSIX based systems, especially using GNUStep.

Moderators: winston, another_commander, Getafix

User avatar
Smivs
Retired Assassin
Retired Assassin
Posts: 8408
Joined: Tue Feb 09, 2010 11:31 am
Location: Lost in space
Contact:

Re: How to build Oolite source on Ubuntu

Post by Smivs »

Diziet Sma wrote:
.. my own 'to-do' list is both long and in a continual state of flux.. :lol:
Compliling a 'To Do' list is right at the top of mine :D
Commander Smivs, the friendliest Gourd this side of Riedquat.
User avatar
Norby
---- E L I T E ----
---- E L I T E ----
Posts: 2577
Joined: Mon May 20, 2013 9:53 pm
Location: Budapest, Hungary (Mainly Agricultural Democracy, TL10)
Contact:

Re: How to build Oolite source on Ubuntu

Post by Norby »

Diziet Sma wrote:
my own 'to-do' list is both long and in a continual state of flux.. :lol:
I have a long list also (over 1500 lines) and my next task selection algorithm is somewhat random within the first few hundred lines to avoid the boring "must do this now" and keep up the freedom to change which seems to be the most interesting at the moment. ;)


About source building I use script files in my Linux.
First I get the source with this (one time only):

Code: Select all

git clone https://github.com/OoliteProject/oolite.git
cd oolite
git submodule update --init
Later I get the fresh trunk code and compile by starting this file:

Code: Select all

cd oolite
git pull
git submodule update
. /usr/share/GNUstep/Makefiles/GNUstep.sh
make -j4 -fMakefile release-snapshot
If you get errors then you should install missing packages like gobjc (see the posts above).

Then run Oolite with this script:

Code: Select all

cd oolite/oolite.app
./oolite
This use the same folders for AddOns and savegames, so equivalent in usage with my another installation from nightly builds, but if a new feature is introduced in the forum which will be available in the next nightly then I can compile and test it without delay.

Btw here is my nightly updater script which put back my modified keyconfig after each update:

Code: Select all

~/GNUstep/Applications/Oolite-trunk/oolite.app/oolite-update $@
c=~/GNUstep/Applications/Oolite-trunk/oolite.app/Resources/Config
cp "$c/keyconfig.plist" "$c/keyconfig.plist.orig"
cp "$c/keyconfig.plist-norby" "$c/keyconfig.plist"
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

Getafix wrote:
To circumvent this, I have setup a Linux 8.04 development environment (vbox),
where I have compiled and installed from source, all the libraries distributed.
This environment is also used for the nightly build.
So where can I find a list of the exact library versions used for the nightly builds?

(I'm currently trying to set up a Debian install to create distributable custom Linux binaries, for the Rescaling Project.)

Edit:
Never mind.. think I've got all the relevant info now..
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

Having abandoned the Debian build environment mentioned above, I'm currently setting up an Ubuntu 8.04.4 build environment, as used by Getafix, and have a question regarding building Spidermonkey.
3. SpiderMonkey v1.85 (all platforms)

- Specific build settings for Oolite are required. Library rebuilt with the following macros defined as shown below:

JS_THREADSAFE defined on Mac and Linux debug builds.

MOZ_TRACE_JSCALLS defined in order to enable full JavaScript profiling.
When it says "debug builds", is it referring to a debug build of Spidermonkey, or Oolite?

At the moment I've built both optimised and debug builds of Spidermonkey using the above macro definitions, and am unsure which version of the library I should be installing.

Edit:

More questions.
libespeak.so.1
(compiled to use libportaudio.so.2 also pre-packaged)

libespeak.so.1.pulseaudio
(compiled to use PulseAudio as an alternative if libespeak.so.1 fails)
So I compiled libespeak against libportaudio, and installed that.. then I re-compiled it against pulseaudio, but in both instances the end result is named libespeak.so.1

Is there something I'm missing here? What exactly should I be doing with the 2 versions of this library?


Other than this, all the necessary library builds have been (relatively) straightforward.
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Getafix
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 979
Joined: Tue Apr 01, 2008 12:55 pm
Location: A small ice asteroid, orbiting Oresrati in Galaxy 8 (a.k.a. northwest Armorica).
Contact:

Re: How to build Oolite source on Ubuntu

Post by Getafix »

Hi,

for Linux (for Mac I don't know) libjs is built automatically when building Oolite.
If debug build is requested for Oolite, a debug build is also performed for libjs.
As per below extract of libjs.make script:

Code: Select all

LIBJS_CONFIG_FLAGS               = --disable-shared-js
LIBJS_CONFIG_FLAGS               += --enable-threadsafe
LIBJS_CONFIG_FLAGS               += --with-system-nspr
LIBJS_CONFIG_FLAGS               += --disable-tests
ifeq ($(OO_JAVASCRIPT_TRACE),yes)
    LIBJS_CONFIG_FLAGS           += --enable-trace-jscalls
endif
ifeq ($(debug),yes)
    LIBJS_BUILD_DIR              = $(LIBJS_SRC_DIR)/build-debug
    LIBJS_CONFIG_FLAGS           += --enable-debug
    LIBJS_CONFIG_FLAGS           += --disable-optimize
    LIBJS_BUILD_FLAGS            =
else
    LIBJS_BUILD_DIR              = $(LIBJS_SRC_DIR)/build-release
    LIBJS_BUILD_FLAGS            =
endif
LIBJS                            = $(LIBJS_BUILD_DIR)/libjs_static.a
LIBJS_BUILD_STAMP                = $(LIBJS_BUILD_DIR)/build_stamp
LIBJS_CONFIG_STAMP               = $(LIBJS_BUILD_DIR)/config_stamp
...'threadsafe' is always enabled. (Perhaps Ahruman could enlighten us here...)
The 'pkg-posix-*' build targets do not support debug-mode yet.
In order to have a debug-mode build the target to be used is 'debug'.
I think a 'distclean' target built is also needed before a 'debug' target built.

Now, concerning the libespeak, the only libespeak that you need installed, is the one built with portaudio.
The one build with pulseaudio, I just build it (and not install it) and copy it as 'deps/Linux-deps/x86*/lib/libespeak.so.1.pulseaudio',
in order to be packaged with the rest of the pre-built libraries.
"Any sufficiently advanced information is indistinguishable from noise." [Newman, Lachmann, Moore]
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

So in other words, I'm basically good to go.. many thanks for the clarifications. :D
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

Well.. this is.. irritating.

I began, as mentioned above, by installing the 64bit version of Ubuntu 8.04.4, that being the system Getafix uses to create the nightly Linux builds (and the release builds), and updated the system to the final versions of all standard libraries and programs available for it, before support for 8.04.4 was dropped. Carefully following the directions in the README.TXT for Linux, I then compiled and/or installed all the necessary dependencies.

So now, when I do make -j4 -fMakefile release-snapshot, it bombs out with the following error:

Code: Select all

make[1]: *** [oolite.all.objc-program.variables] Error 2
make[1]: Leaving directory `/home/diziet/Projects/oolite'
make: *** [release-snapshot] Error 2
Most annoying. And it's been a long time since I've seen so many compiler warnings, too.. pretty much all along the lines of:

Code: Select all

/usr/local/include/SDL/SDL_opengl.h:47:58: warning: GL/glu.h: No such file or directory
It wrapped up with:

Code: Select all

src/Core/OOPolygonSprite.m:86: error: expected ‘)’ before ‘*’ token
src/Core/OOPolygonSprite.m: In function ‘-[OOPolygonSprite loadPolygons:outlineWidth:]’:
src/Core/OOPolygonSprite.m:259: error: ‘GLUtesselator’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:259: error: (Each undeclared identifier is reported only once
src/Core/OOPolygonSprite.m:259: error: for each function it appears in.)
src/Core/OOPolygonSprite.m:259: error: ‘tesselator’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:276: warning: implicit declaration of function ‘gluNewTess’
src/Core/OOPolygonSprite.m:286: warning: implicit declaration of function ‘gluTessCallback’
src/Core/OOPolygonSprite.m:286: error: ‘GLU_TESS_BEGIN_DATA’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:287: error: ‘GLU_TESS_VERTEX_DATA’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:288: error: ‘GLU_TESS_END_DATA’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:289: error: ‘GLU_TESS_ERROR_DATA’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:290: error: ‘GLU_TESS_COMBINE_DATA’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:292: warning: implicit declaration of function ‘gluTessBeginPolygon’
src/Core/OOPolygonSprite.m:305: warning: implicit declaration of function ‘SubmitVertices’
src/Core/OOPolygonSprite.m:308: warning: implicit declaration of function ‘gluTessEndPolygon’
src/Core/OOPolygonSprite.m:335: warning: implicit declaration of function ‘gluDeleteTess’
src/Core/OOPolygonSprite.m:359: warning: implicit declaration of function ‘gluTessProperty’
src/Core/OOPolygonSprite.m:359: error: ‘GLU_TESS_WINDING_RULE’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m:359: error: ‘GLU_TESS_WINDING_POSITIVE’ undeclared (first use in this function)
src/Core/OOPolygonSprite.m: At top level:
src/Core/OOPolygonSprite.m:418: error: expected ‘)’ before ‘*’ token
src/Core/OOPolygonSprite.m: In function ‘ErrorCallback’:
src/Core/OOPolygonSprite.m:787: warning: implicit declaration of function ‘gluErrorString’
src/Core/OOPolygonSprite.m:787: warning: cast to pointer from integer of different size
make[2]: *** [obj.spk/OOPolygonSprite.m.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from src/Core/OOOpenGLOnly.h:58,
                 from src/Core/OOOpenGL.h:31,
                 from src/Core/OOMaths.h:59,
                 from src/Core/Materials/OOPixMap.h:30,
                 from src/Core/OOConvertCubeMapToLatLong.h:30,
                 from src/Core/OOConvertCubeMapToLatLong.m:30:
/usr/local/include/SDL/SDL_opengl.h:47:58: warning: GL/glu.h: No such file or directory
make[1]: *** [oolite.all.objc-program.variables] Error 2
make[1]: Leaving directory `/home/diziet/Projects/oolite'
make: *** [release-snapshot] Error 2
Any thoughts/suggestions would be most appreciated.

If it helps, the entire 45kb of output can be downloaded here.
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Lone_Wolf
---- E L I T E ----
---- E L I T E ----
Posts: 546
Joined: Wed Aug 08, 2007 10:59 pm
Location: Netherlands

Re: How to build Oolite source on Ubuntu

Post by Lone_Wolf »

http://mesa3d.org/relnotes/9.0.html

With mesa 9 (okt 2012) , GLU was separated from mesa into it's own project.
Maybe you updated mesa from pre-9 to a post-9 version and now you no longer have GLU installed ?
OS : Arch Linux 64-bit - rolling release

OXPs : My user page

Retired, reachable at [email protected]
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

Damn.. you're probably right.. thanks for the suggestion, I'll check it out after I get a few hours sleep ('tis almost 2.30am here).

(that's what I love about having Arch Linux folks around.. they are seriously clued-up on such things!)
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

So much for getting to sleep.. :mrgreen: :lol:
I just can't drop off with a problem buzzing around in my brain.
Lone_Wolf wrote:
http://mesa3d.org/relnotes/9.0.html

With mesa 9 (okt 2012) , GLU was separated from mesa into it's own project.
Maybe you updated mesa from pre-9 to a post-9 version and now you no longer have GLU installed ?
It turned out that no, that wasn't quite it, (Ubuntu 8.04.4 has mesa 7.0.3) but you did put me on the right track.
Turns out that somehow I didn't have libglu1-mesa-dev installed.. (just like I didn't have libnspr4-dev and libvorbis-dev, as well! :shock: )

Anyway, with all those problems dealt with, compilation is now mostly problem-free, except for one thing which doesn't really become apparent until the linker fails, with:

Code: Select all

 Linking objc_program oolite ...
./obj.spk/OOPNGTextureLoader.m.o: In function `-[OOPNGTextureLoader(OOPrivate) doLoadTexture]':
/home/diziet/Projects/oolite/src/Core/Materials/OOPNGTextureLoader.m:101: undefined reference to `png_set_longjmp_fn'
./obj.spk/OOPNGTextureLoader.m.o: In function `PNGError':
/home/diziet/Projects/oolite/src/Core/Materials/OOPNGTextureLoader.m:228: undefined reference to `png_set_longjmp_fn'
./obj.spk/MyOpenGLView.m.o: In function `-[MyOpenGLView pngSaveSurface:withSurface:]':
/home/diziet/Projects/oolite/src/SDL/MyOpenGLView.m:1154: undefined reference to `png_set_longjmp_fn'
collect2: ld returned 1 exit status
make[2]: *** [obj.spk/oolite] Error 1
make[1]: *** [oolite.all.objc-program.variables] Error 2
make[1]: Leaving directory `/home/diziet/Projects/oolite'
make: *** [release-snapshot] Error 2
Looking back near the beginning of the process, I came across this:

Code: Select all

diziet@ubuntu-hardy-laptop:~/Projects/oolite$ make clean
This is gnustep-make 2.0.8. Type 'make print-gnustep-make-help' for help.
rm -rf ./*~ ./obj
rm -f -rf obj obj.spk obj.dbg obj.spk.dbg
diziet@ubuntu-hardy-laptop:~/Projects/oolite$ make -j4 -fMakefile release-snapshot
usage: git-rev-list [OPTION] <commit-id>... [ -- paths... ]
  limiting output:
    --max-count=nr
    --max-age=epoch
    --min-age=epoch
    --sparse
    --no-merges
    --remove-empty
    --all
    --stdin
    --quiet
  ordering output:
    --topo-order
    --date-order
  formatting output:
    --parents
    --objects | --objects-edge
    --unpacked
    --header | --pretty
    --abbrev=nr | --no-abbrev
    --abbrev-commit
    --left-right
  special purpose:
    --bisect
    --bisect-vars
    --bisect-all
make -f libjs.make debug=no
make[1]: Entering directory `/home/diziet/Projects/oolite'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/diziet/Projects/oolite'
make -f GNUmakefile SNAPSHOT_BUILD=yes VERSION_STRING=1.81.0.-141213-84e97c1 debug=no
This is gnustep-make 2.0.8. Type 'make print-gnustep-make-help' for help.
make[1]: Entering directory `/home/diziet/Projects/oolite'
/usr/GNUstep/System/Library/Makefiles/mkinstalldirs oolite.app
Making all for objc_program oolite...
/usr/GNUstep/System/Library/Makefiles/mkinstalldirs oolite.app/Resources
 Compiling file src/Core/legacy_random.c ...
 Compiling file src/BSDCompat/strlcpy.c ...
tools/mkmanifest.sh > oolite.app/Resources/manifest.plist
cp -rf -u Resources/README.TXT oolite.app/Resources
 Compiling file src/Core/Debug/OOTCPStreamDecoder.c ...
cp -rf -u Resources/InfoPlist.strings oolite.app/Resources
cp -rf -u Resources/AIs oolite.app/Resources
cp -rf -u Resources/Config oolite.app/Resources
 Compiling file src/Core/OOPlanetData.c ...
cp -rf -u Resources/Scenarios oolite.app/Resources
cp -rf -u Resources/Scripts oolite.app/Resources
cp -rf -u Resources/Shaders oolite.app/Resources
cp -rf -u Resources/Binary/Images oolite.app/Resources
cp -rf -u Resources/Binary/Models oolite.app/Resources
cp -rf -u Resources/Binary/Music oolite.app/Resources
 Compiling file src/Core/MiniZip/ioapi.c ...
cp -rf -u Resources/Binary/Sounds oolite.app/Resources
cp -rf -u Resources/Binary/Textures oolite.app/Resources
cp -rf -u Schemata oolite.app/Resources
cp -rf -u src/Cocoa/Info-Oolite.plist oolite.app/Resources/Info-gnustep.plist
cp -rf -u obj.spk/oolite oolite.app/oolite
cp: cannot stat `obj.spk/oolite': No such file or directory
make[1]: *** [after-all] Error 1
 Compiling file src/Core/MiniZip/unzip.c ...
make[1]: *** Waiting for unfinished jobs....
 Compiling file src/Core/Debug/OODebugMonitor.m ...
 Compiling file src/Core/Debug/OODebugStandards.m ...
Any thoughts on what's up with `obj.spk/oolite' and the png problems? Is libpng12-0, which comes with Ubuntu 8.04.4, (or libpng12-dev, which is also installed, for some reason) somehow messing things up for the libpng-1.4.7 I installed as part of setting up the dev environment?
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
User avatar
cim
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 4072
Joined: Fri Nov 11, 2011 6:19 pm

Re: How to build Oolite source on Ubuntu

Post by cim »

Diziet Sma wrote:
diziet@ubuntu-hardy-laptop:~/Projects/oolite$ make -j4 -fMakefile release-snapshot
I would advise not doing the -j4 for now. There's presumably a missing dependency of the post-compile steps on the compile step somewhere in the Makefile, but if you go for a serial build it should work.

(-j4 will get you virtually no speedup even if it worked, as the slow bit is the GNUstep compile which doesn't parallelise anyway)
User avatar
Diziet Sma
---- E L I T E ----
---- E L I T E ----
Posts: 6312
Joined: Mon Apr 06, 2009 12:20 pm
Location: Aboard the Pitviper S.E. "Blackwidow"

Re: How to build Oolite source on Ubuntu

Post by Diziet Sma »

Ok.. thanks for that.. I borrowed the -j4 bit from Norby's post above.. hadn't used it before.
Most games have some sort of paddling-pool-and-water-wings beginning to ease you in: Oolite takes the rather more Darwinian approach of heaving you straight into the ocean, often with a brick or two in your pockets for luck. ~ Disembodied
Anonymissimus
---- E L I T E ----
---- E L I T E ----
Posts: 299
Joined: Mon Apr 27, 2015 9:03 pm

Re: How to build Oolite source on Ubuntu

Post by Anonymissimus »

on Trusty with oolite 1.82.x, reinstalled OS (no upgrade from precise)
gnustep-core-devel isn't exactly needed, libgnustep-base-dev is enough to build & run oolite, spares a number of gnustep gui related packages, also installes gobjc
Aside from that you obviously need git instead of subversion, copied oolite-saves, GNUstep and .Oolite folders from my old home directory to the new one and works.

EDIT
I also had to install libopenal-dev for Al.h, appears to be missing. As oolite isn't the first project to build on this system, it's totally possible the previous projects did require things oolite needs as well (e.g. sdlmixer already was installed).
warning sound if a missile is inbound: Missile warning
User avatar
pleiadian
Deadly
Deadly
Posts: 143
Joined: Mon Feb 20, 2017 2:14 pm

Re: How to build Oolite source on Ubuntu

Post by pleiadian »

Code: Select all

src/Core/OOPolygonSprite.m:259: error: ‘GLUtesselator’ undeclared (first use in this function)
I am also puzzled by this error. On Ubuntu 16.04, got all dependencies, libraries and headers needed for compilation installed. The glu.h file tells me that the GLUTesselator that the class is defined :?:

Not sure how to solve this.

--
EDIT: Had SDL2 instead of SDL 1.2 installed... it's compiling but not linking. I'll figure out.
User avatar
Getafix
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 979
Joined: Tue Apr 01, 2008 12:55 pm
Location: A small ice asteroid, orbiting Oresrati in Galaxy 8 (a.k.a. northwest Armorica).
Contact:

Re: How to build Oolite source on Ubuntu

Post by Getafix »

Hello Pleiadian and apologies for not coming back earlier on this.

The problem might be that you miss some dev libraries.

Please, check the following post by Dizie; he had a pretty similar case as yours.
http://bb.aegidian.org/viewtopic.php?p=230772#p230772

EDIT 2017.03.27
I quote for your convenience:
Diziet Sma wrote: Fri Dec 12, 2014 5:09 pm
...Turns out that somehow I didn't have libglu1-mesa-dev installed.. (just like I didn't have libnspr4-dev and libvorbis-dev, as well! :shock: )...
"Any sufficiently advanced information is indistinguishable from noise." [Newman, Lachmann, Moore]
Post Reply