Fuchsia build 해보기

Linux : 2019.07.01 10:46

https://fuchsia.googlesource.com/fuchsia/+/master/docs/development/source_code/README.md

 

Fuchsia - Fuchsia Source

Fuchsia Source Fuchsia uses the jiri tool to manage git repositories https://fuchsia.googlesource.com/jiri. This tool manages a set of repositories specified by a manifest. See Source code layout for an overview of how the code is organized. For how to bui

fuchsia.googlesource.com

여기 있는대로 해본다.

 

우선 https://fuchsia.googlesource.com/ 에 가서 로그인 한다.

자신의 google 계정으로 로그인 한다.

 

 

로그인 한 뒤에 상단에 보이는 

 

Generate Password 를 클릭하면 계정선택하는게 나오고

자기 계정을 고르면

소스를 받을 수 있도록 설정하는 script 가 나온다.

 

그대로 긁어다가 스크립트로 만들어서 실행한다.

 

~/.gitcookies 를 설정하게 된다.

 

 

그다음 fuchsia 를 다운 받는다. zircon 이라는 lk 기반의 마이크로 커널을 사용한다.

 

fuchsia 에 zircon 이 포함되어 있으니 fuchsia 를 받으면 되겠다. zircon 만 받아보려고 했는데 잘 안됐다.

 

설명에는 이렇게 하면 된다고 했는데 안되네..

$ git clone https://fuchsia.googlesource.com/zircon
'zircon'에 복제합니다...
연결을 확인하는 중입니다... 완료.
warning: 리모트 HEAD가 없는 레퍼런스를 참고하므로, 체크아웃할 수 없습니다.

 

그리고 아직까지는 지원하는 architecture 가 ... AMD도 적극 지원하지 않는다고 한다.

 

arm64, x86-64 .. 64bit 만 되나보다.

Fuchsia supports two ISAs: arm64 and x86-64.

 

인텔은 broadwell 이후것만 지원한다고 한다.

 

 

일단 fuchsia 를 받으려면

 

$ curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash


~/hoho4/fuchsia/fuchsia/.jiri_root/bin ~/hoho4/fuchsia
cipd bootstrapped to path:"/home/lionelj/hoho4/fuchsia/fuchsia/.jiri_root/bin/cipd"
~/hoho4/fuchsia
Please add /home/lionelj/hoho4/fuchsia/fuchsia/.jiri_root/bin to your PATH
WARN: Please opt in or out of analytics collection. You will receive this warning until an option is selected.
To check what data we collect run 'jiri init -show-analytics-data'
To opt-in run 'jiri init -analytics-opt=true "/home/lionelj/hoho4/fuchsia/fuchsia"'
To opt-out run 'jiri init -analytics-opt=false "/home/lionelj/hoho4/fuchsia/fuchsia"'

WARN: Please opt in or out of analytics collection. You will receive this warning until an option is selected.
To check what data we collect run 'jiri init -show-analytics-data'
To opt-in run 'jiri init -analytics-opt=true "/home/lionelj/hoho4/fuchsia/fuchsia"'
To opt-out run 'jiri init -analytics-opt=false "/home/lionelj/hoho4/fuchsia/fuchsia"'

WARN: Please opt in or out of analytics collection. You will receive this warning until an option is selected.
To check what data we collect run 'jiri init -show-analytics-data'
To opt-in run 'jiri init -analytics-opt=true "/home/lionelj/hoho4/fuchsia/fuchsia"'
To opt-out run 'jiri init -analytics-opt=false "/home/lionelj/hoho4/fuchsia/fuchsia"'

Updating all projects
WARN: Some packages are skipped by cipd due to lack of access, you might want to run "cipd auth-login" and try again
Done creating a Platform Source Tree at "/home/lionelj/hoho4/fuchsia/fuchsia".
Recommended: export PATH="/home/lionelj/hoho4/fuchsia/fuchsia/.jiri_root/bin:$PATH"

 

 

fuchsia 는 저장소 관리를 jiri 라는걸 쓴다고 한다.

 

export PATH="/home/lionelj/hoho4/fuchsia/fuchsia/.jiri_root/bin:$PATH" 이걸 해주라고 안내가 나온다.

 

그리고 안내대로 분석툴 같은걸 opt in 해주라고 한다.

