On 24 January 2012 13:32, Dave Martin <dave.mar...@linaro.org> wrote:
> On Tue, Jan 24, 2012 at 11:34:51AM +0000, Lee Jones wrote: > > All released kernel source is available on git.linaro.org. > > > > Specifically: > > Git: > > git://git.linaro.org/landing-teams/leb/<landing_team>/kernel.git > > HTML: > > http://git.linaro.org/git/landing-teams/leb/ > <landing_team>/kernel.git > > Gitweb: > > http://git.linaro.org/gitweb?p=landing-teams/leb/ > <landing_team>/kernel.git;a=summary > > > > The Gitweb has a description of what you can expect from each tag. > > > Good, but I fear it's not enough. > > The question was never whether the source exists somewhere in > infospace, but whether a linaro consumer can find it and make use of it. > Lets see how they get on in this typical scenario: > > > Suppose we have a board with linaro that we set up a while ago. > We are experiencing some issues, and want to turn on some instrumentation > in the kernel and/or add some patches of their own. This means we would > like to reconfigure/change and rebuild the kernel that we have installed. > > > 1) We know how to get source code on Ubuntu: run apt-get source > > But, that specific package version may have disappeared from the server > (Fixable by running apt-get upgrade, but then we get more problems ... > see (4)) > > or > > We get some source, but it's not for the expected kernel version > (See > http://ppa.launchpad.net/linaro-landing-team-samsung/linaro-samsung/ubuntu/pool/main/l/linux-origen/linux-origen_3.0.0-1000.0samsung22.tar.gz > It's actuall a 3.0.4 kernel. This may be a local mispackaging problem, > but it's still wrong.) > > or > > We get some source, and it's the right version, but it's not much > use to us because we might have some git branches we want to merge before > building, so we really want to see the git repo, not a tarball. > > > 2) apt-get source told us this package was in Git (via the Vcs-Git tag) > at git://git.linaro.org/jcrigby/linux-linaro.git > > But there is no such tree. > > > 3) Feeling lucky, we fish about on git.linaro.org for alternatives > > There's a bewildering variety of possible kernel trees for every platform: > > e.g., for samsung: > > > http://git.linaro.org/gitweb?p=landing-teams/leb/samsung/kernel.git;a=summary > > http://git.linaro.org/gitweb?p=landing-teams/working/samsung/kernel.git;a=summary > http://git.linaro.org/gitweb?p=people/angus/linux-samsung.git;a=summary > > http://git.linaro.org/gitweb?p=people/tushar/linux-linaro-samsung.git;a=summary > > How do we know which one to look at? > > I look at one with a tag matching my kernel version. I find none, except > in generic trees that don't appear to be connected with my platform. > > > 4) OK, we received a rumour about where the actual correct tree is, > or just made a lucky guess let's try: > > > http://git.linaro.org/gitweb?p=landing-teams/leb/samsung/kernel.git;a=summary > > The tree is nicely tagged with linaro releases. > > But, we have no idea which release the installed kernel relates to, > because we a) forgot, or b) ran apt-get upgrade to solve a disappeared- > source problem in step (1), in which case the correspondence between > installed packages and linaro releases has become indeterminate -- > we are not linaro/ubuntu/debian experts, so we don't realise this is > the case, but will just spend time searching for wrong things. > > After somehow finding the kernel source for the release we installed > and finding it doesn't match because we upgraded at some point... > > ...we only have the package name and version number to go on, because > that's what debian/ubuntu packages have to identify them. Packages are > not intrinsically mapped to a release; only the converse is true. > > But, there is nothing in the git repository or package metadata to > indicate how binary package versions map back to releases. > > > 5) OK, we guessed or were told the correct release tag, and proceed to > rebuild the binary packages. > > The debian/ directory isn't in any of these repositories, so we > can't build binary packages. Neither the build scripts or the kernel > config are there. > > > To finally build valid binary packages, we need the appropriately- > tagged debian*/ directories. And not just any ones, but those used > for the release. > > > The chance of a linaro consumer making it from start to end of that > process without falling over is minimal, and in my experience, it > doesn't happen. > > I think (hopefully) that my proposal robustly fixes this, but if it > can be achieved more easily, I'm eager to know how. > For Android we have: https://android-build.linaro.org/builds/~linaro-android/panda-12.01-release/ we should have the same thing for Ubuntu: ubuntu-build.linaro.org with the similar information. > > Cheers > ---Dave > > > > On 24/01/12 10:18, Dave Martin wrote: > > > Hi again, > > > > > > After a report of yet another instance of un-findable source for a > > > kernel released from a landing team, it would be good if we could move > > > forward with this. > > > > > > Does anyone have any significant disagreements with the proposal > > > below? > > > > > > If not, I can try to write up a formal specification somewhere. > > > > > > Can we then plan to implement it? > > > > > > > > > If anyone has any preference for the common prefix for tag names, > > > please speak up (otherwise we will proceed with the "ubuntu/" prefix). > > > > > > Cheers > > > ---Dave > > > > > > On Fri, Jan 13, 2012 at 01:32:35PM +0000, Dave Martin wrote: > > >> For everyone who packages kernel trees: > > >> > > >> > > >> I've had some questions about getting the source for linaro kernel > > >> packaged, and it seems that this is still not straightforward: > > >> > > >> Getting the debian package source (i.e., flat tarball) for a binary > > >> kernel is possible, but only if it is a non-superseded version. > > >> > > >> Working out which source package you need is non-obvious (You have to > > >> check for installed kernel packages, and guess which source package > > >> you need, based on that. Non-linaro folks may not understand the > > >> difference between the various meta- and real kernel packages and may > > >> get pretty confused along the way.) > > >> > > >> Finding the git tree and the relevant commit to reproduce the source > > >> (including that for superseded kernels) is hard or impossible. It > > >> requires guesswork and/or specific knowledge about the way the > > >> relevant team manages their trees. For some platforms, it looks like > > >> there may be no single tree containing the packaged kernel at all, in > > >> which case you would also need more guesswork and/or scripts or help > > >> from the relevant landing team in order actually to reproduce a > > >> release. > > >> > > >> Am I correct in these conclusions? > > >> > > >> > > >> If so, here's a proposal -- I welcome people's comments (and please do > > >> say if any of these problems are actually solved already!): > > >> > > >> > > >> For every binary kernel package (.deb) publicly released by any linaro > > >> team, including those produced by the platform team and the landing > > >> teams: > > >> > > >> > > >> 1) The source package's control file must contain a Vcs-Git entry > > >> > > >> > > >> 2) The Vcs-Git entry must reference a git tree which contains the > > >> _exact_ source code which appears in the source package. > > >> > > >> * Such a tree must exist and must be publicly readable. It does not > > >> have to be on git.linaro.org (though this is the recommended place). > > >> > > >> * Referring to git://git.linaro.org/ubuntu/linux-linaro.git is not > > >> acceptable, unless that repo is populated with the real source for > > >> that specific kernel as well as the packaging. > > >> > > >> * Manufacturing the source package from the contents of multiple > > >> repositories or branches at source package upload time is not > > >> acceptable, unless the result is also recorded as a tagged commit in > > >> the repository referenced by the Vcs-Git entry in the debian/control > > >> file contained in that same commit. The commit must have full > > >> history: importing tarballs directly into a repository for the purpose > > >> of release tagging is not acceptable. > > >> > > >> * Referring to a tree which does not contain the whole contents of > > >> the debian source package (for example, debian/ and other packaging > > >> files/dirs are missing) is not acceptable. > > > > > > Note: this means that the released binary packages must be reproducible > > > from the tagged source using standard package build mechanisms, to the > > > extent that the exact versions of build tools and other build-time > > > dependencies used to build the originally released binaries are still > > > avilable. > > > > > >> > > >> > > >> 3) Tagging of packaged kernels must be done in a standard way. > > >> > > >> * I recommend <source package name>_<package version>, matching the > > >> Source field of debian/control and the version number of the most > > >> recent debian/changelog entry respectively (which must both be present > > >> in the repository as a consequence of (2)). If we want to avoid > > >> namespace pollution, we probably want to add a prefix such as debian/ > > >> or ubuntu/ to the tag name to indicate that the tag describes the > > >> source for a published .deb package. If so, we must standardise that > > >> prefix so that it is identical in all out trees. > > >> > > >> * Tree maintainers are of course free to add any other additional > > >> tags for their own use if they want to. > > >> > > >> All teams already do release tagging of some sort, but the lack of > > >> consistency creates difficulties when anyone from outside the team > > >> tries to understand that team's trees. > > >> > > >> * We _could_ standardise the following, but it is not essential: > > >> > > >> * ubuntu/<release>: The tagged source for the _original_ kernel > > >> which was distributed in <release> (where <release> is a linaro > > >> monthly release such as 11.12 or 12.01) > > >> > > >> > > >> 4) No specific branch naming requirements exist. > > >> > > >> * Release tags do not necessarily need to appear on any branch. > > >> > > >> * We _could_ standardise the following, but it is not essential: > > >> > > >> * ubuntu/latest - the tagged packaged source for the most recent > > >> kernel release made from this tree > > >> > > >> > > >> (In the above, we could choose a diferent prefix instead of ubuntu/, > > >> but as described in (3) ,this should be chosen globally and _not_ on a > > >> per-tree basis). > > >> > > >> Cheers > > >> ---Dave > > > > > > -- > > Lee Jones > > Linaro ST-Ericsson Landing Team Lead > > M: +44 77 88 633 515 > > Linaro.org ??? Open source software for ARM SoCs > > Follow Linaro: Facebook | Twitter | Blog > > _______________________________________________ > linaro-dev mailing list > linaro-dev@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/linaro-dev > -- Zach Pfeffer Android Platform Team Lead, Linaro Platform Teams Linaro.org | Open source software for ARM SoCs Follow Linaro: http://www.facebook.com/pages/Linaro http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
_______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev