Hi,
for loading the Ogre plugins under mac, I replaced the following line:
pluginStr =  pathStr + "/" +  pluginNode->GetValue();
to
pluginStr = pluginNode->GetValue();
in OgreAdaptor.cc (line 310)
and in the world files:
    <plugins path="/usr/local/lib/OGRE">
      <plugin>RenderSystem_GL</plugin>
      <plugin>Plugin_ParticleFX</plugin>
      <plugin>Plugin_BSPSceneManager</plugin>
      <plugin>Plugin_OctreeSceneManager</plugin>
    </plugins>
Let have a look if it also work for you.

Regards
David 

Le 15 juil. 07 à 20:52, Nathan Michael a écrit :

Hi Kevin,

Read your email from this morning and thought I would give it a try.

I exported the source:

>> svn export https://playerstage.svn.sourceforge.net/svnroot/playerstage/code/gazebo gazebo
>> cd gazebo
>> patch -p0 < gazebo.patch # Where the patch is attached (and should be dropped in the directory).

I also downloaded the OSX Ogre3D SDK (v 1.4.2) and installed it.

I had to change a lot of includes to correctly work with frameworks. To make this change reflected in the patch, I ran the following:

>> for i in $(find . -not -name "*svn*" -exec grep -q "Ogre*.h>" '{}' \; -print); do sed -e 's@e <Ogre@e <Ogre/Ogre@g' $i > $i.tmp; mv $i.tmp $i; done
>> for i in $(find . -not -name "*svn*" -exec grep -q "<python2.4/" '{}' \; -print); do sed -e 's@e <python2.4@e <Python@g' $i > $i.tmp; mv $i.tmp $i; done

These commands replace certain includes that don't work with frameworks so that they do work.

I installed boost_python. I use MacPorts and the Portfile explicitly states not to build boost_python, so I changed the line for configure.args to just read:

configure.args --without-icu

and reinstall.

In SConstruct, you'll see that I included environment variables and eliminated some pkg-config requests (and checks). I did this so that things would work with frameworks. I also had to add my info for ode since my ode-config spits out ode_path/ode and the source all refers to <ode/header>. I exported the following:

>> export CPATH=$CPATH:/Developer/Ogre/Dependencies/include/OIS:/ode_path/include

It seems like both <OIS*.h> and <OIS/OIS*.> are referenced (I may be wrong here) so I include both (above and below). I also made a pkg-config file OIS.pc which reads:

prefix=/Developer/Ogre/Dependencies
Name: OIS
Description: Object oriented input system
Version: 1.0RC1
Requires:
Libs: -L${prefix}/lib/Release -lois
Cflags: -I${prefix}/include

In the SConstruct file I also added the frameworks that were required.

I also made some changes to underlying SConscript files to include objects. I ran into all of the bugs you mentioned and found that including the objects fixed some. The other problem was that SConscript for player wasn't including the Graphics3D interface file. It seems like the Camera.hh file was renamed to CameraSensor.hh which threw an error. I wasn't able to get all of the sensors compiled. I'll keep working on it.

I think that was it. There may be a few things sneaking in the patch that I forgot to mention but they should be obvious. Almost forgot, I added a debug flag to deal with the semum redefine.

But ... It still doesn't work, it compiles but doesn't work. I can run gazebo but am unable to load the plugins. After looking at the Ogre source a bit it seems like they did some fancy stuff to handle the plugins in OSX which differ from how Nate has the plugin loading coded. I'll take a look at some point unless you can hack something up and beat me to it. It seems like it should be pretty straight forward, more or less copy and paste and shouldn't be a hard fix, just needs the attention.

As a side, I gave a go at trying to compile Ogre and CEGUI from source in a more "Linux" style way (no frameworks, just good old shared libraries, pkg-config, etc.). It took a bit of coaxing but I was able to get everything compiled. They designed everything to work with XCode which I don't use, so I gave a go at using the GNU tools. It was a pain, lots of macro tweaking and source changes (especially in CEGUI) but it seems like it compiled. I was able to run some of the tests for the distributions. With that said, anybody trying to use the svn gazebo on OSX should download the pre-compiled binaries and go that route. It a lot easier to compile.