To check what data we collect run 'jiri init -show-analytics-data'
To opt-in run 'jiri init -analytics-opt=true "/home/lionelj/hoho4/fuchsia/fuchsia"'
To opt-out run 'jiri init -analytics-opt=false "/home/lionelj/hoho4/fuchsia/fuchsia"'

 

껏다 켰다 하고 데이터 보고 그런것 같다.

 

curl 명령이 실행되고나면 

fuchsia 디렉토리에 아래와 같이 다운 받아진다.

 

합계 172K
drwxr-xr-x 24 lionelj lionelj 4.0K  7월  1 10:10 .
drwxrwxr-x  4 lionelj lionelj 4.0K  7월  1 10:02 ..
drwxrwxr-x  4 lionelj lionelj 4.0K  7월  1 10:10 .cipd
-rw-rw-r--  1 lionelj lionelj  596  7월  1 10:03 .clang-format
-rw-rw-r--  1 lionelj lionelj 1.8K  7월  1 10:03 .clang-tidy
-rw-rw-r--  1 lionelj lionelj  276  7월  1 10:03 .dir-locals.el
drwxrwxr-x  9 lionelj lionelj 4.0K  7월  1 10:06 .git
-rw-rw-r--  1 lionelj lionelj  193  7월  1 10:03 .gitattributes
-rw-rw-r--  1 lionelj lionelj 1.2K  7월  1 10:03 .gitignore
-rw-rw-r--  1 lionelj lionelj 1.4K  7월  1 10:03 .gn
-rw-r--r--  1 lionelj lionelj  262  7월  1 10:03 .jiri_manifest
drwxrwxr-x  4 lionelj lionelj 4.0K  7월  1 10:12 .jiri_root
drwxrwxr-x  2 lionelj lionelj 4.0K  7월  1 10:10 .ssh
-rw-rw-r--  1 lionelj lionelj  282  7월  1 10:03 AUTHORS
-rw-rw-r--  1 lionelj lionelj 8.8K  7월  1 10:03 BUILD.gn
-rw-rw-r--  1 lionelj lionelj 3.8K  7월  1 10:03 CODE_OF_CONDUCT.md
-rw-rw-r--  1 lionelj lionelj 6.4K  7월  1 10:03 CONTRIBUTING.md
-rw-rw-r--  1 lionelj lionelj 1.5K  7월  1 10:03 LICENSE
-rw-rw-r--  1 lionelj lionelj 1.5K  7월  1 10:03 OWNERS
-rw-rw-r--  1 lionelj lionelj 1.3K  7월  1 10:03 PATENTS
-rw-rw-r--  1 lionelj lionelj  504  7월  1 10:03 README.md
drwxrwxr-x  2 lionelj lionelj 4.0K  7월  1 10:03 boards
drwxrwxr-x 30 lionelj lionelj 4.0K  7월  1 10:10 build
drwxrwxr-x  5 lionelj lionelj 4.0K  7월  1 10:10 buildtools
drwxrwxr-x  3 lionelj lionelj 4.0K  7월  1 10:03 bundles
drwxrwxr-x  7 lionelj lionelj 4.0K  7월  1 10:03 docs
drwxrwxr-x 14 lionelj lionelj 4.0K  7월  1 10:03 examples
drwxrwxr-x 17 lionelj lionelj 4.0K  7월  1 10:03 garnet
drwxr-xr-x  9 lionelj lionelj 4.0K  7월  1 10:03 integration
drwxrwxr-x 15 lionelj lionelj 4.0K  7월  1 10:03 peridot
drwxrwxr-x  7 lionelj lionelj 4.0K  7월  1 10:10 prebuilt
drwxrwxr-x  2 lionelj lionelj 4.0K  7월  1 10:03 products
-rw-rw-r--  1 lionelj lionelj  451  7월  1 10:03 rustfmt.toml
drwxrwxr-x 21 lionelj lionelj 4.0K  7월  1 10:03 scripts
drwxrwxr-x 10 lionelj lionelj 4.0K  7월  1 10:03 sdk
drwxrwxr-x 24 lionelj lionelj 4.0K  7월  1 10:03 src
drwxrwxr-x 72 lionelj lionelj 4.0K  7월  1 10:04 third_party
drwxrwxr-x  9 lionelj lionelj 4.0K  7월  1 10:03 tools
drwxr-xr-x 18 lionelj lionelj 4.0K  7월  1 10:10 topaz
drwxrwxr-x 10 lionelj lionelj 4.0K  7월  1 10:03 zircon

 

