Может ли макрос m4 выполнять перенаправление вывода в переменную с оболочкой $(...)
? Переменная $MANPAGE_DOCBOOK_XSL
пуста :(.
if test "x${XMLCATALOG}" != "x" -a "x$have_xmlcatalog_file" = "xyes"; then
DOCBOOK_XSL_URI="http://docbook.sourceforge.net/release/xsl/current"
DOCBOOK_XSL_PATH="manpages/docbook.xsl"
MANPAGE_DOCBOOK_XSL=$(${XMLCATALOG} ${XML_CATALOG_FILE} ${DOCBOOK_XSL_URI}/${DOCBOOK_XSL_PATH} | sed -n 's|^file:/\+|/|p;q')
fi
https://github.com/pevik/ima-evm-utils/blob/master/m4/manpage-docbook-xsl.m4#L22
Глядя на аналогичный код в Wayland, они просто проверяют, работает ли команда (можно ли найти каталог), но не на значение.
https://github.com/wayland-project/wayland/blob/master/configure.ac#L167
m4
— это язык макросов. Не будет слишком упрощенно сказать, что он преобразует ввод в вывод, расширяя макросы, которые он находит внутри.m4
не заботится о значимости его вывода для других программ или систем. - person John Bollinger   schedule 12.08.2020echo "running (stdout only): ${XMLCATALOG} ${XML_CATALOG_FILE} ${DOCBOOK_XSL_URI}/${DOCBOOK_XSL_PATH}"
печатает URI. Но когда яecho $MANPAGE_DOCBOOK_XSL
, это пустой вывод. Таким образом, утверждение не работает. Что мне не хватает? - person pevik   schedule 12.08.2020$MANPAGE_DOCBOOK_XSL
, важен. Если приведенный выше фрагмент является единственным, связанным с тем, как эта переменная получает значение, то мои первые догадки будут заключаться в том, что она никогда не выполняется или что когда этот код выполняется,$XMLCATALOG
не установлен или равен нулю, или значение$have_xmlcatalog_file
не равноyes
. - person John Bollinger   schedule 12.08.2020configure
в редакторе, чтобы убедиться, что этот фрагмент кода прошел неискаженным, и, в более общем плане, для устранения некоторых проблем Autoconf. - person John Bollinger   schedule 12.08.2020