BazelCon 2022는 11월 16~17일에 뉴욕과 온라인에서 개최됩니다.
지금 등록하기

소스에서 Bazel 컴파일

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 페이지에서는 소스에서 Bazel을 설치하는 방법을 설명하고 일반적인 문제에 대한 문제 해결 팁을 제공합니다.

소스에서 Bazel을 빌드하려면 다음 중 하나를 수행하면 됩니다.

Bazel을 사용하여 Bazel 빌드하기

요약

  1. GitHub 출시 페이지 또는 Bazelisk에서 최신 Bazel 출시 버전을 가져옵니다.

  2. GitHub에서 Bazel 소스를 다운로드하고 다른 곳에서 추출하세요. 또는 https://github.com/bazelbuild/bazel에서 소스 트리를 git 클론할 수 있습니다.

  3. 부트스트랩과 동일한 기본 요건을 설치합니다 (UNIX와 유사한 시스템 또는 Windows 참고).

  4. Bazel을 사용하여 Bazel의 개발 빌드 빌드: bazel build //src:bazel-dev (또는 Windows의 경우 bazel build //src:bazel-dev.exe)

  5. 결과 바이너리는 bazel-bin/src/bazel-dev(또는 Windows에서는 bazel-bin\src\bazel-dev.exe)에 있습니다. 원하는 곳에 복사하고 추가 설치 없이 즉시 사용할 수 있습니다.

자세한 안내는 다음과 같습니다.

1단계: 최신 Bazel 출시 버전 가져오기

목표: Bazel의 출시 버전을 설치하거나 다운로드합니다. 터미널에 bazel를 입력하여 실행할 수 있는지 확인합니다.

이유: GitHub 소스 트리에서 Bazel을 빌드하려면 기존 Bazel 바이너리가 필요합니다. 패키지 관리자에서 설치하거나 GitHub에서 다운로드할 수 있습니다. Bazel 설치를 참조하세요. (또는 처음부터 빌드 (부트스트랩)할 수 있습니다.)

문제해결:

  • 터미널에 bazel를 입력하여 Bazel을 실행할 수 없는 경우:

    • Bazel 바이너리 디렉터리가 PATH에 없을 수 있습니다.

      이는 큰 문제가 아닙니다. bazel를 입력하는 대신 전체 경로를 입력해야 합니다.

    • Bazel 바이너리 자체가 bazel(UNIX) 또는 bazel.exe(Windows)가 아닐 수도 있습니다.

      이는 큰 문제가 아닙니다. 바이너리의 이름을 변경하거나 bazel 대신 바이너리 이름을 입력할 수 있습니다.

    • Unix에서 바이너리가 실행 불가능할 수 있습니다.

      chmod +x /path/to/bazel를 실행하여 바이너리를 실행 가능하게 만들어야 합니다.

2단계: GitHub에서 Bazel 소스 다운로드

Git에 익숙하다면 git clone https://github.com/bazelbuild/bazel을 사용하면 됩니다.

그 이외의 경우

  1. 최신 소스를 ZIP 파일로 다운로드합니다.

  2. 어딘가에 있는 콘텐츠를 추출합니다.

    예를 들어 홈 디렉터리 아래에 bazel-src 디렉터리를 만들고 압축을 풉니다.

3단계: 기본 요건 설치

부트스트랩과 동일한 기본 요건을 설치합니다 (아래 참고). JDK, C++ 컴파일러, MSYS2 (Windows에서 빌드하는 경우) 등.

4a단계: Ubuntu Linux, macOS, 기타 Unix 계열 시스템에서 Bazel 빌드

Windows의 경우 Windows에서 Bazel 빌드를 참조하세요.

목표: Bazel을 실행하여 커스텀 Bazel 바이너리(bazel-bin/src/bazel-dev)를 빌드합니다.

