Запосленик Ред Хата представио је систем састављања циљева. Издање ГНУ Маке 4.2

Рицхард ВМ Јонес, аутор либгуестфс, ради у Ред Хату, уведен нови услужни програм за монтажу Циљеви, са циљем да се елиминишу недостаци и проблеми у корисности маке уз одржавање укупне једноставности и разумљивости скрипти. Услужни програм маке је дизајниран 1976. године и има бројне концептуалне недостатке. Циљеви су да елиминишу ове недостатке без промене општег концепта.
Изворни код циљева дистрибуира лиценциран под ГПЛв2+.

Решиви проблеми:

  • Подршка само за једну тактику решавања зависности – „инструкција за склапање се покреће ако циљна датотека недостаје или је старија од једне од зависности.“ Циљеви планирају да имплементирају друге тактике, као што је провера присуства УРЛ-а, упоређивање времена измене са било којом датотеком, процена уграђеног пакета Који, поређење контролних сума, покретање тест случајева са селективним прескакањем тестова.
  • Када обрађује циљеве изградње, маке не одваја датотеке и имена правила, и као резултат тога, нема провере да ће приликом покретања правила датотека за коју тврди да је креирана заправо бити креирана. На пример, ако имате правило под називом „тест“ које покреће скрипте са тестовима, случајно је креирана датотека под називом „тест“, тада се тестови више неће позивати, пошто ће маке сматрати да је циљ изграђен и да не захтева било коју радњу (да бисте заобишли проблем у маке, можете навести директиву „.ПХОНИ: тест“). Циљеви експлицитно раздвајају називе датотека и правила.

    Запосленик Ред Хата представио је систем састављања циљева. Издање ГНУ Маке 4.2

  • Проблем са обезбеђивањем само једног параметра за упутства за склапање.

    Запосленик Ред Хата представио је систем састављања циљева. Издање ГНУ Маке 4.2

    Циљеви вам омогућавају да користите произвољан број именованих параметара. На пример, можете засебно издвојити знак датотеке за отклањање грешака из имена:

    Запосленик Ред Хата представио је систем састављања циљева. Издање ГНУ Маке 4.2

  • Проблеми у интеракцији са схелл интерпретером. На пример, потреба да се контролише избегавање размака у именима датотека и директоријума, трошење ресурса на покретање посебног тумача љуске приликом извршавања сваке команде, двоструко тумачење знака „$“ (користи се и у љусци и у изради), узимајући у обзир удубљења.

    Ови проблеми се решавају у циљевима коришћењем симбола „%“ уместо „$“ за варијабле склопа („$“ остаје само за шкољку), користећи парсер ЛАЛР(1), што захтева да путање и имена датотека окружите наводницима и истакнете блокове кода витичастим заградама. Цео командни блок се покреће у једној инстанци командне љуске, а унутар блока је дозвољено произвољно форматирање кода, без позивања на посебне размаке.

    Било је:
    циљ: фоо.о бар.о
    ${ЦЦ} ${ЦФЛАГС} $< -о $@

    Постало је:
    "таргет": "фоо.о", "бар.о" {
    %ЦЦ %ЦФЛАГС %< -о %@
    }

Остале карактеристике циљева:

  • Опциона подршка за одређивање произвољних имена и параметара:

    циљ све = : "циљ"

    циљ линк =
    "таргет" : "фоо.о", "бар.о" { ... }

    циљ саставити (име) =
    "%наме.о" : "%наме.ц", "деп.х" { %ЦЦ %ЦФЛАГС -ц $^ -о $@ }

  • Два режима покретања: начин рада за усклађивање циљева изградње са именима датотека (на пример, датотека „фоо.о“ одговара циљу „%наме.о“) и режим директне компилације:

    циљ све = : веза

    циљ линк =
    "таргет" : "фоо.о", цомпиле ("бар") { ... }

    циљ саставити (име) =
    "%наме.о" : "%наме.ц", "деп.х" { %ЦЦ %ЦФЛАГС -ц $^ -о $@ }

  • Тактика склапања одређена је посебним правилима која се могу користити за утврђивање потребе за поновним састављањем скупне мете. Ако је направљена веза са присуством датотеке, онда се то експлицитно одређује преко одговарајућег знака („циљ“ за име правила и *фајл („циљ“) за проверу датотеке).

    "таргет" : "фоо.о", "бар.о" { ... }

    *филе("таргет") : *филе("фоо.о"), *филе("бар.о") { ... }

  • Програмер може дефинисати произвољне атрибуте тактике монтаже. Ознака "*филе" је подразумевано дефинисана (@{...} означава потискивање излаза, а "излаз 99" сигнализира потребу за поновном изградњом):

    тактика *фајл (име датотеке) = @{
    тест -ф %име датотеке || излаз 99
    за ф у %

    Извор: опеннет.ру

Додај коментар