Liberigo de la konstrusistemo Bazel 2.0

Disponebla liberigo de malfermaj kunigiloj Bazel 2.0, evoluigita fare de inĝenieroj de Guglo kaj kutimis kunveni la plej multajn el la internaj projektoj de la firmao. Bazel konstruas la projekton rulante la necesajn kompililojn kaj testojn. Ĝi subtenas konstruadon kaj testadon de kodo en Java, C++, Objective-C, Python, Rust, Go kaj multaj aliaj lingvoj, kaj ankaŭ konstrui moveblajn aplikojn por Android kaj iOS. Projekta kodo distribuita de licencita sub Apache 2.0.

Signifa versioŝanĝo implikas aldonon de ŝanĝoj kiuj rompas malantaŭan kongruecon. Komencante kun Bazel 2.0, la sekvaj reĝimoj estas ebligitaj defaŭlte: "—incompatible_remap_main_repo" (ligiloj laŭnome kaj per @ nun ligas al la sama deponejo), "—incompatible_disallow_dict_lookup"_(uzo de neŝloseblaj ŝlosiloj),
"--incompatible_remove_native_maven_jar" kaj "--incompatible_prohibit_aapt1". Aliaj ŝanĝoj inkluzivas:

  • En teamo akvujo eksperimenta subteno aperis por nova eldono de la "proto" eligoformato (-output=proto), kiu estas nuntempe malŝaltita defaŭlte (-incompatible_proto_output_v2) kaj disponigas pli kompaktan prezenton de datumoj;
  • Aldonis la flagon "--incompatible_remove_enabled_toolchain_types" por forigi la kampon PlatformConfiguration.enabled_toolchain_types;
  • Aldonita protekto kontraŭ ŝarĝo de pakaĵoj, kiuj uzas ciklajn simbolajn ligilojn dum ŝarĝo de vojoj kiam ili disvastigas;
  • Efektivigis la kapablon uzi la flagon "--disk_cache" kun eksteraj gRPC-kaŝmemoroj;
  • La Debian-pakaĵo kaj binara instalilo inkluzivas plibonigitan tavolon, kiu pritraktas ~/.bazelversion-dosierojn kaj la mediovariablon $USE_BAZEL_VERSION;
  • En preparo por la malrekomendigo de ruldosieroj manifestdosieroj, la flago "--experimental_skip_runfiles_manifests" estis aldonita.

Inter la karakterizaj trajtoj de Bazel estas la alta rapido, fidindeco kaj ripeteblo de la kunigprocezo. Por atingi altan konstrurapidecon, Bazel aktive uzas konservadon kaj paraleligajn teknikojn por la konstruprocezo. BUILD-dosieroj devas plene difini ĉiujn dependecojn, surbaze de kiuj decidoj estas faritaj por rekonstrui komponentojn post kiam ŝanĝoj estas faritaj (nur ŝanĝitaj dosieroj estas rekonstruitaj) kaj paraleligi la kunigprocezon. Ilado ankaŭ certigas ripeteblan kunigon, t.e. la rezulto de konstruado de projekto sur la maŝino de la programisto estos tute identa al la konstruo sur triaj sistemoj, kiel daŭraj integrigaj serviloj.

Male al Make kaj Ninja, Bazel uzas pli altnivelan aliron al konstruado de kunigreguloj, en kiuj, anstataŭ difini la ligadon de komandoj al la konstruataj dosieroj, pli abstraktaj pretaj blokoj estas uzataj, kiel ekzemple "konstruado de plenumebla dosiero en C++", "konstruante bibliotekon en C++" aŭ "fari teston por C++", same kiel identigi celon kaj konstruplatformojn. En la tekstdosiero BUILD, la projektaj komponantoj estas priskribitaj kiel amaso da bibliotekoj, ruleblaj dosieroj kaj testoj, sen detaligo je la nivelo de individuaj dosieroj kaj kompililvokomandoj. Kroma funkcieco estas efektivigita per la mekanismo por ligado de etendaĵoj.

La uzo de ununuraj kunigdosieroj por malsamaj platformoj kaj arkitekturoj estas subtenata; ekzemple, unu kunigdosiero sen ŝanĝoj povas esti uzata por kaj servilsistemo kaj movebla aparato. La konstrusistemo estas dizajnita de la grundo por optimume konstrui Guglo-projektojn, inkluzive de tre grandaj projektoj kaj projektoj kiuj enhavas kodon en pluraj programlingvoj, postulas ampleksan testadon, kaj estas konstruitaj por pluraj platformoj.

fonto: opennet.ru

Aldoni komenton