소스에서 Bazel 컴파일

<ph type="x-smartling-placeholder"></ph> 문제 신고 <ph type="x-smartling-placeholder"></ph> 소스 보기 1박 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5 를 참조하세요.

이 페이지에서는 소스에서 Bazel을 설치하는 방법을 설명하고 일반적인 문제 해결 팁을 확인해 보세요.

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

Bazel을 사용하여 Bazel 빌드

요약

  1. 최신 Bazel 출시 버전을 GitHub 출시 페이지 또는 바젤리스크

  2. GitHub에서 Bazel 소스 다운로드 어딘가에 추출해야 합니다 또는 https://github.com/bazelbuild/bazel에서 소스 트리를 git 클론할 수 있습니다.

  3. 부트스트랩과 동일한 기본 요건을 설치합니다. Unix 계열 시스템 또는 (Windows용))

  4. Bazel을 사용하여 Bazel 개발 빌드를 빌드합니다. bazel build //src:bazel-dev (또는 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 설치를 참조하세요. 또는 scratch (부트스트랩)를 사용합니다.

문제해결:

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

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

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

    • Bazel 바이너리 자체가 유닉스에서 bazel가 아닐 수도 있고 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. Bazel의 소스를 추출 (또는 클론)한 디렉터리로 cd

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

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

    bazel build //src:bazel-dev
    

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

    --stamp --embed_label=X.Y.Z 플래그로 빌드하여 Bazel을 삽입할 수 있습니다. bazel --version가 지정된 버전을 출력하도록 바이너리의 버전을 제공합니다.

  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. Bazel의 소스를 추출 (또는 클론)한 디렉터리로 cd

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

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

    bazel 빌드 //src:bazel-dev.exe

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

    --stamp --embed_label=X.Y.Z 플래그로 빌드하여 Bazel을 삽입할 수 있습니다. bazel --version가 지정된 버전을 출력하도록 바이너리의 버전을 제공합니다.

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

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

사실, 설치할 항목이 없습니다.

이전 단계의 출력은 독립 실행형 Bazel 바이너리입니다. 다음을 복사할 수 있습니다. 즉시 사용할 수 있습니다 (해당 디렉토리가 'bazel'을 실행할 수 있도록 PATH everywhere.)


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

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

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

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

  1. bazel-<version>-dist.zip 다운로드 위치 예를 들어 GitHub 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. 버전 21은 필수 항목입니다.

  • Python. 버전 2와 3이 지원되므로 그중 하나를 설치하는 것이 충분히 이해가 되셨을 것입니다.

예를 들어 Ubuntu Linux에서는 다음 명령어를 실행합니다.

sudo apt-get install build-essential openjdk-21-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 셸

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

    pacman -S zip unzip patch
    
  • Visual C++ 컴파일러. Visual C++ 컴파일러를 설치 최신 빌드 도구를 설치하여 (Visual Studio 2017용)

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

  • Python. 버전 2와 3이 지원되므로 그중 하나를 설치하는 것이 충분히 이해가 되셨을 것입니다. Windows 기반 버전( https://www.python.org). 다음을 통해 설치된 버전 pacman이 작동하지 않습니다.

2.2. Windows의 Bazel 부트스트랩

  1. MSYS2 셸을 엽니다.

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

    • BAZEL_VS 또는 BAZEL_VC (동일하지 않음): Visual Studio 디렉터리 (BAZEL_VS) 또는 Visual Studio 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/jdk-21"
    

    또는 (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/jdk-21"
    
  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을 실행할 필요가 없습니다. Bazel을 실행할 수 있는 명령 프롬프트 (cmd.exe) 또는 PowerShell