реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Closed TopicStart new topic
> не работает рекурсивный вызов make, make -C $dir
Сергей Борщ
сообщение Mar 30 2008, 21:44
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Ситуация смешна.
makefile:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all:
    for subdir in $(SUBDIRS); do echo ===== building $$subdir =====;$(MAKE) -C $$subdir all; done

результат:
Код
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
===== building ./a =====
make.EXE[1]: Entering directory `C:/tmp'
for subdir in  ./a ./b; do echo ===== building $subdir =====;C:/Programs/UNIX_U~1/make.EXE -C $subdir all; done
и так до бесконечности. Вызов "вручную" make -C ./a работает. Эффект проявляется на двух компах, на двух других все работает. make на всех компах одинаковый, от WinAVR. make от yagarto ведет себя также. Винда ХР.
Цитата
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32
Что я мог поломать?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 31 2008, 03:25
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Сергей Борщ @ Mar 31 2008, 02:44) *
Ситуация смешна.


А у меня вчера перестал нормально вызываться rar из makefile...
Пишу
Код
rars    =\
    src\*.c src\*.h makefile

archive:
    @echo *** archiving...
    @$(archiver) a -r -inul -agyy-mm-dd,hh-nn-ss $(bak_dir)\$(program_name)_.rar $(rars)
    @echo *** done!


- архивирует только makefile. При вызове с той же командной строкой руками - архивирует всё...

Ваш вариант у меня совсем не заработал - у меня выкинут шелл. Вот так - получилось:
Код
SUBDIRS =
SUBDIRS += ".\a"
SUBDIRS += ".\b"

all:
    a.bat $(SUBDIRS)


где a.bat:
Код
for %%f in  (%1 %2 %3) do @make -C %%f all


Это конечно не дело, но хоть работает:-)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 2 2008, 08:34
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Mar 31 2008, 00:44) *
Ситуация смешна.
makefile:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all:
    for subdir in $(SUBDIRS); do echo ===== building $$subdir =====;$(MAKE) -C $$subdir all; done

А если так:
Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

all: $(SUBDIRS)

$(foreach f, $(SUBDIRS), $(f)):
    @echo "===== building $@ ====="
    @$(MAKE) -C $@ all

.PHONY: all $(SUBDIRS)

PS: Ваш вариант у меня работает на Linux.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 08:51
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Apr 2 2008, 11:34) *
А если так:
так работает.
теперь пытаюсь понять, как аналогично добавить цель clean.
Но хотелось победить исходный - слишком много файлов переписывать.
Цитата(amw @ Apr 2 2008, 11:34) *
PS: Ваш вариант у меня работает на Linux.
И у меня работает на двух машинах с виндой. А на двух не работает. Пока только пришло в голову, что на машинах, где не работает, процы AMD, а где работает - Интел, но я не верю, что причина может быть в этом. Надо будет внимательне посмотреть, какие версии sh стоят на этих машинах.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 2 2008, 09:45
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Apr 2 2008, 11:51) *
так работает.
теперь пытаюсь понять, как аналогично добавить цель clean.


Код
SUBDIRS =
SUBDIRS += ./a
SUBDIRS += ./b

CLEANS = $(foreach f, $(SUBDIRS), clean-$(f))

all: $(SUBDIRS)

$(foreach f, $(SUBDIRS), $(f)):
    @echo "$(SUBDIRS)"
    @echo "===== building $@ ====="
    @$(MAKE) -C $@ all

clean: $(CLEANS)

$(foreach f, $(CLEANS), $(f)):
    @echo "$(lastword $(subst -, , $@))"
    $(MAKE) -C $(lastword $(subst -, , $@)) clean

.PHONY: all $(SUBDIRS) clean $(CLEANS)

В выражении
Код
$(lastword $(subst -, , $@))

ОДИН ПРОБЕЛ между запятыми.

И так, на заметку, аргументы для echo лучше брать в кавычки, по крайней мере, если там есть пробелы.
К стати, а echo используется откуда? Из Windows или из чего у Вас там юниксовое (cygwin, mingw).


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 12:14
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Ну это слишком сложно... лишних 6 строчек вместо одной. Не, "это не наш метод" (с).

Хм, кое-что проясняется.
Цитата(amw @ Apr 2 2008, 12:45) *
Кстати, а echo используется откуда? Из Windows или из чего у Вас там юниксовое (cygwin, mingw).
Вот эта фраза натолкнула на исследования. Запускается гнутый echo, но даже выкидывая его результат не меняется.

Попробовал на еще одной машине (проц интел). Поскольку там никаких гнутых инструментов не стоит, то скопировал в папку с makefile программы make.exe, sh.exe, echo.exe, библиотеку msys-1.0.dll. Получил тот же эффект - циклится до бесконечности. Запустил с той же флешки на своем компе (где все работало) - тоже циклится. Начал убирать по одному файлу. Выяснил такую закономерность:

make.exe, sh.exe, msys-1.0.dll лежат в одной папке - работает неправильно.
make.exe + msys-1.0.dll лежат в одной папке, sh.exe в другой - работает неправильно.

make.exe лежит в одной папке, sh.exe + msys-1.0.dll в другой - все работает.
make.exe в одной папке, sh.exe в другой, msys-1.0.dll в третьей - все работает.
добавлено:
make.exe + msys-1.0.dll лежат в одной папке, sh.exe + msys-1.0.dll в другой - все работает.


О как... теперь понятно, почему на двух машинах работало - там make.exe лежал в отдельной папке, которая указана в path до папки WinAVR/utils/bin

Осталось выяснить, чем вызвано такое странное поведение - какими-то еще установленными программами или это бага mingw. Учитывая, что на "чистой" машине поведение было неадекватным - скорее всего бага.

версия sh.exe:
GNU bash, version 2.04.0(1)-release (i686-pc-msys)
Copyright 1999 Free Software Foundation, Inc.

кто-нибудь из пользователей WinAVR может повторить эксперимент? Для этого надо приведенный makefile из поста №1 (восстановив табулятор перед for) положить в одну папку с make.exe, sh.exe и msys-1.0.dll и запустить make

P.S. за кавычки спасибо, учту.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 2 2008, 13:02
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Apr 2 2008, 15:14) *
make.exe, sh.exe, msys-1.0.dll лежат в одной папке - работает неправильно.
make.exe + msys-1.0.dll лежат в одной папке, sh.exe в другой - работает неправильно.

make.exe лежит в одной папке, sh.exe + msys-1.0.dll в другой - все работает.
make.exe в одной папке, sh.exe в другой, msys-1.0.dll в третьей - все работает.
добавлено:
make.exe + msys-1.0.dll лежат в одной папке, sh.exe + msys-1.0.dll в другой - все работает.
О как... теперь понятно, почему на двух машинах работало - там make.exe лежал в отдельной папке, которая указана в path до папки WinAVR/utils/bin

Осталось выяснить, чем вызвано такое странное поведение - какими-то еще установленными программами или это бага mingw. Учитывая, что на "чистой" машине поведение было неадекватным - скорее всего бага.

По моему тут имеет значение порядок каталогов в PATH и, соответственно, порядок поиска нужных программ в cmd.exe. На сколько я понимаю, текущий каталог проверяется последним.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 13:16
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Apr 2 2008, 16:02) *
По моему тут имеет значение порядок каталогов в PATH и, соответственно, порядок поиска нужных программ в cmd.exe.
Программы одни и те же, эффект проявляется в зависимости от их взаимного расположения в разных папках (на которые указывает PATH).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 2 2008, 13:35
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Apr 2 2008, 16:16) *
Программы одни и те же, эффект проявляется в зависимости от их взаимного расположения в разных папках (на которые указывает PATH).

А порядок каталогов в PATH имеет значение?
В пердидущем тесте какая нибудь программа находилась в текущем каталоге? И если да, то был ли в PATH текущий каталог?

В принципе, проблема решена, но на всякий случай, если есть желание проверить.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 2 2008, 14:26
Сообщение #10


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(amw @ Apr 2 2008, 19:35) *
В пердидущем тесте какая нибудь программа находилась в текущем каталоге? И если да, то был ли в PATH текущий каталог?


В винде поиск сначала выполняется в текущем каталоге.

А я так и не разобрался, что с моим Rar-ом:-)
Выкрутился так:
Код
archive:
    @echo "--- archiving..."
    @cmd /C "start $(archiver) a -agyy-mm-dd,hh-nn-ss $(bak_dir)\$(program_name)_.rar $(rars)"
    @echo "--- done!"


Так - работает. Чудеса с этими мейками и шеллами в виндах, вечно что-то не так:-)

Цитата(Сергей Борщ @ Apr 2 2008, 18:14) *
кто-нибудь из пользователей WinAVR может повторить эксперимент?


Попробовал. Это хуже любого вируса! :-)



Это только самая голова, и их было немеряно:-)))
Я ещё отошёл покурить, думал что остановил сей процесс... Пришёл, а тут... Еле отбился:-)

Это вариант когда всё в одной папке.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 14:39
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Apr 2 2008, 16:35) *
В пердидущем тесте какая нибудь программа находилась в текущем каталоге? И если да, то был ли в PATH текущий каталог?
Поиск идет сначала в текущем каталоге. Эффект не зависит от того, находятся файлы в текущем каталоне или в каталогах, куда указывает path. Т.е. он наблюдается если все три в текущем каталоге, если все три в одном каталоге, доступном через path, если sh в текущем а make+msys в другом (доступном через path), если sh в другом а make+ msys в текущем, или если make+msys в одном доступном через path а sh в другом(тоже доступном через path). От порядка каталогов в path не зависит.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 2 2008, 14:54
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(Сергей Борщ @ Apr 2 2008, 17:39) *
Поиск идет сначала в текущем каталоге. Эффект не зависит от того, находятся файлы в текущем каталоне или в каталогах, куда указывает path. Т.е. он наблюдается если все три в текущем каталоге, если все три в одном каталоге, доступном через path, если sh в текущем а make+msys в другом (доступном через path), если sh в другом а make+ msys в текущем, или если make+msys в одном доступном через path а sh в другом(тоже доступном через path). От порядка каталогов в path не зависит.

Ну может и правда баг.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 18:22
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amw @ Apr 2 2008, 17:54) *
Ну может и правда баг.
Мда. Поставил msys, там все работает нормально. Полез читать доку по винавру на предмет - кому отправлять баг-репорт


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 2 2008, 19:13
Сообщение #14


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Сергей Борщ @ Apr 2 2008, 20:22) *
Мда. Поставил msys, там все работает нормально. Полез читать доку по винавру на предмет - кому отправлять баг-репорт
А, ну да. Потому у меня и работает smile.gif
Я давно стараюсь держать MSYS первым по путям.
Достаточно скреститься make.exe и sh.exe, sed.exe, mkdir.exe из "разноватых" сборок - сразу с очень большой вероятностю грабли. Но вот чтобы грабли лезли из "комплектного" набора - это впервые нарываюсь.

Хм... (Core2Quad, XP Pro sp2)
сделал батник
Код
path %AVRGCC%\utils\bin
make

Т.е. в нём уже пути такие, что он может вызвать make.exe/sh.exe/echo.exe только из одного комплекта и брать msys-1.0.dll из него же.
Так, а AVRGCC у меня сейчас показывает на C:\WinAVR, который сейчас есть линком (ntfs junction point) на C:\WinAVR-20071221
Короче, то, что полетело у FAR-а в окне я еле законтрол-Цечил.
make пытается войти не в подкаталог ./a, а в текущий каталог, вызывается опять с тем же makefile и побежали.
Код
===== building ./a =====
make[20]: Entering directory `F:/temp/1'
for subdir in  ./a ./b; do echo ===== building $subdir =====;c:/WinAVR/utils/bin/make -C $subdir all
; done


