يقبل بازيل خيارات متعددة. تتنوع بعض الخيارات بشكل متكرر (على سبيل المثال، --subcommands
)، بينما تظل خيارات أخرى كما هي على مستوى عدة إصدارات (مثل --package_path
). لتجنُّب تحديد هذه الخيارات التي لم يتم تغييرها لكل إصدار
(وأوامر أخرى)، يمكنك تحديد الخيارات في ملف إعداد يُسمى
.bazelrc
.
أين توجد ملفات .bazelrc
؟
يبحث Basel عن ملفات الإعداد الاختيارية في المواقع التالية، بالترتيب الموضح أدناه. يتم تفسير الخيارات بهذا الترتيب، لذلك يمكن أن تلغي الخيارات في الملفات اللاحقة قيمة من ملف سابق في حال حدوث تعارض. جميع الخيارات التي تتحكم في أي من هذه الملفات يتم تحميلها هي
خيارات بدء التشغيل، مما يعني أنه يجب أن تحدث بعد bazel
وقبل الأمر (build
، test
، إلخ).
ملف RC من النظام، ما لم يكن
--nosystem_rc
متوفرًا.المسار:
- نظاما التشغيل Linux/macOS/Unix:
/etc/bazel.bazelrc
- على نظام التشغيل Windows:
%ProgramData%\bazel.bazelrc
لا يعد هذا خطأً إذا لم يتم العثور على هذا الملف.
في حال الحاجة إلى موقع جغرافي آخر محدّد من قبل النظام، عليك إنشاء ملف ثنائي بازل مخصّص، مع إلغاء قيمة
BAZEL_SYSTEM_BAZELRC_PATH
في//src/main/cpp:option_processor
. قد يحتوي الموقع الذي يحدده النظام على مراجع متغيرة للبيئة، مثل${VAR_NAME}
على Unix أو%VAR_NAME%
على Windows.- نظاما التشغيل Linux/macOS/Unix:
ملف RC، ما لم يكن
--noworkspace_rc
موجودًاالمسار:
.bazelrc
في دليل مساحة العمل (بجانب الملفWORKSPACE
الرئيسي).لا يعد هذا خطأً إذا لم يتم العثور على هذا الملف.
ملف RC المنزلي، ما لم يكن
--nohome_rc
متوفرًا.المسار:
- نظاما التشغيل Linux/macOS/Unix:
$HOME/.bazelrc
- على نظام التشغيل Windows:
%USERPROFILE%\.bazelrc
إذا كان موجودًا أو%HOME%/.bazelrc
لا يعد هذا خطأً إذا لم يتم العثور على هذا الملف.
- نظاما التشغيل Linux/macOS/Unix:
ملف RC الذي حدّده المستخدم في حال تحديده باستخدام
--bazelrc=file
هذه العلامة اختيارية ولكن يمكن تحديدها عدة مرات أيضًا.
تشير الخاصية
/dev/null
إلى أنه سيتم تجاهل جميع--bazelrc
، ما يُعدّ مفيدًا لإيقاف البحث عن ملف RC لمستخدم، كما هو الحال في إصدارات الإصدارات.مثال:
--bazelrc=x.rc --bazelrc=y.rc --bazelrc=/dev/null --bazelrc=z.rc
- تمت قراءة
x.rc
وy.rc
. - تم تجاهل
z.rc
بسبب/dev/null
السابق.
- تمت قراءة
بالإضافة إلى ملف الإعداد الاختياري هذا، يبحث Bazel عن ملف RC عام. لمزيد من التفاصيل، راجِع قسم البازار العالمي.
بنية .bazelrc
ودلالاته
مثل كل ملفات UNIX "rc"، يكون الملف .bazelrc
هو ملف نصي يتضمّن قاعدة نحوية مستندة إلى سطر. ويتم تجاهل الأسطر والأسطر الفارغة التي تبدأ بـ #
(التعليقات). يحتوي كل سطر
على تسلسل من الكلمات المميّزة وفقًا للقواعد نفسها المُستخدَمة في واجهة Bourne.
الاستيراد
الأسطر التي تبدأ بـ import
أو try-import
خاصة: يمكنك استخدامها لتحميل ملفات "rc" الأخرى. لتحديد مسار مرتبط بجذر مساحة العمل، اكتب import %workspace%/path/to/bazelrc
.
الفرق بين import
وtry-import
هو أنّ Bazel يخفق إذا كان ملف import
غير متوفّر (أو يتعذّر قراءته)، ولكن لا يحدث ذلك بالنسبة إلى try-import
.
الملف.
أولوية الاستيراد:
- وتُعطى الخيارات في الملف المُستورَد الأولوية على الخيارات المُحدّدة قبل بيان الاستيراد.
- وتُعطى الخيارات المحدّدة بعد بيان الاستيراد الأولوية على الخيارات الواردة في الملف المستورَد.
- وتُعطى الخيارات في الملفات التي تم استيرادها لاحقًا الأولوية على الملفات التي تم استيرادها في وقت سابق.
الإعدادات التلقائية للخيارات
تحدّد معظم سطور البازيلك قيم الخيارات التلقائية. وتحدّد الكلمة الأولى في كل سطر عند تطبيق هذه الإعدادات التلقائية:
startup
: خيارات بدء التشغيل، التي يتم تنفيذها قبل الأمر، والموضّحة فيbazel help startup_options
.common
: الخيارات التي تنطبق على جميع أوامر Bazel.command
: الأمر Bazel، مثلbuild
أوquery
الذي تنطبق عليه الخيارات. وتسري هذه الخيارات أيضًا على جميع الأوامر التي تكتسب من الأمر المحدّد. (على سبيل المثال،test
منbuild
.)
قد يتم استخدام كل سطر من هذه الأسطر أكثر من مرة ويتم دمج الوسيطات التي تتبع الكلمة الأولى كما لو كانت تظهر في سطر واحد. (بالنسبة إلى مستخدمي CVS،
أداة أخرى تستخدم واجهة سطر الأوامر "سكين الجيش السويسري"، ستعثر على البنية المشابهة للغة .cvsrc
.) على سبيل المثال، الأسطر:
build --test_tmpdir=/tmp/foo --verbose_failures
build --test_tmpdir=/tmp/bar
تم دمجها معًا:
build --test_tmpdir=/tmp/foo --verbose_failures --test_tmpdir=/tmp/bar
لذا، فالعلامتان الفعّالتان هما --verbose_failures
و--test_tmpdir=/tmp/bar
.
أولوية الخيار:
- دائمًا ما يكون للخيارات في سطر الأوامر الأولوية على الخيارات المتوفرة في ملفات RC.
على سبيل المثال، إذا كان ملف RC يعرض
build -c opt
ولكن علامة سطر الأوامر هي-c dbg
، تكون الأولوية لعلامة سطر الأوامر. في ملف RC، يكون الأولوية مُحدَّدة حسب الأولوية: تُعطى الأولوية لأمر أكثر تحديدًا على الأسطر للأمر الأقل تحديدًا.
ويتم تحديد الدقة من خلال الاكتساب. تكتسب بعض الأوامر خيارات من الأوامر الأخرى، ما يجعل الأمر الموروث أكثر تحديدًا من الأمر الأساسي. على سبيل المثال:
test
منbuild
الأمر كلهbazel build
العلامات صالحة لـbazel test
، وجميعbuild
تنطبق أيضًا الخطوط علىbazel test
ما لم يكن هناكtest
سطر للخيار نفسه. إذا كان ملف rc يقول:test -c dbg --test_env=PATH
build -c opt --verbose_failures
ثم سيستخدم
bazel build //foo
-c opt --verbose_failures
وbazel test //foo
سيستخدم--verbose_failures -c dbg --test_env=PATH
.الرسم البياني (للتخصيص) هو:
- يكتسب كل أمر من
common
- تكتسب الأوامر التالية من (وتكون أكثر تحديدًا من)
build
:test
،run
،clean
،mobile-install
،info
،print_action
،config
،cquery
، وِaquery
coverage
يكتسب منtest
- يكتسب كل أمر من
يتم تحليل سطرين يحددان خيارات الأمر نفسه بدقة محددة بالترتيب الذي تظهر به داخل الملف.
بما أنّ قاعدة الأولوية هذه لا تتطابق مع ترتيب الملف، سيساعدك ذلك على اتّباع ترتيب الأولوية داخل ملفات RC: البدء بخيارات
common
في أعلى الصفحة، وإنهاء الأوامر الأكثر تحديدًا في أسفل الملف. وبهذه الطريقة، الترتيب الذي تتم به قراءة الخيارات مماثل للترتيب الذي يتم تطبيقها به، وهو أكثر بساطة.
قد تتضمن الوسيطات المُحدَّدة في سطر من ملف RC وسيطات ليست خيارات، مثل أسماء أهداف الإصدار، وما إلى ذلك. وتكون الأولوية لهذه الخيارات، مثل الخيارات المحدّدة في الملفات نفسها، مقارنةً بأشقائها في سطر الأوامر، وتُضاف دائمًا إلى القائمة الصريحة للوسيطات غير الاختيارية.
--config
بالإضافة إلى إعداد الخيارات التلقائية، يمكن استخدام ملف RC لتجميع الخيارات وتوفير اختصار للتجميعات الشائعة. ويتم ذلك عن طريق إضافة لاحقة :name
إلى الأمر. يتم تجاهل هذه الخيارات تلقائيًا، ولكن سيتم تضمينها عند تضمين الخيار --config=name
، إما في سطر الأوامر أو في ملف .bazelrc
، بشكل متكرّر، حتى داخل ملف آخر. تهيئة تلقائية. لن يتم توسيع الخيارات المحددة من قِبل command:name
إلا للأوامر السارية، بترتيب الأولوية الموضح أعلاه.
يتم توسيع --config=foo
إلى الخيارات المحدّدة في ملفات RC "في مكانها" بحيث يكون للخيارات المحدّدة للإعداد الإعدادات نفسها في الخيار --config=foo
.
لا تمتد هذه البنية إلى استخدام startup
لضبط
خيارات بدء التشغيل. سيتم تجاهل الإعدادات
startup:config-name --some_startup_option
في .bazelrc.
مثال
إليك مثال على ملف ~/.bazelrc
:
# Bob's Bazel option defaults
startup --host_jvm_args=-XX:-UseParallelGC
import /home/bobs_project/bazelrc
build --show_timestamps --keep_going --jobs 600
build --color=yes
query --keep_going
# Definition of --config=memcheck
build:memcheck --strip=never --test_timeout=3600
ملفات أخرى تحكم سلوك Bazel
.bazelignore
يمكنك تحديد الأدلة داخل مساحة العمل التي تريد أن يتجاهلها Bazel، مثل المشاريع ذات الصلة
التي تستخدم أنظمة إصدار أخرى. ضَع ملفًا باسم .bazelignore
في جذر مساحة العمل وأضِف الأدلة التي تريد أن يتجاهلها Bazel، واحدًا في كل سطر. ترتبط الإدخالات بجذر مساحة العمل.
ملف البازيلش العالمي
تقرأ Bazel ملفات بازيليك اختيارية بالترتيب التالي:
- ملف RC النظام الموجود في etc/bazel.bazelrc
.
- ملف RC-rc موجود في $workspace/tools/bazel.rc
.
- ملف RC-المنزل محليًا في $HOME/.bazelrc
لكل ملف بازيلك مدرج هنا علامة مطابقة يمكن استخدامها لإيقافها (مثل --nosystem_rc
و--noworkspace_rc
و--nohome_rc
). يمكنك أيضًا جعل بازيل يتجاهل جميع بازيليك بتمرير خيار بدء التشغيل --ignore_all_rc_files
.