레이블이 chromium인 게시물을 표시합니다. 모든 게시물 표시
레이블이 chromium인 게시물을 표시합니다. 모든 게시물 표시

chrome hosts 설정 적용

# 임시로 도메인을 변경해 테스할때 /etc/hosts 수정하게 되는데
# chrome 브라우저에서는 변경한 도메인을 사용하지 않는 경우가 있다.
# /etc/hosts 에 잘못된 ip 로 도메인 설정해서 적용 여부를 확인
10.10.10.10    www.google.com

# curl 로 연결이 안되는 것을 확인한다.
curl --connect-timeout 1 www.google.com
curl: (28) Connection timed out after 1001 milliseconds

# chrome 에서 www.google.com 열면 잘 된다.(로컬 도메인이 설정 적용 안됨.)
# 해결방법1
# safari, firefox 들도 모두 프로세스를 끝내고 다시 시작하면 된다.
# chrome 프로세스를 끝내고 다시 시작한다.

# 해결방법2
chrome://net-internals/#sockets  --> flush socket pools 실행

chromium 커밋하기

# 우선 크롬 소스 다운로드 받고 빌드에 이상이 없는 환경이어야 한다.
# chromium mac build 포스트 참고
https://yoonbh2714.blogspot.kr/2018/03/chromium-mac-build_79.html
# depot_tools 를 사용할 수 있도록 path 등록
export PATH="$PATH:${HOME}/workspace/depot_tools"

# 커밋 설명
https://www.chromium.org/developers/contributing-code

# 로컬 브랜치 생성
git checkout -b ysoftman -t origin/master

# git config 설정
# 특이하게 gerrit 이라는 리뷰툴을 사용한다.
git config --global user.name "ysoftman"
git config --global user.email "ysoftman@gmail.com"
git config --global core.autocrlf false
git config --global core.filemode false
git config --global branch.autosetuprebase always
git config --local gerrit.host true

# chromium 에 처음으로 커밋한다면 AUTHORS 파일에 명시해야 한다.
# 커밋 설명 'legal stuff' 부분 참고
# 우선 개인 또는 기업으로 라이센스 동의서를 작성해야 한다.
# 개인(Individual Contributor License Agreement)
https://cla.developers.google.com/about/google-individual?csw=1
# 기업
https://cla.developers.google.com/about/google-corporate?csw=1
# 해당 포맷(Name <email address>)을 알파벳순서에 맞게 추가한다.
cd ~/workspace/chromium/src && vi AUTHORS

# upload (push) 하기
git cl upload

# 커밋 메시지는 다음과 같은 형식으로 작성한다.
Summary of change
Longer description of change addressing as appropriate: why the change is made,
context if it is part of many changes, description of previous behavior and
newly introduced differences, etc.
Long lines should be wrapped to 80 columns for easier log message viewing in
terminals.
Bug: 123456

# gerrit 에서 커밋에 대한 reviewer 지정하고 리뷰 시작 버튼을 클릭한다.
# 참고로 dry run(모의 테스트)는 committer만 실행할 수 있고 그냥 두면 된다.
# 예시 https://chromium-review.googlesource.com/c/chromium/src/+/1025544

# reviewers 로부터 accept 가 되지 않는 경우
# 소스 수정이 필요한경우 우선 master 의 최신 내용을 pull 해 온다.
# 위에서 브랜치 생성시(checkout) master 브랜치를 트래킹(-t)하고 있기 때문에 master 브랜치가 pull 된다.
git pull

# 이제 소스 수정...
# 커밋
git ci -a

# 푸시
git cl upload

# merged 가 되면 chrome release 에서 명시된 버전별 change log 에서
# 커밋을 검색해 현재 어떤 채널과 버전을 파악할 수 있다.
# 위 예시 커밋은 68.0.3432.3 버전에 포함되어 있고 현재 dev 채널이다.
https://chromium.googlesource.com/chromium/src/+log/68.0.3423.2..68.0.3432.3?pretty=fuller&n=10000

# 크롬 버전 릴리즈 현황 파악
https://chromereleases.googleblog.com/

# major 버전업은 6주마다 적용되니 우선 dev 버전을 받아 미리 확인해볼 수 있다.
https://www.chromium.org/getting-involved/dev-channel

chromium mac build

# 참고
# chromium mac build 설명 https://chromium.googlesource.com/chromium/src/+/lkcr/docs/mac_build_instructions.md

# gn(ninja generator) 사용법 https://chromium.googlesource.com/chromium/src/+/lkcr/tools/gn/docs/quick_start.md

# ccache(compiler cache) 사용법 https://chromium.googlesource.com/chromium/src/+/lkcr/docs/ccache_mac.md

# 아래 명령으로 OS X SDK 10.12 버전 이상의 디렉토리가 존재하는지 확인해보고,
# 없으면 앱스토어에서 최신 Xcode 앱을 설치한다.
ls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKs

# 작업 시작 위치
mkdir -p ${HOME}/workspace/
cd ${HOME}/workspace/

# chromium 소스를 다운로드 및 빌드를 위해서는 depot_tools 가 필요하다.
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

# chromium 다운로드 및 빌드에 depot_tools 명령들이 필요하기 때문에 PATH 환경변수에 설정되어 있어야 한다.
export PATH="$PATH:${HOME}/workspace/depot_tools"

# chromium 디렉토리 만들고 다운로드 받기
mkdir chromium && cd chromium

# 맥에서 한글 파일명을 제대로 인식하지 못하는등이 문제가 있어 유니코드 파일명로 처리하도록 git 환경 설정
git config --global core.precomposeUnicode true

# depot_tools/fetch 로 chromium 다운로드
# 소스가 커서 다운로드가 시간이 오래걸리기 때문에 --no-history 로 필요없는 히스토리데이터는 제외시키자.
fetch --no-history chromium

# fetch 는 새로 checkout 받을때만 사용하고 소스를 업데이트할 경우
gclient sync

# src 로 이동해서 depot_tools/gn 을 이용하여 out/default 에 ninja 구동환경을 만든다.
cd src
gn gen out/default

# 빌드 속도를 높이기위해 다음으로 args 를 수정할 수 있다.
gn args out/default

# 다음 내용을 추가 후 저장
is_debug = false
is_component_build = true
symbol_level = 0

# ccache 로 변경없는 컴파일 오브젝트를 캐싱하여 재빌드 속도를 높일 수 있다.
# ccache 를 설치하기 위해선 asciidoc autoconf gperf xsltproc(libxslt) zlib 가 설치되어 있어야 한다.
brew install asciidoc autoconf gperf libxslt zlib ccache

# ccache 환경변수 설정
export CCACHE_CPP2=yes
export CCACHE_SLOPPINESS=time_macros

# chromium/src 위치에서
export PATH=`pwd`/third_party/llvm-build/Release+Asserts/bin:$PATH

# ccache 인자를 추가하여 다시 생성
gn gen out-gn --args='cc_wrapper="ccache"'

# ninja 가 없다면 설치
brew info ninja

# ninja 로 빌드(시간이 아주 오래걸린다.ㅠ)
ninja -C out/default chrome

# chromium 실행
out/default/Chromium.app/Contents/MacOS/Chromium