Поскольку ничего, кроме WinAVR-овских исполняемых файлов не принимало участие - косяк в них или в их взаимодействии с XP (но с MSYS-овскими-то нормально!).

Почему при перемещении msys-1.0.dll из C:\WinAVR\utils\bin в текущий каталог make уже начинает входить куда надо
Код
===== building ./a =====
make[1]: Entering directory `F:/temp/1/a'
echo "building all"
make[1]: Leaving directory `F:/temp/1/a'
- непонятно.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 19:23
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ReAl @ Apr 2 2008, 22:13) *
Короче, то, что полетело у FAR-а в окне я еле законтрол-Цечил.
Ну значит точно баг.

Нет в жизни счастья. "не понос, так золотуха".

Код
mkdir -p ./a/b ./a/c

mkdir из WinAVR:
Код
mkdir (fileutils) 4.1
Written by David MacKenzie.

Copyright (C) 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[.]
|
+--A
    |
    +-B
    |
    +-C
mkdir из msys:
Код
mkdir (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software.  You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.
[.]
|
+--A
    |
    +-A
    | |
    | +-C
    |
    +-B
Я опять делаю что-то неправильно?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 2 2008, 19:25
Сообщение #16


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Проверил со сборкой от klen-а, работает нормально:
Код
>make
for subdir in  ./a ./b; do echo "===== building $subdir ====="; \
        make -C $subdir all; done
===== building ./a =====
make[1]: Entering directory `D:/tmp/borsh/a'
echo AAAAAAAAAAAAAAAAAAAAAA
process_begin: CreateProcess(NULL, echo AAAAAAAAAAAAAAAAAAAAAA, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
make[1]: *** [all] Error 2
make[1]: Leaving directory `D:/tmp/borsh/a'
===== building ./b =====
make[1]: Entering directory `D:/tmp/borsh/b'
echo BBBBBBBBBBBBBBBBBBBBBBBBBB
process_begin: CreateProcess(NULL, echo BBBBBBBBBBBBBBBBBBBBBBBBBB, ...) failed.
make (e=2): ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.
make[1]: *** [all] Error 2
make[1]: Leaving directory `D:/tmp/borsh/b'
make: *** [all] Error 2


Только echo виндовое он не умеет вызывать, а echo.exe в сборке отсутствовало. Причём make там тоже отсутствовал, его я взял из winavr:-) Так что всё дело похоже в sh из winavr (не зря я его всё время сразу выбрасываю:-))


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 2 2008, 19:53
Сообщение #17


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Сергей Борщ @ Apr 2 2008, 21:23) *
Код
mkdir -p ./a/b ./a/c

