nvdajp 開発環境

since 2010-12-12

nvdajp 開発者向けセットアップ。nvdajp_bazaar もどうぞ。

情報源

Windows 7/8 で開発環境

インストールするもの

updated on 2013-11-19

ソースコードの readme に書かれているが https://bitbucket.org/nvdajp を使うという前提で手順をまとめる。

基本的にすべて32bit版のバイナリ。新しいバージョンが出ていてもむやみに最新版を使わないほうがよい。

特に明記しないかぎり、インストーラーのオプションはデフォルト。

  • Python 2.7 Brlapi-0.5.7
    • BRLTTY for Windows, version 4.4-1 に含まれている(readme には 4.2-2 と書かれている)
    • http://brl.thefreecat.org/brltty/ から brltty-win-4.2-2.zip を展開して brlapi-0.5.7.exe
  • scons-2.2.0-setup.exe

JTalk 単体テストで使うもの

環境変数

Redmond Path が便利。

Windows 7 (32bit) + Windows SDK 7.0 の場合は環境変数 PATH に以下を追加

"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin"

miscdep の include\jtalk をビルドする前にはコマンドプロンプトで以下を実行

vcvars32 

その他 PATH に追加しておく場所

c:\Python27
c:\Python27\Scripts
C:\Program Files\7-Zip\7z.exe

64ビット環境の場合は Program Files(x86) になる。

lv も miscdep で使っている。

2012年までの備考

  • bzr-2.5.1-1-setup.exe (Windows Standalone Installer)
    • Typical を選んで、Core Document Japanese を追加しておいた
    • launchpad.net にコミットする場合は ssh の設定が必要。cygwin を使ったほうがいいかも(後述)
    • launchpad にアカウントがあって ssh の設定ができていれば bzr launchpad-login (username) できる。
  • (boostpro.com) boost_1_47_setup.exe
    • 1.47 まで OK
    • Compilers も Variants もすべて有効にする。
    • インストーラーがサーバー接続に失敗することがあったが、やり直したらうまく行った。
    • site_scons\site_tools\boost.pyでレジストリからboostpro.comというエントリを見てincludeする場所を指定している。
    • Windows 7 x64 のレジストリでは Software\Wow6432Node\HOGE というエントリが 32bit アプリから Software\HOGE として見えるらしい。
    • 本家チケット http://www.nvda-project.org/ticket/2104 によると Header だけでよいという話

備考

開発ドキュメント scons devDocs 関連

  • 2012-12-27 現在、jpmain はうまくscons devDocsできない。文字コードの問題などの可能性。
  • nvda 本家のmainブランチはちゃんとscons devDocsできる。

MFC DLLについて

  • system-dlls.7z
    • 中身を C:\windows\system32 にコピーするか source に置けと書いてある。中身は x86 のMFC DLLである。
    • すでに nvdajp miscdep の source に同じものをコピーしてある。
    • もし x64 環境で作業するなら Windows\System32 ではなく Windows\syswow64 に置くべきでは?(ディレクトリの名前とは逆で、前者は x64 バイナリ、後者は x86 バイナリが置かれている)

リポジトリからの取得

上記以外のものは launchpad の lp:~nvdajp/nvdajp/MiscellaneousDependencies から取得してください。

nvdajp_bazaar も参照してください。

作業例:

> bzr branch lp:~nvdajp/nvdajp/MiscellaneousDependencies miscdep
> bzr branch lp:~nvdajp/nvdajp/jpmain jpmain
> cd miscdep
> _pack.cmd 
# これで ..\miscdep.7z を作る
> cd ..\jpmain
> 7z x ..\miscdep.7z
# これで miscdep を jpmain に統合する
> chcp 437
  • コマンドプロンプトのロケールを英語に変更。最近(2011年12月から)これをやらないと scons に失敗するようになった。。
  • 日本語ロケールに戻すには chcp 932
  • 詳しくは nvdajp_scons
> scons -c
> scons source
# これで jpmain\source\nvda.pyw が実行可能になる。
  • bzr branch のかわりに bzr checkout を使った場合は bzr commit するとチームのリポジトリが更新されてしまう(権限がなければ commit に失敗する)ので、事前に nishimotz にご相談ください。

実行時に依存するもの

  • Java Runtime
    • java.com から JRE を入れると 32bit 版 (x86) JRE6 が選択される
    • 2011年夏に Java 7 がリリースされたが、もうしばらく Java 6 を使っておけばよさそう。

ツール

本家の人たちが勧めているテキストエディター:

  • Notepad++ (EUC-JP対応版) npp.5.8.7-6.bin.zip

その他

cygwin

かつて JTalk 関連のコンパイルに cygwin を使っていましたが、2011.3j からは不要です。

