21.09.06. chromium build 과정

Nayeon Kim·2021년 9월 6일
2

chromium

목록 보기
2/10

이미 크로미움 빌드를 한번 했었지만, 파일들 몇개를 잘못 건드렸는지 git commit 과정에서 잔오류가 많아 다 삭제하고 다시 빌드해보기로.
(첫 빌드때 13시간 걸림)

#공식 빌드 과정 설명
https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/windows_build_instructions.md

-1. 빌드에 필요한 환경 갖추기: chromium.orgs에서 권장하고 있는 System requirements에 따라 빌드할 컴퓨터 사양 확인.
i5 64bit windows10 사양의 삼성 북이온 노트북에 빌드를 해볼 것인데, 더 높은 사양이면 시간 많이 절약됨.

-2. visual studio(2017 or 2019.ver) 설치
컴퓨터에 이미 visual studio 2019가 깔려있어서 첫 빌드때는 신경을 안썼었는데, 찾아보니까
Desktop development with C++
MFC/ATL support
는 무조건 설치해야 한다고 함. MFC가 안 깔려 있는 상태여서 installer 이용해 따로 깔아줬음

-3. windows10 sdk(10.0.18362ver 이상) 설치
windows10.0.19041.685 버전 설치 후 debugging tool까지 설치
(제어판->프로그램->프로그램 및 기능->Windows Software Development Kit 우클릭 후 Change->Debugging Tools For Windows 체크 ->Change)

-4. depot_tools 설치
chromium.orgs에서 제공하는 depot_tools zip 다운로드 받고, 알맞은 경로에 압축 풀기
이때, chromium.orgs에서 경고하는 내용이 있는데 압축 풀때 드래그해서 옮기거나 복사 붙여넣기 하면 숨겨진 폴더가 추출이 안될 수 있다고 함!! 첫 빌드때 실수했던 부분일지도.
시스템 변수에 설치 경로 등록 시, 맨 위나 python 등보다 위에 있어야 하는데 지금 보니까 되게 아래쪽에 있었다.. 그래서 맨 위로 보내주었음

(환경변수 설정하는 방법: 제어판->시스템 및 보안->시스템->고급 시스템 설정->환경 변수 or 파일 탐색기->내 pc 우클릭->속성->고급 시스템 설정->환경 변수)

vs 설치 경로도 추가. 잘 설정됐는지 볼 때 set | find "vs" 입력.

C:\WINDOWS\system32>set vs2019_install = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

C:\WINDOWS\system32>set | find "vs"
vs2019_install = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community

gclient 입력해 필요한 도구들 설치

C:\WINDOWS\system32>gclient
Downloading CIPD client for windows-amd64 from https://chrome-infra-packages.appspot.com/client?platform=windows-amd64&version=git_revision:8e9b0c80860d00dfe951f7ea37d74e210d376c13...
WARNING: Your metrics.cfg file was invalid or nonexistent. A new one will be created.
Usage: gclient.py <command> [options]

WARNING 메시지를 보면, metrics 파일이 존재하지 않아서 새로 만들어준다고 함.-> ok

-5. 코드 받기
git 설정하고, chromium directory 생성해서 코드를 받는 과정
fetch chromium에 --no-history 붙이면 시간 많이 절약됨

C:\Windows\System32>git config --global user.name "Nayeon Kim"

C:\Windows\System32>git config --global user.email "skdus3373@gmail.com"

C:\Windows\System32>git config --global core.autocrlf false

C:\Windows\System32>git config --global core.filemode false

C:\Windows\System32>git config --global branch.autosetuprebase always

C:\Windows\System32>mkdir c:\chromium && cd c:\chromium

c:\chromium>fetch chromium

history가 쭉 뜨는데 시간과 코드 길이가 상당함(생략)

첫 빌드에서 또 빼먹은 과정이 있는데 visual studio community를 사용할 경우,
chromium/src에 있는 vs_toolchain.py 파일에서

os.path.expandvars('%ProgramFiles(x86)%' +
                         '/Microsoft Visual Studio/%s/Community' %
                         version_as_year),

부분을 os.environ.get('vs%s_install' % version_as_year),줄 아래로 옮겨줘야 한다고 한다.

-6. 빌드 셋팅
src로 디렉토리 변경 후, gn gen out/Default 입력해 빌드 위해 필요한 ninja 파일 생성

c:\chromium\src>gn gen out/Default
Done. Made 17234 targets from 2913 files in 27168ms

