ProHoster > Blog > ynternet nijs > In Red Hat-meiwurker presintearre it Goals-assemblagesysteem. Utjefte fan GNU Make 4.2
In Red Hat-meiwurker presintearre it Goals-assemblagesysteem. Utjefte fan GNU Make 4.2
Richard WM Jones, skriuwer libguestfs, wurkje by Red Hat, yntrodusearre nij assembly utility Doel, rjochte op it eliminearjen fan tekoarten en problemen yn it nut fan meitsje, wylst de algemiene ienfâld en begryp fan skripts behâlde. It make-nutsbedriuw is ûntworpen yn 1976 en hat in oantal konseptuele tekortkomingen; Doelen binne fan plan om dizze tekoarten te eliminearjen sûnder it algemiene konsept te feroarjen.
Doelen boarne koade ferspraat troch lisinsje ûnder GPLv2+.
Stipe foar mar ien taktyk foar resolúsje fan ôfhinklikens - "de assemblage-ynstruksje wurdt útfierd as it doelbestân ûntbrekt of âlder is dan ien fan 'e ôfhinklikens." Doelen binne plannen om oare taktyk út te fieren, lykas kontrolearjen op de oanwêzigens fan in URL, fergelykjen fan wizigingstiden mei elk bestân, evaluearje fan it ynboude pakket kōji, fergeliking fan kontrôlesummen, testgefallen útfiere mei selektyf oerslaan fan tests.
By it ferwurkjen fan build-doelen, makket meitsje gjin skieden fan triemmen en regelnammen, en as gefolch is d'r gjin kontrôle dat by it útfieren fan in regel, it bestân dat it beweart dat it makke is, wirklik oanmakke wurdt. As jo bygelyks in regel hawwe mei de namme "test" dy't skripts mei tests útfiert, wurdt in bestân mei de namme "test" by ûngelok oanmakke, dan wurde de tests net mear oanroppen, om't make sil beskôgje dat it doel is boud en net fereasket eltse aksje (foar Om te wurkjen om it probleem yn make, kinne jo opjaan de ".PHONY: test" rjochtline). Doelen skiedt bestannen en regelnammen eksplisyt.
Probleem mei it jaan fan mar ien parameter foar montage ynstruksjes.
Doelen kinne jo in willekeurige oantal neamde parameters brûke. Jo kinne bygelyks it teken fan in debugbestân apart út 'e namme ekstrahearje:
Problemen yn ynteraksje mei de shell-tolk. Bygelyks, de needsaak om it ûntsnappen fan spaasjes yn triem- en mapnammen te kontrolearjen, de fergriemerij fan boarnen by it starten fan in aparte shell-tolk by it útfieren fan elk kommando, de dûbele ynterpretaasje fan it karakter "$" (brûkt yn sawol shell as make), rekken hâldend mei ynspringingen.
Dizze problemen wurde yn Doelen oplost troch it symboal "%" te brûken ynstee fan "$" foar gearstallingsfariabelen ("$" bliuwt allinich foar de shell), mei in parser LALR(1). It hiele kommandoblok wurdt lansearre yn ien eksimplaar fan 'e kommando-shell, en binnen it blok is willekeurige koade-opmaak tastien, sûnder ferwizing nei spesjale spaasjes.
Twa startmodi: meitsje modus om boudoelen te passen mei bestânsnammen (bygelyks bestân "foo.o" komt oerien mei doel "%name.o"), en direkte kompilaasjemodus:
Gearstallingstaktiken wurde bepaald troch spesjale regels dy't kinne wurde brûkt om de needsaak te bepalen om in gearstallingsdoel opnij te sammeljen. As in keppeling makke wurdt nei de oanwêzigens fan in bestân, dan wurdt dit eksplisyt bepaald troch it oerienkommende teken ("doel" foar de regelnamme en *bestân ("doel") foar it kontrolearjen fan it bestân).
De ûntwikkelder kin willekeurige attributen fan gearstallingstaktyk definiearje. De flagge "*bestân" is standert definiearre (@{...} jout ûnderdrukking fan útfier oan, en "útgong 99" sinjalearret de needsaak foar werbou):
taktyk *bestân (bestânnamme) = @{
test -f %triemnamme || út 99
foar f yn %