On Thu, 2015-01-08 at 16:57 +0100, ronan wrote:
> Hi all,
> We are glad to announce the availability of Tizen-Distro.
>
> - https://wiki.tizen.org/wiki/Build_Tizen_with_Yocto_Project
>
> Tizen-distro provides all the meta-data needed to build Tizen Common and
> Tizen IVI (Modello) images with yocto.
I'd like to propose a change in how this combined repo gets created and
maintained. It was said to be maintained with Yocto's combo-layer tool,
but in practice Ronan mostly just copied the entire set of files for
components and committed that as one commit.
The result is that in 0.9, most history of the components is not
visible. combo-layer is configured, but it is unusable as-is for two
reasons:
1. The configured repo paths are the ones from Ronan's machine.
2. The branches that combo-layer is meant to track are not
configured, breaking "combo-layer update" even when the paths
are valid.
Perhaps because maintenance was manual, 0.9 again unintentionally
included the more experimental "master" branch of one component,
meta-openembedded, instead of the more stable "dizzy" (aka Yocto 1.7)
maintenance branch that we would like to use for Tizen 3.0.
What I propose is:
1. use combo-layer for all components and all patches
2. allow different developers to do the updating by
A. committing the necessary meta-data (the "last_revision"
property of each component) in the git tree
B. keeping the per-developer settings out of it
Point 2 required a minor change to the combo-layer tool; the patch is
attached.
I also find it useful to have the entire history of each component in
the combined repository, including the original git rev. Creating
tizen-distro with all older commits was more work than starting with a
full copy of each components, but that's something we only need to do
once.
I should also mention one drawback: the initial checkout now is slower.
Users concerned with that can use "git clone --depth".
Finally we also need to ensure that branching works. At the moment, we
are based on the "dizzy" maintenance branches (as far as they exist),
but at some point we'll switch to "master" for development and then the
next maintenance branches.
The repository that I prepared has the "master" branch set up to track
"master" and the "tizen" branch for the current Tizen 3.0 work, tracking
the "dizzy" branches. I used combo-layer on both branches to update
components, to verify that it really works. The result is in
sandbox/pohly/master resp. sandbox/pohly/tizen.
For creating the initial base version I cheated a bit: I started with
poky and stripped undesired parts from it. That was easier than dealing
with the non-linear bitbake history and gives us a more realistic base
(patches imported regularly over time).
I also had to manually resolve conflicts when importing patches from
meta-tizen and did not spend much energy on ensuring that these
intermediate commits are 100% correct. Going forward we need to ensure
that we have a linear history in meta-tizen, just like the other
components do it.
Instructions are in README.tizen-distro. For further information, read
"git log conf".
-------------------
About tizen-distro
==================
tizen-distro is a combination of several different components in a
single repository:
- bitbake
- openembedded-core
- meta-openembedded
- meta-qt5
- meta-tizen
The top-level directory comes from openembedded-core, everything else
is in its own sub-directory. tizen-distro gets updated by copying
importing patches from the component's repostories. Please submit
patches against those instead of tizen-distro.
Updating tizen-distro
=====================
Everyone with a copy of the tizen-distro repository can use
scripts/combo-layer to import patches from the components. That works
because the "last_revision" property which gets changed after each
import gets committed to the combined repostory.
First, copy conf/combo-layer-local-sample.conf into
conf/combo-layer-local.conf and set the paths for each component
repository to a suitable location.
Then run:
- "scripts/combo-layer init" (only once)
- "scripts/combo-layer update <component>" where <component> is either one of
components above (for updating just that one) or empty (for updating all)
Branching tizen-distro
======================
Each branch in tizen-distro tracks one branch in each component. To
create a new branch:
- checkout a new branch in tizen-component
- change the "branch" properties in conf/combo-layer.conf
- change the branch part in the last_revision sections
- commit
- continue as before
This works best if the last imported revision from each component is
the branching point of that component. Ensure that by updating before
the components branch. If it is too late, either select patches
interactively or import too many patches and then drop unwanted ones
via "git rebase" or "git reset --hard". Remember to keep
"last_revision" correct when doing that.
-------------------
--
Best Regards, Patrick Ohly
The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.
From 131980ac2599a8132135d8324bdf80832d13a07c Mon Sep 17 00:00:00 2001
From: Patrick Ohly <[email protected]>
Date: Thu, 8 Jan 2015 07:23:52 -0800
Subject: [PATCH] combo-layer: let user choose where properties get updated
When updating a property (at the moment, only 'last_revision'),
first check whether the user already added it to the main config.
If so, update there even if there is a local config.
This way, 'last_revision' can be shared between developers
as part of the repository while still configuring per-developer
repo paths outside of the git repository in a local config.
Signed-off-by: Patrick Ohly <[email protected]>
---
scripts/combo-layer | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/combo-layer b/scripts/combo-layer
index 19d64e6..489d180 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -108,7 +108,9 @@ class Configuration(object):
readsection(self.localparser, section, repo)
def update(self, repo, option, value, initmode=False):
- if self.localparser:
+ # If the main config has the option already, that is what we
+ # are expected to modify.
+ if self.localparser and not self.parser.has_option(repo, option):
parser = self.localparser
section = "%s|%s" % (repo, self.combobranch)
conffile = self.localconffile
--
2.1.3
_______________________________________________
Dev mailing list
[email protected]
https://lists.tizen.org/listinfo/dev