Fuchsia build 해보기
https://fuchsia.googlesource.com/fuchsia/+/master/docs/development/source_code/README.md
여기 있는대로 해본다.
우선 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
'Linux' 카테고리의 다른 글
ubuntu bluetooth (0) | 2019.09.18 |
---|---|
Yocto Project / post install / useful default values (기본환경변수) / version check (0) | 2019.06.26 |
make (0) | 2019.06.21 |