写真集

Camera:Panasonic LUMIX DMC-LX3
Vine Linux と Ubuntu の設定方法など

Interix 6.1 で pkgsrc を試す texinfo-4.13

2011-02-09 13:11:20 | Interix6.1

Interix 6.1 (SUA Windows7) で texinfo のビルドがうまくいかない原因を調査しました。

下記の2つの関数が見つからないためです。
mbsinit
mbrtowc

m4-1.4.15 でも上記の関数が使用さてれいますがビルドが成功します。

  • Fedora 14 (Linux)の場合

    configure の結果
    checking for mbsinit... yes
    checking for mbrtowc... yes

    make の結果
    rm -f libm4.a
    ar cru libm4.a gl_avltree_oset.o c-ctype.o c-stack.o clean-temp.o execute.o exitfail.o fatal-signal.o fd-safer-flag.o dup-safer-flag.o freadahead.o freading.o gl_linkedhash_list.o gl_list.o localcharset.o lock.o malloca.o memchr2.o gl_oset.o pipe.o pipe2.o pipe2-safer.o printf-frexp.o printf-frexpl.o progname.o threadlib.o tls.o tmpdir.o verror.o version-etc.o version-etc-fsf.o wait-process.o xalloc-die.o gl_xlist.o xmalloca.o gl_xoset.o xprintf.o xstrndup.o xvasprintf.o xasprintf.o asnprintf.o asprintf.o basename.o basename-lgpl.o cloexec.o close-stream.o closein.o closeout.o dirname.o dirname-lgpl.o dup-safer.o fcntl.o fd-safer.o fflush.o filenamecat.o filenamecat-lgpl.o fopen-safer.o fpurge.o fseeko.o isnanl.o mkstemp-safer.o pipe-safer.o printf-args.o printf-parse.o quotearg.o regex.o stripslash.o strstr.o tempname.o vasnprintf.o vasprintf.o xmalloc.o
    ranlib libm4.a
    ..........
    gcc -std=gnu99   -g -O2   -o m4 m4.o builtin.o debug.o eval.o format.o freeze.o input.o macro.o output.o path.o symtab.o ../lib/libm4.a

  • Interix 6.1 の結果

    configure の結果
    checking for mbsinit... no
    checking for mbrtowc... no

    make の結果
    gcc -std=gnu99  -I.      -D_ALL_SOURCE -O -MT mbrtowc.o -MD -MP -MF .deps/mbrtowc.Tpo -c -o mbrtowc.o mbrtowc.c
    mv -f .deps/mbrtowc.Tpo .deps/mbrtowc.Po
    gcc -std=gnu99  -I.      -D_ALL_SOURCE -O -MT mbsinit.o -MD -MP -MF .deps/mbsinit.Tpo -c -o mbsinit.o mbsinit.c
    mv -f .deps/mbsinit.Tpo .deps/mbsinit.Po
    .....
    rm -f libm4.a
    ar cru libm4.a gl_avltree_oset.o c-ctype.o  c-stack.o clean-temp.o execute.o  exitfail.o fatal-signal.o  fd-safer-flag.o dup-safer-flag.o  freadahead.o freading.o  gl_linkedhash_list.o gl_list.o  localcharset.o lock.o malloca.o  memchr2.o gl_oset.o pipe.o  pipe2.o pipe2-safer.o printf-frexp.o  printf-frexpl.o progname.o threadlib.o  tls.o tmpdir.o verror.o  version-etc.o version-etc-fsf.o  wait-process.o xalloc-die.o gl_xlist.o  xmalloca.o gl_xoset.o xprintf.o  xstrndup.o xvasprintf.o xasprintf.o asnprintf.o asprintf.o basename.o basename-lgpl.o btowc.o cloexec.o close-stream.o closein.o closeout.o dirname.o dirname-lgpl.o dup-safer.o error.o fcntl.o fd-safer.o fflush.o filenamecat.o filenamecat-lgpl.o fopen-safer.o fpending.o fpurge.o frexp.o frexpl.o fseeko.o getopt.o getopt1.o isnanf.o isnanl.o mbrtowc.o mbsinit.o mkdtemp.o mkstemp-safer.o obstack.o pipe-safer.o printf-args.o printf-parse.o quotearg.o rawmemchr.o regex.o rmdir.o signbitd.o signbitf.o signbitl.o spawn_faction_addclose.o spawn_faction_adddup2.o spawn_faction_addopen.o spawn_faction_destroy.o spawn_faction_init.o spawnattr_destroy.o spawnattr_init.o spawnattr_setflags.o spawnattr_setsigmask.o spawni.o spawnp.o strchrnul.o strerror.o stripslash.o strndup.o strnlen.o strstr.o strtod.o tempname.o vasnprintf.o vasprintf.o wcrtomb.o xmalloc.o
    ranlib libm4.a
    .....
    gcc -std=gnu99   -D_ALL_SOURCE -O  -Wl,-R/usr/pkg/lib -o m4 m4.o builtin.o debug.o  eval.o format.o freeze.o  input.o macro.o output.o  path.o symtab.o ../lib/libm4.a   

