En anstÀlld pÄ Red Hat presenterade byggsystemet Goals. Utgivning av GNU Make 4.2

Richard Jones (Richard WM Jones), författare libguestfs, arbetande pÄ Red Hat, Är ett nytt byggverktyg MÄl, som syftar till att ÄtgÀrda brister och problem med make-verktyget samtidigt som man behÄller den övergripande enkelheten och tydligheten i script. Make-verktyget designades 1976 och har flera konceptuella brister, som planeras att ÄtgÀrdas i MÄl utan att Àndra den grundlÀggande konceptet.
KÀllkoden för MÄl sprids under GPLv2+.

Problem som adresseras:

  • Stöd för endast en taktik vid hantering av beroenden – "bygginstruktionen körs om mĂ„lfilen saknas eller Ă€r Ă€ldre Ă€n nĂ„gon av beroenden". I MĂ„l planeras det att implementera andra taktiker, sĂ„som att kontrollera URL:er, jĂ€mföra tidsstĂ€mplar med vilken fil som helst, och utvĂ€rdera byggprocessen i Koji, jĂ€mföra kontrollsummor, och köra testsviter med selektivt bortfall av tester.
  • Vid hantering av byggmĂ„l separerar make-verktyget inte filer och regelnamn, vilket leder till att det saknas en kontroll om att filen verkligen kommer att skapas nĂ€r regeln körs. Till exempel, om en regel med namnet "test", som kör tester, av misstag skapar en fil med namnet "test", kommer testerna att sluta köras, eftersom make anser att mĂ„let har uppnĂ„tts och inte behöver utföra nĂ„gra Ă„tgĂ€rder (för att kringgĂ„ problemet i make kan man ange direktivet ".PHONY: test"). MĂ„l separerar tydligt filer och regelnamn.

    En anstÀlld pÄ Red Hat presenterade byggsystemet Goals. Utgivning av GNU Make 4.2
  • Problemet med att förse endast ett argument för bygginstruktioner.

    En anstÀlld pÄ Red Hat presenterade byggsystemet Goals. Utgivning av GNU Make 4.2

    I MÄl föreslÄs att anvÀnda ett valfritt antal namngivna argument. Till exempel kan man sÀrskilt extrahera en egenskap av en debugfil ur namnet:

    En anstÀlld pÄ Red Hat presenterade byggsystemet Goals. Utgivning av GNU Make 4.2
  • Problem med samverkan med shell-tolk. Till exempel, behovet av att kontrollera vilka tecken som ska undvikas i fil- och mappnamn, resursförbrukningen vid körning av en separat shell-tolk för varje kommando, dubbel tolkning av tecknet "$" (som anvĂ€nds bĂ„de i shell och i make), hĂ€nsyn till indragningar.

    Dessa problem löses i MÄl genom att anvÀnda tecknet "%" istÀllet för "$" för byggvariabler ("$" förblir endast för shell), genom att anvÀnda parsers LALR(1), som krÀver att sökvÀgar och filnamn omges av citattecken och att kodblock markeras med klamrar. Hela blocket körs i en instans av kommandotolken, och inom blocket Àr godtycklig kodformatering tillÄten, utan bindning till specifika mellanrum.

    Förut:
    mÄl: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    Nu:
    «mÄl»: «foo.o», «bar.o» {
    LAGS < -o %@
    }

Andra egenskaper hos mÄl:

  • Valfri support för att ange godtyckliga namn och parametrar:

    mÄl all = : «mÄl»

    mÄl lÀnk =
    «mĂ„l» : «foo.o», «bar.o» { 
 }

    mÄl kompilera (namn) =
    «%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ }

  • TvĂ„ körlĂ€gen: make-lĂ€get för att matcha byggmĂ„l med filnamn (till exempel filen «foo.o» motsvarar mĂ„let «%name.o»), och lĂ€get för direkt körning av kompilering:

    mÄl all = : lÀnk

    mÄl lÀnk =
    «mĂ„l» : «foo.o», kompilera («bar») { 
 }

    mÄl kompilera (namn) =
    «%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ }

  • Byggtaktiken definieras av speciella regler, genom vilka behovet av att ombygga byggmĂ„let kan faststĂ€llas. Om det Ă€r kopplat till filens nĂ€rvaro, definieras detta tydligt genom motsvarande kĂ€nnetecken («mĂ„l» för regelnamn och *file(«mĂ„l») för filkontroll).

    «mĂ„l» : «foo.o», «bar.o» { 
 }

    *file(«mĂ„l») : *file(«foo.o»), *file(«bar.o») { 
 }

  • Utvecklaren kan definiera godtyckliga kĂ€nnetecken för byggtaktik. KĂ€nnetecknet «*file» Ă€r definierat som standard (@{
} indikerar att utdata ska tystas, och «exit 99» signalerar behovet av att ombygga):

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

    KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster