ProHoster > Blog > internet nyheder > En Red Hat-medarbejder præsenterede Goals-samlingssystemet. Frigivelse af GNU Make 4.2
En Red Hat-medarbejder præsenterede Goals-samlingssystemet. Frigivelse af GNU Make 4.2
Richard WM Jones, forfatter libguestfs, arbejder hos Red Hat, indsendt nyt montageværktøj Mål, der har til formål at eliminere mangler og problemer i brugen af fabrikat og samtidig bibeholde den overordnede enkelhed og forståelighed af scripts. Make-værktøjet blev designet i 1976 og har en række konceptuelle mangler; Goals planlægger at eliminere disse mangler uden at ændre det generelle koncept.
Mål kildekode distribueret af licenseret under GPLv2+.
Understøttelse af kun én afhængighedsløsningstaktik - "assemblyinstruktionen køres, hvis målfilen mangler eller er ældre end en af afhængighederne." Mål planlægger at implementere andre taktikker, såsom at tjekke for tilstedeværelsen af en URL, sammenligne ændringstider med enhver fil, evaluere den indbyggede pakke koji, sammenligning af kontrolsummer, kørende testcases med selektivt spring over tests.
Ved behandling af build-mål adskiller make ikke filer og regelnavne, og som følge heraf er der ingen kontrol af, at når en regel køres, vil den fil, den hævder at være oprettet, faktisk blive oprettet. For eksempel, hvis du har en regel kaldet "test", der kører scripts med tests, oprettes en fil med navnet "test" ved et uheld, så vil testene ikke længere blive kaldt, da make vil vurdere, at målet er bygget og ikke kræver enhver handling (for at omgå problemet i make, kan du angive ".PHONY: test"-direktivet). Mål adskiller eksplicit filer og regelnavne.
Problem med kun at angive én parameter til monteringsvejledningen.
Mål giver dig mulighed for at bruge et vilkårligt antal navngivne parametre. For eksempel kan du separat udtrække tegnet på en fejlretningsfil fra navnet:
Problemer med at interagere med shell-tolken. For eksempel behovet for at kontrollere undslippelsen af mellemrum i fil- og mappenavne, spild af ressourcer ved at starte en separat shell-fortolker, når hver kommando udføres, dobbeltfortolkningen af "$"-tegnet (brugt i både shell og make), under hensyntagen til fordybninger.
Disse problemer løses i Goals ved at bruge "%"-symbolet i stedet for "$" for assembly-variabler ("$" forbliver kun for skallen), ved hjælp af en parser LALR(1), som kræver, at du omgiver stier og filnavne med anførselstegn og fremhæver kodeblokke med krøllede klammeparenteser. Hele kommandoblokken startes i én forekomst af kommandoskallen, og vilkårlig kodeformatering er tilladt inde i blokken uden henvisning til specielle mellemrum.
Samlingstaktik bestemmes af særlige regler, der kan bruges til at bestemme behovet for at samle et samlingsmål igen. Hvis der laves et link til tilstedeværelsen af en fil, så bestemmes dette eksplicit gennem det tilsvarende tegn ("mål" for regelnavnet og *fil ("mål") for kontrol af filen).
"target" : "foo.o", "bar.o" { ... }
*fil("mål"): *fil("foo.o"), *fil("bar.o") { ... }
Udvikleren kan definere vilkårlige attributter for monteringstaktik. "*file"-flaget er defineret som standard (@{...} angiver undertrykkelse af output, og "exit 99" signalerer behovet for genopbygning):
taktik *fil (filnavn) = @{
test -f %filnavn || udgang 99
for f i %