関数が存在しないときはソースからライブラリ(libm4.a)を作成して組み込んでいるようです。
別の場所でmakeファイル等を直して、無いときはソースから作成するように変更してみました。
ソースはm4と同じものを使用しました。
------------------------------------------
gcc  -g -O2   -o ginfo dir.o display.o dribble.o echo-area.o filesys.o footnotes.o gc.o indices.o info-utils.o info.o infodoc.o infomap.o m-x.o man.o nodemenu.o nodes.o search.o session.o signals.o terminal.o tilde.o variables.o window.o doc.o ../lib/libtxi.a ../gnulib/lib/libgnu.a -lncurses 
display.o(.text+0xa1f): In function `mbiter_multi_next':
unix/src/gnu/texinfo-4.13/info/../gnulib/lib/mbiter.h:137: undefined reference to `_mbrtowc'
session.o(.text+0x6f0f): In function `mbiter_multi_next':
unix/src/gnu/texinfo-4.13/info/../gnulib/lib/mbiter.h:137: undefined reference to `_mbrtowc'
window.o(.text+0x26ff): In function `mbiter_multi_next':
unix/src/gnu/texinfo-4.13/info/../gnulib/lib/mbiter.h:137: undefined reference to `_mbrtowc'
collect2: ld returned 1 exit status
gmake[3]: *** [ginfo] Error 1
------------------------------------------
ビルドに失敗しました。mbsinitは消えましたがmbrtowcが残っています。
glibc-2.12.2のソースを見ると最後にエイリアスが仕込まれていますね。

libc_hidden_def (__mbrtowc)
weak_alias (__mbrtowc, mbrtowc)
libc_hidden_weak (mbrtowc)

ソースをglibc-2.12.2のに代えてビルドしてみます。

Interix は BSD と System V からの移行に対応で Linux にするよりいいですよってことみみたいですね。
GNU C Library (glibc) とBSD C Library は対応しています。
Interix の C Library は、System V よりなのかな。
----------------------------------------------------------

Gnulib module: mbsinit

Portability problems fixed by Gnulib:

  • This function is missing on some platforms: HP-UX 11.00, IRIX 6.5, Solaris 2.6, Interix 3.5.

----------------------------------------------------------


関数の詳細
http://www.gnu.org/software/hello/manual/gnulib/mbsinit.html
http://www.gnu.org/software/hello/manual/gnulib/mbrtowc.html

Interix についての参考
http://technet.microsoft.com/ja-jp/library/bb463202.aspx
http://technet.microsoft.com/ja-jp/interopmigration/bb380242.aspx
http://msdn.microsoft.com/ja-jp/library/bb463206.aspx


Interix 6.1 pkgsrc パッケージをインストールします

2011-02-05 20:01:13 | Interix6.1

