Cross Compile Player with Openembedded and BitBake

From The Player Project

Revision as of 02:07, 22 February 2010 by Mechatronix (Talk | contribs)
Jump to: navigation, search

The following is a simple guide on how to cross compile player using bitBake and Openembedded(OE) tools.

The author of this guide is new to Openembedded, bitBake and cross compiling in general so please feel free to edit, update or correct. The guide was tested on the Overo Gumstix with an iRobot Create and a Hokuyo Urg Laser.


Special thanks to Ash Charles, Geoffrey Biggs and Rich Mattes who helped me getting this working.


First you must set up your build environment.

For the overo gumstix

Openembedded manual

bitBake manual


Now do some examples

Gumstix tutorial (note slightly outdated and designed for the verdex, take note of the following changes:

• Ipkg is now opkg

• Directory structure is differerent

       packages is now recipes
       gumstix-oe is now overo-oe
       com.gumstix.collection and org.openembedded.snapshot have been combined into org.openembedded.dev
       arm5 is now arm7


OpenEmbedded Manual (very useful resource)


If you want Gearbox with your player, you must install Gearbox first here


Player Recipe

The following recipe will cross-compile player and package it. You will need to save it as a .bb file in your recipes directory, which you should have created from the setting up a build environment.


See below for explanation



DESCRIPTION = "Player Robot Device Interface and Server"

LICENSE = "GPL"

HOMEPAGE = "http://playerstage.sourceforge.net"

DEPENDS = ""

PR = "r0"

SRC_URI = "svn://playerstage.svn.sourceforge.net/svnroot/playerstage/code/player/;module=trunk;rev=HEAD;proto=https"

S="${WORKDIR}/trunk"

inherit pkgconfig

do_configure () { cmake -DBUILD_EXAMPLES=OFF -DBUILD_DOCUMENTATION=OFF -DBUILD_EXAMPLES=OFF -DBUILD_PLAYERCC=OFF -DBUILD_PLAYERCC_BOOST=OFF -DBUILD_PYTHONC_BINDINGS=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_UTILS=OFF -DBUILD_UTILS_LOGSPLITTER=OFF -DBUILD_UTILS_PLAYERCAM=OFF -DBUILD_UTILS_PLAYERJOY=OFF -DBUILD_UTILS_PLAYERNAV=OFF -DBUILD_UTILS_PLAYERPRINT=OFF -DBUILD_UTILS_PLAYERPROP=OFF -DBUILD_UTILS_PLAYERV=OFF -DBUILD_UTILS_PLAYERVCR=OFF -DBUILD_UTILS_PLAYERWRITEMAP=OFF -DBUILD_UTILS_PMAP=OFF -DBUILD_UTILS_XMMS=OFF -DENABLE_DRIVER_ACCEL_CALIB=OFF -DENABLE_DRIVER_ACR120U=OFF -DENABLE_DRIVER_ACTS=OFF -DENABLE_DRIVER_AIOTOSONAR=OFF -DENABLE_DRIVER_ALSA=OFF -DENABLE_DRIVER_AMCL=OFF -DENABLE_DRIVER_AMTECM5=OFF -DENABLE_DRIVER_AMTECPOWERCUBE=OFF -DENABLE_DRIVER_AODV=OFF -DENABLE_DRIVER_ARTOOLKITPLUS=OFF -DENABLE_DRIVER_BLOBTODIO=OFF -DENABLE_DRIVER_BLOBTRACKER=OFF -DENABLE_DRIVER_BUMPER2LASER=OFF -DENABLE_DRIVER_BUMPERSAFE=OFF -DENABLE_DRIVER_BUMPERTODIO=OFF -DENABLE_DRIVER_CAMERA1394=OFF -DENABLE_DRIVER_CAMERACOMPRESS=OFF -DENABLE_DRIVER_CAMERAUNCOMPRESS=OFF -DENABLE_DRIVER_CAMERAUVC=OFF -DENABLE_DRIVER_CAMERAV4L=OFF -DENABLE_DRIVER_CAMERAV4L2=OFF -DENABLE_DRIVER_CAMFILTER=OFF -DENABLE_DRIVER_CANONVCC4=OFF -DENABLE_DRIVER_CLODBUSTER=OFF -DENABLE_DRIVER_CMDSPLITTER=OFF -DENABLE_DRIVER_CMUCAM2=OFF -DENABLE_DRIVER_CMVISION=OFF -DENABLE_DRIVER_CREATE=ON -DENABLE_DRIVER_CVCAM=OFF -DENABLE_DRIVER_DEADSTOP=OFF -DENABLE_DRIVER_DIOCMD=OFF -DENABLE_DRIVER_DIODELAY=OFF -DENABLE_DRIVER_DIOLATCH=OFF -DENABLE_DRIVER_DUMMY=OFF -DENABLE_DRIVER_EEDHCONTROLLER=OFF -DENABLE_DRIVER_EPUCK=OFF -DENABLE_DRIVER_ER1=OFF -DENABLE_DRIVER_ERRATIC=OFF -DENABLE_DRIVER_FAKELOCALIZE=OFF -DENABLE_DRIVER_FESTIVAL=OFF -DENABLE_DRIVER_FLEXIPORT=ON -DENABLE_DRIVER_FLOCKOFBIRDS=OFF -DENABLE_DRIVER_GARCIA=OFF -DENABLE_DRIVER_GARMINNMEA=OFF -DENABLE_DRIVER_GBXGARMINACFR=OFF -DENABLE_DRIVER_GBXSICKACFR=OFF -DENABLE_DRIVER_GLOBALIZE=OFF -DENABLE_DRIVER_GOTO=OFF -DENABLE_DRIVER_GRIDMAP=OFF -DENABLE_DRIVER_GRIPCMD=OFF -DENABLE_DRIVER_HOKUYO_AIST=OFF -DENABLE_DRIVER_IMAGESEQ=OFF -DENABLE_DRIVER_INHIBITOR=OFF -DENABLE_DRIVER_INSIDEM300=OFF -DENABLE_DRIVER_ISENSE=OFF -DENABLE_DRIVER_IWSPY=OFF -DENABLE_DRIVER_KARTOWRITER=OFF -DENABLE_DRIVER_KHEPERA=OFF -DENABLE_DRIVER_LASERBAR=OFF -DENABLE_DRIVER_LASERBARCODE=OFF -DENABLE_DRIVER_LASERCSPACE=OFF -DENABLE_DRIVER_LASERCUTTER=OFF -DENABLE_DRIVER_LASERPOSEINTERPO=OFF -DENABLE_DRIVER_LASERPTZCLOUD=OFF -DENABLE_DRIVER_LASERRESCAN=OFF -DENABLE_DRIVER_LASERSAFE=OFF -DENABLE_DRIVER_LASERTORANGER=OFF -DENABLE_DRIVER_LASERVISUALBARCO=OFF -DENABLE_DRIVER_LASERVISUALBW=OFF -DENABLE_DRIVER_LINUXJOYSTICK=OFF -DENABLE_DRIVER_LINUXWIFI=OFF -DENABLE_DRIVER_LOCALBB=OFF -DENABLE_DRIVER_MAPCSPACE=OFF -DENABLE_DRIVER_MAPFILE=OFF -DENABLE_DRIVER_MAPSCALE=OFF -DENABLE_DRIVER_MBICP=OFF -DENABLE_DRIVER_MICA2=OFF -DENABLE_DRIVER_MICROSTRAIN=OFF -DENABLE_DRIVER_MOTIONMIND=OFF -DENABLE_DRIVER_MRICP=OFF -DENABLE_DRIVER_ND=OFF -DENABLE_DRIVER_NIMU=OFF -DENABLE_DRIVER_NOMAD=OFF -DENABLE_DRIVER_OBOT=OFF -DENABLE_DRIVER_OCEANSERVER=OFF -DENABLE_DRIVER_P2OS=OFF -DENABLE_DRIVER_PASSTHROUGH=OFF -DENABLE_DRIVER_PBSLASER=OFF -DENABLE_DRIVER_PHIDGETACC=OFF -DENABLE_DRIVER_PHIDGETIFK=OFF -DENABLE_DRIVER_PHIDGETRFID=OFF -DENABLE_DRIVER_PORTIO=OFF -DENABLE_DRIVER_POSTGIS=OFF -DENABLE_DRIVER_PTU46=OFF -DENABLE_DRIVER_RANGERPOSEINTERP=OFF -DENABLE_DRIVER_RANGERTODIO=OFF -DENABLE_DRIVER_RANGERTOLASER=OFF -DENABLE_DRIVER_RCORE_XBRIDGE=OFF -DENABLE_DRIVER_READLOG=OFF -DENABLE_DRIVER_REB=OFF -DENABLE_DRIVER_RELAY=OFF -DENABLE_DRIVER_RFLEX=OFF -DENABLE_DRIVER_ROBOTEQ=OFF -DENABLE_DRIVER_ROBOTINO=OFF -DENABLE_DRIVER_ROBOTRACKER=OFF -DENABLE_DRIVER_ROOMBA=OFF -DENABLE_DRIVER_RS4LEUZE=OFF -DENABLE_DRIVER_RT3XXX=OFF -DENABLE_DRIVER_SEGWAYRMP=OFF -DENABLE_DRIVER_SEGWAYRMP400=OFF -DENABLE_DRIVER_SERIALSTREAM=OFF -DENABLE_DRIVER_SERIO=OFF -DENABLE_DRIVER_SERVICE_ADV_MDNS=OFF -DENABLE_DRIVER_SHAPETRACKER=OFF -DENABLE_DRIVER_SICKLDMRS=OFF -DENABLE_DRIVER_SICKLMS200=OFF -DENABLE_DRIVER_SICKLMS400=OFF -DENABLE_DRIVER_SICKNAV200=OFF -DENABLE_DRIVER_SICKRFI341=OFF -DENABLE_DRIVER_SICKS3000=OFF -DENABLE_DRIVER_SIMPLESHAPE=OFF -DENABLE_DRIVER_SKYETEKM1=OFF -DENABLE_DRIVER_SND=OFF -DENABLE_DRIVER_SONARTORANGER=OFF -DENABLE_DRIVER_SONYEVID30=OFF -DENABLE_DRIVER_SPHERE=OFF -DENABLE_DRIVER_SPHEREPTZ=OFF -DENABLE_DRIVER_SPHINX2=OFF -DENABLE_DRIVER_SR3000=OFF -DENABLE_DRIVER_STALLTODIO=OFF -DENABLE_DRIVER_STATGRAB=OFF -DENABLE_DRIVER_STOC=OFF -DENABLE_DRIVER_SUPPRESSOR=OFF -DENABLE_DRIVER_SWISSRANGER=OFF -DENABLE_DRIVER_TCPSTREAM=OFF -DENABLE_DRIVER_UNICAPIMAGE=OFF -DENABLE_DRIVER_UPCBARCODE=OFF -DENABLE_DRIVER_VEC2MAP=OFF -DENABLE_DRIVER_VELCMD=OFF -DENABLE_DRIVER_VFH=OFF -DENABLE_DRIVER_VIDEOCANNY=OFF -DENABLE_DRIVER_VMAPFILE=OFF -DENABLE_DRIVER_WAVEFRONT=OFF -DENABLE_DRIVER_WBR914=OFF -DENABLE_DRIVER_WRITELOG=OFF -DENABLE_DRIVER_XSENSMT=OFF -DENABLE_DRIVER_YARPIMAGE=OFF }

do_compile() {

oe_runmake

}

do_install() {

oe_runmake install DESTDIR=${D}

}

FILES_${PN} = "/usr/local/bin/player \ /usr/local/bin/playerinterfacegen \ /usr/local/bin/playerxdrgen \ /usr/local/include/* \ /usr/local/lib/* \ /usr/local/share/*"



DEPENDS = "" This recipe uses a very simple config of player that does not require any dependencies, if you wanted for example to add playerv, you would first turn the cMake variable for playerv to on( -DBUILD_UTILS_PLAYERV=ON) then you would add the relevant dependency (DEPENDS = "gtk+") More


PR="r0" Just a revision bumper


inherit pkgconfig Very important Explanation


do_configure() Task configures cMake. I could not find a disable all drivers command so instead had to manually disable every driver that I didn't want, which is why the do_configure task is so packed and big. If you want to add a driver or change some cMake configuration find the relevant command variable and change it ie -DBUILD_SHARED_LIBS=ON or -DENABLE_DRIVER_BLOBTRACKER=ON


do_compile() Task runs make


do_install() Installs the targets to the ${D} (destination directory, which is a directory within your build environment)


The FILES_${PN} line tells bitBake what files you want to be packaged


If you want to be able to check your cMake/Make/ logs, you must check your working directory, for me this was /home/<user>/overo-oe/tmp/work/armv7a-angstrom-linux-gnueabi/<recipe name>/tmp


now install the package on you embedded machine


If you want to get gearbox with player hit continue

Personal tools