So far, we have a fully functional OE system. Let's summarize the steps followed up to this point:
The following Makefile is a front-end tat could be used to automate the setting up tasks described up to this point (Inspired by the idea of MokoMakefile).
# Makefile front-end - a Makefile for setting up OE builds
#
# Based on MokoMakefile idea.
#
MTN := mtn
BITBAKE_SVN_REV = HEAD
OE_SNAPSHOT_SITE := http://www.openembedded.org/snapshots
OE_MONOTONE_SITE := monotone.openembedded.org
OE_BRANCH :="org.openembedded.stable"
BB_SVN_REPOS :=http://svn.berlios.de/svnroot/repos/bitbake
BB_SVN_PATH :=tags/bitbake-1.8.10
.PHONY: all
all: setup
.PHONY: setup
setup: check-generation \
setup-bitbake \
setup-mtn \
setup-openembedded \
generic-config
.PHONY: check-generation
check-generation:
@echo " OpenEmbedded Guide example Makefile front-end "
@echo
[ ! -e stamps/bitbake ] || \
( grep -e '${BB_SVN_PATH}' bitbake/.svn/entries > /dev/null ) || \
( rm -rf bitbake stamps/bitbake)
#
# Checkout bitbake HEAD trunk of retaled version.
#
.PHONY: setup-bitbake
setup-bitbake stamps/bitbake:
[ -e stamps/bitbake ] || \
( svn co -r ${BITBAKE_SVN_REV} \
${BB_SVN_REPOS}/${BB_SVN_PATH} bitbake )
[ -d stamps ] || mkdir stamps
touch stamps/bitbake
#
# Download initial OE database snapshot based on monotone installed
#
OE.mtn:
if [ -z "`${MTN} --version | awk '{ print $$2; }'`" ] ; then \
echo 'Cannot determine version for monotone using "${MTN} --version"' ; \
false ; \
fi
[ -e OE.mtn ] || \
( ( version=`${MTN} --version | awk '{ print $$2; }'` ; \
wget -c -O OE.mtn.bz2 \
${OE_SNAPSHOT_SITE}/OE-this-is-for-mtn-$$version.mtn.bz2 || \
wget -c -O OE.mtn.bz2 \
${OE_SNAPSHOT_SITE}/OE.mtn.bz2 ) && \
bunzip2 -v -c OE.mtn.bz2 > OE.mtn.partial && \
mv OE.mtn.partial OE.mtn )
.PHONY: setup-mtn
setup-mtn stamps/OE.mtn:
[ -e OE.mtn ] || \
${MAKE} OE.mtn
[ -e stamps/OE.mtn ] || \
( ${MTN} --db=OE.mtn db migrate && \
${MTN} --db=OE.mtn pull ${OE_MONOTONE_SITE} ${OE_BRANCH} )
[ -d stamps ] || mkdir stamps
touch stamps/OE.mtn
#
# Check out (MTN) branch or "known to be good"
#
.PHONY: setup-openembedded
setup-openembedded stamps/openembedded: stamps/OE.mtn
[ -e stamps/openembedded ] || \
( ${MTN} --db=OE.mtn checkout --branch=${OE_BRANCH} openembedded ) || \
[ -d stamps ] || mkdir stamps
touch stamps/openembedded
setup-env:
[ -e setup-env ] || \
echo 'export WORKDIR="'`pwd`'"' > setup-env
echo \
'export BBPATH="$${WORKDIR}/build:$${WORKDIR}/openembedded"' \
>> setup-env
echo \
'export PATH="$${WORKDIR}/bitbake/bin:$${PATH}"' \
>> setup-env
echo \
'export BBFILES="$${WORKDIR}/openembedded/packages/*/*.bb"' \
>> setup-env
#
# Distributions.
#
.PHONY: generic-config
generic-config build/conf/local.conf:
mkdir -p build/conf
[ -e build/conf/local.conf ] || \
( echo 'MACHINE = "epia"' > build/conf/local.conf ; \
echo 'DISTRO = "generic"' >> build/conf/local.conf ; \
echo 'BUILD_ARCH = "'`uname -m`'"' >> build/conf/local.conf ; \
echo 'INHERIT += "rm_work"' >> build/conf/local.conf )
$(MAKE) setup-env
By using the Makefile, everything we have done so far would have been summarized in these simple five steps: