Bazel 2.0 eraikitze sistemaren kaleratzea

Eskuragarri irekita muntatzeko tresnak askatzea Bazel 2.0, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Google ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для сборки Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Bazel обСспСчиваСт сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, запуская Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторы ΠΈ тСсты. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ сборка ΠΈ тСстированиС ΠΊΠΎΠ΄Π° Π½Π° Java, C++, Objective-C, Python, Rust, Go ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π° Ρ‚Π°ΠΊΠΆΠ΅ сборка ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Android ΠΈ iOS. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° arabera banatuta Apache 2.0 lizentziapean.

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии связано с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Начиная с Bazel 2.0 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Β«β€”incompatible_remap_main_repoΒ» (ссылки ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ‡Π΅Ρ€Π΅Π· @ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ), Β«β€”incompatible_disallow_dict_lookupΒ»_(ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ),
Β«β€”incompatible_remove_native_maven_jarΒ» ΠΈ Β«β€”incompatible_prohibit_aapt1Β». Π‘Ρ€Π΅Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ aquery появилась ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π΄Π°ΡƒΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π° Β«protoΒ» (β€”output=proto), которая ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (β€”incompatible_proto_output_v2) ΠΈ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ΅ прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«β€”incompatible_remove_enabled_toolchain_typesΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ PlatformConfiguration.enabled_toolchain_types;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ раскрытии ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½Ρ‹Π΅ символичСскиС ссылки;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ„Π»Π°Π³Π° Β«β€”disk_cacheΒ» с внСшними кэшами gRPC;
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ для Debian ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ инсталлятор Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ прослойка, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ ~/.bazelversion ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния $USE_BAZEL_VERSION;
  • Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с манифСстом runfiles Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… возмоТностСй Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«β€”experimental_skip_runfiles_manifestsΒ».

Bazelen ezaugarri bereizgarrien artean muntaketa prozesuaren abiadura handia, fidagarritasuna eta errepikakortasuna daude. Eraikitze-abiadura handia lortzeko, Bazel-ek aktiboki erabiltzen ditu caching eta paralelizazio teknikak eraikitze-prozesurako. BUILD fitxategiek mendekotasun guztiak guztiz definitu behar dituzte, eta horien arabera hartzen dira aldaketak egin ondoren osagaiak berreraikitzeko (aldatutako fitxategiak soilik berreraikitzen dira) eta muntaketa prozesua paralelizatzeko. Tresneria muntaketa errepikakorra ere bermatzen du, hau da. garatzailearen makinan proiektu bat eraikitzearen emaitza hirugarrenen sistemetan eraikitakoaren guztiz berdina izango da, hala nola etengabeko integrazio zerbitzarietan.

Make eta Ninja ez bezala, Bazelek goi-mailako ikuspegia erabiltzen du muntaia-arauak eraikitzeko, eta bertan, eraikitzen ari diren fitxategiekin komandoak lotzea definitu beharrean, prest dauden bloke abstraktuagoak erabiltzen dira, adibidez, "fitxategi exekutagarri bat eraikitzea. C++”, β€œliburutegi bat C++-n eraikitzea” edo β€œC++-rako proba bat exekutatzen”, baita helburu eta eraikitze plataformak identifikatzea ere. BUILD testu-fitxategian, proiektuaren osagaiak liburutegi, fitxategi exekutagarri eta proba sorta gisa deskribatzen dira, fitxategi indibidualen eta konpiladoreen dei-aginduen mailan zehaztu gabe. Funtzionalitate gehigarriak luzapenak konektatzeko mekanismoaren bidez ezartzen dira.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ использованиС Π΅Π΄ΠΈΠ½Ρ‹Ρ… сборочных Ρ„Π°ΠΉΠ»ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» сборки Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ для сСрвСрной систСмы, Ρ‚Π°ΠΊ ΠΈ для мобильного устройства. Бборочная систСма ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ спроСктирована для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Google, Π² Ρ‚ΠΎΠΌ числС сборки ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², содСрТащих ΠΊΠΎΠ΄ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языках программирования, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΈ собираСмых для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Iturria: opennet.ru

Gehitu iruzkin berria