目次
nvdajp 開発環境
since 2010-12-12
nvdajp 開発者向けセットアップ。nvdajp_bazaar もどうぞ。
情報源
- 開発に興味をお持ちの方へ (sf.jp)
- ご不明な点は nvdajp nvdajp-team ML あるいは #nvdajp ハッシュタグでどうぞ。
Windows 7/8 で開発環境
インストールするもの
updated on 2013-11-19
ソースコードの readme に書かれているが https://bitbucket.org/nvdajp を使うという前提で手順をまとめる。
基本的にすべて32bit版のバイナリ。新しいバージョンが出ていてもむやみに最新版を使わないほうがよい。
特に明記しないかぎり、インストーラーのオプションはデフォルト。
- Git for Windows
- コマンドラインで MSYS ツールも全部使えるように。
- 改行コード autocrlf=true のままにしておく。
- python-2.7.5.msi
- Python 2.7 comtypes-0.6.2.win32.exe
- wxPython2.8-win32-unicode-2.8.12.1-py27.exe
- http://www.wxpython.org/download.php#stable から wxPython2.8-win32-unicode-py27 をクリック。
- pywin32-218.win32-py27.exe
- py2exe-0.6.9.win32-py2.7.exe
- pyserial-2.5.win32.exe
- http://en.sourceforge.jp/projects/sfnet_pyserial/releases/ ここにWindowsインストーラーがある。
- http://pypi.python.org/pypi/pyserial ここには2.6があるがWindowsインストーラーがない。
- 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
- C:\Python27 および C:\Python27\scripts に PATH を通す。
- Microsoft Windows SDK, version 7.0
- ドキュメントとサンプルをはずす。
- ツールは 32 bit と 64 bit libraries and tools 全部入れる。
- Redistributable Components も ON にする。
- 7-zip (32bit) 7z920.exe
- nsis-2.46-setup.exe
- configobj: configobj.py と validate.py を c:\python27\lib\site-packages にコピーする
-
JTalk 単体テストで使うもの
- PyAudio
- pyaudio-0.2.7.py27.exe
環境変数
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年までの備考
- Windows SDK 7.0 ではなく 7.1 をしばらく使っていたが、本家は 7.0 を使い続けている
- Windows SDK Ver.7.1 winsdk_web.exe
- Redistributable Components も ON にする。コンパイラはVC2008相当という話。
- Visual Studio 2010 SP1 との競合の問題あり。詳しくは Windows に書いた。
- .NET Framework 4 (Windows SDK 7.1 を入れる前に) http://www.microsoft.com/ja-jp/download/details.aspx?id=17851
- Windows SDK 7.0 および 7.1 が公式にサポートされているという話(本家チケット2508)
- 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できる。
- doxygen-1.7.4-setup.exe
- doxygen 1.8.3 ではうまくscons devDocsできなかった。
- epydoc-3.0.1.win32.exe
- readme.txt にちゃんと書かれていない経緯 http://www.nvda-project.org/ticket/2421
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あり)に変換する:
- nishimotzのmiscdep の include/espeak はこの変換済み。
- 自分だけだと思うけど 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 に対応できていない、かも知れない。
- NVDA Development (nvda-project.org)
- Community 本家の開発者MLは nvda-dev
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 を取り込む
- 2010.2 からは Python 2.7 が必須
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