본문 바로가기

IT/Tizen

[Tizen] 타이젠 오픈소스 모두 내려받기

플랫폼의 특징을 기술하는,

추상화된 '멋진' 단어의 나열만으로는 플랫폼을 이해하기 힘들죠.


타이젠을 심도깊게 분석한 서적이 있으면,

당장 구매하여 보겠지만,

아직까지 그런 책이 나온 적은 없습니다.


그래서 결국 의지할 수 있는 것은 소스코드 뿐입니다.

마침 타이젠은 오픈소스이기 때문에,

공개된 소스를 다운로드 받아 살펴보죠.


안녕하세요, Tizen 개발자 윤진입니다.


타이젠의 소스는,

http://source.tizen.org에서 얻을 수 있습니다.


사이트에 가입 혹은 로그인 하지 않아도 소스코드를 볼 수 있습니다.

플랫폼을 개발하려면 막대한 자원이 필요할텐데,

아무런 조건없이 배포하고 있는 중입니다.



위에서,

SOURCE CODE 버튼을 누르세요.


아래처럼 ('15. 5. 17 기준) 3,507개의 git repository가 나옵니다.

갯수가 갯수이니만큼 로딩에 시간이 걸리네요.



특별히 살펴보고 싶은 repository가 있으면,

Ctrl-F로 찾아서 살펴보세요.


Tizen 오픈소스의 repository 이름은 디렉토리 구조를 따르고 있습니다.

예를 들면, adaptation/alsa-scenario-scm-data-o-base나 framework/web/webkit-efl처럼 디렉토리 구조를 가지지요.

따라서, 디렉토리 이름을 보면,

해당 repository의 성격을 어느 정도 유추할 수 있습니다.

3,507개의 repo.에는 총 19개의 카테고리가 있네요.

위의 그림에서 2~20번까지 임의로 나눈 카테고리에 모든 repo.가 분류될 수 있습니다.

2번 meta 카테고리의 경우,

분류가 애매한 repo.들을 몰아넣었습니다.


위의 분류를 보고 관심있는 git repo.를 받아볼 수 있도록 스크립트를 첨부합니다.

1. 첨부된 스크립트(우분투 기준)를 다운로드 받고,

get_tizen.sh

2. 스크립트에 실행권한을 주세요.

     # chmod +x get_tizen.sh

3. 그리고 실행을 합니다.

     # ./get_tizen.sh

그러면 아래와 같은 화면이 나옵니다.

관심가는 카테고리 번호를 입력합니다.

그러면, 현 위치(Working directory)에 "tizen"이라는 하위 디렉토리를 만든 후,

그곳에 카테고리에 해당하는 repo.를 다운로드 받습니다.


만약, 모든 소스에 관심이 있어서,

"1. all"을 선택한다면,

정말...

오랜 시간이 필요합니다.

이 글을 쓰기 시작하기 2시간 전에 이미 clone을 걸어놓고 있지만,

이제 겨우 1000개를 clone 받았습니다.


* 2015. 5.18 추가

"1. all"로 전체를 내려받으니 대략 24시간이 걸렸습니다.

컴퓨터 성능이 상당히 저사양이기도 하고 전송속도도 느렸기에 시간이 꽤나 소요되었죠.

총 3,097,632개 파일, 37.4 GB.


보통 git을 이용하여 clone을 하면,

디렉토리 구조의 이름 중 최하위 디렉토리 이름으로 디렉토리를 생성하여 소스를 다운로드 받습니다.

예를 들어, framework/web/webkit-efl repo.를 clone받으면,

"webkit-efl"이라는 디렉토리가 만들어져 소스가 다운로드됩니다.


하지만, 3,507개의 repo.중에는 최하위 디렉토리의 이름이 동일한 repo.가 많습니다.

그럴 경우, 서로 다른 repo.임에도 같은 디렉토리에 위치하게 되어 제대로 다운로드 받을 수 없습니다.

따라서, 스트립트에서는 디렉토리를 생성할 때, 디렉토리 이름을 통째로 사용하도록 만들었습니다.

다만 '/'를 '.'으로 변경하여 다운로드하게 하였습니다.

곧, framework/web/webkit-efl은 framework.web.webkit-efl 디렉토리에 다운로드됩니다.

이로써, 중복없이 3,507개의 repo.를 모두 다운로드 받을 수 있습니다.


clone을 하는 중에 이미 다운로드받은 repo.가 있으면,

굳이 clone을 다시 하지 않고, pull을 하도록 하였습니다.

다만, 이 경우에는 받고 싶은 코드의 branch를 사용자가 체크아웃 해줘야 제대로 동작합니다.

모든 repo.에 대해 동일한 branch를 보도록 수정하고자 하였으나,

최신 branch가 repo.마다 제각각이라서 이 부분은 스크립트 사용자에게 자유도를 부여합니다. :)


* 추신,

만약 첨부된 스크립트가 제대로 동작하지 않거나,

repo. 갱신으로 인하여 스크립트가 변경되어야 한다면 답글주세요.

가급적이면 빨리 수정하도록 하겠습니다.