How to contribute to Tizen on Yocto Project
Contents
Overview
At the moment it is possible to build from scratch Tizen:Common and other profiles based on it with two build systems: GBS and the Yocto project.
The current version of "Tizen on Yocto" is available in the Git repository scm/bb/tizen-distro. It is based on the of conversion of spec files to bb reipes using a Python tool called spec2yocto. Patches for improvements to the recipes should be submitted to Git repository scm/bb/meta-tizen, which will layer on top.
Getting ready to contribute
Before you start make sure that you have successfully set up developer environment following the instructions from this article. Upon success you should have configured Git, Gerrit and you should have SSH for Gerrit access.
Modifying and/or adding new recipes
meta-tizen
Follow the steps below to modify or add new recipes to "Tizen on Yocto" and to submit them to the upstream:
- Clone scm/bb/meta-tizen. You should do this in a gerrit-aware way so you will be able to push successfully (replace ME with your username):
git clone ssh://ME@review.tizen.org/scm/bb/meta-tizen.git
- Import the commit-msg hook that will generate a Change-Id whenever you commit your changes
cd meta-tizen scp tizen:hooks/commit-msg .git/hooks/
- Switch to the git branch that you are interested in, for example tizen.
git checkout tizen
- Make changes and carefully test them.
- Once you are happy with your changes and you are confident that they are working, you can commit them:
git commit -a -s
Make sure that the commit message is clear and useful. Include the relevant Jira Bug ID and a Signed-off-by: in the commit. Following DEP3 convention, the Bug ID should be last in your commit message (using the form Bug-Tizen: BTY-XXX), as the commit-msg hook uses it to find out where to add the required Change-Id: tag.
- Replace <branch-name> with the appropriate name and execute the following command to push your changes:
git push origin HEAD:refs/for/<branch-name>
A four-digit Gerrit review ID will be issued and you can see it using https://review.tizen.org/gerrit/XXXX where XXXX is that 4-digit ID.
Your changes will be reviewed and according to the rules of the Tizen project they will be merged when they have +2 code reviews. It may happen that you have to go through a few iterations of review and re-factoring of your changes before they get accepted. Follow the steps below to update your pending change request in Gerrit:
- Consider the recommendations provided by code reviewers at Gerrit and apply corresponding measures to improve the recipes.
- Carefully test all changes.
- When your new changes are ready, amend your previous commit:
git commit -a --amend
Alternatively, if you want to modify not only recipes but also the comment in the Git git commit use:
git commit -a -c --amend
- Push your new patch again to Gerrit for another code review:
git push origin HEAD:refs/for/<branch-name>
It is recommended to keep your local Git tree up to date with the upstream by pulling changes from it:
git pull
tizen-distro
After merging changes in meta-tizen you have to update tizen-distro using the combo-layer script:
- Clone scm/bb/tizen-distro. You should do this in a gerrit-aware way so you will be able to push successfully (replace ME with your username):
git clone ssh://$user@review.tizen.org:/scm/bb/tizen-distro # where $user is your tizen.org account
- Import the commit-msg hook that will generate a Change-Id whenever you commit your changes
cd tizen-distro scp tizen:hooks/commit-msg .git/hooks/
- Create conf/combo-layer-local.conf
cp conf/combo-layer-local-sample.conf conf/combo-layer-local.conf
- Set local_repo_dir for each meta layer in conf/combo-layer-local.conf
- Initialize repositories:
scripts/combo-layer init
- Update meta-tizen into tizen-distro:
scripts/combo-layer update meta-tizen
- Make sure that the Change-Id is in the footer (last paragraph) of all new commit messages.
- Push your changes to Gerrit
Troubleshooting
If you experience any difficulties or have any suggestions about meta-tizen or tizen-distro please subscribe to the Tizen Dev mailing list and share your opinion.
- tizen-distro: "A potential Change-Id was found, but it was not in the footer (last paragraph) of the commit message."
The following message appears because the combo-layer script has added a new line between Change-Id and Signed-off-by. Use Git rebase to edit each commit message and remove the new line.
Tips and Tricks
- Optionally, if you prefer you can also configure the git hook for commit message as a system wide configuration too:
mkdir -p ~/.config/git/hooks scp review.tizen.org:hooks/commit-msg ~/.config/git/hooks cat<<EOF>> ~/.gitconfig [init] templatedir = ~/.config/git/ EOF
See also
- Tizen on Yocto Project
- Building Tizen with Yocto Project
- Building Tizen with Yocto Project for MinnowBoard Max
- Building Tizen with Yocto Project for HummingBoard with FreeScale i.MX6 ARM SoC
- How to contribute to Tizen IVI
- Contributing to the Tizen Community
- Tizen Micro
- Creating new Tizen profiles using the Yocto Project, Leon Anavi, Tizen Developer Conference 2015 Shenzhen