試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

sayleenのconfigureスクリプトの修正メモ(前半)

STed2上の演奏と独自インターフェースについて(VirMIDIとrcpplayを使用した例・前半)」で扱ったsayleenMandriva向けパッケージを作ろうとしていたところのことで、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が(正常に)使用されていることを確認した