Вручную:
Код
>mkdir -p ./s/d ./f/g
Ошибка в синтаксисе команды.
>mkdir --version
>mkdir /?
Создание каталога.

MKDIR [диск:]путь
MD [диск:]путь
...
...

Это был mkdir от command.com и даже если звать mkdir.exe то всё равно вызывается он.

Код
>c:\msys\1.0\bin\mkdir -p ./s/d ./p/q
>tree /a .
Структура папок тома TEMP
Серийный номер тома: 28DC-7502
F:\TEMP\Q
+---p
|   \---q
\---s
    \---d
>c:\msys\1.0\bin\mkdir --version
mkdir (fileutils) 4.1
Written by David MacKenzie.

Copyright (C) 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
Нормально всё...

"Становится всё чудесатее и чудесатее".

Да, в makefile одиночные команды make имеет право выполнять, напрямую вызывая команду через system() - кто реально при этом будет вызван - path его знает.
Я с каких-то пор форсирую вызов sh.exe для выполнения чего угодно методом группирования команд через ';' - make обязан позвать shell для выполнения "скрипта". Если команда одна - всегда можно сделать две smile.gif
Код
foo:
    echo "==== making foo ========"; реальная_команда


С общей частью пути тоже нормально
Код
>c:\msys\1.0\bin\mkdir -p ./s/d ./s/q
>tree /a .
Структура папок тома TEMP
Серийный номер тома: 28DC-7502
F:\TEMP\Q
\---s
    +---d
    \---q
