בזל הידור ממקור

במאמר הזה נסביר איך להתקין את Bazel מהמקור ומספק טיפים לפתרון בעיות נפוצות.

כדי ליצור Bazel ממקור, ניתן לבצע אחת מהפעולות הבאות:

יצירת Bazel באמצעות Bazel

סיכום

  1. אפשר להוריד את הגרסה האחרונה של Bazel מדף הגרסה של GitHub או מ-Bazelisk.

  2. הורידו את המקורות של Bazel' מ-GitHub וחלצו במקום כלשהו. לחלופין, אפשר לשכפל את עץ המקור מ-https://github.com/bazelbuild/bazel

  3. יש להתקין את אותן דרישות מוקדמות כמו במקרה של אתחול (ראו עבור מערכות בסגנון Unix או עבור עבור Windows)

  4. בונים גרסת פיתוח של Bazel באמצעות Bazel: (bazel build //src:bazel-dev, או bazel build //src:bazel-dev.exe ב-Windows)

  5. הקובץ הבינארי שיתקבל נמצא ב-bazel-bin/src/bazel-dev (או bazel-bin\src\bazel-dev.exe ב-Windows). ניתן להעתיק אותו בכל מקום שתרצו ולהשתמש בו מיד ללא התקנה נוספת.

בהמשך מפורטות הוראות מפורטות.

שלב 1: מורידים את גרסת ה-Bazel האחרונה

מטרה: להתקין או להוריד גרסת גרסה של Bazel. אם ברצונך להפעיל את התוסף הזה, אפשר להקליד bazel במסוף.

הסיבה: כדי ליצור Bazel מעץ מקור של GitHub, צריך בינארי קיים של Bazel. תוכלו להתקין אותו מתוך מנהל חבילות או להוריד ספק כזה מ-GitHub. עיינו בהתקנת Bazel. (אפשר גם ליצור ממשק של Scratch (מגפיים).

פתרון בעיות:

  • אם לא ניתן להפעיל את Bazel באמצעות הקלדת bazel במסוף:

    • אולי הספרייה הבינארית של Bazel&#39 לא נמצאת ב-Path.

      זו לא בעיה משמעותית. במקום להקליד bazel, יש להקליד את הנתיב המלא.

    • אולי הקובץ הבינארי של Bazel עצמו לא נקרא bazel (ב-Unixes) או bazel.exe (ב-Windows).

      זו לא בעיה משמעותית. ניתן לשנות את השם של הקובץ הבינארי או להזין את השם של הקובץ הבינארי במקום bazel.

    • אולי הקובץ הבינארי לא ניתן להפעלה (ב-Unixes).

      יש להפעיל את הקובץ הבינארי על ידי הפעלת chmod +x /path/to/bazel.

שלב 2: הורדת המקורות של Bazel's מ-GitHub

אם אתם מכירים את Git, פשוט שכפול Git https://github.com/bazelbuild/bazel

אחרת:

  1. מורידים את המקורות העדכניים ביותר כקובץ ZIP.

  2. יש לחלץ את התוכן במקום כלשהו.

    לדוגמה, אפשר ליצור ספריית bazel-src בספריית הבית ולצאת משם.

שלב 3: מתקינים דרישות מוקדמות

מתקינים את אותן הדרישות שחלות על תוכנת אתחול (ראו בהמשך) -- JDK, C++ מהדר, MSYS2 (אם אתם בונים ב-Windows) וכו'.

שלב 4א: בונים את Bazel ב-Ubuntu Linux, ב-macOS ובמערכות אחרות דמויי Unix

הוראות ל-Windows זמינות במאמר Build Bazel ב-Windows.

מטרה: להריץ Bazel לבנות בינארי של Bazel (bazel-bin/src/bazel-dev).

הוראות:

  1. הפעלת טרמינל באש

  2. cd לספרייה שבה חילוץ (או שכפול) את המקורות של Bazel&33.

    לדוגמה, אם חלצתם את המקורות מספריית הבית שלכם, יש להריץ:

    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).

שלב 4ב: Build Bazel ב-Windows

במאמר Ubuntu Linux , macOS ומערכות אחרות דמויי Unix תוכלו למצוא הוראות למערכות כמו Unix.

מטרה: להריץ Bazel לבנות בינארי של Bazel (bazel-bin\src\bazel-dev.exe).

הוראות:

  1. התחל שורת פקודה (תפריט התחלה > הרצה > "cmd.exe")

  2. cd לספרייה שבה חילוץ (או שכפול) את המקורות של Bazel&33.

    לדוגמה, אם חלצתם את המקורות מספריית הבית שלכם, יש להריץ:

    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. ניתן להעתיק אותה לכל ספרייה ולהשתמש מיד. (מומלץ להשתמש באותה ספרייה אם אתם נמצאים בנתיב, כדי שתוכלו להריץ "bazel"בכל מקום).


בנייה של Bazel מההתחלה (מגפיים)

אפשר גם לבנות את Bazel מאפס, בלי להשתמש בקובץ בינארי של Bazel.

שלב 1: הורדת המקורות של Bazel&#39 (ארכיון הפצה)

(שלב זה זהה בכל הפלטפורמות.)

  1. מורידים את bazel-<version>-dist.zip מ-GitHub, לדוגמה: bazel-0.28.1-dist.zip.

    הערה:

    • יש ארכיון הפצה עצמאי נפרד. אין ארכיונים להפצה ספציפית לארכיטקטורה או למערכת ההפעלה.
    • המקורות האלה לא זהים לעץ המקור של GitHub. אתם צריכים להשתמש בארכיון ההפצה כדי מגפיים של Bazel. אי אפשר להשתמש בעץ מקור שהועתק מ-GitHub. (ארכיון ההפצה מכיל קובצי מקור שנוצרו לצורך מגפיים והם לא חלק מעץ המקור הרגיל של Git.)
  2. פותחים את ארכיון ההפצה במקום כלשהו בדיסק.

    עליכם לאמת את החתימה שנוצרה על ידי Bazel's מפתח השקה 3D5919B448457EE0.

שלב 2א: Bootstrap Bazel ב-Ubuntu Linux, ב-macOS ובמערכות דומות אחרות

להוראות בנוגע ל-Windows, יש לעיין בBottstrap Bazel ב-Windows.

2.1. התקנת הדרישות המוקדמות

  • Bash

  • zip, zip

  • כלי C++ ליצירת כלי לבנות

  • JDK. נדרשת גרסה 11.

  • Python. יש תמיכה בגרסאות 2 ו-3, והתקנה של אחת מהן מספיקה.

לדוגמה, ב-Ubuntu Linux תוכלו להתקין את הדרישות האלה באמצעות הפקודה הבאה:

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

2.2. Baotstrap Bazel ב-Unix

  1. פותחים מעטפת או חלון ב-Terminal.

  2. cd לספרייה שבה פתחת את ארכיון ההפצה.

  3. מריצים את סקריפט האוסף: env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh.

הפלט המוצב נמצא בoutput/bazel. זהו קובץ בינארי של Bazal עצמאי, ללא JDK מוטמע. אפשר להעתיק אותו מכל מקום או להשתמש בו במקום. מטעמי נוחות, יש להעתיק את הקובץ הבינארי הזה לספרייה שנמצאת ב-PATH שלך (למשל, /usr/local/bin ב-Linux).

כדי ליצור את הקובץ הבינארי של bazel בדרך שניתן לשחזר, צריך להגדיר גם SOURCE_DATE_EPOCH בשלב "הפעלת סקריפט האוסף".

שלב 2ב: Bootstrap Bazel ב-Windows

במאמר Bottstrap Bazel" ב-Ubuntu Linux , macOS ומערכות אחרות דומות ל-Unix תוכלו לקרוא הוראות למערכות כמו Unix.

2.1. התקנת הדרישות המוקדמות

  • מעטפת MSYS2

  • חבילות MSYS2 למערכת ZIP וביטול הדחיסה. מריצים את הפקודה הבאה במעטפת MSYS2:

    pacman -S zip unzip patch
    
  • המהדר החזותי +C+. מתקינים את ה-Visual C++ מהלך המוצר כחלק מ-Visual Studio לשנת 2015 ואילך, או מתקינים את הגרסה האחרונה של Build Tools for Visual Studio 2017.

  • JDK. נדרשת גרסה 11.

  • Python. יש תמיכה בגרסאות 2 ו-3, והתקנה של אחת מהן מספיקה. יש צורך בגרסה שמותאמת ל-Windows (בכתובת https://www.python.org). גרסאות שהותקנו דרך pacman ב-MSYS2 לא יפעלו.

2.2. Bootstrap Bazel ב-Windows

  1. פותחים את המעטפת של MSYS2.

  2. מגדירים את משתני הסביבה הבאים:

    • המדיניות BAZEL_VS או BAZEL_VC (שהתכונות שלהן לא זהות): יש להגדיר את הנתיב אל הספרייה Visual Studio (BAZEL_VS) או אל ספריית C++ (BAZEL_VC). ההגדרה של אחד מהם מספיקה.
    • BAZEL_SH: נתיב של MSYS2 bash.exe. ניתן לראות את הפקודה בדוגמאות הבאות.

      אין להגדיר את הערך הזה ל-C:\Windows\System32\bash.exe. (קובץ זה נמצא ברשותך, אם התקנת את Windows Subsystem עבור Linux). 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. זהו קובץ בינארי של Bazal עצמאי, ללא JDK מוטמע. אפשר להעתיק אותו מכל מקום או להשתמש בו במקום. לנוחיותכם, העתיקו את הקובץ הבינארי הזה לספרייה שנמצאת בPATH שלכם.

כדי ליצור את הקובץ הבינארי של bazel.exe בדרך שניתן לשחזר, צריך להגדיר גם SOURCE_DATE_EPOCH בשלב "הפעלת סקריפט האוסף".

אין צורך להריץ את Bazel מהמעטפת MSYS2. ניתן להריץ את Bazel דרך שורת הפקודה (cmd.exe) או PowerShell.