TTSP事始
TTSP(TOPPERS Test Suite Package)がリリースされてから半年が過ぎているが、ググってもあまり使われている形跡がなさそう*1。
ASPカーネルがビルドできてsample1アプリケーション動いてるけど、次どうしよう…からTTSPでテストをパスしたよ!までを簡単にまとめてみたい。
環境構築
ということなので、ASPカーネルのビルドができていれば、あとはrubyをインストールする。
今回インストールしたのは次のバージョン
$ ruby --version ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
マニュアルは?
ttsp/user.txtをよく読みましょう。私は読まなかったので最初はまりました。
TTSPを実行する前に
まずはTTSPのターゲット依存部を作成する必要がある…が今回はそこを最小限の変更ですします*2
configure.shの修正
ttsp/configure.shのTARGET_NAMEを使用しているターゲット名に変更する
apsh4_gccというターゲット依存部とした場合は次のようになる
# # ターゲット略称の定義 # TARGET_NAME="apsh4_gcc"
ターゲット依存部フォルダの作成(じゃなくて仮にコピー)
ttsp/library/ASP/targetフォルダの下に自分が使用しているターゲット依存部フォルダをコピーする
$ cd ttsp/library/ASP/target/ $ cp -rp at91skyeye_gcc/ apsh4_gcc
ttsp_target_test.hの中身をターゲットに応じて変更する。
コピーしたターゲット依存部フォルダからconfigure.yamlを削除し、
$ cd apsh4_gcc/ $ rm configure.yaml
ttsp_target.shの以下の部分を"false"に変更する
# # ターゲット依存APIの有無 # [true: 有り,false: 無し] # FUNC_TIME="true" # システム時刻制御関数 FUNC_INTERRUPT="false" # 割込み発生関数 FUNC_EXCEPTION="false" # CPU例外発生関数
TTSPの実行
ttspフォルダに戻ってTTBを走らせる
====================================================================== TTSP main menu ====================================================================== 1: API Tests c: Check the Functions for Target Dependent k: Kernel Library q: Quit ---------------------------------------------------------------------- Please input menu no:1
APIテストを選択「1」
====================================================================== API Tests ====================================================================== 1: Auto-Code Test 2: Scratch-Code Test 3: Configuration Error Test 4: Test for specified TESRY r: Return to main menu q: Quit ---------------------------------------------------------------------- Please input menu no:1
オートコードテストを選択「1」
======================================================================
API Tests (Auto-Code Test)
======================================================================
1: Generate a MANIFEST file for All TESRYs
2: Generate a MANIFEST file for each functions
3: Generate a MANIFEST file divided by specified number
4: Build all program files (No.5-8)
5: Make MANIFEST folders
6: Execute TTG
7: "make depend" for each MANIFEST folders
8: "make" for each MANIFEST folders
9: "make clean" for each MANIFEST folders
a: "make realclean" for each MANIFEST folders
e: Run executable module (Target Dependent)
r: Return to main menu
q: Quit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Please input menu no:1
makからTTGの実行まで
====================================================================== API Tests (Auto-Code Test) ====================================================================== 1: Generate a MANIFEST file for All TESRYs 2: Generate a MANIFEST file for each functions 3: Generate a MANIFEST file divided by specified number 4: Build all program files (No.5-8) 5: Make MANIFEST folders 6: Execute TTG 7: "make depend" for each MANIFEST folders 8: "make" for each MANIFEST folders 9: "make clean" for each MANIFEST folders a: "make realclean" for each MANIFEST folders e: Run executable module (Target Dependent) r: Return to main menu q: Quit ---------------------------------------------------------------------- Please input menu no: 4 ====================================================================== Build all program files (No.5-8) ====================================================================== make auto_code_1 folder ---------------------------------------------------------------------- Execute TTG in auto_code_1 ---------------------------------------------------------------------- [TTC]########################################################################################################:100.0% [ 1699 test cases passed. ] [TTG]########################################################################################################:100.0% [ 1699 test cases passed. ] [IMC]########################################################################################################:100.0% [ 1699 test cases passed. ] ---------------------------------------------------------------------- make depend in auto_code_1 ---------------------------------------------------------------------- ...以下テストプログラムのビルドステップへ
Preferencesをカスタマイズする
PizzaFactoryもEclipseのフレームワークを使っているのでPreferencesのカスタマイズが可能です.
以下のサイトを参考にしました.
- Eclipse RCP アプリケーションを独自ブランド化する - IBM developerWorks
- Eclipseのカスタマイズの勧め(後編)- @IT
- イントロ(概要画面)を作る
PizzaFactoryの場合plugin_customization.iniがplugins\jp.pizzafactory.platform_0.1.0にあるので,そこを変更できます.
またビルド時のライブラリの追加はjp.pizzafactory.toppers.kernels.jsp.
新世代カーネル用コンフィギュレータをビルドする(Boost導入編)
コンフィギュレータをビルドする必要がでたので一連の作業をまとめてみます.
実行環境
- Windows XP SP3
- Visual Studio 2010 Express
- Boostpro 1.44.0
- TOPPERS新世代カーネル用コンフィギュレータ(Release 1.7.0)
Boostproを使ってBoostをインストールする
Boostproのダウンロードサイトにある1.44.0をダウンロードします.
boostproのインストーラを実行します
ミラーサイトを選択します
デフォルトの[Nearest SourceForge Mirror]を選択します
コンパイラとVariantsを選択します
- [Visual C++ 10.0(Visual Studio 2010)]
- Multithreaded, static runtime
- Multithreaded debug, static runtime
コンポーネントを選択します
DITA-OT1.5.3とApache FOPを使って日本語に対応したPDFを作成する
以前の方法ではDITA-OT1.5.3に対応できないので1.5.3用にまとめ直しました.
事前準備
PDFに埋め込む日本語フォントを用意します.
昨日作成したIPAフォントとそのフォントメトリックスを使用します.
FO pluginのbuild.xmlを修正
%DITA-OT%\demo\fo\build_template.xmlを修正します.
実行時にはbuild_template.xmlがbuild.xmlにコピーされて実行されているようなのでbuild.xmlを直接書き換えてもダメです.
変更箇所は"default.locale"と"default.language"の値です.
<project name="dita.build" basedir="."> <import file="${dita.plugin.org.dita.pdf2.dir}/build_fop.xml"/> <import file="${dita.plugin.org.dita.pdf2.dir}/build_axf.xml"/> <import file="${dita.plugin.org.dita.pdf2.dir}/build_xep.xml"/> <target name="transform.topic2pdf.init"> <property name="customization.dir" value="${dita.plugin.org.dita.pdf2.dir}/Customization"/> <property file="${customization.dir}/build.properties"/> <property name="default.locale" value="ja_JP"/> <property name="default.language" value="ja"/> ...
フォントマッピングの変更
デフォルトのフォントマッピングを変更してIPAフォントを指定するようにします.
- %DITA-OT%\demo\fo\cfg\fo\font-mapping.xmlを%DITA-OT%\demo\fo\Customization\fo\font-mapping.xmlへコピーします.
- char-setがJapaneseの時のfont-faceを以下のようにfont-mapping.xmlを変更します.
<logical-font name="Sans"> <physical-font char-set="default"> <font-face>Helvetica</font-face> </physical-font> <physical-font char-set="Simplified Chinese"> <font-face>AdobeSongStd-Light</font-face> </physical-font> <physical-font char-set="Japanese"> <font-face>IPAGothic</font-face> </physical-font> <physical-font char-set="Korean"> <font-face>AdobeMyungjoStd-Medium</font-face> </physical-font> <physical-font char-set="Symbols"> <font-face>ZapfDingbats</font-face> </physical-font> <physical-font char-set="SubmenuSymbol"> <font-face>ZapfDingbats</font-face> </physical-font> <physical-font char-set="SymbolsSuperscript"> <font-face>Helvetica</font-face> <baseline-shift>20%</baseline-shift> <override-size>smaller</override-size> </physical-font> </logical-font> <logical-font name="Serif"> <physical-font char-set="default"> <font-face>Times</font-face> </physical-font> <physical-font char-set="Simplified Chinese"> <font-face>AdobeSongStd-Light</font-face> </physical-font> <physical-font char-set="Japanese"> <font-face>IPAMincho</font-face> </physical-font> <physical-font char-set="Korean"> <font-face>AdobeMyungjoStd-Medium</font-face> </physical-font> <physical-font char-set="Symbols"> <font-face>ZapfDingbats</font-face> </physical-font> <physical-font char-set="SubmenuSymbol"> <font-face>ZapfDingbats</font-face> </physical-font> <physical-font char-set="SymbolsSuperscript"> <font-face>Times</font-face> <baseline-shift>20%</baseline-shift> <override-size>smaller</override-size> </physical-font> </logical-font> <logical-font name="Monospaced"> <physical-font char-set="default"> <font-face>Courier</font-face> </physical-font> <physical-font char-set="Simplified Chinese"> <font-face>AdobeSongStd-Light</font-face> </physical-font> <physical-font char-set="Japanese"> <font-face>IPAGothic</font-face> </physical-font> <physical-font char-set="Korean"> <font-face>AdobeMyungjoStd-Medium</font-face> </physical-font> <physical-font char-set="Symbols"> <font-face>ZapfDingbats</font-face> </physical-font> <physical-font char-set="SymbolsSuperscript"> <font-face>Courier</font-face> <baseline-shift>20%</baseline-shift> <override-size>smaller</override-size> </physical-font> </logical-font>
- %DITA-OT%\demo\fo\Customization\fo\catalog.xmlを変更します.
上のフォントマッピングを有効にするようにcatalog.xmlを変更します.
<!-- FontMapper configuration override entry.--> <uri name="cfg:fo/font-mappings.xml" uri="fo/font-mappings.xml"/>
fop.xconfの変更
最後に%DITA-OT%\demo\fo\fop\fop.xconfを変更します.
事前に用意したIPAフォントはC:\fop-1.0\fonts\にあるものとします.
PDFを作成するときにIPAフォントを指定するように追加します.
<renderer mime="application/pdf"> <filterList> <!-- provides compression using zlib flate (default is on) --> <value>flate</value> <!-- encodes binary data into printable ascii characters (default off) This provides about a 4:5 expansion of data size --> <!-- <value>ascii-85</value> --> <!-- encodes binary data with hex representation (default off) This filter is not recommended as it doubles the data size --> <!-- <value>ascii-hex</value> --> </filterList> <fonts> <!-- embedded fonts --> <!-- This information must exactly match the font specified in the fo file. Otherwise it will use a default font. For example, <fo:inline font-family="Arial" font-weight="bold" font-style="normal"> Arial-normal-normal font </fo:inline> for the font triplet specified by: <font-triplet name="Arial" style="normal" weight="bold"/> If you do not want to embed the font in the pdf document then do not include the "embed-url" attribute. The font will be needed where the document is viewed for it to be displayed properly. possible styles: normal | italic | oblique | backslant possible weights: normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 (normal = 400, bold = 700) --> <!-- <font metrics-url="arial.xml" kerning="yes" embed-url="arial.ttf"> <font-triplet name="Arial" style="normal" weight="normal"/> <font-triplet name="ArialMT" style="normal" weight="normal"/> </font> <font metrics-url="arialb.xml" kerning="yes" embed-url="arialb.ttf"> <font-triplet name="Arial" style="normal" weight="bold"/> <font-triplet name="ArialMT" style="normal" weight="bold"/> </font> --> <font metrics-url="C:\fop-1.0\fonts\ipamincho.xml" embed-url="C:\fop-1.0\fonts\ipam.ttc" kerning="yes"> <font-triplet name="IPAMincho" style="normal" weight="normal"/> <font-triplet name="IPAMincho" style="normal" weight="bold"/> <font-triplet name="IPAMincho" style="italic" weight="normal"/> <font-triplet name="IPAMincho" style="italic" weight="bold"/> </font> <font metrics-url="C:\fop-1.0\fonts\ipagothic.xml" embed-url="C:\fop-1.0\fonts\ipag.ttc" kerning="yes"> <font-triplet name="IPAGothic" style="normal" weight="normal"/> <font-triplet name="IPAGothic" style="normal" weight="bold"/> <font-triplet name="IPAGothic" style="italic" weight="normal"/> <font-triplet name="IPAGothic" style="italic" weight="bold"/> </font> </fonts> <!-- This option lets you specify additional options on an XML handler --> <!--xml-handler namespace="http://www.w3.org/2000/svg"> <stroke-text>false</stroke-text> </xml-handler--> </renderer>
これで日本語のPDFを作成した時に日本語部分の文字化けが解消されます.
fop.xconfのフルパス指定問題は元に戻ってしまったのでまた考えます.
Apache FOP 1.0でIPAフォントのフォントメトリックスを作成する
DITAの作業環境を一から構築する必要がでてきたので新たにメモをしていきます.
使用するファイルは
です.
Apache FOPのダウンロード
IPAフォントのダウンロード
フォントメトリックス作成用のバッチファイル
こちらのサイトを参考にIPAフォント用のフォントメトリックスのバッチファイルを作成しました.
次のバッチを実行するとfontsフォルダにxmlのフォントメトリックスファイルが作成されます.
SET LOCAL_FOP_HOME= if "%OS%"=="Windows_NT" SET LOCAL_FOP_HOME=%~dp0 SET LIBDIR=%LOCAL_FOP_HOME%lib set LOCALCLASSPATH=%LOCAL_FOP_HOME%build\fop.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LOCAL_FOP_HOME%build\fop-sandbox.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LOCAL_FOP_HOME%build\fop-hyph.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xml-apis-1.3.04.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xml-apis-ext-1.3.04.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xercesImpl-2.7.1.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xalan-2.7.0.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\serializer-2.7.0.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\batik-all-1.7.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\xmlgraphics-commons-1.4.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\avalon-framework-4.2.0.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\commons-io-1.3.1.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\commons-logging-1.0.4.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\jai_imageio.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%LIBDIR%\fop-hyph.jar set LOCALCLASSPATH=%LOCALCLASSPATH%;%FOP_HYPHENATION_PATH% SET TTF_READER=org.apache.fop.fonts.apps.TTFReader SET FOP_FONTS_DIR=%LOCAL_FOP_HOME%fonts MKDIR "%FOP_FONTS_DIR%" 2>nul java -cp %LOCALCLASSPATH% %TTF_READER% -ttcname "IPAMincho" "%FOP_FONTS_DIR%\ipam.ttc" "%FOP_FONTS_DIR%\ipamincho.xml" java -cp %LOCALCLASSPATH% %TTF_READER% -ttcname "IPAPMincho" "%FOP_FONTS_DIR%\ipam.ttc" "%FOP_FONTS_DIR%\ipapmincho.xml" java -cp %LOCALCLASSPATH% %TTF_READER% -ttcname "IPAGothic" "%FOP_FONTS_DIR%\ipag.ttc" "%FOP_FONTS_DIR%\ipagothic.xml" java -cp %LOCALCLASSPATH% %TTF_READER% -ttcname "IPAPGothic" "%FOP_FONTS_DIR%\ipag.ttc" "%FOP_FONTS_DIR%\ipapgothic.xml"
*1:マイドキュメントなどパス名に空白文字が含まれているところだとその後の挙動に問題がありそうです
CentOS5.5でL2TP/IPsecサーバを設定する
以下のサイトを参考にしまして,CentOS5.5でL2TP/IPSecサーバを設定しました.
- さくらのVPSでiPhone用の野良WiFi通信傍受対策のL2TP/IPsec(VPN)を設定したメモ - nori_no のメモ
- iOS で L2TP over IPsec ソリューション (3) - www.limber.jp
xl2tpdの設定
L2TPとしてxl2tpdを使用しました.
アーカイブ(xl2tpd-1.2.8.tar.gz)とビルドに必要なパッケージのインストールを行います.
# yum install libpcap-devel ppp
ソースコードを展開して,ビルド後インストールを行います.
# tar zxvf xl2tpd-1.2.8.tar.gz # cd xl2tpd-1.2.8 # make # make install
サービスを登録します
# cp packaging/fedora/xl2tpd.init /etc/init.d/xl2tpd # chmod 755 /etc/init.d/xl2tpd # chkconfig --add xl2tpd
xl2tpdで提供しているスクリプトではパスが通らないため,シンボリックリンクを作成します.
# ln -s /usr/local/sbin/xl2tpd /usr/sbin/xl2tpd
設定ファイルをコピーします.
# mkdir /etc/xl2tpd # cp examples/xl2tpd.conf /etc/xl2tpd # cp examples/ppp-options.xl2tpd /etc/ppp/options.xl2tpd
サービスを登録し,自動起動設定を行います.
# chkconfig xl2tpd on # service xl2tpd start
設定情報については前のエントリーが参考になります.
IPSec PSKの設定
IPSecの実装としてOpenSwanを使用しました.
こちらもソースコードから設定を行います.openswan-2.6.33.tar.gzを使いました.
ビルドに必要なパッケージをインストールします.
# yum install make gcc gmp-devel bison flex
ソースコードを展開してインストールを行います.
# tar zxvf openswan-2.6.33.tar.gz # cd openswan-2.6.33 # make programs # make install
設定のサンプルファイルをコピーします.
# cp /etc/ipsec.d/examples/l2tp-psk.conf /etc/ipsec.d
サービスを登録します.
# chkconfig --add ipsec
OpenSwan自身の設定を行います.
# vi /etc/ipsec.conf config setup dumpdir=/var/run/pluto/ nat_traversal=yes oe=off protostack=netkey include /etc/ipsec.d/*.conf
L2TP/IPSec-PSKに関する設定を行います.
ここで「forceencaps=yes」を追加しないとAndroidをクライアントにする場合認証で問題がでてきます.
# vi /etc/ipsec.d/l2tp-psk.conf conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h keylife=1h type=transport left=%defaultroute leftnexthop=%defaultroute leftprotoport=17/%any right=%any rightprotoport=17/%any
事前共有鍵を設定します.ここでは「abcdefghij」とします.
# vi /etc/ipsec.secrets : PSK "abcdefghij"
sysctl.confファイルを変更します.
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 # = 0 を 1 にします net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0
sysstlの設定を有効化します
# sysctl -p
IPSecの設定を確認します.
# ipsec verify