#11
|
|||
|
|||
Re: Вопрос про Makefile
Alex Korchmar написал(а) к Victor Sudakov в Aug 17 20:11:33 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote: VS> будет каждый раз дергать rsync, даже если src1.txt и src2.txt VS> не менялись. А это не надо. я бы предоставил с этим разбираться rsync - в частности, ты можешь думать что "не надо", а на самом деле кто-то нечаяно похерил файл на одном из target. VS> Так что придётся делать какую-то безобразную конструкцию через touch и VS> флаг-файл. мне кажется, лишний запуск rsync куда менее безобразен и при этом полезен отдельно от остального makefile. Ну или можно вместо rsync использовать (gnu)rdist, он умеет timestamp file, но недостатки у этого способа те же. > Alex --- ifmail v.2.15dev5.4 |
#12
|
|||
|
|||
Вопрос про Makefile
Victor Sudakov написал(а) к Alex Korchmar в Aug 17 08:22:48 по местному времени:
Dear Alex, 14 Aug 17 20:11, Alex Korchmar wrote to me: VS>> будет каждый раз дергать rsync, даже если src1.txt и src2.txt VS>> не менялись. А это не надо. AK> я бы предоставил с этим разбираться rsync - в частности, ты можешь AK> думать что "не надо", а на самом деле кто-то нечаяно похерил файл на AK> одном из target. А если там кроме rsync еще и перезапуск удаленных демонов, чей файл? Вот это точно лишний раз без изменения файла я бы делать не стал. VS>> Так что придётся делать какую-то безобразную конструкцию через VS>> touch и флаг-файл. AK> мне кажется, лишний запуск rsync куда менее безобразен и при этом AK> полезен отдельно от остального makefile. Ну или можно вместо rsync AK> использовать (gnu)rdist, он умеет timestamp file, но недостатки у AK> этого способа те же. rdist хорош (он сейчас зовется rdist6), и умеет удалённый перезапуск, но это уже отдельный конфиг. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#13
|
|||
|
|||
Re: Вопрос про Makefile
Alex Korchmar написал(а) к Victor Sudakov в Aug 17 09:49:56 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote: VS>>> будет каждый раз дергать rsync, даже если src1.txt и src2.txt VS>>> не менялись. А это не надо. AK>> я бы предоставил с этим разбираться rsync - в частности, ты можешь AK>> думать что "не надо", а на самом деле кто-то нечаяно похерил файл на AK>> одном из target. VS> А если там кроме rsync еще и перезапуск удаленных демонов, чей файл? значит все же выбрось его и используй rdist. special выполняется только если файл обновлен. VS> rdist хорош (он сейчас зовется rdist6) это он у freebsd так зовется - она десять лет таскала за собой древнюю-предревнюю версию того же автора в base, для совместимости с незнамочем. > Alex --- ifmail v.2.15dev5.4 |
#14
|
|||
|
|||
Вопрос про Makefile
Victor Sudakov написал(а) к Alex Korchmar в Aug 17 14:34:16 по местному времени:
Dear Alex, 15 Aug 17 09:49, Alex Korchmar wrote to me: VS>>>> будет каждый раз дергать rsync, даже если src1.txt и src2.txt VS>>>> не менялись. А это не надо. AK>>> я бы предоставил с этим разбираться rsync - в частности, ты AK>>> можешь думать что "не надо", а на самом деле кто-то нечаяно AK>>> похерил файл на одном из target. VS>> А если там кроме rsync еще и перезапуск удаленных демонов, чей VS>> файл? AK> значит все же выбрось его и используй rdist. special выполняется AK> только если файл обновлен. Вопрос был всё же про сабж. Впрочем я уже сделал через создание флаг-файла: all: result.txt send result.txt: source1.txt source2.txt cat ${.ALLSRC} > ${.TARGET} send: result.txt touch ${.TARGET} rsync ... Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#15
|
|||
|
|||
Re: Вопрос про Makefile
Eugene Grosbein написал(а) к Victor Sudakov в Aug 17 15:35:53 по местному времени:
14 авг. 2017, понедельник, в 15:04 NOVT, Victor Sudakov написал(а): EG>> Или можно чуток красивее, но функционально эквивалентно: EG>> result.txt: source1.txt source2.txt EG>> foo.awk < ${.ALLSRC} > ${.TARGET} EG>> rsync ... EG>> То есть, следующей командой. VS> Вот в таком варианте (следующей командой) как раз и не работает, в смысле VS> "rsync ..." отрабатывает вне зависимости от успешного завершения foo.awk, из-за VS> чего я и пошёл искать другие варианты. Неправда. VS> А точно make при выполнении строчки "rsync ..." смотрит на код завершения VS> предыдущей команды? Разумеется: $ cat Makefile all: false echo XXX $ make false * Error code 1 Stop. make: stopped in /tmp Eugene -- Сердце - малочувствительный, мускулистый, грубый и жесткий орган. --- slrn/1.0.2 (FreeBSD) |
#16
|
|||
|
|||
Вопрос про Makefile
Victor Sudakov написал(а) к Eugene Grosbein в Aug 17 17:35:34 по местному времени:
Dear Eugene, 15 Aug 17 15:35, you wrote to me: EG>>> Или можно чуток красивее, но функционально эквивалентно: EG>>> result.txt: source1.txt source2.txt EG>>> foo.awk < ${.ALLSRC} > ${.TARGET} EG>>> rsync ... EG>>> То есть, следующей командой. VS>> Вот в таком варианте (следующей командой) как раз и не работает, VS>> в смысле "rsync ..." отрабатывает вне зависимости от успешного VS>> завершения foo.awk, из-за чего я и пошёл искать другие варианты. EG> Неправда. Проверил - и правда неправда. Чтобы было вне зависимости - надо "-" перед командой ставить. VS>> А точно make при выполнении строчки "rsync ..." смотрит на код VS>> завершения предыдущей команды? EG> Разумеется: Значит такой у меня хреновый foo.awk оказался, либо порядок строчек после result.txt. В общем после перехода на отдельный таргет для раздачи стало предвказуемее IMНO. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#17
|
|||
|
|||
Вопрос про Makefile
Victor Sudakov написал(а) к Eugene Grosbein в Aug 17 09:45:10 по местному времени:
Dear Eugene, 14 Aug 17 14:59, you wrote to me: VS>> Вот есть обычный Makefile VS>> result.txt: source1.txt source2.txt VS>> foo.awk < ${.ALLSRC} > ${.TARGET} VS>> Какую строчку добавить, чтобы если result.txt нормально создался, VS>> то его надо раздать по rsync/rdist/scp на несколько хостов, но VS>> только в случае, если он успешно создался. А если к примеру VS>> foo.awk отработал с ошибкой или source2.txt не нашёлся, то не VS>> раздавать? EG> result.txt: source1.txt source2.txt EG> foo.awk < ${.ALLSRC} > ${.TARGET} && rsync ... EG> Если source2.txt не нашелся, то весь конвейер и не будет запущен. Да, а какая получается разница между вариантами result.txt: source1.txt source2.txt foo.awk < ${.ALLSRC} > ${.TARGET} rsync ... и result.txt: source1.txt source2.txt foo.awk < ${.ALLSRC} > ${.TARGET} && rsync ... если как мы выяснили, следующая команда и так смотрит на код завершения предыдущей? Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#18
|
|||
|
|||
Re: Вопрос про Makefile
Eugene Grosbein написал(а) к Victor Sudakov в Aug 17 17:03:50 по местному времени:
19 авг. 2017, суббота, в 08:45 NOVT, Victor Sudakov написал(а): VS> Да, а какая получается разница между вариантами VS> result.txt: source1.txt source2.txt VS> foo.awk < ${.ALLSRC} > ${.TARGET} VS> rsync ... VS> и VS> result.txt: source1.txt source2.txt VS> foo.awk < ${.ALLSRC} > ${.TARGET} && rsync ... VS> если как мы выяснили, следующая команда и так смотрит на код завершения VS> предыдущей? Косметическая. Eugene -- http://grosbeyn.moikrug.ru/ --- slrn/1.0.2 (FreeBSD) |