Gaucheにマルチスレッド対応化パッチを当てようとして失敗
「http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fMinGW%3apthread対応」(ごめんなさい。「対応」の部分も含めてURLです) ここを読んでみると、
WindowsでもGaucheでマルチスレッドが使えるようになる方法のようなので、試してみたのですが、
パッチを当てるところで失敗してしまいました。
pthreads-Win32のインストールは書かれている通りにやったのですが、
svnではなく、tgzファイルでソースをダウンロードしたためでしょうか。
一応、自分が行った方法を書いておきます。自分用のメモの文章そのままです。ごめんなさい。
準備: pthreads-win32を入れておく まず、「ftp://sourceware.org/pub/pthreads-win32」のリンクをクリックするとファイル一覧が出るので、 そこから「pthreads-w32-2-8-0-release.exe」をクリックしてダウンロード。 ダウンロードしたpthreads-w32-2-8-0-release.exeをダブルクリックで実行。 実行すると英語が書かれたウィンドウが出てくるので、「Extract」をクリック。 そして、ダイアログ(「All Files Extract Ok」とか書かれてたはず)が出てきたら、「Done」を押す。 そうすると、pthreads-w32-2-8-0-release.exeを実行したフォルダにいくつかのフォルダが作られるので、 出てきた「Pre-built.2」というフォルダの中の、「include」フォルダの中身を「C:\MinGW\include」にコピー。 「Pre-built.2」フォルダの中の「lib」フォルダの中にある、「libpthreadGC2.a」を「C:\MinGW\lib」にコピー。 「Pre-built.2」フォルダの中の「lib」フォルダの中にある、「pthreadGC2.dll」を「C:\MinGW\bin」にコピー。 Gaucheソースコードのダウンロード まず、新しいフォルダを作る。(自分は「gauche-build」にした) Gaucheのダウンロードページ(http://practical-scheme.net/gauche/download-j.html)の、 「ソース」と書かれているところの「Gauche-0.9.tgz」をクリックしてダウンロードして「gauche-build」フォルダに入れておく。 MSYSを起動する。 「gauche-build」フォルダにcdコマンドで移動する。 「tar zxvf Gauche-0.9.tgz」で解凍。 「http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fMinGW%3apthread対応」ここにあるパッチを、「gauche-build」フォルダの中の「Gauche-0.9」フォルダに「ThreadPatch.diff」という名前のテキストファイルに保存する。 「cd Gauche-0.9」でGaucheのフォルダに行く。 「patch -p0 < ThreadPatch.diff」でパッチを当てる。
一応、パッチを当てた時に出たエラーを書いておきます。
(Stripping trailing CRs from patch.) patching file src/Makefile.in Hunk #1 FAILED at 189. Hunk #2 FAILED at 229. 2 out of 2 hunks FAILED -- saving rejects to file src/Makefile.in.rej (Stripping trailing CRs from patch.) patching file src/mingw-dist.sh (Stripping trailing CRs from patch.) patching file src/vm.c (Stripping trailing CRs from patch.) patching file src/gauche/config.h.in Hunk #1 succeeded at 58 (offset -3 lines). (Stripping trailing CRs from patch.) patching file configure.ac Hunk #1 succeeded at 189 (offset -3 lines). (Stripping trailing CRs from patch.) patching file gc/win32_threads.c (Stripping trailing CRs from patch.) patching file gc/configure.ac Hunk #1 FAILED at 177. Hunk #2 succeeded at 393 with fuzz 1 (offset 6 lines). 1 out of 2 hunks FAILED -- saving rejects to file gc/configure.ac.rej
ダウンロードしたソースコードと、パッチを作った時のバージョンが違ったためでしょうか・・・