ただし cygwin を使うと launchpad.net を使うための ssh 設定がやりやすいかも知れません。

  • cygwin-1.7.9-1 setup.exe
    • OpenSSH を入れる
    • ssh-keygen -t rsa を実行し、 ~/.ssh/idrsa.pub を登録。詳しくは launchpad.net
    • libopenjtalk をビルドしたい場合は下記も入れる
      • gcc-mingw
      • git
      • nano (便利)
      • make
      • autoconf
      • automake

Windows SDK

since 2011-10-19

Windows 7 x64 に Windows SDK v7 をインストールして、スタートメニューの CMD Shell を開くと x64 の開発環境になっている。

setenv /x86 を実行すると、x86 のコンパイル環境がセットアップされる。

下記のようにショートカットを設定すれば一発で x86 環境が開く:

リンク先 C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "SetEnv.cmd /x86"
作業フォルダ "C:\Program Files\Microsoft SDKs\Windows\v7.0\bin"

この環境は JTalk ライブラリの更新に伴って暫定的に必要になったもので、いずれ scons に統合したら、CMD Shell は不要になる予定。

依存パッケージ (miscdep)

作業フロー

since 2012-05-26

> bzr branch lp:nvdajp nvdajp-work
> dir 
nvdajp-miscdep-83.7z
nvdajp-work
> cd nvdajp-work
> "C:\Program Files (x86)\7-Zip\7z.exe" x -y ..\nvdajp-miscdep-83.7z
> scons -c
> scons source

セブンジップ 7z の説明もどうぞ。

eSpeak

since 2011-10-06

espeak は音声合成エンジン(日本語には非対応)。

2011.3 系以降では espeak をソースから scons するようになっている。

  • include/espeak ディレクトリがない場合はビルドをスキップする。espeak は x86 版のみビルドする。

1.46.02 以上と書かれているが、どこにあるか分かりにくい。正解は下記:

http://espeak.sourceforge.net/test/latest.html

なぜか espeak を include/espeak において scons source するとエラーになる。

世間で話題になっていないので Windows のロケールに依存するのかも知れない。

  • 2012-01-13 chcp 437 して scons してみたが効果がなかった。

解決策(1)は espeak の src/tr_languages.cpp を UTF-8N から UTF-8(BOMあり)に変換する:

  • 自分だけだと思うけど emacs で BOM つき保存をするには M-x RET f utf-8-with-signature-unix

解決策(2)は、src/tr_languages.cpp の 519,520 行の行末コメントを無効化する:

2013-03-29 espeak-general メーリングリストで報告したら 1.47.03e で直してもらえた。改行文字が認識されていなかった不具合として、コメントの行末に文字を追加して対応。

			// character codes offset by 0x380
			static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
#if 1
			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0};
			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};
#else
			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ  έ ή ί ύ
			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};  // θ κ ξ π ς σ τ φ χ 
#endif
			static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
			static const wchar_t el_char_apostrophe[] = {0x3c3,0};  // σ

2012-05-14 : espeak 1.46.12 以降に対応させるパッチという話(2013.1で正式に 1.47 対応になった):

=== modified file 'source/synthDrivers/_espeak.py'
--- source/synthDrivers/_espeak.py	2012-03-06 07:49:20 +0000
+++ source/synthDrivers/_espeak.py	2012-05-11 11:45:09 +0000
@@ -80,10 +80,13 @@
 #EE_BUFFER_FULL=1
 #EE_NOT_FOUND=2
 
+eightCharsType =c_char *8
+
 class espeak_EVENT_id(Union):
 	_fields_=[
 		('number',c_int),
 		('name',c_char_p),
+		('string',eightCharsType),
 	]
 
 class espeak_EVENT(Structure):

liblouis

since 2011-12-14

2012.1系(本家 Branch nvda/main: Rev 4839 以降)では liblouis を scons でビルドするようになった。

http://code.google.com/p/liblouis/downloads/list

から liblouis-2.4.1.tar.gz を落とす。

2013年4月からの作業

git に移行した。

2013年5月21日にブランチ release-2013.1jp での作業を終了した。がしかし、2013.1.1 が出るらしいので再開した。。

今後は本家 master からの派生 jpbranch で作業を行う。release-2013.1jp ブランチでの変更はすべて jpbranch にマージする。

git checkout master
git pull origin master
git checkout -b jpbranch
git merge release-2013.1jp

やってみたら珍しく conflict した:

Auto-merging source/versionInfo.py
Auto-merging source/globalCommands.py
Auto-merging source/appModules/skype.py
CONFLICT (content): Merge conflict in source/appModules/skype.py
Auto-merging source/NVDAObjects/window/edit.py
Auto-merging source/NVDAObjects/IAccessible/__init__.py
Auto-merging source/IAccessibleHandler.py
Auto-merging .gitignore
CONFLICT (add/add): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result.

git status するとこうなる:

# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#
#       both added:         .gitignore
#       both modified:      source/appModules/skype.py

修正して git add して git commit すればいいらしい。

2011年から2013年4月までの作業

2011.1

since 2011-01-31

Windows 版 bazaar をインストールする。

