Dmitry E. Oboukhov -> debian-russian@lists.debian.org @ 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]