Bazel 2.0 qurish tizimining chiqarilishi

Mavjud ochiq yig'ish vositalarini chiqarish Bazel 2.0, Google muhandislari tomonidan ishlab chiqilgan va kompaniyaning aksariyat ichki loyihalarini yig'ish uchun ishlatilgan. Bazel loyihani kerakli kompilyatorlar va testlarni ishga tushirish orqali quradi. U Java, C++, Objective-C, Python, Rust, Go va boshqa ko‘plab tillarda kod yaratish va sinovdan o‘tkazish, shuningdek, Android va iOS uchun mobil ilovalar yaratishni qo‘llab-quvvatlaydi. Loyiha kodi tarqaladi Apache 2.0 ostida litsenziyalangan.

Muhim versiya o'zgarishi orqaga qarab muvofiqlikni buzadigan o'zgarishlarni qo'shishni o'z ichiga oladi. Bazel 2.0 dan boshlab, sukut bo'yicha quyidagi rejimlar yoqilgan: "—incompatible_remap_main_repo" (ism bo'yicha va @ orqali havolalar endi bir xil omborga havola), "—incompatible_disallow_dict_lookup"_ (hashlab bo'lmaydigan kalitlardan foydalanish),
"--incompatible_remove_native_maven_jar" va "--incompatible_prohibit_aapt1". Boshqa o'zgarishlarga quyidagilar kiradi:

  • Bir jamoada akvary "proto" chiqish formatining (-output=proto) yangi nashri uchun eksperimental yordam paydo bo'ldi, u hozirda sukut bo'yicha o'chirilgan (-incompatible_proto_output_v2) va ma'lumotlarning yanada ixcham taqdimotini ta'minlaydi;
  • PlatformConfiguration.enabled_toolchain_types maydonini olib tashlash uchun "--incompatible_remove_enabled_toolchain_types" bayrog'i qo'shildi;
  • Yo'llarni kengaytirishda yuklashda tsiklik ramziy havolalardan foydalanadigan paketlarni yuklashdan qo'shimcha himoya;
  • Tashqi gRPC keshlari bilan "--disk_cache" bayrog'idan foydalanish imkoniyati amalga oshirildi;
  • Debian paketi va ikkilik oʻrnatuvchisi ~/.bazelversion fayllari va $USE_BAZEL_VERSION muhit oʻzgaruvchisi bilan ishlovchi takomillashtirilgan qatlamni oʻz ichiga oladi;
  • Ishlash fayllari manifest fayllarini eskirishga tayyorgarlik ko'rish uchun "--experimental_skip_runfiles_manifests" belgisi qo'shildi.

Bazelning o'ziga xos xususiyatlari orasida yig'ish jarayonining yuqori tezligi, ishonchliligi va takrorlanishi mavjud. Qurilishning yuqori tezligiga erishish uchun Bazel qurish jarayonida keshlash va parallellashtirish usullaridan faol foydalanadi. BUILD fayllari barcha bog'liqliklarni to'liq aniqlashi kerak, buning asosida o'zgarishlar kiritilgandan so'ng (faqat o'zgartirilgan fayllar qayta tiklanadi) komponentlarni qayta tiklash bo'yicha qarorlar qabul qilinadi va montaj jarayonini parallel qiladi. Asboblar, shuningdek, takrorlanadigan yig'ishni ta'minlaydi, ya'ni. Loyihani ishlab chiquvchining mashinasida qurish natijasi uchinchi tomon tizimlarida, masalan, uzluksiz integratsiya serverlarida qurilgan bilan mutlaqo bir xil bo'ladi.

Make va Ninja-dan farqli o'laroq, Bazel yig'ish qoidalarini qurishda yuqori darajadagi yondashuvdan foydalanadi, bunda buyruqlarning qurilayotgan fayllarga bog'lanishini belgilash o'rniga, ko'proq mavhum tayyor bloklar qo'llaniladi, masalan, "bajariladigan faylni yaratish". C++”, “C++ tilida kutubxona qurish” yoki “C++ uchun test o‘tkazish”, shuningdek maqsad va platformalarni yaratish. BUILD matn faylida loyiha komponentlari alohida fayllar va kompilyator chaqiruv buyruqlari darajasida tafsilotsiz kutubxonalar, bajariladigan fayllar va testlar toʻplami sifatida tavsiflanadi. Qo'shimcha funktsiyalar kengaytmalarni ulash mexanizmi orqali amalga oshiriladi.

Turli platformalar va arxitekturalar uchun yagona yig'ish fayllaridan foydalanish qo'llab-quvvatlanadi; masalan, server tizimi va mobil qurilma uchun o'zgarishsiz bitta montaj faylidan foydalanish mumkin. Qurilish tizimi boshidanoq Google loyihalarini, jumladan, bir nechta dasturlash tillarida kodni o'z ichiga olgan, keng ko'lamli sinovlarni talab qiluvchi va bir nechta platformalar uchun yaratilgan juda yirik loyihalar va loyihalarni optimal tarzda qurish uchun mo'ljallangan.

Manba: opennet.ru

a Izoh qo'shish