Good luck,

Nate Michael

<gazebo_osx.patch>

On Jul 15, 2007, at 12:27 PM, Kevin Barry wrote:

Okay I got past my previous problem by modifying libgazebo/SConstrict with:

sharedLib = env.SharedLibrary('gazebo', sharedObjs + sources)
staticLib = env.StaticLibrary('gazebo', staticObjs + sources)

(After adding sharedObjs and StaticObjs to the Import line, and modifying my OIS.pc to use the .o files rather than the libois.a)

So now 'gazebo' builds, but I get an error on player:

g++ -o player/libgazeboplugin.dylib -dynamiclib player/GazeboDriver.os player/GazeboClient.os player/GazeboInterface.os player/GazeboTime.os player/SimulationInterface.os player/Position2dInterface.os player/LaserInterface.os player/CameraInterface.os server/physics/ode/ODEPhysics.os server/physics/BallJoint.os server/physics/Body.os server/physics/BoxGeom.os server/physics/ContactParams.os server/physics/CylinderGeom.os server/physics/Geom.os server/physics/Hinge2Joint.os server/physics/HingeJoint.os server/physics/Joint.os server/physics/PhysicsEngine.os server/physics/PlaneGeom.os server/physics/SliderJoint.os server/physics/SphereGeom.os server/physics/UniversalJoint.os server/physics/dCylinder.os server/physics/RayGeom.os server/rendering/OgreAdaptor.os server/rendering/OgreFrameListener.os server/rendering/OgreDynamicRenderable.os server/rendering/OgreDynamicLines.os server/rendering/OgreSimpleShape.os server/rendering/OgreHUD.os server/sensors/camera/CameraSensor.os server/sensors/camera/CameraManager.os server/sensors/ray/RaySensor.os server/sensors/Sensor.os server/sensors/SensorFactory.os server/models/LightSource/LightSource.os server/models/Model.os server/models/ModelFactory.os server/controllers/position2d/pioneer2dx/Pioneer2dx_Position2d.os server/controllers/laser/sicklms200/SickLMS200_Laser.os server/controllers/camera/generic/Generic_Camera.os server/controllers/Controller.os server/controllers/ControllerFactory.os server/main.os server/Vector3.os server/Quatern.os server/Pose3d.os server/World.os server/XMLConfig.os server/Time.os server/Entity.os server/GazeboError.os server/UpdateParams.os server/GazeboMessage.os -Llibgazebo -L/Library/Frameworks/Ogre.framework -L/opt/local/lib -L/usr/local/lib -lgazebo -lboost_python -lOgre -lxml2 -lz -liconv -lm -lplayercore -lltdl -lpthread -lplayerxdr -lplayererror -lode /Users/gorn/Desktop/Downloads/ois- 1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/OISEffect.o /Users/gorn/Desktop/Downloads/ois-1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/OISForceFeedback.o /Users/gorn/Desktop/Downloads/ois- 1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/OISInputManager.o /Users/gorn/Desktop/Downloads/ois-1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/OISKeyboard.o /Users/gorn/Desktop/Downloads/ois- 1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/OISObject.o /Users/gorn/Desktop/Downloads/ois-1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/MacHelpers.o /Users/gorn/Desktop/Downloads/ois- 1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/MacInputManager.o /Users/gorn/Desktop/Downloads/ois-1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/MacKeyboard.o /Users/gorn/Desktop/Downloads/ois- 1.0RC1/Mac/XCode-2.2/build/oisStatic.build/Development/oisStatic.build/Objects-normal/i386/MacMouse.o -lwx_macud-2.5 -lpython -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System
ld: Undefined symbols:
__ZN6gazebo19Graphics3dInterfaceC1E14player_devaddrPNS_12GazeboDriverEP10ConfigFilei
/usr/bin/libtool: internal link edit command failed
scons: *** [player/libgazeboplugin.dylib] Error 1
scons: building terminated because of errors.

After I get through all this I'll document it and see if we can make it a bit more straightforward to build on mac

On 7/15/07, Kevin Barry < barryk@gmail.com> wrote:
Okay I'm running on a Mac which requires a bit of work to get gazebo to even try to build (If anyone else is trying this you'll have to create your own pkg-config entries for Ogre and OIS).

