피드로 돌아가기
Hacker NewsDevOps
원문 읽기
buildcache Lua 플러그인 도입으로 Firefox 빌드 시간 17% 단축
How to make Firefox builds 17% faster
AI 요약
Context
Firefox 빌드 과정 중 WebIDL binding 코드 생성 단계가 매 clobber build마다 반복 실행되는 구조. 해당 단계는 입력값에 따라 출력이 결정되는 Deterministic 특성을 가지나, 기존 Compiler Cache가 Python 기반 Codegen 과정을 처리하지 못하는 한계 존재.
Technical Solution
- buildcache의 Lua plugin system을 활용하여 컴파일러 외 임의 명령어를 캐싱하는 Custom Wrapper 설계
py_action매크로에 Command Wrapper 인자를 추가하여buildcache python3 ...형태로 실행 경로 변경webidl.lua플러그인을 통해file-lists.json및codegen.json기반의 Input/Output 파일 매핑 정의- Preprocessed output 대신 입력 파일을 직접 해싱하는
direct_mode를 적용하여 Python 스크립트 실행 최적화 MOZ_USING_BUILDCACHE가드를 통해 ccache, sccache와 차별화된 buildcache 전용 캐싱 경로 확보
Impact
- Warm build 기준 전체 빌드 시간을 1분 27초에서 1분 12초로 약 15초 추가 단축
- Cold build(5분 35초) 대비 캐시 적용 후 최종 빌드 시간 약 76% 감소 달성
Key Takeaway
빌드 파이프라인의 병목이 컴파일러가 아닌 Deterministic한 스크립트 단계에 있을 경우, 범용 명령어를 가로챌 수 있는 Wrapper 기반의 캐싱 레이어 설계가 유효함.
실천 포인트
- 빌드 프로세스 내 Deterministic하지만 반복 실행되는 Non-compiler 단계 식별 - 단순 파일 기반 캐싱을 넘어 Input/Output 의존성을 정밀하게 정의하는 Lua/Python 기반 Wrapper 도입 검토 - 대용량 바이너리 생성 시 `max_local_entry_size` 등 캐시 엔트리 크기 제약 사항 확인