>


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2008, 20:14
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ReAl @ Apr 2 2008, 22:53) *
Код
>c:\msys\1.0\bin\mkdir --version
mkdir (fileutils) 4.1
Written by David MacKenzie.
Нормально всё...
Да, этот mkdir из WinAVR работает правильно. Неправильно (или таки я что-то не понимаю?) работает mkdir из msys. Причем я его уже просто из командной строки вызываю.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 2 2008, 19:26
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Сергей Борщ @ Apr 2 2008, 15:14) *
Выяснил такую закономерность:

make.exe, sh.exe, msys-1.0.dll лежат в одной папке - работает неправильно.
make.exe + msys-1.0.dll лежат в одной папке, sh.exe в другой - работает неправильно.

make.exe лежит в одной папке, sh.exe + msys-1.0.dll в другой - все работает.
make.exe в одной папке, sh.exe в другой, msys-1.0.dll в третьей - все работает.
Проблема решена окончательно заменой msys-1.0.dll из комплекта WinAVR на свежую из комплекта msys: MSYS-1.0.11-20080821-dll.tar.gz. Точнее, она давно решилась отказом от утилит из комплекта WinAVR в пользу свежих версий из msys, но сегодня решил проверить на всякий случай - действительно, замена msys-1.0.dll лечит описанный баг и в WinAVRовых.
тот же mkdir 5.97 в свежем msys тоже работает. Видимо все проблемы были в dll


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01571 секунд с 7
ELECTRONIX ©2004-2016