The only unresolved problem is at the very end of this, so you probably can just read that, however I included the whole process I went through in case I caused the problem fixing a different one.

Anyway so I believe my build environment is setup mostly correct, on a fresh svn checkout I get:

senior-design-1s-computer:~/gazebo/gazebo_svn_virgin root# scons install
scons: Reading SConscript files ...
/bin/sh: line 1: python-config: command not found
Unable to parse config [python-config]
senior-design-1s-computer:~/gazebo/gazebo_svn_virgin root#

I believe this is related to boost, but just to get things started I modified SConscript to call "echo -lpython" in place of python-config --libs, now:

senior-design-1s-computer:~/gazebo/gazebo_svn_virgin root# scons install
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o server/physics/ode/ODEPhysics.o -c -pthread -pipe -I. -Iserver -Iserver/models -Ilibgazebo -Iserver/rendering -Iserver/sensors -Iserver/sensors/camera -Iserver/sensors/ray -Iserver/physics -Iserver/physics/ode -Iserver/controllers -Iserver/controllers/position2d -Iserver/controllers/position2d/pioneer2dx -I/usr/include/python2.4 -I/Library/Frameworks/Ogre.framework/Headers -I/opt/local/include/libxml2 -I/opt/local/include -I/usr/local/include/player- 2.0 -I/usr/local/include -I/usr/local/include/OIS server/physics/ode/ODEPhysics.cc
i686-apple-darwin8-g++-4.0.1: unrecognized option '-pthread'

... # all looking good, the pthread thing is just a warning, it's okay.
... # until:

g++ -o libgazebo/Server.o -c -pthread -pipe -I. -Iserver -Iserver/models -Ilibgazebo -Iserver/rendering -Iserver/sensors -Iserver/sensors/camera -Iserver/sensors/ray -Iserver/physics -Iserver/physics/ode -Iserver/controllers -Iserver/controllers/position2d -Iserver/controllers/position2d/pioneer2dx -I/usr/include/python2.4 -I/Library/Frameworks/Ogre.framework/Headers -I/opt/local/include/libxml2 -I/opt/local/include -I/usr/local/include/player- 2.0 -I/usr/local/include -I/usr/local/include/OIS libgazebo/Server.cc
i686-apple-darwin8-g++-4.0.1: unrecognized option '-pthread'
libgazebo/Server.cc:47: error: redefinition of 'union semun'
/usr/include/sys/sem.h:184: error: previous definition of 'union semun'

The declarations in sem.h and Server.cc are the same, so I comment it out of Server.cc, continue building:

g++ -o gazebo server/physics/ode/ODEPhysics.o server/physics/BallJoint.o server/physics/Body.o server/physics/BoxGeom.o server/physics/ContactParams.o server/physics/CylinderGeom.o server/physics/Geom.o server/physics/Hinge2Joint.o server/physics/HingeJoint.o server/physics/Joint.o server/physics/PhysicsEngine.o server/physics/PlaneGeom.o server/physics/SliderJoint.o server/physics/SphereGeom.o server/physics/UniversalJoint.o server/physics/dCylinder.o server/physics/RayGeom.o server/rendering/OgreAdaptor.o server/rendering/OgreFrameListener.o server/rendering/OgreDynamicRenderable.o server/rendering/OgreDynamicLines.o server/rendering/OgreSimpleShape.o server/rendering/OgreHUD.o server/sensors/camera/CameraSensor.o server/sensors/camera/CameraManager.o server/sensors/ray/RaySensor.o server/sensors/Sensor.o server/sensors/SensorFactory.o server/models/LightSource/LightSource.o server/models/Model.o server/models/ModelFactory.o server/controllers/position2d/pioneer2dx/Pioneer2dx_Position2d.o server/controllers/laser/sicklms200/SickLMS200_Laser.o server/controllers/camera/generic/Generic_Camera.o server/controllers/Controller.o server/controllers/ControllerFactory.o server/main.o server/Vector3.o server/Quatern.o server/Pose3d.o server/World.o server/XMLConfig.o server/Time.o server/Entity.o server/GazeboError.o server/UpdateParams.o server/GazeboMessage.o -Llibgazebo -L/Library/Frameworks/Ogre.framework -L/opt/local/lib -L/usr/local/lib -lgazebo -lboost_python -lOgre -lxml2 -lz -liconv -lm -lplayercore -lltdl -lpthread -lplayerxdr -lplayererror -lode -lois -lpython
/usr/bin/ld: Undefined symbols:
_ActiveNonFloatingWindow
_DisposeEventHandlerUPP
_GetEventParameter
_GetEventTime
_GetWindowEventTarget
_InstallEventHandler
_NewEventHandlerUPP
_RemoveEventHandler
_CallNextEventHandler
gazebo::GazeboError::GazeboError(char const*, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)referenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboError::~GazeboError()referenced from libgazebo expected to be defined in libgazebo
typeinfo for gazebo::GazeboErrorreferenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboMessage::Msg(int)  referenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboMessage::Instance()     referenced from libgazebo expected to be defined in libgazebo
collect2: ld returned 1 exit status
scons: *** [gazebo] Error 1
scons: building terminated because of errors.

