* How to handle meta-intel/openembedded repos with multiple developers
@ 2016-03-03 13:15 Olsson Rikard (RBSN/ESW1)
2016-03-03 16:27 ` Mark Hatle
0 siblings, 1 reply; 6+ messages in thread
From: Olsson Rikard (RBSN/ESW1) @ 2016-03-03 13:15 UTC (permalink / raw)
To: yocto@yoctoproject.org
[-- Attachment #1: Type: text/plain, Size: 2090 bytes --]
Hello Yocto Members,
My second posting, first one got great answers so hoping for two for two...
I come from a git /repo background where:
* repo init -u <URL> [<OPTIONS>]
* Will get the manifest.xml file with the trees
* repo sync
Will download the forest to my local HDD and I am good to go.
I am having some problem understanding how to use Yocto/Bitbake in a development team and using source control/CM similar to what we had before. For example all out team members will use:
poky
meta-intel
meta-openembedded
meta-oracle-java
...
....
plus a few other ones. Is the idea that each developer should download these necessary git trees for example meta-intel/openembedded manually using git clone then update build/config/bblayers.conf manually? With this approach I feel that each developed needs to do multiple steps to setup their build environment just to get started.
I have tried to add my own BB file and I am able to download the repo's by running bitbake XXXX-meta-intel-lr
-rw-rw-r--. 1 XXX XXX 555 Mar 3 09:08 XXXX-meta-intel-lr_1.0.bb
-rw-rw-r--. 1 XXX XXX 564 Mar 3 10:47 XXXX-meta-openembedded-lr_1.0.bb
-rw-rw-r--. 1 XXX XXX 607 Mar 3 10:25 XXXX-meta-oracle-java-lr_1.0.b
And my code end up in tmp/work/i586-poky-linux/XXX-meta-oracle-java-lr/1.0-r0/git/ and I am then able to update build/config/bblayers.conf ==> But this cant be the correct way to handle this, path might change and tmp is what the name implies, a temporary directory........
For me I would like to have the necessary meta-XXXX downloaded by yocto in the same way repo init/sync handles it, this would allow developers to:
1) Clone poky from local repository
2) execute a yocto file/script (which was part of the poky clone) to download (no need to build anything) all the needed meta-XXXX.
3) Update build/config/bblayers.conf (if needed) with correct paths to meta-XXXX
4) Build
Is this possible in Yocto or do we need to wrap our development environment in something like repo int/sync to be able to solve this?
Regards
Rikard
[-- Attachment #2: Type: text/html, Size: 10934 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: How to handle meta-intel/openembedded repos with multiple developers 2016-03-03 13:15 How to handle meta-intel/openembedded repos with multiple developers Olsson Rikard (RBSN/ESW1) @ 2016-03-03 16:27 ` Mark Hatle 2016-10-27 6:22 ` Edward Wingate 0 siblings, 1 reply; 6+ messages in thread From: Mark Hatle @ 2016-03-03 16:27 UTC (permalink / raw) To: Olsson Rikard (RBSN/ESW1), yocto@yoctoproject.org On 3/3/16 7:15 AM, Olsson Rikard (RBSN/ESW1) wrote: > Hello Yocto Members, > > > > My second posting, first one got great answers so hoping for two for two… > I'm going to ignore the semantics of git, and just focus on general usage. OpenEmbedded/Yocto Project is based around a concept of layers. When you do team work, one strategy I recommend is: Everything use the same 'bitbake, oe-core, meta-yocto*, and other non-company layers'. You will have to devise a scheme to do this. In my company, our SCM servers (which are git) are setup as mirrors and we mirror the data regularly. The developers are in the habit of updating to the latest version of the code when it's convenient for their development, and always before submitting code for review. These non-company assets are read-only. Local users never modify them. Think of this as something like: git.mycompany.com/git/external/bitbake git.mycompany.com/git/external/oe-core git.mycompany.com/git/external/meta-yocto git.mycompany.com/git/external/meta-openembedded We then have local-assets which are based on non-company layers. This serves two purposed -- either as a 'snapshot in time' or occasionally you have to make a change to a community layer to fix a critical bug. Usually you start with the external layer, create a local branch (and make the change there. It then becomes someone's job to keep that local branch up to date (which is why I don't recommend this as general practice.) Think of this as something like: git.mycompany.com/git/internal/bitbake git.mycompany.com/git/internal/oe-core git.mycompany.com/git/internal/meta-yocto git.mycompany.com/git/internal/meta-openembedded (We're found using data codes in the branches helps -- since when we rebase, we also create a new datecode based on when the branch started. Our products have specific 'key' files that switch the branch automatically for developers.) We then have local layers. These are the things that developers work on collectively. Every company has their own review process, maintainer roles, etc.. but effectively -all- of your changes happen in a mixture of (local) layers such as BSP, distribution, functional or other classification. This is the typical tree that is company, division, and/or product specific. And finally, each developer has a -local- layer where they can put their own local changes, such as .bbappends, new recipes, etc and try things before merging to the 'local layers' and going through the review process. individual developers can upload these, but they should never be treated as official. An SCM can make a good backup system though. :) > > I come from a git /repo background where: > > * repo init -u /<URL>/ [/<OPTIONS>/] > > * Will get the manifest.xml file with the trees > > * repo sync > > Will download the forest to my local HDD and I am good to go. > This is very reasonable. As I mentioned above breaking the problem into two/three parts and treating parts as RO, controlled RW, and regular development practice helps a lot. You may need specific mechanisms to manage branch changes and rebases, but it all starts with updating the control file.. and getting developers to pull/update/rebase regularly as part of their work flows. At some point during product development a lead/architect needs to make the decision to 'freeze' development and at that point everything is tagged/branched and only backports are used from them on. (If the number of backports gets too large, you MIGHT decide to selectively rebase.) > > I am having some problem understanding how to use Yocto/Bitbake in a development > team and using source control/CM similar to what we had before. For example all > out team members will use: > > poky > > meta-intel > > meta-openembedded > > meta-oracle-java Team members need to get in the habit of updating at the start of each day, during there development day (as long as it's not disruptive), and prior to submitting any changes for review. (Changes must -always- be on the latest agreed upon version.) > … > > …. > > plus a few other ones. Is the idea that each developer should download these > necessary git trees for example meta-intel/openembedded manually using git clone > then update build/config/bblayers.conf manually? With this approach I feel that > each developed needs to do multiple steps to setup their build environment just > to get started. > This is where OSV products and other things come into play. Different OSVs have different strategies for this, but generally they wrap the manual configuration aspects using some type of a setup wrapper. This wrapper can be configured in different ways, but it ensures a consist configuration. An alternative approach is to put your build/conf/*.conf files into the SCM as well. When you configure it, don't use any full path names, make everything relative from the build dir... Then the typical developer experience is: sync down all of the layers sync down the project config . ./oe-init-build-env <project> everyone has the same starting point. If there is a reason to change the config, it can be reviewed and controlled. everyone just resyncs those files -- and the layers as normal. > > I have tried to add my own BB file and I am able to download the repo’s by > running bitbake XXXX-meta-intel-lr > > -rw-rw-r--. 1 XXX XXX 555 Mar 3 09:08 XXXX-meta-intel-lr_1.0.bb > > -rw-rw-r--. 1 XXX XXX 564 Mar 3 10:47 XXXX-meta-openembedded-lr_1.0.bb > > -rw-rw-r--. 1 XXX XXX 607 Mar 3 10:25 XXXX-meta-oracle-java-lr_1.0.b > > And my code end up in > tmp/work/i586-poky-linux/XXX-meta-oracle-java-lr/1.0-r0/git/ and I am then able > to update build/config/bblayers.conf èBut this cant be the correct way to handle > this, path might change and tmp is what the name implies, a temporary directory…….. > The 'tmp' directory is just that, temporary. You should never SCM the tmp contents. The OUTPUT of the build, typically in tmp/deploy can be SCMed, but it should be explicitly copied out and SCMed as a build output. (My opinion at least). See above for my workflows... --Mark > > For me I would like to have the necessary meta-XXXX downloaded by yocto in the > same way repo init/sync handles it, this would allow developers to: > > 1) Clone poky from local repository > > 2) execute a yocto file/script (which was part of the poky clone) to download > (no need to build anything) all the needed meta-XXXX. > > 3) Update build/config/bblayers.conf (if needed) with correct paths to meta-XXXX > > 4) Build > > Is this possible in Yocto or do we need to wrap our development environment in > something like repo int/sync to be able to solve this? > > > > Regards > > Rikard > > > > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: How to handle meta-intel/openembedded repos with multiple developers 2016-03-03 16:27 ` Mark Hatle @ 2016-10-27 6:22 ` Edward Wingate 2016-11-07 19:31 ` Chris Z. 0 siblings, 1 reply; 6+ messages in thread From: Edward Wingate @ 2016-10-27 6:22 UTC (permalink / raw) To: Mark Hatle; +Cc: yocto@yoctoproject.org On Thu, Mar 3, 2016 at 8:27 AM, Mark Hatle <mark.hatle@windriver.com> wrote: > At some point during product development a lead/architect needs to make the > decision to 'freeze' development and at that point everything is tagged/branched > and only backports are used from them on. (If the number of backports gets too > large, you MIGHT decide to selectively rebase.) I'm currently trying to figure out with how to control external layers in my Yocto build and found this thread. I'm a little unclear on how to track a release to the version used on non-company layers. Say I'm using poky, meta-openembedded, meta-xilinx and then my own layer, meta-me. When I freeze development and do a release, I can tag meta-me, but because I also treat non-company assets as RO, I shouldn't tag poky, meta-openembedded nor meta-xilinx (or should I? Is this where I use git's lightweight tagging as opposed to annotated tags?) When "everything is tagged/branched", does that somehow include tagging the non-company assets? Thanks for any help. Ed ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: How to handle meta-intel/openembedded repos with multiple developers 2016-10-27 6:22 ` Edward Wingate @ 2016-11-07 19:31 ` Chris Z. 2016-11-08 20:54 ` Bas Mevissen 2016-11-09 14:07 ` Mike Looijmans 0 siblings, 2 replies; 6+ messages in thread From: Chris Z. @ 2016-11-07 19:31 UTC (permalink / raw) To: Edward Wingate; +Cc: yocto@yoctoproject.org [-- Attachment #1: Type: text/plain, Size: 1679 bytes --] Hi, How you store your project configuration ? How you prepare workspace (download each layer separately)? Basic stuff, SW release should be reproducible (in easy way). Store somewhere used hash of each piece or use tags. Non company assets should be already somehow tagged or you use HEAD or master/-next ? Br, Chris Z On Thu, Oct 27, 2016 at 8:22 AM, Edward Wingate <edwingate8@gmail.com> wrote: > On Thu, Mar 3, 2016 at 8:27 AM, Mark Hatle <mark.hatle@windriver.com> > wrote: > > At some point during product development a lead/architect needs to make > the > > decision to 'freeze' development and at that point everything is > tagged/branched > > and only backports are used from them on. (If the number of backports > gets too > > large, you MIGHT decide to selectively rebase.) > > I'm currently trying to figure out with how to control external layers > in my Yocto build and found this thread. I'm a little unclear on how > to track a release to the version used on non-company layers. Say I'm > using poky, meta-openembedded, meta-xilinx and then my own layer, > meta-me. When I freeze development and do a release, I can tag > meta-me, but because I also treat non-company assets as RO, I > shouldn't tag poky, meta-openembedded nor meta-xilinx (or should I? Is > this where I use git's lightweight tagging as opposed to annotated > tags?) When "everything is tagged/branched", does that somehow include > tagging the non-company assets? Thanks for any help. > > Ed > -- > _______________________________________________ > yocto mailing list > yocto@yoctoproject.org > https://lists.yoctoproject.org/listinfo/yocto > [-- Attachment #2: Type: text/html, Size: 2381 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: How to handle meta-intel/openembedded repos with multiple developers 2016-11-07 19:31 ` Chris Z. @ 2016-11-08 20:54 ` Bas Mevissen 2016-11-09 14:07 ` Mike Looijmans 1 sibling, 0 replies; 6+ messages in thread From: Bas Mevissen @ 2016-11-08 20:54 UTC (permalink / raw) To: yocto On 07/11/2016 20:31, Chris Z. wrote: > Hi, > > How you store your project configuration ? How you prepare workspace > (download each layer separately)? > Basic stuff, SW release should be reproducible (in easy way). Store > somewhere used hash of each piece or use tags. Non company assets should > be already somehow tagged or you use HEAD or master/-next ? > I think the best option is to use the Google Repo tool. You write an xml file that specifies the layers to download and which commit, branch or tag to checkout. The Freescale official and community project do it like this, just like Android. -- Bas. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: How to handle meta-intel/openembedded repos with multiple developers 2016-11-07 19:31 ` Chris Z. 2016-11-08 20:54 ` Bas Mevissen @ 2016-11-09 14:07 ` Mike Looijmans 1 sibling, 0 replies; 6+ messages in thread From: Mike Looijmans @ 2016-11-09 14:07 UTC (permalink / raw) To: yocto Git submodules work fine for this. In general, for each project I create a top-level repo that has the OE repos as submodule. The project repo also contains the project-specific recipes. On 07-11-16 20:31, Chris Z. wrote: > Hi, > > How you store your project configuration ? How you prepare workspace (download > each layer separately)? > Basic stuff, SW release should be reproducible (in easy way). Store somewhere > used hash of each piece or use tags. Non company assets should be already > somehow tagged or you use HEAD or master/-next ? > > Br, > Chris Z > > On Thu, Oct 27, 2016 at 8:22 AM, Edward Wingate <edwingate8@gmail.com > <mailto:edwingate8@gmail.com>> wrote: > > On Thu, Mar 3, 2016 at 8:27 AM, Mark Hatle <mark.hatle@windriver.com > <mailto:mark.hatle@windriver.com>> wrote: > > At some point during product development a lead/architect needs to make the > > decision to 'freeze' development and at that point everything is > tagged/branched > > and only backports are used from them on. (If the number of backports > gets too > > large, you MIGHT decide to selectively rebase.) > > I'm currently trying to figure out with how to control external layers > in my Yocto build and found this thread. I'm a little unclear on how > to track a release to the version used on non-company layers. Say I'm > using poky, meta-openembedded, meta-xilinx and then my own layer, > meta-me. When I freeze development and do a release, I can tag > meta-me, but because I also treat non-company assets as RO, I > shouldn't tag poky, meta-openembedded nor meta-xilinx (or should I? Is > this where I use git's lightweight tagging as opposed to annotated > tags?) When "everything is tagged/branched", does that somehow include > tagging the non-company assets? Thanks for any help. > > Ed > -- > Kind regards, Mike Looijmans System Expert TOPIC Products Materiaalweg 4, NL-5681 RJ Best Postbus 440, NL-5680 AK Best Telefoon: +31 (0) 499 33 69 79 E-mail: mike.looijmans@topicproducts.com Website: www.topicproducts.com Please consider the environment before printing this e-mail _______________________________________________ > yocto mailing list > yocto@yoctoproject.org <mailto:yocto@yoctoproject.org> > https://lists.yoctoproject.org/listinfo/yocto > <https://lists.yoctoproject.org/listinfo/yocto> > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-11-09 14:07 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-03 13:15 How to handle meta-intel/openembedded repos with multiple developers Olsson Rikard (RBSN/ESW1) 2016-03-03 16:27 ` Mark Hatle 2016-10-27 6:22 ` Edward Wingate 2016-11-07 19:31 ` Chris Z. 2016-11-08 20:54 ` Bas Mevissen 2016-11-09 14:07 ` Mike Looijmans
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.