gen args 설정-> 명령어 입력 후 뜨는 메모장에
is_debug = true
is_component_build = true
blink_symbol_level = 0
입력, 저장 후 닫아줌

c:\chromium\src>gn args out/Default
Waiting for editor on "c:\chromium\src\out\Default\args.gn"...
Generating files...
Done. Made 17234 targets from 2913 files in 26456ms

-7. chrome 빌드
set NINJA_SUMMARIZE_BUILD=1 를 입력해 빌드 중에 어느 정도 진행됐는지 등의 추가적인 정보가 출력되도록 할 수 있고,
autoninja -C out\Default chrome 입력해 본격적으로 chrome을 빌드함

c:\chromium\src> autoninja -C out\Default chrome
"C:\src\depot_tools\ninja.exe" -C out\Default chrome -j 10 -d stats
ninja: Entering directory `out\Default'
[1 processes, 52201/52201 @ 1.3/s : 40555.748s ] STAMP obj/chrome/chrome.stamp
metric                  count   avg (us)        total (ms)
.ninja parse            6598    1751.1          11553.9
canonicalize str        2918240 0.0             14.1
canonicalize path       20981885        0.0             209.5
lookup node             18765452        0.5             9237.7
.ninja_log load         1       243.0           0.2
.ninja_deps load        1       101.0           0.1
node stat               345629  180.3           62307.2
depfile load            278     105.1           29.2
StartEdge               52202   29105.7         1519375.8
FinishCommand           52201   11400.4         595111.9
CLParser::Parse         36241   4624.9          167612.5

path->node hash load 0.50 (263050 entries / 524288 buckets)
    Longest build steps:
          11.5 weighted s to build obj/third_party/blink/renderer/bindings/modules/v8/v8/v8_window.o... (115.3 s elapsed time)
          11.8 weighted s to build obj/v8/v8_base_without_compiler/elements.obj (117.9 s elapsed time)
          11.9 weighted s to build gen/third_party/blink/public/mojom/ad_tagging/ad_evidence.mojom-f... (119.2 s elapsed time)
          13.7 weighted s to build gen/third_party/blink/public/mojom/ad_tagging/ad_evidence.mojom-b... (135.6 s elapsed time)
          15.3 weighted s to build obj/content/browser/browser/render_frame_host_impl.obj (152.5 s elapsed time)
          20.9 weighted s to build obj/third_party/libaom/libaom_nasm/sad4d_sse2.o (208.5 s elapsed time)
          32.0 weighted s to build content.dll, content.dll.lib, content.dll.pdb (33.4 s elapsed time)
          32.7 weighted s to build irt_x64/nacl_irt.nexe, irt_x64/exe.unstripped/nacl_irt.nexe (32.7 s elapsed time)
          59.5 weighted s to build gen/third_party/blink/renderer/bindings/core/v8/v8_address_space.... (588.8 s elapsed time)
         222.3 weighted s to build chrome.dll, chrome.dll.lib, chrome.dll.pdb (222.3 s elapsed time)
    Time by build-step type:
         339.0 s weighted time to generate 626 .mojom-blink-test-utils.obj files (3388.7 s elapsed time sum)
         361.4 s weighted time to generate 400 PEFile (linking) files (950.7 s elapsed time sum)
         491.0 s weighted time to generate 900 .mojom-test-utils.obj files (4907.1 s elapsed time sum)
         525.4 s weighted time to generate 1098 mojo files (5211.2 s elapsed time sum)
         563.4 s weighted time to generate 900 .mojom-shared.obj files (5629.5 s elapsed time sum)
         635.8 s weighted time to generate 476 .d.ts files (6315.2 s elapsed time sum)
         646.9 s weighted time to generate 1685 .o files (6420.0 s elapsed time sum)
         692.0 s weighted time to generate 626 .mojom-blink.obj files (6916.9 s elapsed time sum)
         894.9 s weighted time to generate 900 .mojom.obj files (8944.2 s elapsed time sum)
       34157.8 s weighted time to generate 31548 .obj files (341383.7 s elapsed time sum)
    40555.7 s weighted time (401992.7 s elapsed time sum, 9.9x parallelism)
    52201 build steps completed, average of 1.29/s

c:\chromium\src>

오후 2시에 빌드 시작했는데 지금 새벽 5시 돼서 마무리됐다
첫 빌드때보다 시간 단축이 전혀 없었던 것으로 보아 사양 문제가 큰듯,,

-8. 크롬 실행
마지막으로 out\Default\chrome 입력해 크롬 정상 작동까지 확인하면 끝!
이제 자자..

profile
Department of Computer Science

0개의 댓글