Dmitry E. Oboukhov -> [email protected] @ Tue, 30 Sep 2008
20:16:13 +0400:
AC>>>>> PS: недавно вот sim'овский debian/rules перекроили выкинули
AC>>>>> рекурсию, получился изящщненький такой rules на полтора экрана
AC>>>>> размером, а был экранов на 7-8 да еще и с рекурсией продраться
AC>>>>> сквозь логику можно, но трудно
AC>>>> install-stamp:
AC>>>> dh_testdir
AC>>>> dh_testroot
AC>>>> make -C build-sim install DESTDIR=$(TMP_DIR)/sim
AC>>>> make -C build-sim-qt install DESTDIR=$(TMP_DIR)/sim-qt
AC>>>> Если это не рекурсия, то кто тогда рекурсия?
AC>>> рекурсия это
AC>>> debian/rules пара-переменных цель
AC>> Это - рекурсивный вызов makefile. А речь идет про рекурсивный вызов make.
DEO> гы, берем например /usr/bin там скриптов наверное треть
DEO> куча из них перевызввает друг друга (например docbook2html пока дойдешь
DEO> до ELF'а поседеешь :))
DEO> и что их кто-то называет рекурсивными? нет
Называют.
DEO> чем отличается вызов make из make от выозва скажем gcc?
DEO> ничем
DEO> в случае make собирается цель
DEO> в случае gcc собирается цель
make, напомню, в отличие от gcc, вызывают не только чтобы собрать цель,
но и чтобы _пере_собрать ее. С минимальными затратами. Он именно для
этого придуман, иначе он был бы нафиг не нужен, шелловский скрипт,
начинающийся с set -e, того же результата достигает куда проще и с куда
меньшими возможностями ошибок.
Он, конечно, _заодно_ позволяет и собрать цель, но это, прямо скажем, не
основное его назначение, а именно что побочный эффект. Так вот,
рекурсивный вызов make ломает его основную функциональность. Побочную,
правда, сохраняет.
Кстати, грабель подобного типа в дебиановских пакетах мне попадалось.
Я, правда, заранее знаю, что они там есть... Но, в частности, мне
попадался пакет, который не собирался с первой попытки, а собирался
только со второй... Причем стараниями мейнтейнера, а не автора
апстрима...
DEO> в первом случае можно опциями влиять на получаемый результат
DEO> во втором случае можно опциями влиять на получаемый результат
DEO> как хотите но я категорически против называния вызова стороннего
DEO> Make рекурсивным.
Хорошо, специально для тебя. Running make from make considered
harmful. В info make именно это называется recursive, но чего не
сделаешь для хорошего человека...
AC>>> вызов внешних make - это не рекурсия, это тоже самое что и вызов
AC>>> внешнего компилятора.
AC>> Нет. Домашнее упражнение: найти принципиальную разницу. Хинт:
AC>> внимательно осознать цели и задачи make.
DEO> нет принципиальной разницы
DEO> вызов make с другим makefile в данном случае - лишь один из видов
DEO> компиляторов:
DEO> цель собирает
DEO> код ошибки возвращает
Я недаром указал, что приведенное место - пример того, почему harmful.
Ты потрудись подумать, что там harmful. Для человека, как бы типа
ответственного за корректную сборку пакетов, это очень нелишнее
знание...
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: [EMAIL PROTECTED]
Юзер упорствует в хождении по граблям. Образовавшиеся шишки он считает
трудовыми мозолями. (С)энта
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]