דף זה מתאר כיצד להרחיב את שפת BUILD באמצעות פקודות מאקרו וכללים.
תוספות Bazel מסתיימות בקבצים המסתיימים ב-.bzl
. שימוש ב
הצהרת טעינה כדי לייבא סמל מתוסף.
לפני שתלמדו את המושגים המתקדמים יותר, תחילה עליכם:
כדאי לקרוא על שפת Starlark, המשמשת גם בקובץ
BUILD
וגם בקובץ.bzl
.כאן מוסבר איך לשתף משתנים בין שני קבצים (
BUILD
).
פקודות מאקרו וכללים
מאקרו הוא פונקציה שיוצרת כללים. כדאי להשתמש בקובץ
שBUILD
יותר מדי או חוזר על עצמו מדי, כי הוא מאפשר לעשות שימוש חוזר בקוד. הפונקציה נבדקת מיד עם קריאת הקובץ BUILD
. אחרי
הערכת הקובץ של BUILD
, ל-Bazel יש מעט מידע על פקודות מאקרו:
אם המאקרו שלך יוצר genrule
, Bazel יתנהג כאילו כתבת את genrule
. לכן, bazel query
יפרט רק את ה-genrule
שנוצר.
כלל הוא כלי חזק יותר מפקודת מאקרו. היא יכולה לגשת פנימיים ל-Bazel ויש לה שליטה מלאה על המתרחש. היא עשויה, למשל, להעביר מידע לכללים אחרים.
אם רוצים להשתמש שוב בלוגיקה פשוטה, מתחילים במאקרו. אם מאקרו הופך למורכב, כדאי בדרך כלל להפוך אותו לכלל. תמיכה בשפה חדשה מתבצעת בדרך כלל באמצעות כלל. הכללים מיועדים למשתמשים מתקדמים, ורוב המשתמשים לעולם לא יצטרכו לכתוב שם; הם רק יטענו ויקראו לכללים קיימים.
מודל ההערכה
Build מורכב משלושה שלבים.
שלב טעינה. תחילה, יש לטעון ולהעריך את כל התוספים וכל
BUILD
הקבצים הנדרשים ל-build. הביצוע שלBUILD
הקבצים פשוט יוצר כללים (בכל פעם שנוצרת קריאה לכללים, הוא מתווסף לתרשים). כאן מתבצעת הערכה של פקודות מאקרו.שלב Analysis. קוד הכללים מתבצע (הפונקציה
implementation
) והפעולות נוצרות באופן מיידי. פעולה מתארת כיצד ליצור קבוצת פלטים מתוך ערכת קלט, כגון "run gcc on hello.c and get hello.o". עליכם לרשום במפורש אילו קבצים ייווצרו לפני ביצוע הפקודות בפועל. במילים אחרות, שלב הניתוח לוקח את התרשים שנוצר על ידי שלב הטעינה ויוצר תרשים פעולה.שלב ביצוע. הפעולות האלה מתבצעות כשנדרש לפחות אחד מהפלטים שלהן. אם קובץ חסר או אם פקודה לא מצליחה ליצור פלט אחד, ה-build נכשל. כמו כן, הבדיקות מתבצעות בשלב זה.
Bazel משתמשת במקביל כדי לקרוא, לנתח ולהעריך את קובצי .bzl
ו-BUILD
הקבצים. הקובץ נקרא לכל היותר פעם אחת בכל גרסה, ותוצאת ההערכה נשמרת במטמון ונעשה בה שימוש חוזר. מתבצעת הערכה של קובץ רק לאחר שכל יחסי התלות שלו (load()
הצהרות) נפתרו. לפי התכנון, לטעינת קובץ .bzl
אין תופעות לוואי
גלויות, הוא רק מגדיר ערכים ופונקציות.
בזל מנסה להיות מתוחכמת: היא משתמשת בניתוח תלות כדי לדעת אילו קבצים יש לטעון, אילו כללים יש לנתח ואילו פעולות יש לבצע. לדוגמה, אם כלל יוצר פעולות שאינן נחוצות ל-build הנוכחי, הן לא יבוצעו.
יצירת תוספים
יוצרים את המאקרו הראשון כדי להשתמש שוב בקוד. לאחר מכן, תוכלו לקרוא מידע נוסף על פקודות מאקרו ולהשתמש בהן כדי ליצור "פעלים מותאמים אישית".
יש לפעול לפי מדריך הכללים כדי להתחיל עם הכללים. בשלב הבא, תוכל לקרוא עוד על הכללים.
שני הקישורים המופיעים בהמשך יהיו שימושיים מאוד בעת כתיבת התוספים שלך. שמרו אותן בהישג יד:
להגיע רחוק יותר
בנוסף לפקודות מאקרו ולכללים, מומלץ לכתוב דרישות וכללי מאגר.
משתמשים בכלי לאיסוף באופן עקבי כדי לעצב את הקוד ולהעתיק אותו.
יש לפעול לפי מדריך הסגנון
.bzl
.בודקים את הקוד.
צור תיעוד שיעזור למשתמשים שלך.
פריסה של התוספים לאנשים אחרים.