Tera Term 開発者向け
- 開発環境
- ライブラリ
- SVN コミッターへの注意
- TERATERM.INI への項目追加
- メニューID追加時の命名規則
- マクロコマンド追加時の作業リスト
- ライブラリのビルド方法
- Tera Termのビルド方法
- TeraTerm Menuのビルド方法
- TTXKanjiMenuのビルド方法
- TTProxyのビルド方法
- TTSSHのビルド方法
- CygTermのビルド方法
- TTXSamplesのビルド方法
- ヘルプファイルのビルド方法
- リリースの方法
開発環境
- OS
- Windows XP Professional
- Windows 8 Pro
- Windows 8.1 Pro
- Windows 10 Pro
- Tera Term Project でリリースに使用しているコンパイラ
- Visual Studio 2005 SP1 (Standard Edition 以上)
- サポートされているコンパイラ
- インストーラ
- Inno Setup 5.6.1 ANSI (http://www.jrsoftware.org/isinfo.php)
- ISTool 5.3.0.1 (https://sourceforge.net/projects/istool/)
- その他
- Cygwin 最新版(v4.105からCygTerm+はVista以降対応となったため)
- ActivePerl 5.10 以上 または Strawberry Perl 5.30.1.1 以上
ビルド過程で使用します
- OpenSSL のコンパイル(必須)
- ドキュメントファイルの文字コード・改行コード変換(必須)
- リビジョン番号取得 (perlがない場合リビジョン番号を取得せずにビルドします)
- Subversion for Windows (http://sourceforge.net/projects/win32svn/)
ソースのチェックアウトに使った svn と互換性のあるバージョン。
libs\svn へ解凍します。("svnversion.exe" が libs\svn\bin に配置されるようにしてください)
- Subversion for Windows (http://sourceforge.net/projects/win32svn/)
リビジョン番号取得時に使用します
svnrev_perl/toolinfo.txt に svn.exe のフルパスを記述いてください。
詳しくは svnrev_perl/readme.md を参照ください
ライブラリ
- Oniguruma 6.9.7.1 (https://github.com/kkos/oniguruma)
- OpenSSL 1.1.1k (http://www.openssl.org/)
- zlib 1.2.11 (http://www.zlib.net/)
- PuTTY 0.76 (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
- SFMT 1.5.1 (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html)
- cJSON 1.7.14 (https://github.com/DaveGamble/cJSON/)
- The reference C implementation of Argon2 20190702 (https://github.com/P-H-C/phc-winner-argon2)
SVN コミッターへの注意
SVN リポジトリは一般向けとは違い、以下の通りです。
svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk
ファイルを別のディレクトリで編集しないでください。
コミットしたときに別の人の修正を削除してしまうことがあります。
アップデート・コミット時の注意
svnの処理が失敗することがあるので、ファイルをエディタ等で開いたままで行わないでください。
言語ファイル編集時の注意
言語ファイル(installer\release\lang\*.lng)は多言語対応エディタ(vim, EmEditor, Notepad++等)で編集してください。
TERATERM.INI への項目追加
項目名
すでに EnableFoo... や DisableBar... が混在してしまっているが、混乱しやすい。
今後は Baz... という形式にするのが望ましい。
1桁目は 5
2桁目は
Tera Term VT ウィンドウなら 0
Tera Term TEK ウィンドウなら 1
TTSSH なら 2
TTProxy なら 3
TTXKanjiMenu なら 4
3桁目は
[File] メニューなら 1
[Edit] メニューなら 2
[Setup] メニューなら 3
[Control] メニューなら 4
[Window] メニューなら 8
[Help] メニューなら 9
例:File配下にTTSSHのメニューを追加する
#define ID_SSHSCPMENU 52110
マクロコマンド追加時の作業リスト
Tera Termマクロを新設するときの作業手順について、以下に示します。
- ソースコードの修正
- コマンドの内部 ID を採番する。(「内部 ID」は"helpid.h"にも使用される)
... teraterm/ttmacro/ttmparse.h
- コマンド名を走査して内部 ID に変換する。
... CheckReservedWord@teraterm/ttmacro/ttmparse.c
- コマンドの内部 ID から実際に処理をする関数を呼ぶ。
... ExecCmnd@teraterm/ttmacro/ttl.c
- 処理する関数を作る。
- ヘルプ(言語ごと)
- コマンドのヘルプを作る。
... doc/LANG/html/macro/command/hogefunc.html
- コマンド一覧ページに追加する。
... doc/LANG/html/macro/command/index.html
- ヘルプトピックに追加する。
... doc/LANG/teraterm.hhc
- ヘルプページのコンテキスト ID を採番する。
値は コマンドの内部 ID + 92000。
... teraterm/common/helpid.h
- コンテキスト ID と呼び出すファイルのエイリアスを作成する。
テキストエディタで直接開き、[ALIAS]にHTMLを追加する。
... doc/LANG/teraterm.hhp
ライブラリのビルド方法
- PuTTY (used by TTSSH)
- PuTTY のソースを libs/putty の中に展開する。
ttssh ソリューション配下の putty プロジェクトにより必要な機能のみが静的ライブラリ化され、ttxssh.dll にリンクされるため、展開するだけでよい。
- Oniguruma (used by Tera Term Macro)
- oniguruma のソースを libs/oniguruma の中に展開する。
- スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
- コマンドプロンプト上から libs ディレクトリに移動し、buildoniguruma6.bat を実行する。
- OpenSSL (used by TTSSH)
- openssl のソースを libs/openssl の中に展開する。
- OpenSSL 1.0.0e 以降で、libs/openssl/Makefile.bak が最初から存在する場合は、一度だけ手動で削除してください。
- スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
- コマンドプロンプト上から libs ディレクトリに移動し、buildopenssl11.bat を実行する。
- Zlib (used by TTSSH)
- zlib のソースを libs/zlib の中に展開する。
- スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
- コマンドプロンプト上から libs ディレクトリに移動し、buildzlib.bat を実行する。
- SFMT (used by Tera Term Macro)
- SFMT のソースを libs/SFMT の中に展開する。
- スタートメニューから「Visual Studio 2005 コマンド プロンプト」を起動する。
- コマンドプロンプト上から libs ディレクトリに移動し、buildSFMT.bat を実行する。
- 必要に応じて libs/SFMT/SFMT_version_for_teraterm.h のバージョン番号を修正する。
- cJSON (used by TTXCheckUpdate plugin)
- EcJSON のソースを libs/cJSON の中に展開する。
- The reference C implementation of Argon2 (used by TTSSH)
- argon2 のソースを libs/argon2 の中に展開する。
argon2 リファレンス実装には静的ライブラリを生成するプロジェクトファイルが含まれていない。
ttssh ソリューション配下の argon2 プロジェクトにより静的ライブラリが生成され、ttxssh.dll にリンクされるため、展開するだけでよい。
Tera Termのビルド方法
Tera Termのビルド方法について以下に示します。
ビルドにはVisual Studio 2005 Standard Edition以上が必要です。(Visual Studio 2005 Express Editionは不可)
- ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
- teraterm\visualc\ttermpro.sln をVisual Studioで開く。
.slnファイルの改行コードが"LF"になっていると、Visual Studioが起動しないので注意願います。
- ソリューションをビルドする。
- ビルドに成功するとteraterm ディレクトリに実行プログラムが生成される。
- Checkout TeraTerm Menu source code from OSDN(https://osdn.net/projects/ttssh2/).
- ttpmenu\ttpmenu.sln をVisual Studioで開く。
- ソリューションをビルドする。
- ビルドに成功すると ttpmenu ディレクトリに ttpmenu.exe が生成される。
- Checkout TeraTerm Menu source code from OSDN(https://osdn.net/projects/ttssh2/).
- TTXKanjiMenu\ttxkanjimenu.sln をVisual Studioで開く。
- ソリューションをビルドする。
- ビルドに成功すると TTXKanjiMenu ディレクトリに ttxkanjimenu.dll が生成される。
TTProxyのビルド方法
TTProxyのビルド方法について以下に示します。
ビルドにはVisual Studio 2005(VC++8.0)が必要です。
- ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
- TTProxy\TTProxy.sln をVisual Studioで開く。
- ソリューションをビルドする。
- ビルドに成功すると TTProxy ディレクトリにDLLが生成される。
TTSSHのビルド方法
TTSSHのビルド方法について以下に示します。
ビルドにはVisual Studio 2005(VC++8.0)、ActivePerlが必要です。
TTSSH単体のビルドは VS2005 Express Edition でも可能です。ttpcmn.libをリンクするため、Tera Termのビルドを事前に行っておく必要があります。VS2005 Express EditionではTera Termのビルドはできませんが、ttpcmn.libは作成することができます。
VS2008 Express Editionでビルドすると、.rcファイルで下記のエラーが発生します。
.\ttxssh.rc(10) : fatal error RC1015: cannot open include file 'afxres.h'.
本現象を回避するには、.rcファイルをテキストエディタで開き、afxres.hのincludeを削除し、新規に2行を追加します。
- #include "afxres.h"
+ #include
+ #define IDC_STATIC -1
- ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
- ttssh2\ttssh.sln をVisual Studioで開く。
- ソリューションをビルドする。
- ビルドに成功するとttssh2\ttxssh ディレクトリにDLLが生成される。
CygTermのビルド方法
CygTermのビルド方法について以下に示します。
- Cygwin(https://www.cygwin.com/)をインストールする。
- Cygwinのシェルを起動し、cygterm ディレクトリへ移動する。
# cd cygterm
- CygTermをコンパイルする。
# make
TTXSamplesのビルド方法
リポジトリのTTXSamplesに Tera Term Extension (TTX)のサンプルがあります。TTXを作る際の参考にしてください。
TTXSamplesのビルドにはVisual Studio 2005(VC++8.0)が必要です。Tera Term本体とは違い、Express Editionでもビルド可能です。
- ソースコードをOSDN(https://ja.osdn.net/projects/ttssh2/)からチェックアウトする。
- TTXSamples\TTXSamples.sln をVisual Studioで開く。
- ソリューションをビルドする。
- ビルドに成功すると TTXSamples ディレクトリにDLLが生成される。
各TTXの詳細については、プロジェクト内のReadMe-ja.txtを参照してください。
ヘルプファイルのビルド方法
ヘルプファイルのビルド方法について以下に示します。
- HTML Help Compiler を入手する。
Visual Studio (2017 以降) を "C++ MFC" オプションを選択してインストールすると、HTML Help Compiler (hhc.exe) がインストールされる。
- doc\makechm.bat を実行する。
リリースの方法
リリースの方法について以下に示します。
- RC 作成時にバージョンを一つインクリメントする。
一般にテストを呼びかけ、旧バージョンとの同時実行が考えられるため、このタイミングとする(cf. TT_FILEMAPNAME 定義)。
- teraterm\common\tt-version.h
- ttssh2\ttxssh\ttxssh-version.h
- ttpmenu\ttpmenu.rc // only modifying
- TTProxy\TTProxy.rc // only modifying
- TTXKanjiMenu\ttxkanjimenu.rc // only modifying
- installer\teraterm.iss
- AppVer を上げ、"RC" を追加
- snapshot を コメントアウト
- バッチファイルの呼び出しを修正
- この年における最初のリリースの場合は、著作権表示の「最後の発行の年」をインクリメントする。
- teraterm\keycode\keycode-version.rc // VERSIONINFO
- teraterm\teraterm\tt-version.rc // VERSIONINFO
- teraterm\ttpcmn\ttpcmn-version.rc // VERSIONINFO
- teraterm\ttpdlg\ttpdlg.rc // dialog
- teraterm\ttpfile\ttpfile-version.rc // VERSIONINFO
- teraterm\ttpmacro\ttm-version.rc // VERSIONINFO
- teraterm\ttpset\ttpset-version.rc // VERSIONINFO
- teraterm\ttptek\ttptek-version.rc // VERSIONINFO
- ttssh2\ttxssh\ttxssh.rc // dialog
- ttssh2\ttxssh\ttxssh-version.rc // VERSIONINFO
- ttpmenu\ttpmenu.rc // dialog, VERSIONINFO
- TTProxy\TTProxy.rc // dialog, VERSIONINFO(en), VERSIONINFO(ja)
- TTXKanjiMenu\ttxkanjimenu.rc // VERSIONINFO
- installer\teraterm.iss
- installer\release\license.txt // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
- doc\en\html\index.html
- doc\en\html\about\copyright.html // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
- doc\en\html\macro\index.html
- doc\ja\html\index.html
- doc\ja\html\about\copyright.html // Tera Term, TTSSH, Cygterm+, TTProxy, TeraTerm Menu, TTX KanjiMenu
- doc\ja\html\macro\index.html
- 依存ライブラリ、ツール、インポート元の最新版をチェックする。
- Visual Studio
http://www.microsoft.com/japan/msdn/vstudio/downloads/default.aspx
- Inno Setup
http://www.jrsoftware.org/isdl.php
- Oniguruma
http://www.microsoft.com/japan/msdn/vstudio/downloads/default.aspx
- OpenSSL
http://www.openssl.org/
- zlib
http://www.zlib.net/
- PuTTY
http://www.chiark.greenend.org.uk/~sgtatham/putty/
- SFMT
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
- CygTerm
https://googledrive.com/host/0B1s-dM6d6yC4fmhEZ3c0VTNFWEFtV3daUlRGQmFHVnBmVHRybUNnUVliNWktNDRlZ2NnZTQ/index-e.html
- ドキュメントを確認する。
- ダイアログ上の設定項目・UIのない特別オプション・コマンドラインパラメータ・新規マクロコマンドなど、対応するドキュメントに漏れがないか確認する。
- 変更履歴の書き忘れを確認する。
おおむね変更した順に追記される変更履歴の順番を変更する。だいたいの指針としては、ターミナルエミュレーション関係・アプリケーションとしての変更・マクロの順。
- ドキュメント差分が翻訳されていることを確認する。
- バージョンを上げ、日付を変更する。
- teraterm.iss
AppVer から RC を削除
- html/about/hisotry.html
CygTerm+ は例外で、リリースとは関係なくバージョンが上がる。
パッチがコミットされると即リリース扱いになり、リリース日はその日付となる。
これは、バージョンの末尾が patchlevel であり、コンパイラの入手が容易なため。
- 前回のリリースからCygTerm+に変更がある場合は、64bit Cygwinでビルドして cygterm\cygterm+-x86_64\cygterm.exe の差し替えを行う。
- 動作確認をする
- インストーラを作成する。
ISTool で teraterm\installer\teraterm.iss を開き、[Project]-[Compile Setup]で作成される。
- インストールおよび実行をテストする。
- SVN のタグを作成する。
タグ名は「teraterm-バージョン」。たとえば、v4.82ならば"teraterm-4_82"。
svn copy -m "Release 4.82" svn+ssh://svn.osdn.net/svnroot/ttssh2/trunk svn+ssh://svn.osdn.net/svnroot/ttssh2/tags/teraterm-4_82
- リリース用のタグでチェックアウトし直す。
- インストーラを作成する。
- teraterm\installer\teraterm.iss を編集する
#define AppVer "4.???"
;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
[InnoIDE_PreCompile]
Name: makechm.bat
;Name: build.bat
Name: build.bat; Parameters: rebuild
[InnoIDE_PostCompile]
Name: makearchive.bat; Parameters: release
[PreCompile]
Name: makechm.bat
;Name: build.bat
Name: build.bat; Parameters: rebuild
[PostCompile]
Name: makearchive.bat; Parameters: release
[_ISToolPreCompile]
Name: makechm.bat
;Name: build.bat
Name: build.bat; Parameters: rebuild
[_ISToolPostCompile]
Name: makearchive.bat; Parameters: release
- ISTool で teraterm\installer\teraterm.iss を開き、[Project]-[Compile Setup]で作成される
- OSDN を更新する。
- [ダウンロード]-[管理]-[新規作成]
変更履歴を入力してリリースを作成する。
- [ニュース一覧]-[新規登録]
ニュース記事を作成する。
- メーリングリストにアナウンスする。
- プロジェクトページを更新する。
- スナップショットを削除する。
- Twitter に告知する。
https://twitter.com/Tera_Term
リリース告知をツイートして固定する。
- フォーラムに告知する。
Announcements http://logmett.com/support-forums/5
Announcements に新規投稿する。種類は Announcement。
一つ前の Announcement の種類を Normal に変更する。
Announcement は三個残すことになっているので、三つ前の Announcement を削除する。
- Chocolatey の登録を更新