On Tue, Sep 30, 2008 at 03:00:34PM +0300, Dmitry Nezhevenko wrote: > > > назови платформу где не работает make? > > > > Любая, на которой не работает shell. > > Это Ваши слова? > > Вы все еще продолжаете утверждать, что make (кстати какой make? GNU?) > не работает на платформах, где нет шелла? Несмотря на то, что я привел > два примера (реальный и не очень), где make легко применяется без > наличия шелла.
В отрыве от контекста, конечно, моё утверждение неверно. Да, можно составить такой мейкфайл, который выполнится без шелла. Однако перед этим речь шла о переносимых системах сборки, и именно в этом контексте был упомянут make. А это подразумевает как переносимость самой системы, так и переносимость сборочных скриптов. Любой более-менее серьёзный мейкфайл задействует шелл. И никакой пользы от того, что make способен работать без шелла, Вы не получите. > Таким образом, make может работать на платформах без шелла. Да, он не > будет поддерживать все его фичи, но он будет работать. Например, им > можно будет собирать софт из исходников :) Соберите мне GNU hello без шелла. > > > make -- штука достаточно универсальная. Им можно собирать софт из > > > исходников, LaTeX документы, ну и др. Им же можно и шелл запускать > > > (явно или неявно). > > > > Кто с этим спорит? > > Вы :) Неправда. Где я сказал, что мейком нельзя собирать что-то из исходников или компилировать документы LaTeX? Я утверждаю только, что эта система сборки непереносима, т.к. вплотную завязана на шелл. > > Some implementations do not use system() for all command lines, as > > required by the portable makefile format; as a performance enhancement, > > they select lines without shell metacharacters for direct execution by > > execve(). There is no requirement that system() be used specifically, > > but merely that the same results be achieved. The metacharacters > > typically used to bypass the direct execve() execution have been any of: > > = | ^ ( ) ; & < > * ? [ ] : $ ‘ ’ " \ \n > > Спасибо, читал. Это лишь говорит о том, что make для некоторой части > команд (в которых используется синтаксис шелла) шелл нужен. В то же > время GNU make умеет в большей части случаев обходиться без шелла. И > ни кто не запрещает использовать в make только шелл-независимые вещи. Так ведь это как раз и есть непереносимость. Стандарт говорит: правила исполняются шеллом. Значит, шелл должен быть. Правда _некоторые_реализации_ могут исполнить _часть_ команд и без шелла, но это всего лишь частный случай, особенность реализации. Такой мейкфайл можно написать, но произвольный мейкфайл, взятый наугад из произвольного проекта с вероятностью 99,9% таким свойством обладать не будет. -- Andrey V. Kiselev ICQ# 26871517 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]