[yocto] Understanding the git commits for Yocto and meta
James Abernathy
jfabernathy at gmail.com
Sun Jan 29 04:00:38 PST 2012
On Jan 28, 2012, at 6:25 PM, Bruce Ashfield wrote:
> On Sat, Jan 28, 2012 at 9:51 AM, James Abernathy <jfabernathy at gmail.com> wrote:
>> While I've read enough to think I understand git, I get confused when it's
>> applied to real situations like Yocto. If I look at the Yocto Development
>> Manual, Appendix A, A.5.2.4 Changing Recipes-kernel, It brings up some
>> questions.
>>
>> 1. The way I see it, when you guys commit something to the linux yocto
>> master or meta there is a commit string associated with that commit. Not to
>> any certain branch of the git repository, right?
>
> I'm not following your terminology. There's a git has that is used to
> update the SRCREVs
> for bitbake, but that hash is always on the meta branch. Bitbake likes
> git hashes, but the
> kernel build infrastructure talks branches .. since humans can
> remember branches, but
> not git hashes.
I'm sure I'm not using the terminology right because, I clearly don't understand the whole concept yet. That light bulb has not gone on yet. :-)
Basically, I see from a user perspective that you start the process with creating a clone of the Yocto Project files repository, git://git.yoctoproject.org/poky, and you also create a clone of the meta-intel BSP repository if you are working with the Intel board BSPs. I have on occasion also cloned the Yocto Linux Kernel and poky extra so I could do the Appendix B example. In the examples and my testing, I've always checked out the edison branch of both the yocto project files in the poky directory and the edison branch in the meta-intel directory. So in my primitive thinking, my branch is edison. By examining Appendix B, I see where they checkout a branch of the Yocto Linux kernel called, common-pc-base, using the command, git checkout -b common-pc-base origin/yocto/standard/common-pc/base. But once changes are made you commit those changes to the local bare clone that will be used in the build process. So I think I see that to get the right versions of the Yocto Linux Kernel, I need to tell bitbake to use a particular branch called yocto/standard/common-pc/base. I think the KMACHINE parameter does this in the Appendix B example. However, in the App. B example, there is no talk about SRCREV anywhere.
Relating Appendix A recipes-kernel SRCREV to Appendix B example is a problem for me.
>
>>
>> 2. So if I'm building an image for atom-pc using Edison branch, the first
>> SRCREV I'm interested in is yocto/standard/common-pc/atom-pc branch. But
>> the commits I see at
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.0/commit/?h=yocto/standard/common-pc/atom-pc
>>
>> are commits not associated with Edison, but Master, right?
>
> They are all just commits on the board branch. edison has a snapshot
> in time the SRCREV
> that is used. Master marches on, but the commits that were current in
> the timeframe of edison,
> will always be there.
So here is a terminology problem in my mind. yocto/standard/common-pc/atom-pc seems to be a branch in the meta-intel repository. edison seems to be both a snapshot and branch of poky repository.???
For example, at , http://git.yoctoproject.org/cgit/cgit.cgi/, I see Poky listed. clicking on Poky, http://git.yoctoproject.org/cgit/cgit.cgi/poky/, I go to a summary page that shows edison as a branch of poky. If I look at the log and commit tabs on that page I see that Scott Rifenbark had a patch that got committed most recently in November:
author Scott Rifenbark <scott.m.rifenbark at intel.com>2011-11-23 18:58:23 (GMT)
committer Richard Purdie <richard.purdie at linuxfoundation.org>2011-11-25 15:26:48 (GMT)
commit adcf8bf7b52460b94998438e8c2bf854cdec0a80 (patch) (side-by-side diff)
tree 02cb7ae971dce7e464b31cdd88d47bc710f0c1e4
parent fda17235fdba53583b5a0ed8187021cd5c093a09 (diff)
download poky-edison.zip
poky-edison.tar.gz
poky-edison.tar.bz2
So that tells me that If I sticking to edison for everything related to poky, then I need to use this commit string to get the latest Edison Poky patches, Am I right???
Where do I put that or is the fact that I checked out edison branch and did a recent pull make me current with respect to poky???
So basically, in Appendix A Recipes-kernel section. what exactly are the SRCREV statements telling Bitbake and why are there 2 of them.
Thanks,
>
>>
>> 3. How do I find the commit string for a particular branch, like Edison,
>> for something like yocto/standard/common-pc/atom-pc?
>
> I'm not following the terminology again. Maybe if you describe what
> you are trying to
> achieve ? git will tell you what branch has any commit .. just use git
> branch --contains <hash>
>
>>
>> 4. To me, branches are things like Edison, Bernard, etc. But on the page:
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto-3.0/refs/heads?h=yocto/standard/common-pc/atom-pc
>>
>> yocto/standard/common-pc/atom-pc, master, and meta are all listed as
>> branches. What is the difference??
>
> edison and bernard are yocto branches. The kernel is a separate
> repository and can actually be
> used standalone (which I do). It has branches for it's meta data and
> to isolate board changes.
> A particular kernel repository is referenced by the yocto kernel
> recipes. They are what follow the
> yocto branches .. not the kernel itself.
I think I see part of my problem. (Other than too much bourbon over the last 40 years)
The Yocto project (poky) repository has edison, bernard, master as branches of that repository. I need to keep that thinking separate from the meta-intel repository where edison and bernard are also branches.
Plus, the yocto linux kernel is yet another git repository which has branches like meta, crownbay, common-pc, etc?? did I get that right?? is this the only part that needs a SRCREV??
>
>>
>> 5. The second SRCREV seems to be associated with meta. How does that
>> relate to my whole confusion on branches.
>
> A board build is composed of two things the meta data (configuration,
> patches) that
> describe the BSP and the actual code changes (the board branch).
So in the Appendix A example, which SRCREV is tied to what? Below is the 1st SRCREV for the board branch(actual code changes)? and the Second one the Meta data?:
COMPATIBLE_MACHINE_mymachine = "mymachine"
KMACHINE_mymachine = "yocto/standard/common-pc/atom-pc"
KERNEL_FEATURES_append_mymachine += " cfg/smp.scc"
SRCREV_machine_pn-linux-yocto_mymachine ?= \
"1e18e44adbe79b846e382370eb29bc4b8cd5a1a0"
SRCREV_meta_pn-linux-yocto_mymachine ?= \
"d05450e4aef02c1b7137398ab3a9f8f96da74f52"
>
>>
>> 6. To me, if you are working with Edison and a particular BSP, then these 2
>> commit strings should be constant forever, right?
>
> Yes, for the official / known BSP. If you do local work, you can of
> course have your
> own tree and advance both.
>
> Cheers,
>
> Bruce
>
Thanks for taking the time to help me with this confusion.
Jim A
>>
>>
>>
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>>
>
>
>
> --
> "Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20120129/61e567ce/attachment.html>
More information about the yocto
mailing list