Zamestnanec Red Hatu predstavil montážny systém Goals. Vydanie GNU Make 4.2

Richard WM Jones, autor libguestfspracujúci v spoločnosti Red Hat, predložené nový nástroj na zostavenie Ciele, ktorého cieľom bolo odstrániť nedostatky a problémy utility make a zároveň zachovať celkovú jednoduchosť a prehľadnosť skriptov. Utilita make bola navrhnutá v roku 1976 a má množstvo koncepčných nedostatkov. Cieľom Goals je tieto nedostatky riešiť bez zmeny celkovej koncepcie.
Zdrojový kód cieľov distribuovaný pod licenciou GPLv2+.

Problémy, ktoré treba vyriešiť:

  • Podpora iba jednej taktiky riešenia závislostí – „inštrukcia zostavenia sa spustí, ak cieľový súbor chýba alebo je starší ako jedna zo závislostí.“ Goals plánuje implementovať aj ďalšie taktiky, ako je kontrola prítomnosti URL adresy, porovnávanie časov modifikácie s ľubovoľným súborom a vyhodnotenie zostavenia balíka. kōji, porovnávanie kontrolných súčtov, spúšťanie testovacích sád so selektívnym preskakovaním testov.
  • Pri spracovaní cieľov zostavenia nástroj make nerozlišuje medzi súbormi a názvami pravidiel, a preto neexistuje žiadna kontrola, ktorá by zabezpečila, že súbor, ktorý údajne vytvára, bude skutočne vytvorený pri spustení pravidla. Napríklad, ak pravidlo s názvom „test“ spustí testovacie skripty a súbor s názvom „test“ sa náhodne vytvorí, testy sa prestanú volať, pretože nástroj make bude predpokladať, že cieľ bol zostavený a nevyžaduje žiadne akcie. (Ak chcete tento problém obísť, môžete v nástroji make zadať direktívu „.PHONY:test“.) Nástroj Goals explicitne rozlišuje medzi súbormi a názvami pravidiel.

    Zamestnanec Red Hatu predstavil montážny systém Goals. Vydanie GNU Make 4.2
  • Problém s poskytnutím iba jedného parametra pre montážne pokyny.

    Zamestnanec Red Hatu predstavil montážny systém Goals. Vydanie GNU Make 4.2

    Goals umožňuje použitie ľubovoľného počtu pomenovaných parametrov. Napríklad môžete samostatne extrahovať príznak ladiacieho súboru z názvu:

    Zamestnanec Red Hatu predstavil montážny systém Goals. Vydanie GNU Make 4.2
  • Problémy s interakciou s interpretom shellu. Napríklad potreba ovládať únik medzier v názvoch súborov a adresárov, réžia zdrojov pri spúšťaní samostatného interpreta shellu pre každý príkaz, duálna interpretácia symbolu „$“ (používaného v shelli aj v make) a odsadenie.

    Uvedené problémy sú v Goals riešené použitím symbolu „%“ namiesto „$“ pre assemblerové premenné („$“ zostáva iba pre shell), použitím parsera LALR(1), čo vyžaduje uvádzanie ciest a názvov súborov v úvodzovkách a oddeľovanie blokov kódu zloženými zátvorkami. Celý blok príkazu sa spúšťa v jednej inštancii príkazového shellu a v rámci bloku je povolené ľubovoľné formátovanie kódu bez obmedzenia špeciálnymi medzerami.

    To bolo:
    cieľ: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    Sa stal:
    "cieľ": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

Ďalšie funkcie Cieľov:

  • Voliteľná podpora pre zadávanie vlastných názvov a parametrov:

    cieľ všetko = : "cieľ"

    odkaz na cieľ =
    "cieľ" : "foo.o", "bar.o" { ... }

    cieľ kompilácie (názov) =
    "%name.o" : "%name.c", "závislosť.h" { %CC %CFLAGS -c $^ -o $@ }

  • Dva režimy spustenia: režim vytvárania pre porovnávanie cieľov zostavenia s názvami súborov (napr. súbor „foo.o“ sa zhoduje s cieľom „%name.o“) a režim priamej kompilácie:

    cieľ všetko = : odkaz

    odkaz na cieľ =
    "cieľ" : "foo.o", kompilácia ("bar") { ... }

    cieľ kompilácie (názov) =
    "%name.o" : "%name.c", "závislosť.h" { %CC %CFLAGS -c $^ -o $@ }

  • Taktiky zostavovania sú definované špeciálnymi pravidlami, ktoré možno použiť na určenie, či je potrebné cieľ zostavovania znovu zostaviť. Ak je vyžadovaná prítomnosť súboru, je to explicitne špecifikované pomocou príslušného príznaku („target“ pre názov pravidla a *file(„target“) pre kontrolu súborov).

    "cieľ" : "foo.o", "bar.o" { ... }

    *súbor("cieľ") : *súbor("foo.o"), *súbor("bar.o") { ... }

  • Vývojár si môže definovať vlastné príznaky stratégie zostavovania. Príznak „*file“ je definovaný štandardne (@{…} označuje potlačenie výstupu a „exit 99“ signalizuje potrebu prestavby):

    taktika *súbor (názov súboru) = @{
    test -f %názovsúboru || ukončenie 99
    pre f v %

    Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster