The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"MAKE не останавливается, если утилита возвращает больше 1"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"MAKE не останавливается, если утилита возвращает больше 1"  
Сообщение от echo email(??) on 26-Фев-06, 17:05 
tar завершается с ошибкой, но возвращает не 1, а 2. make продолжает работать дальше.
Есть ли способ его останавливать на всё, что не ноль?
ОС Linux RH
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "MAKE не останавливается, если утилита возвращает больше 1"  
Сообщение от Андрей (??) on 26-Фев-06, 19:35 
по умолчанию всё что не 0 будет воспринято как ошибка
с какими ключами запускается make ?
покажите ваш Makefile или ту его часть где возникает ошибка


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "MAKE не останавливается, если утилита возвращает больше 1"  
Сообщение от echo email(??) on 26-Фев-06, 21:27 
>по умолчанию всё что не 0 будет воспринято как ошибка

я тоже так всегда думал

>с какими ключами запускается make ?

вроде нет ключей, просто в Makefile цели, как обычно.
.SILENT: определён, чтобы без эха.

>покажите ваш Makefile или ту его часть где возникает ошибка

да я просто накидал такое, не заканчивает этот гда работу, код завершения 2 и эхо "Here!" выдаёт.

all:
    tar ex
    echo "exit code $$?"
    echo "Here!"

я делаю в мэйк-файле tar cf - -C /mydir/ . | tar xvf - -C /my/dist/
если mydir не создан, надо останавливаться.
а эта дура дальше маслает.
вот @#$%.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "MAKE не останавливается, если утилита возвращает больше 1"  
Сообщение от Андрей (??) on 27-Фев-06, 07:23 
взял ваш пример
all:
    @tar ex
    @echo "exit code $$?"
    @echo "Here!"

$ make
tar: invalid option -- e
Try `tar --help' or `tar --usage' for more information.
make: *** [all] Error 64
$

то есть всё как и должно быть

>я делаю в мэйк-файле tar cf - -C /mydir/ . | tar
>xvf - -C /my/dist/
>если mydir не создан, надо останавливаться.
>а эта дура дальше маслает.
>вот @#$%.

эта конструкция действительно не показывает то что вы от неё ожидаете, но работает правильно, это ваши ожидания неверны :-)

первая часть (tar cf - -C mydir/ .) завершается с ошибкой в результате которой на вход следующей команде (tar xvf - -C my/dist/) подаётся пустой поток и команда завершается без ошибки,
раз нечего разарихировать, то и нечего директорию проверять,
и вот этот 0 от второй команды заставляет make продолжить работу.

кстати конструкция вида
all:
    command
    echo $$?

практически бесполезна так как make каждую строку запускает в отдельном shell, поэтому вторая строка всегда вернёт 0. Надо писать через ; и использовать \ если хотите перенести строки

присутствие директории можно проверит по другому, например вот так:
all:
  [ -d mydir ] && tar cf - -C mydir/ . | tar xvf - -C my/dist/

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "MAKE не останавливается, если утилита возвращает больше 1"  
Сообщение от echo email(??) on 27-Фев-06, 10:43 

>результате которой на вход следующей команде (tar xvf - -C my/dist/)
>подаётся пустой поток и команда завершается без ошибки,

да, я уже и сам допёр


>присутствие директории можно проверит по другому, например вот так:
>all:
>  [ -d mydir ] && tar cf - -C mydir/
>. | tar xvf - -C my/dist/

  дело не только в наличии каталога. я написал тару ключи с ошибкой.
  вывод быстро пролетал мимо и я не замечал там сообщения об ошибке.
  долго искал грабли.

  надо чтобы завершалась работа при любой ошибке.
  можно это грамотно написать к пайпу?
  или удачное завершение последней команды всегда будет рулить?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру