Red Hat'i töötaja esitles Goals kogumisĂŒsteemi. GNU Make 4.2 vĂ€ljaanne

Richard Jones (Richard WM Jones), autor libguestfs, töötades Red Hat'is, esitles uus kogumishaldus Goals, mille eesmĂ€rk on kĂ”rvaldada puudused ja probleemid make utiliidis, sĂ€ilitades scriptide ĂŒldise lihtsuse ja arusaadavuse. Make utiliit projekteeriti 1976. aastal ja sellel on mitmeid kontseptuaalseid puudusi, mida Goals'is plaanitakse kĂ”rvaldada, mitte muutes ĂŒldkonseptsiooni.
Goals'i lÀhtekood levitatakse GPLv2+ litsentsi alusel.

Probleemid, mida lahendatakse:

  • Toetatakse vaid ĂŒhte sĂ”ltuvuste lahendamise taktikat - "kogumisjuhend kĂ€ivitatakse, kui sihtfail puudub vĂ”i on vanem kui ĂŒks sĂ”ltuvus". Goals'is plaanitakse rakendada ka teisi taktikaid, nagu URL-i olemasolu kontrollimine, muutmisaegade vĂ”rdlemine mistahes failiga, paketi kogumise hindamine Koji, kontrollsummade vĂ”rdlemine, testide tĂ€itmise kĂ€ivitamine valikuliselt testide vahele jĂ€tmisega.
  • Kogumiste eesmĂ€rkide töötlemisel ei erista make utiliit faile ja reeglite nimesid, seetĂ”ttu puudub kontroll, kas reegleid kĂ€ivitades luuakse tĂ”eliselt fail, mille loomist on mĂ€rgitud. NĂ€iteks, kui „test” nimega reegel, mis kĂ€ivitab testiskriptid, juhuslikult loob faili nimega „test”, siis testid enam ei kĂ€ivitata, kuna make arvab, et siht on kogutud ja ei vaja tĂ€iendavat toimingute sooritamist (make'is saab probleemi vĂ€ltimiseks mÀÀrata direktiivi „.PHONY: test”). Goals eristab selgelt faile ja reeglite nimesid.

    Red Hat'i töötaja esitles Goals kogumisĂŒsteemi. GNU Make 4.2 vĂ€ljaanne
  • Probleem, et kogumisinstruktsioonidele antakse ainult ĂŒks parameeter.

    Red Hat'i töötaja esitles Goals kogumisĂŒsteemi. GNU Make 4.2 vĂ€ljaanne

    Goals'is soovitatakse kasutada suvalist arvu nimetatud parameetreid. NĂ€iteks saab eristada nimest silumisefaili tunnust:

    Red Hat'i töötaja esitles Goals kogumisĂŒsteemi. GNU Make 4.2 vĂ€ljaanne
  • Probleemid suhtlemisel shell-interpretatsiooniga. NĂ€iteks, vajadus kontrollida failide ja kaustade nimede vahepealseid tĂŒhikuid, ressursside raiskamine iga kĂ€su tĂ€itmise ajal eraldi shell-interpretatsiooni kĂ€ivitamiseks, sĂŒmboli "$" topelt tĂ”lgendamine (kasutatakse nii shell'is kui make'is), sissetĂ”mbe tĂ”lgendamine.

    Antud probleemid lahendatakse Goals'is, asendades kogumismuutujate jaoks sĂŒmboli "%" sĂŒmboliga "$" ("$" jÀÀb ainult shell'i jaoks), rakendades parserit LALR(1), mis tuleb kĂ€sitleda tee ja failinime ĂŒmbritsemisel jutumĂ€rkides ning koodiblokkide mÀÀratlemisel kurvi sĂŒmbolitega. Kogu blokk kĂ€ivitub ĂŒhes kĂ€surea eksemplaris ja bloki sees on lubatud vaba koodiformaat, ilma spetsiaalsete vahedega seotuna.

    Oli:
    target: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    On:
    «target»: «foo.o», «bar.o» {
    LAGS %< -o %@
    }

Muud Goalsi omadused:

  • Valikuline tugi suvaliste nimede ja parameetrite mÀÀramiseks:

    goal all = : «target»

    goal link =
    «target» : «foo.o», «bar.o» { 
 }

    goal compile (name) =
    «%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ }

  • Kaks kĂ€ivitusreĆŸiimi: make-reĆŸiim, et siduda ehitusĂĄrodeid failinimedega (nĂ€iteks fail «foo.o» vastab eesmĂ€rgile «%name.o»), ja otsese kompileerimise reĆŸiim:

    goal all = : link

    goal link =
    «target» : «foo.o», compile («bar») { 
 }

    goal compile (name) =
    «%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ }

  • Ehitusstrateegia mÀÀratakse spetsiaalsete reeglite abil, millega saab mÀÀrata, kas ehitustulemust tuleks uuesti ehitada. Kui on seotud faili olemasolu, siis mÀÀratakse see selgelt vastava tunnuse kaudu («target» reegli nime ja *file(«target») faili kontrollimiseks).

    «target» : «foo.o», «bar.o» { 
 }

    *file(«target») : *file(«foo.o»), *file(«bar.o») { 
 }

  • Arendaja saab mÀÀrata suvalisi ehitusstrateegiate tunnuseid. Tunnus «*file» on vaikimisi mÀÀratletud (@{
} tĂ€histab vĂ€ljundi summutamist ja «exit 99» annab mĂ€rku, et ehitamist on vaja uuesti teha):

    tactic *file (filename) = @{
    test -f %filename || exit 99
    for f in %

    Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster