SlideShare a Scribd company logo
1 of 39
Download to read offline
Cooperating with
upstream projects
Packaging tips and tricks
Philippe Coval
Tizen engineer
<https://wiki.tizen.org/wiki/User:Pcoval>
<philippe.coval@open.eurogiciel.org>
Context
3
Who am I ?
● FLOSS enthusiast
● Communities: MeeGo/harmattan, debian, Qt, gnome, meamo, jolla ...
● Tizen packager, maintainer and developer
● Co maintenance :
● Domains: Automotive, Graphics & UI frameworks, Multimedia...
● Focus on core distro, graphics, toolkits (EFL, Qt … )
● Hacked webapps on Tizen RDPQ, ia32 mobile, ARM
● Works for Eurogiciel Opensource Dept
● Intel OTC contractor for 2 year located in France (Brittany)
4
Agenda
● Cooperation matters
● Upstream opensource projects
● Tizen integrate them
● A bug life
● Patches , trackers and git flow
● Communities
● Ask for Tips
● Tools : git, gbs, rpm
Cooperation
matters
6
Cooperation matters : Why ?
● Goals : Philosophy + Pragmatism
● Maximize : result / ( efforts * time )
● Best skills on worst issues
● Better quality (Several POV More tests = More feedback)
● Benefit for tizen (system)
● Focus on Integration not development
● Long term maintenance
● Benefit for upstream (softwares)
● Focus on Development not Integration
● Users base / testing real use case
● Tizen:Common : Bleeding edge
● Wayland, connman, gfx stack (intel drivers)
7
Cooperation matters : How ?
● Communicate
● In the open several places : connect tizen to upstream
● Be nice, patient and proactive
● Use efficient tools :
● git, gbs
● Track changes
● Avoid loosing contexts
● Ease up co maintenance
● Community : + not vs
● Downstream + upstream
● Inside project + Outside project
A bug's life
9
Communicate
● Is the bug or feature tracked ?
● No : Open bug http://bugs.tizen.org , (TC if not profile specific)
● Yes : let know your plans
● Is the bug specific to tizen ?
● Yes : fix, commit mention “Bug-Tizen: TC-42”
● Is this and upstream bug ?
● Yes : Open an item on upstream tracker or mailing list
● Link it on tizen tracker ASAP
● Benefits :
● Avoid duplication of efforts / Long term maintenance
10
Package for Tizen
● All packages are in VC :-)
● check repo manifest
● Get the sources : create upstream branch
● git clone -b upstrean $git_upstreamurl
● gbs import ../$package-$version.tar.gz
● RPM packaging
● create “packaging/$package.spec”
● Build package along tizen rpm repos
● gbs build
● Ask me for tips :
● Avoid packaging mistake, git submodules, community repo ...
11
Upstream & tizen git branches
{master}@upstream
<0.4.1>
{tizen}@tizen
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
{upstream}@tizen
<upstream/0.4.1>
{master}@upstream
...
git checkout -b upstream $tag
git checkout -b tizen
git add packaging/*.spec
gbs build
12
Develop on Tizen
● Use Tizen:Common if possible
● Minimal config, then will land in other profiles (IVI)
● Ability to hack, build and run on a target (desktop)
● Track changes : using DEP3 conventions
Bug-Tizen: TC-42
Bug: 2014
● Verify you changes, check packaging, test
● Ask for Tips :
● Sharing code in sandboxes
● Avoid spec files mistakes
13
Local change on tizen branch
{tizen}@tizen
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
{master}@upstream
{tizen}@tizen
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
{tizen}@local
Fix bug Y by adding feature X
Bug-Tizen: TC-42
$ git rebase remotes/origin/devel
$ git format-patch -o ../patches/ HEAD~1
14
Show for feedback
● Use upstream bug report at entry point
● Rebase on upstream's devel branch
● Check your changes are clean
● Is tracked (using Bug:)
● Keep the changes minimal : (tizen packaging free)
● Publish patch
● and ask authors kindly for reviewing code
● Take care of it
● Take feedbacks into account , improve to reach consensus
● Make it evolve until agreement
● Be patient, constructive and never give up :)
15
Change rebased on upstream dev branch
{tizen}@tizen
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
{master}@upstream
{devel}@upstream
{for-upstream}@local
Fix bug Y by adding feature X
Bug: 2014
16
Get the change merged upstream
● is it reviewed ?
● positive feedback ? none negative ?
● Is it merged upstream ?
● git cherry-pick , reword commit message using DEP3 tags :
Bug-Tizen: TC-42
Origin: $upstream_url
● git snapshot
● Is change in new released version ?
● Rebase on new version :
git commit -sam 
'packaging: Bump to 1.4.2nBug-Tizen: TC-42'
17
6/ Update version will bring the change
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
<0.4.1>
Fix bug Y by adding feature X
Bug: 2014
<0.4.2>
{tizen}@tizen :
packaging : Bump to 0.4.2
Bug-Tizen: TC-42
git checkout upstream
git rebase -i $new
git checkout tizen
git rebase -i upstream
git commit
{master}@upstream
18
But in reality ?
● Upstream integration will happened when ready
● but it was needed for yesterday
● timeout expire (TBD ~1 week)
● If no negative feedback
● Just commit and push it to tizen reviewing branch
Tags: “Bug-Tizen:” “Bug:” “Origin:“ ...
● Risky ? Then try to make the changes conditional
● Packaging flag or env variable
● Dont mix upstream changes and tizen/packaging ones
● Half done job
● Keep an eye for next version
● maintain change downstream (and maybe also upstream)
19
Downstream change on tizen branch
{master}@upstream
{tizen}@tizen
packaging: Initial packaging on 0.4.1 for Tizen
Bug-Tizen: TC-41
{tizen}@tizen
Fix bug Y by adding feature X
Bug: 2014
Bug-Tizen: TC-41
Origin : $url_of_patch
20
Workflow Summary
● Report, assign, comment bugs
● Develop on tizen system : Tizen:Common
● Rebase on upstream
● Track changes : Bug: / Bug-Tizen: / Origin: $url
● Forward patch to upstream project for reviewing
● Adapt if needed
● Merge it to tizen
● reviewing tizen side too
21
Downstream patches examples
● Downstream change
● Upstream : reviewed about to merge
URL: https://codereview.qt-project.org/#change,84222
Task-number: QTBUG-38633/part/2of2
● Tizen : merged
URL : https://review.tizen.org/gerrit/#/c/21158/
Task-number: QTBUG-38633/part/2of2
Bug-Tizen: TIVI-3113
Origin: https://codereview.qt-project.org/#change,84222
● Upstreamed changes :
● Connman : https://01.org/jira/browse/CM-655
● Wayland : Bug-Tizen: TIVI-2049 TIVI-2792 Bug: 53214 (thx tarnyko)
Community
23
Community contribs
● Projects :
● QtForTizen, tizen-sunxi, MonoTizen, yours?
● Platform :
● Start packaging, file bug, look for mentors, share source
● Applications :
● Let us know, share .wgt or code
● https://wiki.tizen.org/wiki/Applications
● Community repo :
● Binaries : for native packages and/or applications etc
● Sources : shared project for pre-integration, maintenance facilities :
http://gitorious.org/tizen
24
Brotherhood
● Don't reinvent the wheel : Give and Take
● RPM distro / spec files
● Meego : the root of Tizen
● Mer : used as upstream for Qt5
● OpenSuse / Fedora etc
● Compare to other systems :
● Connectivity : connman. Bluez : Mer
● Systemd : ArchLinux, Debian?
● Xwalk, webkit / blink : android ?
● Efl, Wayland :?
Extra tips and
tricks
26
Ask me for tips
● Packaging
● Intial packaging
● git modules
● gbs : upstream git or tarball
● gbs : use upstream tags
● rpm : macros
● rpm : multi configuration
● Publishing
● Git Sandboxes
● Commit changes
● Split packaging / downstream
● Bump version
27
Initial Packaging : Create upstream branch
● Git vs tarballs git (gbs import)
● Git : Upstream will feel home and can cherry pick patches
● Git : easier rebase on version bump
● Tar : bring generated files
● Other SCM : git-svn . Git-hg
● Share the source
● Request creation of git repo on tizen.org
● or share your own/community
28
Gbs : git modules
● Git in git (~ svn externals)
● used for common code among projects
● Example
● Source: platform/upstream/gstreamer-vaapi.git
● Usage :
git rebase upstream
sh packaging/gitmodules.sh
git commit -sam 'packaging: gitmodules refresh'
packaging/*.tar.bz2
29
Packaging : RPM : Use macros
● Use macros :
● Ie: not arch dependents path :
/usr/lib != /usr/lib64 != %{_libdir}
● Ie: systemd :
- /usr/lib/systemd/user/*.service
+ %{_userunitdir}/*.service
● Tips :
rpm --eval %_sysconfdir : /etc
rpm -ql rpm| grep macros : /usr/lib/rpm/tizen/macros …
● packaging/*.changes files vs git log ?
30
Packaging : RPM : Improve spec files
● Multiconfiguration packaging
● Test features not profiles or versions
● Ie: Graphics stack : (wayland vs X11 support)
● Don't hardcode path uses variables (tz-platform-config)
● Release: Field in packaging/*.spec
● Depends on versionned subpackages
Requires: %{name} = %{version}-%{release}
● 0 for gbs
● Tip: increment on local build for repo:
release?=$(shell date +%Y%m%d.%s)
zypper update -r $USER
31
How developer can ease maintainers job
● Avoid to mix packaging changes and sources patches
● benefits : upstream can pick your patch, and will skipped on rebase
● Identify packaging changes using prefix
● Ie: git commit -sam 'packaging: Intial packaging on x.y.z for Tizen'
● Easier maintenance (think git rebase -i)
● Keep source changes simplest
● Ie: git commit -sam 'Install to $DESTDIR' Makefile
● Forward upstream and track it
32
Maintainer updates to new version
● No need for upstream/x.y.z edit “.gbs.conf
[general]
upstream_branch = upstream
upstream_tag = libevdev-${upstreamversion}
● Need for snapshot versions ?
$ git describe : upstream/0.15.2+9+g40c3756
● Track dropped / changes
$ git commit -sam 'packaging: Bump to x.y.z
skip c7f2a1e... API: add support for buffer exports'
● Reset head after checks
● gbs export : patch serie vs binary patch archive
● git push –force
33
Developer need to share work in progress ?
● sandbox/$USER/tizen
● Based on /tizen branch (and then /upstream)
● Purpose: push for review first and then share changes before merged
● sandbox/$USER/upstream
● Upstream's master branch if needed to rebase (ahead upstream branch)
● sandbox/$USER/devel
● Based on previous branch
● workaround for missing tags :
$ cat $package/packaging/../.gbs.conf
+upstream_branch = sandbox/$USER/upstream
+upstream_tag = sandbox/$USER/upstream
34
Helper scripts and recipes
● tizen-helper
● https://gitorious.org/tizen
● Scripts and recipes to share
● Local Git cache
● Locally :
tizen-helper/bin/git.sh clone https://gitorious.org/tizen/tizen-helper.git
alias git=git.sh
● On a lan :
git cclone https://github.com/kooltux/git-cache
35
References
● Packaging / Workflow
● https://wiki.tizen.org/wiki/Packaging/Guidelines
● https://wiki.tizen.org/wiki/Talk:Packaging/Guidelines
● http://dep.debian.net/deps/dep3/
● Community
● https://gitorious.org/tizen
● https://wiki.tizen.org/wiki/Applications
● http://www.tizenexperts.com/
● Me or Related WIP:
● https://wiki.tizen.org/wiki/User:Pcoval
● https://dockr.eurogiciel.fr/blogs/embedded/author/pcl/
36
Thanks
● Tizen community : for the spirit
● Developers
● Reviewers / Maintainers
● Hackers
● Sponsorship : for helping to be there
● Linux Foundation
● Eurogiciel
● Tizen Association : for the project and TdcSf14 gifts
● Intel
● Samsung
● You : for caring of coop
Q & A
Ask me online
<https://wiki.tizen.org/wiki/User:Pcoval>
Open source development and integration :
Several Maintainers for tizen.org
Embedded systems for real-time multimedia:
- Widi/Miracast stack,
- Wayland/Weston,
- Webkit2 browser with HW acceleration,
Application: HTML5/CSS3, jquery, jqmobi, Cordova
Location : Brittany - France
tizen-upstream-coop-tdc2014-pcoval

More Related Content

What's hot

Why Open Source is Important and What are We Doing About it?
Why Open Source is Important and What are We Doing About it?Why Open Source is Important and What are We Doing About it?
Why Open Source is Important and What are We Doing About it?Samsung Open Source Group
 
The RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersThe RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersMarco Fioretti
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianMender.io
 
RISC-V and open source chip design
RISC-V and open source chip designRISC-V and open source chip design
RISC-V and open source chip designDrew Fustini
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsPaul Balogh
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopOpersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The UniversityDominique Cimafranca
 
Open Source, Sourceforge Projects, & Apache Foundation
Open Source, Sourceforge Projects, & Apache FoundationOpen Source, Sourceforge Projects, & Apache Foundation
Open Source, Sourceforge Projects, & Apache FoundationMohammad Kotb
 
OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!Flavio Percoco Premoli
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 
Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?gabrielemariotti
 
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...Ron Munitz
 
Flatpak and AppImage usage on openSUSE
Flatpak and AppImage usage on openSUSEFlatpak and AppImage usage on openSUSE
Flatpak and AppImage usage on openSUSEKukuh Syafaat
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)account inactive
 

What's hot (20)

Using OpenEmbedded
Using OpenEmbeddedUsing OpenEmbedded
Using OpenEmbedded
 
Why Open Source is Important and What are We Doing About it?
Why Open Source is Important and What are We Doing About it?Why Open Source is Important and What are We Doing About it?
Why Open Source is Important and What are We Doing About it?
 
The RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersThe RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux users
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 
PEAR - An introduction
PEAR - An introductionPEAR - An introduction
PEAR - An introduction
 
RISC-V and open source chip design
RISC-V and open source chip designRISC-V and open source chip design
RISC-V and open source chip design
 
Let's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeadsLet's Go @ St. Louis CocoaHeads
Let's Go @ St. Louis CocoaHeads
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
 
Open Source, Sourceforge Projects, & Apache Foundation
Open Source, Sourceforge Projects, & Apache FoundationOpen Source, Sourceforge Projects, & Apache Foundation
Open Source, Sourceforge Projects, & Apache Foundation
 
Using OpenEmbedded
Using OpenEmbeddedUsing OpenEmbedded
Using OpenEmbedded
 
OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!OpenStack: Community driven development, For Real!
OpenStack: Community driven development, For Real!
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?Droidcon Italy 2015: can you work without open source libraries?
Droidcon Italy 2015: can you work without open source libraries?
 
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon S...
 
Flatpak and AppImage usage on openSUSE
Flatpak and AppImage usage on openSUSEFlatpak and AppImage usage on openSUSE
Flatpak and AppImage usage on openSUSE
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
Debugging Qt, Fixing and Contributing a Bug Report (Using Gitorious)
 

Viewers also liked

IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
Sistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambienteSistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambientefreedomotic
 

Viewers also liked (6)

tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916tdc2015-strategy-devel-20150916
tdc2015-strategy-devel-20150916
 
Development Boards for Tizen IoT
Development Boards for Tizen IoTDevelopment Boards for Tizen IoT
Development Boards for Tizen IoT
 
IoTivity: From Devices to the Cloud
IoTivity: From Devices to the CloudIoTivity: From Devices to the Cloud
IoTivity: From Devices to the Cloud
 
Toward "OCF Automotive" profile
Toward "OCF Automotive" profileToward "OCF Automotive" profile
Toward "OCF Automotive" profile
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
Sistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambienteSistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambiente
 

Similar to tizen-upstream-coop-tdc2014-pcoval

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitAmit Mathur
 
Civilized Git Process
Civilized Git ProcessCivilized Git Process
Civilized Git ProcessTu Hoang
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow Sebin Benjamin
 
Developing with versioning and CI/CD
Developing with versioning and CI/CDDeveloping with versioning and CI/CD
Developing with versioning and CI/CDMatteo Di Carlo
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of GitWayne Chen
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersMartin Jinoch
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fastDenis Karpenko
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with pythonroskakori
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Per Henrik Lausten
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talkTiago Ameller
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git TutorialSage Sharp
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainŁukasz Piątkowski
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflowsArthur Shvetsov
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - WorkflowTahsin Abrar
 
How to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineElasTest Project
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
 

Similar to tizen-upstream-coop-tdc2014-pcoval (20)

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git Basics
Git BasicsGit Basics
Git Basics
 
Civilized Git Process
Civilized Git ProcessCivilized Git Process
Civilized Git Process
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow
 
Open source
Open sourceOpen source
Open source
 
Developing with versioning and CI/CD
Developing with versioning and CI/CDDeveloping with versioning and CI/CD
Developing with versioning and CI/CD
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes Developers
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
 
Open source projects with python
Open source projects with pythonOpen source projects with python
Open source projects with python
 
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
Git for work groups ironhack talk
Git for work groups ironhack talkGit for work groups ironhack talk
Git for work groups ironhack talk
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Rejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform GainRejekts 24 EU No GitOps Pain, No Platform Gain
Rejekts 24 EU No GitOps Pain, No Platform Gain
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflows
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - Workflow
 
How to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipeline
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
 

More from Phil www.rzr.online.fr (17)

Iot privacy-soscon-2019
Iot privacy-soscon-2019Iot privacy-soscon-2019
Iot privacy-soscon-2019
 
aframe-webthing-20190710
aframe-webthing-20190710aframe-webthing-20190710
aframe-webthing-20190710
 
web-of-twins-20190604rzr
web-of-twins-20190604rzrweb-of-twins-20190604rzr
web-of-twins-20190604rzr
 
digital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzrdigital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzr
 
wotxr-20190320rzr
wotxr-20190320rzrwotxr-20190320rzr
wotxr-20190320rzr
 
mozilla-things-fosdem-2019
mozilla-things-fosdem-2019mozilla-things-fosdem-2019
mozilla-things-fosdem-2019
 
IoT-javascript-2019-fosdem
IoT-javascript-2019-fosdemIoT-javascript-2019-fosdem
IoT-javascript-2019-fosdem
 
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
 
webthing-iotjs-20181027rzr
webthing-iotjs-20181027rzrwebthing-iotjs-20181027rzr
webthing-iotjs-20181027rzr
 
tizen-rt-javascript-20181011
tizen-rt-javascript-20181011tizen-rt-javascript-20181011
tizen-rt-javascript-20181011
 
webthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzrwebthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzr
 
osvehicle-connected-20160429
osvehicle-connected-20160429osvehicle-connected-20160429
osvehicle-connected-20160429
 
Iotivity atmel-20150328rzr
Iotivity atmel-20150328rzrIotivity atmel-20150328rzr
Iotivity atmel-20150328rzr
 
Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015Iotivity tizen-fosdem-2015
Iotivity tizen-fosdem-2015
 
FOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devicesFOSDEM2015: Porting Tizen:Common to open source hardware devices
FOSDEM2015: Porting Tizen:Common to open source hardware devices
 
tizen-oshw-tds14sh
tizen-oshw-tds14shtizen-oshw-tds14sh
tizen-oshw-tds14sh
 
Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529Tizen sdk-solutionslinux-20130529
Tizen sdk-solutionslinux-20130529
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

tizen-upstream-coop-tdc2014-pcoval

  • 1. Cooperating with upstream projects Packaging tips and tricks Philippe Coval Tizen engineer <https://wiki.tizen.org/wiki/User:Pcoval> <philippe.coval@open.eurogiciel.org>
  • 3. 3 Who am I ? ● FLOSS enthusiast ● Communities: MeeGo/harmattan, debian, Qt, gnome, meamo, jolla ... ● Tizen packager, maintainer and developer ● Co maintenance : ● Domains: Automotive, Graphics & UI frameworks, Multimedia... ● Focus on core distro, graphics, toolkits (EFL, Qt … ) ● Hacked webapps on Tizen RDPQ, ia32 mobile, ARM ● Works for Eurogiciel Opensource Dept ● Intel OTC contractor for 2 year located in France (Brittany)
  • 4. 4 Agenda ● Cooperation matters ● Upstream opensource projects ● Tizen integrate them ● A bug life ● Patches , trackers and git flow ● Communities ● Ask for Tips ● Tools : git, gbs, rpm
  • 6. 6 Cooperation matters : Why ? ● Goals : Philosophy + Pragmatism ● Maximize : result / ( efforts * time ) ● Best skills on worst issues ● Better quality (Several POV More tests = More feedback) ● Benefit for tizen (system) ● Focus on Integration not development ● Long term maintenance ● Benefit for upstream (softwares) ● Focus on Development not Integration ● Users base / testing real use case ● Tizen:Common : Bleeding edge ● Wayland, connman, gfx stack (intel drivers)
  • 7. 7 Cooperation matters : How ? ● Communicate ● In the open several places : connect tizen to upstream ● Be nice, patient and proactive ● Use efficient tools : ● git, gbs ● Track changes ● Avoid loosing contexts ● Ease up co maintenance ● Community : + not vs ● Downstream + upstream ● Inside project + Outside project
  • 9. 9 Communicate ● Is the bug or feature tracked ? ● No : Open bug http://bugs.tizen.org , (TC if not profile specific) ● Yes : let know your plans ● Is the bug specific to tizen ? ● Yes : fix, commit mention “Bug-Tizen: TC-42” ● Is this and upstream bug ? ● Yes : Open an item on upstream tracker or mailing list ● Link it on tizen tracker ASAP ● Benefits : ● Avoid duplication of efforts / Long term maintenance
  • 10. 10 Package for Tizen ● All packages are in VC :-) ● check repo manifest ● Get the sources : create upstream branch ● git clone -b upstrean $git_upstreamurl ● gbs import ../$package-$version.tar.gz ● RPM packaging ● create “packaging/$package.spec” ● Build package along tizen rpm repos ● gbs build ● Ask me for tips : ● Avoid packaging mistake, git submodules, community repo ...
  • 11. 11 Upstream & tizen git branches {master}@upstream <0.4.1> {tizen}@tizen packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 {upstream}@tizen <upstream/0.4.1> {master}@upstream ... git checkout -b upstream $tag git checkout -b tizen git add packaging/*.spec gbs build
  • 12. 12 Develop on Tizen ● Use Tizen:Common if possible ● Minimal config, then will land in other profiles (IVI) ● Ability to hack, build and run on a target (desktop) ● Track changes : using DEP3 conventions Bug-Tizen: TC-42 Bug: 2014 ● Verify you changes, check packaging, test ● Ask for Tips : ● Sharing code in sandboxes ● Avoid spec files mistakes
  • 13. 13 Local change on tizen branch {tizen}@tizen packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 {master}@upstream {tizen}@tizen packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 {tizen}@local Fix bug Y by adding feature X Bug-Tizen: TC-42 $ git rebase remotes/origin/devel $ git format-patch -o ../patches/ HEAD~1
  • 14. 14 Show for feedback ● Use upstream bug report at entry point ● Rebase on upstream's devel branch ● Check your changes are clean ● Is tracked (using Bug:) ● Keep the changes minimal : (tizen packaging free) ● Publish patch ● and ask authors kindly for reviewing code ● Take care of it ● Take feedbacks into account , improve to reach consensus ● Make it evolve until agreement ● Be patient, constructive and never give up :)
  • 15. 15 Change rebased on upstream dev branch {tizen}@tizen packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 {master}@upstream {devel}@upstream {for-upstream}@local Fix bug Y by adding feature X Bug: 2014
  • 16. 16 Get the change merged upstream ● is it reviewed ? ● positive feedback ? none negative ? ● Is it merged upstream ? ● git cherry-pick , reword commit message using DEP3 tags : Bug-Tizen: TC-42 Origin: $upstream_url ● git snapshot ● Is change in new released version ? ● Rebase on new version : git commit -sam 'packaging: Bump to 1.4.2nBug-Tizen: TC-42'
  • 17. 17 6/ Update version will bring the change packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 <0.4.1> Fix bug Y by adding feature X Bug: 2014 <0.4.2> {tizen}@tizen : packaging : Bump to 0.4.2 Bug-Tizen: TC-42 git checkout upstream git rebase -i $new git checkout tizen git rebase -i upstream git commit {master}@upstream
  • 18. 18 But in reality ? ● Upstream integration will happened when ready ● but it was needed for yesterday ● timeout expire (TBD ~1 week) ● If no negative feedback ● Just commit and push it to tizen reviewing branch Tags: “Bug-Tizen:” “Bug:” “Origin:“ ... ● Risky ? Then try to make the changes conditional ● Packaging flag or env variable ● Dont mix upstream changes and tizen/packaging ones ● Half done job ● Keep an eye for next version ● maintain change downstream (and maybe also upstream)
  • 19. 19 Downstream change on tizen branch {master}@upstream {tizen}@tizen packaging: Initial packaging on 0.4.1 for Tizen Bug-Tizen: TC-41 {tizen}@tizen Fix bug Y by adding feature X Bug: 2014 Bug-Tizen: TC-41 Origin : $url_of_patch
  • 20. 20 Workflow Summary ● Report, assign, comment bugs ● Develop on tizen system : Tizen:Common ● Rebase on upstream ● Track changes : Bug: / Bug-Tizen: / Origin: $url ● Forward patch to upstream project for reviewing ● Adapt if needed ● Merge it to tizen ● reviewing tizen side too
  • 21. 21 Downstream patches examples ● Downstream change ● Upstream : reviewed about to merge URL: https://codereview.qt-project.org/#change,84222 Task-number: QTBUG-38633/part/2of2 ● Tizen : merged URL : https://review.tizen.org/gerrit/#/c/21158/ Task-number: QTBUG-38633/part/2of2 Bug-Tizen: TIVI-3113 Origin: https://codereview.qt-project.org/#change,84222 ● Upstreamed changes : ● Connman : https://01.org/jira/browse/CM-655 ● Wayland : Bug-Tizen: TIVI-2049 TIVI-2792 Bug: 53214 (thx tarnyko)
  • 23. 23 Community contribs ● Projects : ● QtForTizen, tizen-sunxi, MonoTizen, yours? ● Platform : ● Start packaging, file bug, look for mentors, share source ● Applications : ● Let us know, share .wgt or code ● https://wiki.tizen.org/wiki/Applications ● Community repo : ● Binaries : for native packages and/or applications etc ● Sources : shared project for pre-integration, maintenance facilities : http://gitorious.org/tizen
  • 24. 24 Brotherhood ● Don't reinvent the wheel : Give and Take ● RPM distro / spec files ● Meego : the root of Tizen ● Mer : used as upstream for Qt5 ● OpenSuse / Fedora etc ● Compare to other systems : ● Connectivity : connman. Bluez : Mer ● Systemd : ArchLinux, Debian? ● Xwalk, webkit / blink : android ? ● Efl, Wayland :?
  • 26. 26 Ask me for tips ● Packaging ● Intial packaging ● git modules ● gbs : upstream git or tarball ● gbs : use upstream tags ● rpm : macros ● rpm : multi configuration ● Publishing ● Git Sandboxes ● Commit changes ● Split packaging / downstream ● Bump version
  • 27. 27 Initial Packaging : Create upstream branch ● Git vs tarballs git (gbs import) ● Git : Upstream will feel home and can cherry pick patches ● Git : easier rebase on version bump ● Tar : bring generated files ● Other SCM : git-svn . Git-hg ● Share the source ● Request creation of git repo on tizen.org ● or share your own/community
  • 28. 28 Gbs : git modules ● Git in git (~ svn externals) ● used for common code among projects ● Example ● Source: platform/upstream/gstreamer-vaapi.git ● Usage : git rebase upstream sh packaging/gitmodules.sh git commit -sam 'packaging: gitmodules refresh' packaging/*.tar.bz2
  • 29. 29 Packaging : RPM : Use macros ● Use macros : ● Ie: not arch dependents path : /usr/lib != /usr/lib64 != %{_libdir} ● Ie: systemd : - /usr/lib/systemd/user/*.service + %{_userunitdir}/*.service ● Tips : rpm --eval %_sysconfdir : /etc rpm -ql rpm| grep macros : /usr/lib/rpm/tizen/macros … ● packaging/*.changes files vs git log ?
  • 30. 30 Packaging : RPM : Improve spec files ● Multiconfiguration packaging ● Test features not profiles or versions ● Ie: Graphics stack : (wayland vs X11 support) ● Don't hardcode path uses variables (tz-platform-config) ● Release: Field in packaging/*.spec ● Depends on versionned subpackages Requires: %{name} = %{version}-%{release} ● 0 for gbs ● Tip: increment on local build for repo: release?=$(shell date +%Y%m%d.%s) zypper update -r $USER
  • 31. 31 How developer can ease maintainers job ● Avoid to mix packaging changes and sources patches ● benefits : upstream can pick your patch, and will skipped on rebase ● Identify packaging changes using prefix ● Ie: git commit -sam 'packaging: Intial packaging on x.y.z for Tizen' ● Easier maintenance (think git rebase -i) ● Keep source changes simplest ● Ie: git commit -sam 'Install to $DESTDIR' Makefile ● Forward upstream and track it
  • 32. 32 Maintainer updates to new version ● No need for upstream/x.y.z edit “.gbs.conf [general] upstream_branch = upstream upstream_tag = libevdev-${upstreamversion} ● Need for snapshot versions ? $ git describe : upstream/0.15.2+9+g40c3756 ● Track dropped / changes $ git commit -sam 'packaging: Bump to x.y.z skip c7f2a1e... API: add support for buffer exports' ● Reset head after checks ● gbs export : patch serie vs binary patch archive ● git push –force
  • 33. 33 Developer need to share work in progress ? ● sandbox/$USER/tizen ● Based on /tizen branch (and then /upstream) ● Purpose: push for review first and then share changes before merged ● sandbox/$USER/upstream ● Upstream's master branch if needed to rebase (ahead upstream branch) ● sandbox/$USER/devel ● Based on previous branch ● workaround for missing tags : $ cat $package/packaging/../.gbs.conf +upstream_branch = sandbox/$USER/upstream +upstream_tag = sandbox/$USER/upstream
  • 34. 34 Helper scripts and recipes ● tizen-helper ● https://gitorious.org/tizen ● Scripts and recipes to share ● Local Git cache ● Locally : tizen-helper/bin/git.sh clone https://gitorious.org/tizen/tizen-helper.git alias git=git.sh ● On a lan : git cclone https://github.com/kooltux/git-cache
  • 35. 35 References ● Packaging / Workflow ● https://wiki.tizen.org/wiki/Packaging/Guidelines ● https://wiki.tizen.org/wiki/Talk:Packaging/Guidelines ● http://dep.debian.net/deps/dep3/ ● Community ● https://gitorious.org/tizen ● https://wiki.tizen.org/wiki/Applications ● http://www.tizenexperts.com/ ● Me or Related WIP: ● https://wiki.tizen.org/wiki/User:Pcoval ● https://dockr.eurogiciel.fr/blogs/embedded/author/pcl/
  • 36. 36 Thanks ● Tizen community : for the spirit ● Developers ● Reviewers / Maintainers ● Hackers ● Sponsorship : for helping to be there ● Linux Foundation ● Eurogiciel ● Tizen Association : for the project and TdcSf14 gifts ● Intel ● Samsung ● You : for caring of coop
  • 37. Q & A Ask me online <https://wiki.tizen.org/wiki/User:Pcoval>
  • 38. Open source development and integration : Several Maintainers for tizen.org Embedded systems for real-time multimedia: - Widi/Miracast stack, - Wayland/Weston, - Webkit2 browser with HW acceleration, Application: HTML5/CSS3, jquery, jqmobi, Cordova Location : Brittany - France