本家のbeta1に手作業で日本語関連をマージしたブランチ lp:~nishimotz/nvdajp/releases_2011.1 を bzr branch する。

後述の nishimotz 版 miscdep を上書きする。

開発環境の作り方 に書かれたツールのうち miscdep に入っていないもの、システムにインストールすべきものを入れる。

翻訳に関しては Translating NVDA into other languages (NVDA localization) に書かれたツールが必要かも知れません。

nishimotz版2011.1ブランチ

lp:~nishimotz/nvdajp/releases_2011.1

  • 2011-01-31 本家のbeta1に手作業で日本語関連をマージしたブランチ
  • 2011-02-04 revno 4062 本家 beta2 をマージ。Diverged Branches になってしまったので本家は pull できず merge した。

nishimotz版miscdep

更新 2011-02-02

bzr で手に入らないファイル:

リポジトリ: lp:~nishimotz/nvdajp/MiscellaneousDependencies

さらに過去の記録

since 2010-12-12

devinstaller というツールが整備されたが、最新の nvda に対応できていない、かも知れない。

Windows XP 32 bit

なるべく devinstaller が役立つような方針で。。

執筆作業中:

インストーラで入れるもの

  • winsdk_web.exe
  • scons-2.0.1.win32.exe
  • boost_1_44_setup.exe

2010-01 開発環境の構築

2010年1月の状況。

以下は svn の場合。2010年4月移行、nvdajp の最新ソースは bazaar で入手。

情報源 に従って必要なファイルを揃える。

http://bazaar.launchpad.net/~nvda-core-dev/nvda/main/view/head:/readme.txt (2011-04更新)

西本は Windows XP Pro SP3 で作業している。

  • python-2.6.4.msi
  • comtypes-0.6.2.win32.exe
  • pywin32-214.win32-py2.6.exe
  • wxPython2.8-win32-unicode-2.8.9.2-py26.exe
    • wxpython.org に繋がらないので sf.jp から

その他もろもろ。

svn からの checkout は c:\work\nvdajp でやった。

開発者としての checkout は下記(sshは設定済み)
svn checkout svn+ssh://username@svn.sourceforge.jp/svnroot/nvdajp/trunk

コマンドプロンプトで python nvda.pyw を実行。

Error starting, code 0X6B1

が出る(リビジョン73で各種ライブラリを最新版にしている)が、動いているっぽい。

  • このエラーコード 0x6B1 は NVDAHelper/remote/rpcSrv.cpp で RpcServerListen() の return value のようである。

Adobe FlashAccessibility interface typelib: http://www.nvda-project.org/3rdParty/FlashAccessibility.tlb が抜けてたので入れてみた。

http://www.nvda-project.org/3rdParty/system-dlls.7z の中身 (mfc90.dllなど)が c:\windows\system32 に入っていなかったので入れた。

2010-06 devinstaller

コマンドプロンプトで bzr が使える必要がある。

bazaar win32 をインストールしておく。

コマンドプロンプトで作業 (cygwin不可)

C:\work\nvdajp\lp> bzr launchpad-login nishimotz
C:\work\nvdajp\lp> bzr branch lp:nvdajp/devinstaller
C:\work\nvdajp\lp> cd devinstaller
C:\work\nvdajp\lp\devinstaller> python bootstrap.py
C:\work\nvdajp\lp\devinstaller> bin\buildout.exe

かなり待たされる。

やがて終了。nvda ディレクトリの中に nvda と nvdadepend のディレクトリが作られている。

実行するときは

cd devinstaller\nvda\nvda\source
python generate.py 
python nvda.pyw

2010-06-21 buildout.cfg

自分のブランチの実行環境を作るには

buildout.cfg ファイルの中にある、

urls =
    http://bazaar.launchpad.net/~nvdajp/nvdajp/main nvda

という項目のURLを変更し、自身のレポジトリにすることが可能

このやり方で(日本語版ではなく)本家の動作環境を作る、といったことも可能。

2010-10-10 2010.2 を取り込む

buildout はやりなおさない。

nvdajp/2010.2 をマージして python generate.py して python nvda.pyw できることを確認。

2010-12-29 bzrignore されたファイルたち

nvdajp_bazaar 作業関連。

scons portable してエラーが起きない状況を楽に作りたい:

installer/waves source/lib source/lib64 source/liblouis-2.dll 
source/louis source/typelibs source/waves source/comInterfaces 
source/images source/synthDrivers/espeak-data source/synthDrivers/espeak.dll 
source/synthDrivers/jtalk source/nvdajpime.dll

公式のファイルはここ: http://bazaar.launchpad.net/~nvdajp/nvdajp/MiscellaneousDependencies/files/head:/source/

2011-01-30 こんなワーニングが出るので要修正 replace source/comInterfaces/_ _ init _ _.py

nvdajp_devinstaller.txt · 最終更新: 2013/11/20 17:14 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0