Using OpenEmbedded for customized builds
Good Morning,
we have a basic product and build the images for it using OpenEmbedded. Some customers require the installation of additional packages, or even the modification of some of the installed ones. The current approach would be to build one VM per customer but that doesn't really scale.
I think somehow I want to end up with having my base/generic buuld and a way to put additional ipk's into a customer directory. So something likes this:
base-build/tmp/deploy/ipk/
armv5te/
machine/
customer1/
armv5te/
...
customer2/
armv5te/
customer3/or
base-build/tmp/...
customer1-build/tmp/deploy/ipk/...
In both cases the customer should only include the packages that were built for the customer. All the 'base' packages should be taken/used from the base built. I could indicate for which customer I build by setting an environment variable?
For a corner case, e.g. if I change the SRCREV and re-build with a customer flag set, this package should still go to the customer directory.
Can this be already modeled? Do you have any idea how this could be done?
holger
W dniu 04.07.2013 07:34, Holger Hans Peter Freyther pisze:
Quoted 2 lines
Can this be already modeled? Do you have any idea how this could be done?
My idea is simple.
Keep each customer changes in separate layers and have separate builds for base and each customer. Let then customer builds use base sstate-cache in read-only mode (file:// mirror). This way you do all base building in "base" dir/vm and customer ones in separate ones.
None of customer builds affect others and each of them uses sstate from common "base" one.
Quoted 33 lines · Holger Hans Peter Freyther
Good Morning,
we have a basic product and build the images for it using OpenEmbedded. Some customers require the installation of additional packages, or even the modification of some of the installed ones. The current approach would be to build one VM per customer but that doesn't really scale.
I think somehow I want to end up with having my base/generic buuld and a way to put additional ipk's into a customer directory. So something likes this:
base-build/tmp/deploy/ipk/
armv5te/ machine/ customer1/ armv5te/ ... customer2/ armv5te/ customer3/or
base-build/tmp/...
customer1-build/tmp/deploy/ipk/...
In both cases the customer should only include the packages that were built for the customer. All the 'base' packages should be taken/used from the base built. I could indicate for which customer I build by setting an environment variable?
Quoted 6 lines
For a corner case, e.g. if I change the SRCREV and re-build with a customer flag set, this package should still go to the customer directory.
Can this be already modeled? Do you have any idea how this could be done?
Currently I did this using MACHINEOVERRIDE and I made a machine which is reused for each customer. So I have a single kernel and machine setup but customer aliases which I can use to control the system in the image and like.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750