sayleenのconfigureスクリプトの修正メモ(前半)
「STed2上の演奏と独自インターフェースについて(VirMIDIとrcpplayを使用した例・前半)」で扱ったsayleenのMandriva向けパッケージを作ろうとしていたところのことで、configureスクリプトのオプションに--enable-devrtcというのがあるのだが
$ ./configure --help | grep devrtc --enable-devrtc enable /dev/rtc for timer (default is no)
これを有効にしても
$ ./configure --enable-sted-interface --enable-devrtc checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... yes (中略) checking for serial device... /dev/ttyS0 checking for STed2 interface... yes checking for /dev/rtc... no configure: creating ./config.status config.status: creating Makefile config.status: creating sayleen/Makefile config.status: creating intl/Makefile config.status: creating po/Makefile.in config.status: creating doc/Makefile config.status: creating config.h
チェック結果が「no」となってしまった。
configureスクリプトの元であるconfigure.inでは
[引用]ファイル名: sayleen-20021027/configure.in より
if test "x$enable_devrtc" = "xyes"; then enable_devrtc="no"; if test -r /dev/rtc; then if test -r /proc/rtc; then enable_devrtc="yes"; elif test -r /proc/driver/rtc; then enable_devrtc="yes"; fi fi fi
となっていて、/proc/以下の2つの場所には何もなかったが
$ find /proc -name "*rtc*" 2> /dev/null /proc/irq/8/rtc0 $ find /sys/ -name "*rtc*" /sys/devices/pnp0/00:02/rtc:rtc0 /sys/bus/pnp/drivers/rtc_cmos /sys/class/rtc /sys/class/rtc/rtc0 /sys/module/rtc_cmos $ ls -l /dev/rtc* lrwxrwxrwx 1 root root 4 [タイムスタンプ] /dev/rtc -> rtc0 crw-r--r-- 1 root root 254, 0 [タイムスタンプ] /dev/rtc0 $ uname -r 2.6.27.5-desktop-2mnb
/sys/class/rtc/rtc0/などは存在し、/dev/rtcも存在する。また、このアプリケーションのコード内を検索すると
$ grep "/rtc" sayleen/ -r sayleen/mididev.c:# include <linux/rtc.h> sayleen/mididev.c: devrtc_fd = open("/dev/rtc", O_RDONLY);
結局/dev/rtcを開いているだけなので、/proc/以下の2つの場所に対するチェックは不要と考えられる。*1そこで、configure.inの該当部分を
if test "x$enable_devrtc" = "xyes"; then enable_devrtc="no"; if test -r /dev/rtc; then enable_devrtc="yes"; fi fi
としてconfigureへ反映させようとしたのだが
$ autoconf $ ./configure --enable-sted-interface --enable-devrtc (中略) checking for STed2 interface... yes checking for /dev/rtc... yes configure: creating ./config.status config.status: creating Makefile config.status: WARNING: 'Makefile.in' seems to ignore the --datarootdir setting config.status: creating sayleen/Makefile config.status: WARNING: 'sayleen/Makefile.in' seems to ignore the --datarootdir setting config.status: creating intl/Makefile config.status: WARNING: 'intl/Makefile.in' seems to ignore the --datarootdir setting config.status: creating po/Makefile.in config.status: WARNING: 'po/Makefile.in.in' seems to ignore the --datarootdir setting config.status: creating doc/Makefile config.status: WARNING: 'doc/Makefile.in' seems to ignore the --datarootdir setting config.status: creating config.h config.status: executing default-1 commands config.status: executing default-2 commands config.status: executing default commands
チェックの部分は通ったものの、Makefile生成のところで警告が出ていて
$ LC_MESSAGES=C make cd . && aclocal configure.in:37: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS ../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from... /usr/share/aclocal/lock.m4:29: gl_LOCK_EARLY_BODY is expanded from... /usr/share/aclocal/lock.m4:22: gl_LOCK_EARLY is expanded from... /usr/share/aclocal/lock.m4:253: gl_LOCK is expanded from... /usr/share/aclocal/intl.m4:186: gt_INTL_SUBDIR_CORE is expanded from... /usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from... /usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from... configure.in:37: the top level configure.in:37: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS cd . && automake --foreign --include-deps Makefile configure.in:37: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS ../../lib/autoconf/specific.m4:386: AC_USE_SYSTEM_EXTENSIONS is expanded from... aclocal.m4:8915: gl_LOCK_EARLY_BODY is expanded from... aclocal.m4:8908: gl_LOCK_EARLY is expanded from... aclocal.m4:9139: gl_LOCK is expanded from... aclocal.m4:939: gt_INTL_SUBDIR_CORE is expanded from... aclocal.m4:778: AM_INTL_SUBDIR is expanded from... aclocal.m4:100: AM_GNU_GETTEXT is expanded from... configure.in:37: the top level configure.in:37: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS configure.in:37: required file `./config.rpath' not found make: *** [Makefile.in] Error 1
makeは結局失敗してしまった。
使用したバージョン:
- autoconf 2.63-1mdv2009.0
- automake 1.10.1-2mdv2009.0
- libtool(libtool, libtool-base) 1.5.26-5.1mdv2009.0
- intltool 0.40.4-2mdv2009.0
*1:実際、この記事の問題が解決後にlsofで見たところ、/dev/rtc0が(正常に)使用されていることを確認した