前天幫另一個 team 換主機,結果昨天就有一個同事發現之前能夠 build 的一個 project 突然 build 不過,而顯示的訊息是 ....missing makeinfo .....。
明明這台新主機就是用 Gentoo 一步步都從 source 建起來的怎麼會發生這種事呢,檢查了一段時間後,才發現問題出在 configure 裡頭,現在許多 open source projects 都依賴 autoconf/automake 產生 configure 再加上一些條件限制,這次遇到的就是這種情況,在 configure 中先用一般方法檢查出了 makeinfo 存在,於是螢幕上 show 出了
checking for makeinfo... makeinfo
看似很正確對吧
但仔細看一下 configure 裡頭
緊接著加上的檢查是
# For an installed makeinfo, we require it to be from texinfo 4.4 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"
fi
;;
看起來也正確?
但 makeinfo --version 傳回的若是 makeinfo (GNU texinfo) 4.11 時呢?
所以說,問題出在 4.11 明明大於 4.4 但是沒辦法被 match 上,可以說是原先加上這段檢查的人沒想過版本編號會超過 9 的....
regular expression 想要寫的好果然是很困難呀
2008年5月7日 星期三
Open Source Project Configure 的陷阱
訂閱:
張貼留言 (Atom)
1 意見:
另外,版本 40~49,400~499,..... 也不會 match
(在指導人修改時順便注意到的)
張貼留言