[OE-core] Submission of 'emit-buildvars' class?
Enrico Scholz
enrico.scholz at sigma-chemnitz.de
Mon Aug 20 14:01:24 UTC 2018
Hello,
we are using for some time an 'emit-buildvars' class which exports
bitbake variables into makefile fragments. This class is used for for
developing of kernel, u-boot and other low level software and for
generic packaging.
The class supports exporting images over userspace NFS and is available
at
https://github.com/sigma-embedded/meta-de.sigma-chemnitz/blob/sumo/classes/elito-emit-buildvars.bbclass
https://github.com/sigma-embedded/meta-de.sigma-chemnitz/tree/sumo/scripts/buildvars
https://github.com/sigma-embedded/meta-de.sigma-chemnitz/blob/sumo/classes/elito-nfs-export.bbclass
It is much faster than 'devshell' and can be used in a scripted
environment. A complete SDK is far too heavy weight for our tasks
and not flexible enough.
Is there common interest in such a functionality? If so, I would split
it out from our layer and submit it for core.
A more detailed description:
The generated makefile fragment contains information about the per-package
sysroot and can be used to set e.g. $PATH. The system requires a small
Makefile to instantiate these variables; e.g. for common cases something
like
---- workspace/Makefile.common ---
| # --*- makefile -*--
| WORKSPACE_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
| DEPLOY_DIR ?= ${WORKSPACE_DIR}/../build/tmp/deploy
| MACHINE ?= imx8m-var-dart
|
| _BUILDVAR_STYLE ?= _generic_
| include ${DEPLOY_DIR}/buildvars/${MACHINE}/$R.mk
|
| %:
| ${MAKE} $@
is enough. For kernel development, the makefile contains some more
information about the image which is going to be exported over NFS.
---- workspace/Makefile.kernel ---
| # --*- makefile -*--
| WORKSPACE_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
| DEPLOY_DIR ?= ${WORKSPACE_DIR}/../build/tmp/deploy
| MACHINE ?= imx8m-var-dart
|
| _BUILDVAR_STYLE := kernel
| IMAGE_RECIPE = camtest-image
|
| HAVE_NFSROOT=1
| include ${WORKSPACE_DIR}/../sources/de.sigma-chemnitz.core/mk/nfs-opt.mk
| include ${DEPLOY_DIR}/buildvars/${MACHINE}/linux-mainline.mk
Now, generate the '.mk' fragments either manually:
| $ bitbake busybox -c emit_buildvars
or enable it within the recipe (recommended when working on it)
| BUILDVARS_EMIT = "true"
and build the package.
When you try to fix something in 'busybox', extract the sources
somewhere (e.g. in workspace/) and call
| make -f ../Makefile.common R=busybox all
to build it.
Else, see the class for more details.
Enrico
More information about the Openembedded-core
mailing list