Interix 6.1 pkgsrc でパッケージをインストールしてみました。

  1. openssh-5.5p1
    Interix 6.1 (/usr/include) には下記のヘッダファイルが存在せず。(Fedora 14 にはありました)
     標準 C ライブラリ (libc, -lc) なのだが別途インストールしていいものなのか調査中です。
    OSとの基本的な機能を提供するライブラリなので使用できないような。テストもしなくてはいけないしね。
    1. arpa/nameser.h
    2. resolv.h
    ------------------------------------------------------------------------------------------
    In file included from ../openbsd-compat/openbsd-compat.h:45,
                     from ../includes.h:174,
                     from bsd-arc4random.c:17:
    ../openbsd-compat/getrrsetbyname.h:57:26: arpa/nameser.h: No such file or directory
    ../openbsd-compat/getrrsetbyname.h:59:20: resolv.h: No such file or directory
    ------------------------------------------------------------------------------------------

    ヘッダファイルは他のところにあるのね。シンボリックリンクを貼ります。
    同名のファイルはエラーで処理されないので気にしないで実行します。
    $ ln -s /usr/local/bind/include/*.h /usr/include/
    $ ln -s /usr/local/bind/include/arpa/*.h /usr/include/arpa/
    $ ln -s /usr/local/bind/include/isc/*.h /usr/include/isc/
    $ ln -s /usr/local/bind/include/sys/*.h /usr/include/sys/

    コンパイルエラーです。調査中
    ------------------------------------------------------------------------------------------
    bsd-openpty.c: In function `openpty':
    bsd-openpty.c:129: error: `I_PUSH' undeclared (first use in this function)
    bsd-openpty.c:129: error: (Each undeclared identifier is reported only once
    bsd-openpty.c:129: error: for each function it appears in.)
    ------------------------------------------------------------------------------------------

  2. scmcvs (cvs-1.11.23.tar.bz2) ソースバージョン管理システム
    cvsのフォルダたくさんあるので見つけにくい
    途中の gtexinfo-4.13 でビルドが失敗する。
    http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=42925

  3. scmgit (git-1.7.3.4.tar.bz2)
    途中の osabi で止まってしまう。
    The Operating System version (3.5) does not match 6.1
    とバージョンが合わないとでます。
    ------------------------------------------------------------------------------------------
    ===> Installing dependencies for osabi-Interix-6.1
    ===> Overriding tools for osabi-Interix-6.1
    ===> Extracting for osabi-Interix-6.1
    ===> Patching for osabi-Interix-6.1
    ===> Creating toolchain wrappers for osabi-Interix-6.1
    ===> Installing for osabi-Interix-6.1
    WARNING: Your umask is ``0022''.
    WARNING: If this is not desired, set it to an appropriate value (002) and install
    WARNING: this package again by ``/usr/pkg/bin/bmake deinstall reinstall''.
    => Running PRE-INSTALL script actions
    The Operating System version (3.5) does not match 6.1
    ------------------------------------------------------------------------------------------

    obacheさんがソースを修正して下さいました。ありがとうございます。
    http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/pkgtools/osabi/INSTALL.diff?r1=1.1&r2=1.2&f=h

    一旦パッケージを初期化します。
    $ cd /usr/pkgsrc/pkgtools/osabi
    $ bmake clean

    INSTALL ファイルをバックアップして Interixのケース文の分岐を削除します。
    (パッチを当てるのが面倒だったのでこの方法をとりました)

    ではもう一度ビルドします。
    $ cd ../../devel/scmgit
    $ bmake 2>&1 | tee scmgit.make.05.txt
    エラーが出ていまいました。
    ------------------------------------------------------------------------------------------
    libtool: link: gcc -O -D_ALL_SOURCE -O -pipe -DTCL_DBGX= -Wl,-R/usr/pkg/lib tclAppInit.o -o tclsh  -L/usr/pkgsrc/lang/tcl/work/tcl8.4.18/unix -ltcl84 -lm -L/usr/pkgsrc/lang/tcl/work/.buildlink/lib
    /opt/gcc.3.3/lib/gcc-lib/i586-pc-interix3/3.3/../../../../i586-pc-interix3/bin/ld: cannot find -ltcl84
    collect2: ld returned 1 exit status
    *** Error code 1
    Stop.
    bmake: stopped in /usr/pkgsrc/lang/tcl/work/tcl8.4.18/unix
    ------------------------------------------------------------------------------------------

    パッケージの依存関係を調べました。
    [scmgit]$ bmake show-depends
    scmgit-base>=1.7.3.4:../../devel/scmgit-base
    scmgit-docs>=1.7.3.4:../../devel/scmgit-docs

    [scmgit-base]$ bmake show-depends
    p5-Error>=0.17015:../../devel/p5-Error
    perl<5.14.0:../../lang/perl5
    perl>=5.12.0:../../lang/perl5
    tk>=8.4:../../x11/tk
    python26>=2.6:../../lang/python26
    libiconv>=1.9.1nb4:../../converters/libiconv
    zlib>=1.2.3:../../devel/zlib
    openssl>=0.9.8knb1:../../security/openssl
    expat>=2.0.0nb1:../../textproc/expat
    curl>=7.19.7nb1:../../www/curl

    GUI 使用しないのでtk入れなくてもいいのになあ。
    curl もビルドできないしね、困ったものです。

  4. curl-7.21.3
    途中の texinfo-4.13 でビルドが失敗してしまいます。
    ------------------------------------------------------------------------------------------
    display.o(.text+0x923):display.c: undefined reference to `_mbsinit'
    display.o(.text+0x95e):display.c: undefined reference to `_mbrtowc'
    display.o(.text+0x9e6):display.c: undefined reference to `_mbsinit'
    session.o(.text+0x6a23):session.c: undefined reference to `_mbsinit'
    session.o(.text+0x6a5e):session.c: undefined reference to `_mbrtowc'
    session.o(.text+0x6ae6):session.c: undefined reference to `_mbsinit'
    window.o(.text+0x23e6):window.c: undefined reference to `_mbsinit'
    window.o(.text+0x2421):window.c: undefined reference to `_mbrtowc'
    window.o(.text+0x24a9):window.c: undefined reference to `_mbsinit'
    ------------------------------------------------------------------------------------------
    gtexinfo (texinfo)のビルドが成功したら、うまくビルドできました。

  5. インストールが成功したパッケージ
    bmake-20100808
    bootstrap-mk-files-20090807nb2
    bzip2-1.0.6
    digest-20080510
    gettext-lib-0.14.6
    gettext-tools-0.14.6nb1
    gtar-base-1.25nb3
    libiconv-1.13.1
    libtool-base-2.2.6bnb4
    openssl-0.9.8q
    p5-Digest-1.16nb1
    p5-Digest-SHA1-2.13nb1
    p5-Error-0.17016nb1
    p5-MIME-Base64-3.13
    p5-enum-1.016nb2
    p5-pkgsrc-Dewey-1.1nb1
    pax-20080110
    perl-5.12.2nb1
    pkg_install-20101212
    pkglint-4.94
    tcp_wrappers-7.6.1nb4
    tnftp-20070806
    zlib-1.2.3

  6. ソースコード修正でインストール可能です。
    gmake-3.82nb1

Interix 6.1 で NetBSD pkgsrc を試す その2

2011-02-04 18:21:53 | Interix6.1

NetBSD pkgsrc をインストールを再度しました。

環境変数の多さが、悪さをするということなので下記のスクリプトを作成しました。
$ env > env.txt
unsetenv スクリプト
---------------------------------------------------------
#! /bin/bash
# File name unsetenv

while read enva; do
   echo 'unset'\
        ${enva%%=*}
done
---------------------------------------------------------

$ unsetenv < env.txt >unsetenvlist.txt
でざっくり、リストをさくした後に pkginit スクリプトを作成しました。

---------------------------------------------------------
#! /bin/sh
# File Name pkginit
# pkgsrcを使用するために環境変数初期化処理をします。

# ./bootstrap が終わったら下記2行のコメントアウトを外します
#export PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin
#cd /usr/pkgsrc

unset XCMSDB
unset TMP
unset LOGONSERVER
# PATH
unset OPENNT_ROOT
unset SYSTEMROOT
unset EDITOR
unset TMPDIR
unset SFUDIR
unset VISUAL
unset ALLUSERSPROFILE
unset CLASSPATH
unset USERPROFILE
unset PATHEXT
unset PROCESSOR_REVISION
unset UIDPATH
unset INTERIX_ROOT_WIN
unset SUA_ROOT_WIN
unset TERM
unset VS100COMNTOOLS
unset SESSIONNAME
# USERNAME
# LANG
unset VBOX_INSTALL_PATH
unset TEMP
unset EMC_AUTOPLAY
unset TERMCAP
unset LOGNAME
unset PROCESSOR_IDENTIFIER
unset MANPATH
unset _PSXLIBPATH
unset INTERIX_ROOT
unset HOMEDRIVE
unset SYSTEMDRIVE
unset XAPPLRESDIR
unset XKEYSYMDB
# HOME
unset PROCESSOR_ARCHITECTURE
unset COMMONPROGRAMFILES
unset LD_LIBRARY_PATH
unset PSMODULEPATH
unset QTJAVA
unset NUMBER_OF_PROCESSORS
# DISPLAY
unset COMSPEC
unset PROGRAMFILES
unset PATH_ORIG
unset FCEDIT
unset PROGRAMDATA
unset SFUDIR_INTERIX
unset XFILESEARCHPATH
unset WINDIR
unset OS
unset SUA_ROOT
unset PUBLIC
unset USERDOMAIN
unset PROCESSOR_LEVEL
unset ROXIOCENTRAL
unset COMPUTERNAME
unset LOCALAPPDATA
unset APPDATA
unset XNLSPATH
unset HOMEPATH
unset FP_NO_HOST_CHECK
unset PATH_WINDOWS
bash
---------------------------------------------------------

真っさらにします。
$ rm -rf /var/db/pkg
$ rm -rf /usr/pkg
$ rm -rf /usr/pkgsrc

ブランチ 2010Q4 を展開します。
$ tar -xzf pkgsrc-2010Q4.tar.gz -C /usr

一度Windows 7を再起動します。

pkgsrc をインストールします。
$ ./pkginit

環境変数の確認をしてみます。
$ env
USERNAME=username
PATH=/bin:/opt/gcc.3.3/bin:/usr/contrib/bin:/usr/X11R6/bin:/usr/local/bin:/usr/contrib/win32/bin:/dev/fs/C/Windows/System32:/dev/fs/C/Windows/SUA/common
PWD=/usr/pkgsrc/bootstrap
LANG=win-ja_JP.windows-932
HOME=/dev/fs/C/Users/username
SHLVL=2
DISPLAY=localhost:0.0
OLDPWD=/dev/fs/C/Users/username
_=/bin/env

bootstrap スクリプトを起動します。
$ cd /usr/pkgsrc/bootstrap
$ ./bootstrap 2>&1 | tee install.txt

無事にインストールできました。
You can find extensive documentation of the NetBSD P
in /usr/pkgsrc/doc/pkgsrc.txt.

Hopefully everything is now complete.
Thank you

====================================================

===> bootstrap started: 金  2月  4 17:23:56 JST 2011
===> bootstrap ended:   金  2月  4 17:53:04 JST 2011


Interix 6.1 で NetBSD pkgsrc を試す

2011-02-01 21:05:10 | Interix6.1

Interix 6.1 で NetBSD の pkgsrc を 試してみました。
http://www.netbsd.org/docs/pkgsrc/platforms.html

./bootstrap スクリプトのエラーがでるたびに、下記のコマンドをGNUに変更しましたが動きませんでした。
GNU awk (gawk)
gawk-3.1.8.tar.gz

GNU diff
diffutils-3.0.tar.gz


obacheさんコメントありがとうございます。

たしかに bootstrap のスクリプトが env のところでkshだとMemory faultが出て、bashだと、Segmentation faultやenvがタスクマネージャーでCPU100%になったりするのです。

http://www.netbsd.org/docs/pkgsrc/platforms.html
As of this writing, the SUA's Interix 6.0 (32bit) and 6.1 (64bit) subsystems have been tested. Other versions may work as well. The Interix 5.x subsystem has not yet been tested with pkgsrc.
と書いてあったのでまだなのかなと思いまして。
あと、 http://wikki.sakura.ne.jp/gir-lab/?pmgr の開発動機の3番目に
-------------------------------------------------------------------
3.NetBSDのpkgsrcがWindows VistaのSUAではうまく動かなかったため。
◦ビルド中にkshでMemory faultが発生して止まってしまいます。core.dmpがgdbでは分析できなかったことと、タイミングによって挙動が異なるため、原因は突き止められませんでした。kshが多重に呼び出された際の処理に問題があるように見受けられます。XPのSFUでは便利に使っていたため残念です。
-------------------------------------------------------------------
とあったので諦めてしまいました。

pkgsrc関係のコマンドやpkgsrc-installが依存するライブラリを個別にいれようかと思いましたが、bmakeの仕組みを調査しなくては動かないくて面倒になってきました。

ここのと同じ問題です。
http://gnats.netbsd.org/37349