1 / 64

Development Environment and Tizen v2.3 Platform Build

Development Environment and Tizen v2.3 Platform Build. Contents. Tizen v2.3 Development Environment Tizen v2.3 Development Overview Installation Tizen Source Code Management Building Total Tizen v2.3 Platform Projects Building a Tizen v2.3 Platform Project Making Tizen v2.3 Platform Image.

cjansen
Download Presentation

Development Environment and Tizen v2.3 Platform Build

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Development Environmentand Tizen v2.3 Platform Build

  2. Contents • Tizen v2.3 Development Environment • Tizen v2.3 Development Overview • Installation • Tizen Source Code Management • Building Total Tizen v2.3 Platform Projects • Building a Tizen v2.3 Platform Project • Making Tizen v2.3 Platform Image

  3. 1. Tizen v2.3 Development Environment Tizen v2.3 Development Overview Installation Tizen v2.3 Source Code Management

  4. Tizen v2.3 Development Overview (1/2) • Hundreds of 'Open Source' Projects • Source code repository • Each project has its source code repository. • Developers can clone, edit and build its source code. • Git: source code management tool

  5. Tizen v2.3 Development Overview (2/2) • Centralized Source Code Management • Tizen source code is reviewed and submitted on centralized review server. • http://review.tizen.org • GBS(Git Build System): a tool for centralized source code management • All the repositories are managed on Tizen servers; Gerrit and OBS.

  6. Tizen v2.3 Development Workflow (1/3) • From local coding to final release

  7. Tizen v2.3 Development Workflow (2/3) • Local works by Developers • It will be covered in “Section 1-C. Tizen Source Code Management”. • Setting up Tizen development environment • Cloning the source code • Changing and verifying local source code through local build • Submit & Review • Submission: Developer submits patches to review server for stakeholders to review • Verification: Tizen backend service and reviewers verify the patches through testing process and then vote based on the quality of the patches. • Approval and Merge: Maintainers approve the patches and then merge code changes to the review server’s repository.

  8. Tizen v2.3 Development Workflow (3/3) • Release • Tizen backend service activates pre-release and normal release processes at the same time. • Submission on OBS: Maintainers/Developers submit packages to the OBS by using gbs submit command. • Pre-release: Tizen images that incorporates specific packages are created and submitted to release engineers to review. • Final review: Release engineers accept or reject submissions based on the quality of the packages. Accepted source code is merged into the OBS repository. • Release: the normal release process takes over and publishes repos together with Tizen images.

  9. SCM Tools (1/3): Git • A revision control and source management tool • Features • Free and open source(GNU GPL v2) • Smaller and faster than other SCM tools • Distributed • Branching and merging • Data assurance • Staging area • Git in Tizen • All source code repositories of Tizen packages are managed by git.

  10. SCM Tools (2/3): Repo • Repository management tool built on top of Git • Originally used in Android project • Used for managing many git repositories • Automate parts of development workflow • Repo in Tizen • Tizen platform is composed of the hundreds of projects. • Each projects are managed as a git repository. • Repo is used for managing Tizen platform repositories in batched manner. • ex. Cloning git repositories of entire Tizen platform packages

  11. SCM Tools (3/3): GBS • Git Build System • A developer command line tool that supports Tizen package development • Functions • Builds a repository or repositories and make package files(*.rpm) • Generates tarballs based on Git repositories • Does local test buildings • Submits source code to OBS(Tizen’s main build service)

  12. Centralized SCM System • Gerrit (review.tizen.org) • A Web-based code review system • OBS(Open Build System; build.tizen.org) • A distributed development platform that makes developers to easily release open source software for various Linux distributions on different hardware architectures.

  13. Packaging Tools: RPM and MIC • RPM(Red Hat Package Manager) • A tool to manage software packages • build, install, query, verify, update and erase software packages • RPM in Tizen • Each Tizen platform package is represented in *.rpm form and managed by RPM. • MIC(Moblin Image Creator) • A tool to create platform images to be flashed on target device’s storage • Requires: • Tizen platform packages (*.rpm) • Kickstart file: it defines how to make image of target device • Output: platform images(system.img, userdata.img, ums.img)

  14. 1. Tizen v2.3 Development Environment Tizen v2.3 Development Overview Installation Tizen v2.3 Source Code Management

  15. Tizen v2.3 Dev. Environment Install (1/10) • We will cover an environment based on Ubuntu. • Git: Install and Configuration • Install a git package. • $ sudo apt-get install git • Configure user information of git. • This information will be used for committer information. • $ git config --global user.name “Your name” • $ git config --global user.email email@address • ex. • $ git config --global user.name “Gyeonghwan Hong” • $ git config --global user.email redcarrottt@gmail.com

  16. Tizen v2.3 Dev. Environment Install (2/10) • Repo: Install and Configuration • Download repo. • $ sudo apt-get install curl • $ mkdir -p ~/bin • $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo • $ chmod +x ~/bin/repo • Add repo’s path to the basic path list. • Edit ~/.bashrc • $ gedit ~/.bashrc • After adding below code to the last line, restart your shell. ~/.bashrc PATH=~/bin:${PATH}

  17. Tizen v2.3 Dev. Environment Install (3/10) /etc/apt/sources.list • GBS, MIC: Install • Add Tizen development tool repository to APT repository list. • $ sudo gedit /etc/apt/sources.list • Add below code • Check your Ubuntu version. • $ cat /etc/issue deb http://download.tizen.org/tools/pre-release/Ubuntu_13.10 / • $ sudo apt-get update • Install packages of GBS, MIC. • $ sudo apt-get install gbs mic

  18. Tizen v2.3 Dev. Environment Install (4/10) • You should have an access right to review server for accessing Tizen source code. • Register a Tizen developer ID • Go to developer.tizen.org/ko. • You can log in Tizen review server (review.tizen.org).

  19. Tizen v2.3 Dev. Environment Install (5/10) • Review Server: Configuration • $ gedit ~/.ssh/config • Enter your Gerrit ID. Host tizen Hostname review.tizen.org IdentityFile ~/.ssh/id_rsa User GerritID Port 29418 Host review.tizen.org Hostname review.tizen.org IdentityFile ~/.ssh/id_rsa User GerritID Port 29418 ~/.ssh/config

  20. Tizen v2.3 Dev. Environment Install (6/10) • Review Server: Configuration (Cont’d) • Run “ssh-keygen” on a shell. • $ ssh-keygen • Press just enter about every question for using default values. • Finally, id_rsa, id_rsa.pub files will be created. • id_rsa: private key • id_rsa.pub: public key

  21. Tizen v2.3 Dev. Environment Install (7/10) • Review Server: Configuration (Cont’d) • After log in review.tizen.org, go to ‘settings’ menu. • Enter into “SSH Public Keys” menu →Press “Add Key …” button.

  22. Tizen v2.3 Dev. Environment Install (8/10) • Review Server: Configuration (Cont’d) • Display the contents of public key file. • $ cat ~/.ssh/id_rsa.pub • Copy the displayed text to below text box. Contents of ‘~/.ssh/id_rsa.pub’

  23. Tizen v2.3 Dev. Environment Install (9/10) • Review Server: Configuration (Cont’d) • Test ssh server connection • $ ssh tizen • $ ssh review.tizen.org • If the connection is successful, below message will be displayed.

  24. Tizen v2.3 Dev. Environment Install (10/10) • Make a GBS configuration file (~/.gbs.conf) • Without this file, Tizen source code cannot be built. • $ gedit ~/.gbs.conf • Check whether repo.tizen2.3 is vaild or not. Repository’s URL can be changed if new version of Tizen is released. [general] tmpdir=/var/tmp/ profile=profile.tizen2.3 [repo.tizen2.3] url=http://download.tizen.org/releases/2.3/2.3-mobile/tizen-2.3-mobile_20150311.3/repos/target/packages [profile.tizen2.3] repos=repo.tizen2.3

  25. 1. Tizen v2.3 Development Environment Tizen v2.3 Development Overview Installation Tizen v2.3 Source Code Management

  26. Tizen v2.3 Local Work Flow • All Process before submission • Git: manages source code versions • GBS: builds source code of git repository → makes package file(RPM) • Install package file on target board

  27. Git: Key Concepts • Working directory • Source code in work • “add” command: adds files/directories to staging area • Staging area(index) • Source code to be committed • “commit” command: makes a new version in repository • Repository(HEAD) • Source code already committed • Files or directories are stored as content-addressable objects identifiable by hash value(SHA-1).

  28. Version Management (1/2) • Add a source code, ‘hello.cpp’ • Add hello.c to staging area • $ git add hello.c • Make a new version • $ git commit -m “commit message” • Add all of the source code • Add all of the source code • $ git add --all • Make a new version • $ git commit -m “commit message” • Display staging area’s status • $ git status

  29. Version Management (2/2) • Display the commit log • $ git log • Each commit’s hash value, author information, date, message commit 783c82ff64eda9f03401834de906eca77d01f691 Author: Gyeonghwan Hong <redcarrottt@gmail.com> Date: Mon Sep 22 10:37:44 2014 +0900 2nd version commit: hello.c is added commit 712943bb31bf85430e1a027abe197e5b88a26110 Author: Gyeonghwan Hong <redcarrottt@gmail.com> Date: Thu Aug 28 12:08:17 2014 +0900 1st version commit: hello.h is added • Return to a previous version • $ git checkout <commit’s hash value> • ex. Return to “1st version commit”$ git checkout 712943bb31bf85430e1a027abe197e5b88a26110

  30. Local & Remote Repository (1/2) • “Commit” • Make a new version on local repository • “Push” • Upload commits in local repository to remote repository • “Pull” • Download commits in remote repository to local repository

  31. Local & Remote Repository (2/2) • Upload to remote repository • $ git push <remote name> <remote branch> • ex. $ git push origin master • Download from remote repository • $ git pull <remote name> <remote branch> • ex. $ git pull origin master

  32. Branch Management (1/3) • Check the branch list of localrepository • $ git branch --list • Check the branch list of remote repository • $ git branch --remote * master feature_x • Move to another branch • $ git checkout <branch name> • ex. $ git checkout feature_x • You should commit all the local change before checkout. If not, it makes an error. • If you want to checkout without making a new commit, use flag “-f”. • $ git checkout -f <branch name>

  33. Branch Management (2/3) • Develop a new feature by making a new branch • Make a new branch ‘feature_x’ • $ git branch feature_x • Checkout to the new branch • $ git branch feature_x • Edit and commit source code • Merge the ‘feature_x’ branch to original branch • $ git checkout master • $ git merge feature_x

  34. Branch Management (3/3) • Conflict • When merging feature_y branch to master branch, ‘hello.h’ in version 2-x and 2-y have different changes each other. • This situation is called as ‘conflict’. • The conflict should be resolved by ‘conflict resolution’ process. • $ git mergetool • http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

  35. 2. Building Total Tizen v2.3 Platform Projects

  36. Cloning Total Source Code of Tizen • Make and move to Tizen source code directory • $ mkdir tizen-platform; cd tizen-platform • Set the path of download server. • $ repo init -u https://github.com/SKKU-ESLAB-Tizen/tizen-manifest-2.3-mobile • Clone source code(Using 8 threads) • $ repo sync -j8

  37. Edit GBS Configuration • No download server URL in GBSconfiguration file. • $ gedit ~/tizen-platform/.gbs.conf [general] tmpdir=/var/tmp/ profile=profile.tizen2.3 work_dir=/home/user [repo.tizen2.3.mobile] url=http://download.tizen.org/releases/2.3/2.3-mobile/tizen-2.3-mobile_20150206.1/repos/target/packages [profile.tizen2.3] repos=repo.tizen2.3.mobile

  38. Building Total Platform Packages • Make a build script (build.sh) • $ gedit build.sh ~/tizen-platform/build.sh #!/bin/bash # The list of packages to be excluded, # in order to prevent package dependency problem and reduce build time. export skip_pkgs="bash,bzip2-libs,c-ares,cmake,coreutils,diffutils,eglibc,elfutils-libelf,elfutils-libs,elfutils,fdupes,file,findutils,gawk,gmp,libacl,libattr,libcap,libcurl,libfile,libgcc,liblua,libstdc++,make,mpc,mpfr,ncurses-libs,nodejs,nspr,nss-softokn-freebl,nss,openssl,patch,popt,rpm-libs,rpm-build,sed,sqlite,tar,xz-libs,binutils,gcc,filesystem,aul,libmm-sound,libtool,syspopup,notification,libva,libzypp-bindings,rpm,web-ui-fw,python-doc,rpm,perl“ gbs build -A armv7l --threads=8 --clean-once --include-all --exclude=${skip_pkgs} • $ sudochmod +x build.sh • Run the build script • $ ./build.sh

  39. 3. Building a Tizen v2.3 Platform Project

  40. Tizen v2.3 Platform Project Build Process (1/2) • Assume that Tizen v2.3 is running on target board • Example: build and install package A

  41. Tizen v2.3 Platform Project Build Process (2/2) • Clone the Source Code of a Tizen Project • Download source code of a Tizen project from Tizen review server. • Build the Tizen Project • Build the source code of the project with GBS, and make package files(*.rpm). • Install the Packages • Install the package files(*.rpm) to the target board with SDB.

  42. Required Files in Repository (1/2) • Tizen v2.3 projectrepository requires following files • Red files are required at least. • AUTHORS: Author list • LICENSE: License information • CMakeLists.txt: cmake configuration file about this directory’s build • <project-name>.manifest: SMACK manifest file • packaging • <project-name>.manifest: SMACK manifest file • <project-name>.spec: RPM package specification file • <sub-directory 1> • CMakeLists.txt • include • Header files • src • Source code files • <sub-directory 2>, <sub-directory 3>, …

  43. Required Files in Repository (2/2) • ex. Remote Key Framework Service Project(Link) • AUTHORS: Author list • LICENSE: License information • CMakeLists.txt: cmake configuration file about this directory’s build • remote-key-framework.manifest: SMACK manifest file • packaging • remote-key-framework.manifest: SMACK manifest file • remote-key-framework.spec: RPM package specification file • remote-key-framework.service: systemd service configuration file • server • CMakeLists.txt • include • common.h: Common header file • src • main.cpp: Main source code • common.cpp: Source code of dlog connector

  44. Clone the Source Code of Tizen v2.3 Project (1/2) • Log in Tizen review server (review.tizen.org) • Enter into “Projects” → “List” • Find a repository that you want to clone • Caution: Packages in Tizen 2.3 and 3.0 are managed in different way, so multiple packages will be displayed on the result. • Clone the repository • $ git clone ssh://username@review.tizen.org:29418/project-name

  45. Clone the Source Code of Tizen v2.3 Project (2/2) • Tizenproject source code has several branches by release version. • Check branches • $ git branch --remote • ex. origin/1.0_post origin/2.0alpha origin/HEAD -> origin/master origin/master origin/tizen_2.0 origin/tizen_2.1 origin/tizen_2.2 origin/tizen_2.3 • Change branch to target release version • $ git checkout <target branch> • ex. git checkout origin/tizen_2.3

  46. Build the Tizen v2.3 Project (1/3) • Build the most recent version in Git repository • In default, GBS builds the source code of most recent version. • Move to the directory of repository. • $ gbs build -A armv7l • -A <architecture type>: i586, x86_64, armv7l

  47. Build the Tizen v2.3 Project (2/3) • Build the working directory • Use it in the case of building the source code in work. • Move to the directory of repository. • $ gbs build -A armv7l --include-all • --include-all: option for building working directory

  48. Build the Tizen v2.3 Project (3/3) • GBS downloads dependent packages from Tizen download server on demand. • ex. wrt(Web Runtime) package depends on ewebkit2(WebKitEFL) package, so ewebkit2 is downloaded when building wrt. • Other GBS Options • --threads <# of threads>: the number of build threads • --clean: initializes the GBS build root • --exclude=<packages>: the list of packages to be excluded • Build Result(Package Files; *.rpm) • The name of package file is dependent on the project’s RPM spec. • Typically package file is named as ‘package_name-version.arch.rpm’. • ex. remote-key-framework-1.2.1.armv7l.rpm • Located in: ~/GBS-ROOT/local/repos/tizen2.3/armv7l/RPMS/

  49. Install the Packages (1/2) • Install package files(*.rpm) on target board • Send package files to target board through SDB • Install the packages by RPM tool

  50. Install the Packages (2/2) • Connect to ODROID-U3via USB • How to check connection: $ sdb devices • Caution: If you are using VMWare, check the connection of ‘removable device’ • Enter to SDB root mode • $ sdb root on • Send package file to target board through SDB • $ sdb push <package file> / • Install the package • $ sdb shell rpm -ivh --nodeps --force <package file> • Reboot your target board • $ sdb shell sync; sdb shell reboot -f

More Related