안내:

  1. Bash 터미널 시작

  2. cd를 사용하여 Bazel 소스를 추출 (또는 클론)한 디렉터리로 이동합니다.

    예를 들어 홈 디렉터리의 소스를 추출한 경우 다음을 실행합니다.

    cd ~/bazel-src
    
  3. 소스에서 Bazel을 빌드합니다.

    bazel build //src:bazel-dev
    

    또는 bazel build //src:bazel --compilation_mode=opt를 실행하여 더 작은 바이너리를 생성할 수 있지만 빌드 속도는 더 느립니다.

  4. 출력은 bazel-bin/src/bazel-dev(또는 bazel-bin/src/bazel)입니다.

4b단계: Windows에서 Bazel 빌드

Unix와 유사한 시스템 관련 안내는 Ubuntu Linux, macOS, 기타 Unix 유사 시스템을 참조하세요.

목표: Bazel을 실행하여 커스텀 Bazel 바이너리(bazel-bin\src\bazel-dev.exe)를 빌드합니다.

안내:

  1. 명령 프롬프트 시작 (시작 메뉴 > 실행 > cmd.exe")

  2. cd를 사용하여 Bazel 소스를 추출 (또는 클론)한 디렉터리로 이동합니다.

    예를 들어 홈 디렉터리의 소스를 추출한 경우 다음을 실행합니다.

    cd %USERPROFILE%\bazel-src
    
  3. 소스에서 Bazel을 빌드합니다.

    bazel build //src:bazel-dev.exe
    

    또는 bazel build //src:bazel.exe --compilation_mode=opt을 실행하여 더 작은 바이너리를 생성할 수 있지만 빌드 속도는 더 느립니다.

  4. 출력은 bazel-bin\src\bazel-dev.exe (또는 bazel-bin\src\bazel.exe)입니다.

5단계: 빌드된 바이너리 설치

설치할 것이 없습니다.

이전 단계의 출력은 독립된 Bazel 바이너리입니다. 이 파일을 모든 디렉터리에 복사하고 즉시 사용할 수 있습니다. 이 디렉터리가 PATH에 있으면 어디에서나 'bazel'을 실행할 수 있으므로 유용합니다.


Bazel을 처음부터 빌드 (부트스트랩)

기존 Bazel 바이너리를 사용하지 않고 Bazel을 처음부터 빌드할 수도 있습니다.

1단계: Bazel 소스 (배포 보관) 다운로드

(이 단계는 모든 플랫폼에서 동일합니다.)

  1. GitHub에서 bazel-<version>-dist.zip를 다운로드합니다(예: bazel-0.28.1-dist.zip).

    주의:

    • 아키텍처에 독립적인 단일 배포 자료실이 있습니다. 아키텍처별 또는 OS별 배포 보관 파일이 없습니다.
    • 이러한 소스는 GitHub 소스 트리와 동일하지 않습니다. Bazel을 부트스트랩하려면 배포 보관 파일을 사용해야 합니다. GitHub에서 클론된 소스 트리는 사용할 수 없습니다. 배포 보관 파일에는 부트스트랩에 필요하고 일반 Git 소스 트리의 일부가 아닌 생성된 소스 파일이 포함됩니다.
  2. 디스크의 특정 위치에 배포 보관 파일을 압축 해제합니다.

    Bazel의 출시 키 3D5919B448457EE0로 만든 서명을 확인해야 합니다.

2a단계: Ubuntu Linux, macOS, 기타 Unix 계열 시스템의 부트스트랩 Bazel

Windows의 경우 Windows의 Bazel 부트스트랩을 참고하세요.

2.1. 기본 요건 설치

  • Bash

  • zip, 압축 해제

  • C++ 빌드 도구 모음

  • JDK. 버전 11은 필수 항목입니다.

  • Python 버전 2와 3이 지원되며 그중 하나를 설치하기만 하면 됩니다.

예를 들어 Ubuntu Linux에서는 다음 명령어를 사용하여 이러한 요구사항을 설치할 수 있습니다.

sudo apt-get install build-essential openjdk-11-jdk python zip unzip

2.2. Unix에서 부트스트랩 Bazel

  1. 셸 또는 터미널 창을 엽니다.

  2. cd를 배포 보관 파일의 압축을 푼 디렉터리에 연결합니다.

  3. 컴파일 스크립트 env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh를 실행합니다.

컴파일된 출력은 output/bazel에 배치됩니다. JDK가 내장되어 있지 않고 독립적인 Bazel 바이너리입니다. 어디에서든 복사하거나 그대로 사용할 수 있습니다. 편의를 위해 이 바이너리를 PATH의 디렉터리 (예: Linux의 /usr/local/bin)에 복사합니다.

재현 가능한 방식으로 bazel 바이너리를 빌드하려면 '컴파일 스크립트 실행' 단계에서 SOURCE_DATE_EPOCH도 설정합니다.

2b단계: Windows에서 Bazel을 부트스트랩

Unix와 유사한 시스템에 대한 안내는 Ubuntu Linux, macOS, 기타 Unix 유사 시스템의 부트스트랩 Bazel을 참조하세요.

2.1. 기본 요건 설치

  • MSYS2 셸

  • Zip 및 압축 해제용 MSYS2 패키지 MSYS2 셸에서 다음 명령어를 실행합니다.

    pacman -S zip unzip patch
    
  • Visual C++ 컴파일러. Visual Studio 2015 이상의 일부로 또는 최신 Visual Studio 2017용 빌드 도구를 설치하여 Visual C++ 컴파일러를 설치합니다.

  • JDK. 버전 11은 필수 항목입니다.

  • Python 버전 2와 3이 지원되며 그중 하나를 설치하기만 하면 됩니다. Windows 기반 버전 (https://www.python.org에서 다운로드 가능)이 필요합니다. MSYS2에서 Pacman을 통해 설치된 버전은 작동하지 않습니다.

2.2. Windows의 Bazel 부트스트랩

  1. MSYS2 셸을 엽니다.

  2. 다음 환경 변수를 설정합니다.

    • BAZEL_VS 또는 BAZEL_VC(동일하지 않음): Visual Studio 디렉터리 (BAZEL_VS) 또는 Visual C++ 디렉터리 (BAZEL_VC)의 경로로 설정합니다. 그중 하나를 설정하면 충분합니다.
    • BAZEL_SH: MSYS2 bash.exe의 경로입니다. 아래 예에서 명령어를 참고하세요.

      C:\Windows\System32\bash.exe로 설정하면 안 됩니다. Linux용 Windows 하위 시스템을 설치한 경우 이 파일이 존재합니다. Bazel은 이 버전의 bash.exe를 지원하지 않습니다.

    • PATH: Python 디렉터리를 추가합니다.

    • JAVA_HOME: JDK 디렉터리로 설정합니다.

    (BAZEL_VS 사용):

    export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk1.8.0_112"
    

    또는 (BAZEL_VC 사용)

    export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC"
    export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))"
    export PATH="/c/python27:$PATH"
    export JAVA_HOME="C:/Program Files/Java/jdk1.8.0_112"
    
  3. cd를 배포 보관 파일의 압축을 푼 디렉터리에 연결합니다.

  4. 컴파일 스크립트 env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh를 실행합니다.

컴파일된 출력은 output/bazel.exe에 배치됩니다. JDK가 내장되어 있지 않고 독립적인 Bazel 바이너리입니다. 어디에서든 복사하거나 그대로 사용할 수 있습니다. 편의를 위해 이 바이너리를 PATH에 있는 디렉터리에 복사합니다.

재현 가능한 방식으로 bazel.exe 바이너리를 빌드하려면 '컴파일 스크립트 실행' 단계에서 SOURCE_DATE_EPOCH도 설정합니다.

MSYS2 셸에서 Bazel을 실행할 필요가 없습니다. 명령어 프롬프트(cmd.exe) 또는 PowerShell에서 Bazel을 실행할 수 있습니다.