libsixel
libsixel copied to clipboard
develop ブランチの ./configure が存在しない libcurl を誤検出する
【概要】
develop ブランチの ./configure が存在しない libcurl を誤検出する
【発生環境】 OS: Ubuntu 14.04.2 LTS (amd64) Terminal: mlterm version 3.4.3 post/2015-02-22
【詳細】
develop ブランチ( https://github.com/saitoha/libsixel/commit/e953d9cd19f7e9416565ed7af12722133ab544fb ) で ./configure を実行すると libcurl が存在しない環境でも HAVE_LIBCURL が定義され make 時に下記のエラーが発生します。
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../include/ -g -O2 -Wall -Wextra -I/home/msmhrt/local/include -I/home/msmhrt/local/include -I/home/msmhrt/local/include -g -O2 -MT libsixel_la-loader.lo -MD -MP -MF .deps/libsixel_la-loader.Tpo -c loader.c -fPIC -DPIC -o .libs/libsixel_la-loader.o
loader.c:74:24: fatal error: curl/curl.h: No such file or directory
# include <curl/curl.h>
^
compilation terminated.
make[2]: *** [libsixel_la-loader.lo] Error 1
make[2]: Leaving directory `/home/msmhrt/repository/libsixel/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/msmhrt/repository/libsixel'
make: *** [all] Error 2
$
現在は、./configure に --without-libcurl オプションを追加して回避しています。
master ブランチ( https://github.com/saitoha/libsixel/commit/7efd9a4bb4f95d7842fe7cec3b9cf8f48f009804 ) 及び fixfix-issue-34 ブランチ( https://github.com/saitoha/libsixel/commit/91cf0c45d6dcaec97afdf4b49db5775ba5b77916 ) では問題ありませんでした。
【その他】
./configure が自前で作成した LIBCURL_* 環境変数が消されずに残っているのが誤判定の原因ではないかと思われます。
この件、たびたびのご報告ありがとうございました。 以前 2a98bcd で直したつもりだったんですが、自分のDebian環境がpkg-configをアンインストールした変な環境なので検出できていませんでした。 どうもLIBCURL_* が定義された状態だと PKG_CHECK_MODULES(CURL, ...) の結果が常にyesになる、という罠だったようです。
libcurl がインストールされていない当方の環境で問題なきことは確認したのですが、この修正だとユーザー側で明示的に export LIBCURL_* しても pkg-config の方が優先されてしまうのではないでしょうか?
多分、
--without-libcurl--with-libcurlの引数LIBCURL_*環境変数pkg-config
という優先順位になるべきだと思うのですが、違ってたらすみません。
@msmhrt LIBCURL_* をセットして./configureするケースもあるので、LIBCURL_*を上書きすること自体がまずかったですね... 優先順位については私も仕様を正確に把握しておらず、適当でした。 ちょっと他のプロジェクトのconfigure.acを参考にしてみることにします。