The first set seems to be from wxwindows, so I add wx-config2 --cflags --libs to SConstruct with the other pkg-config lines, continue building, sure enough the first errors are eliminated but the second ones remain.

scons install
...
g++ -o gazebo server/physics/ode/ODEPhysics.o server/physics/BallJoint.o server/physics/Body.o server/physics/BoxGeom.o server/physics/ContactParams.o server/physics/CylinderGeom.o server/physics/Geom.o server/physics/Hinge2Joint.o server/physics/HingeJoint.o server/physics/Joint.o server/physics/PhysicsEngine.o server/physics/PlaneGeom.o server/physics/SliderJoint.o server/physics/SphereGeom.o server/physics/UniversalJoint.o server/physics/dCylinder.o server/physics/RayGeom.o server/rendering/OgreAdaptor.o server/rendering/OgreFrameListener.o server/rendering/OgreDynamicRenderable.o server/rendering/OgreDynamicLines.o server/rendering/OgreSimpleShape.o server/rendering/OgreHUD.o server/sensors/camera/CameraSensor.o server/sensors/camera/CameraManager.o server/sensors/ray/RaySensor.o server/sensors/Sensor.o server/sensors/SensorFactory.o server/models/LightSource/LightSource.o server/models/Model.o server/models/ModelFactory.o server/controllers/position2d/pioneer2dx/Pioneer2dx_Position2d.o server/controllers/laser/sicklms200/SickLMS200_Laser.o server/controllers/camera/generic/Generic_Camera.o server/controllers/Controller.o server/controllers/ControllerFactory.o server/main.o server/Vector3.o server/Quatern.o server/Pose3d.o server/World.o server/XMLConfig.o server/Time.o server/Entity.o server/GazeboError.o server/UpdateParams.o server/GazeboMessage.o -Llibgazebo -L/Library/Frameworks/Ogre.framework -L/opt/local/lib -L/usr/local/lib -lgazebo -lboost_python -lOgre -lxml2 -lz -liconv -lm -lplayercore -lltdl -lpthread -lplayerxdr -lplayererror -lode -lois -lpython -lwx_macud- 2.5 -framework QuickTime -framework IOKit -framework Carbon -framework Cocoa -framework System
/usr/bin/ld: Undefined symbols:
gazebo::GazeboError::GazeboError(char const*, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)referenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboError::~GazeboError()referenced from libgazebo expected to be defined in libgazebo
typeinfo for gazebo::GazeboErrorreferenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboMessage::Msg(int)  referenced from libgazebo expected to be defined in libgazebo
gazebo::GazeboMessage::Instance()     referenced from libgazebo expected to be defined in libgazebo
collect2: ld returned 1 exit status
scons: *** [gazebo] Error 1
scons: building terminated because of errors.


Now server/GazeboError.o is mentioned in the g++ line, I've been trying different things but I'm really at a loss here. Any ideas?

Thanks,
-Kevin

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
Playerstage-gazebo mailing list

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/_______________________________________________
Playerstage-gazebo mailing list
Playerstage-gazebo@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/playerstage-gazebo