Пытаюсь прогнать тесты GNU binutils (из git) с переопределённой переменной RUNTESTFLAGS
(хочу получить XML-отчёты):
$ make -k RUNTESTFLAGS='--all --xml' check
Всё было прекрасно с runtest 1.5.1, но вот с runtest 1.6 дерьмо летит в вентилятор:
Making a new site.exp file...
srcdir=`cd . && pwd`; export srcdir; \
r=`pwd`; export r; \
LC_ALL=C; export LC_ALL; \
EXPECT=expect; export EXPECT; \
runtest=runtest; \
if /bin/bash -c "$runtest --version" > /dev/null 2>&1; then \
CC="gcc" CC_FOR_BUILD="gcc" \
CC_FOR_TARGET="gcc" CFLAGS_FOR_TARGET="-g -O2" \
$runtest --tool binutils --srcdir ${srcdir}/testsuite \
--all --xml; \
else echo "WARNING: could not find \`runtest'" 1>&2; :;\
fi
WARNING: Couldn't find tool init file
couldn't open ".../binutils/testsuite": illegal operation on a directory
Makefile:1322: recipe for target 'check-DEJAGNU' failed
while executing
"open [file join $outdir $xml_file_name] w"
(procedure "open_logs" line 19)
invoked from within
"open_logs"
(file "/usr/share/dejagnu/runtest.exp" line 1223)
make[5]: *** [check-DEJAGNU] Error 1
make[4]: *** [check-am] Error 2
make[3]: *** [check-recursive] Error 1
make[2]: *** [check] Error 2
make[1]: *** [check-binutils] Error 2
make: *** [do-check] Error 2
Цель check-DEJAGNU
выглядит идентично на системах с runtest 1.5
и runtest 1.6:
1321 check-DEJAGNU: site.exp
1322 srcdir=`cd $(srcdir) && pwd`; export srcdir; \
1323 r=`pwd`; export r; \
1324 LC_ALL=C; export LC_ALL; \
1325 EXPECT=$(EXPECT); export EXPECT; \
1326 runtest=$(RUNTEST); \
1327 if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
1328 CC="$(CC)" CC_FOR_BUILD="$(CC_FOR_BUILD)" \
1329 CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \
1330 $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \
1331 $(RUNTESTFLAGS); \
1332 else echo "WARNING: could not find \`runtest'" 1>&2; :;\
1333 fi
Насколько я понял, «illegal operation on a directory» — это EISDIR
, возникающий тупо из-за того, что $xml_file_name
в исходнике на Expect на одной из систем тупо пуст, что и приводит к неудачной попытке писать отчёт в каталог вместо регулярного файла.
Я нашёл обходной путь — пришлось ключу --xml
в случае runtest 1.6 сообщить явный аргумент (игнорируется версией runtest 1.5):
$ make -k RUNTESTFLAGS='--all --xml=testsuite.xml' check
Краткий вопрос: WTF? Более точно — чей именно это WTF? В какой из двух проектов (dejagnu или binutils) отправлять багрепорт?