기본으로 HEAD 저장소를 track 하고 있는데 다른 저장소로 바꾸려면

 

fx set-peral 이라는 명령을 쓰면 된다고 한다.

 

--환경 설정

 

일단 받으면 아까 나온대로 jiri path 를 잡아준다.

export PATH="/home/lionelj/hoho4/fuchsia/fuchsia/.jiri_root/bin:$PATH"

 

PATH를 잡아주면 fx 명령도 가능해진다.

 

$ fx set-petal
WARNING: Please opt in or out of fx metrics collection.
You will receive this warning until an option is selected.
To check what data we collect, run `fx metrics`
To opt in or out, run `fx metrics <enable|disable>

usage: fx set-petal fuchsia|topaz
Configures jiri to fetch the source code for the given petal and its
dependencies.

 

.jiri_root/bin 이 fx 라고 한다.

 

build 는 이렇게. 하면 된다고 한다.

 

fx set core.x64 --with //bundles:kitchen_sink

fx build

 

기본이 x64 build 인데 다른거로 설정하고 싶으면 이런 옵션들도 있다고 한다. fx set 명령을 쓰라고 한다.

 

fx set workstation.x64 # x64 debug build

fx set core.arm64 # arm64 debug build

fx set core.x64 --release # x64 release build

 

build 가속을 하고 싶으면 ccache와 goma 를 쓰라고 한다.

ccache 는 CCACHE_DIR 환경변수가 있으면 자동 참조 되어 활성화 된다고 한다. goma는 깔아서 쓰라고 한다.

 

--ccache # force use of ccache even if goma is available

--no-ccache # disable use of ccache

--no-goma # disable use of goma

 

이런 식으로 해주면 된다.

$ fx set core.x64  --ccache
Generating compile_commands took 661ms
Done. Made 27951 targets from 2255 files in 14747ms

 

이런 명령도 있고

Run "fx list-products" to see the available products.
Run "fx list-boards" to see the available boards.
Run "fx set --help" to see full usage.

 

$ fx list-products
*
bringup
core
router
speaker
terminal
workstation

 

$ fx list-boards
*
arm64
chromebook-x64
cleo
hikey960
kirin970
msm8x53-som
mt8167s_ref
qemu-arm64
qemu-x64
toulouse
vim2
x64

 

 

아무튼 

 

$ fx set core.x64 --with //bundles:kitchen_sink
WARNING: Please opt in or out of fx metrics collection.
You will receive this warning until an option is selected.
To check what data we collect, run `fx metrics`
To opt in or out, run `fx metrics <enable|disable>

Generating compile_commands took 329ms
Done. Made 27951 targets from 2255 files in 15250ms

 

$ fx build

 

build 하다가 

fatal: unknown date format unix

 

이런 메세지가 나오면서 죽는다.

 

git 버전이 구형이라 그렇다.

./build/info/gen-latest-commit-date.sh 에 아래와 같은 부분이 있는데 date 에 unix 가 없어서 그렇다.

GIT_CONFIG_NOSYSTEM=1 TZ=UTC git --git-dir="$INTEGRATION"/.git log --date=unix --format=%cd -n 1 > "$UNIX_OUTPUT"

 

이렇게 새버전 git 을 깔아준다.

 

$ sudo apt-get install git
$ sudo add-apt-repository ppa:git-core/ppa 
$ sudo apt update; sudo apt install git

 

그리고 다시 fx build

 

이번에 또다른 에러메세지 발생

 

 

[11/53259] ACTION //build/info:build-info.manifest(//build/toolchain/fuchsia:x64)
ninja: build stopped: subcommand failed.

 

아 짜증

 

ccache 를 안쓰면 이런 메세지가 나오는것 같다.

ccache 를 깔고

$sudo apt-get install ccache 

 

CCACHE_DIR 환경변수를 맞춰준 후

 

아래 명령으로 ccache 를 켜준다.

$ fx set core.x64  --ccache 

 

다시 fx build

 

 

 

Posted by Real_G