ASPカーネルを1.7.0から1.8.0へアップグレードする
ASPカーネル1.7.0系だとperlのバージョンアップに伴って,make depend時に不要なワーニングがでたりするので1.8.0系に上げたいのだけど,簡易パッケージはまだまだ対応が少ない…。じゃあ個別パッケージを使ってカーネル本体(ターゲット非依存部)は1.8.0を使い,ターゲット依存部は1.7.0を使った場合の変更箇所をまとめました
変更箇所について
カーネルのdoc/version.txtに書かれていますが以下の変更がされているようです。
- char_t型の廃止
- SILのメモリ空間読出し関数に渡すポインタの属性の変更
- 非タスクコンテキスト用のスタック領域のサイズチェックの追加
- vasyslog.cをlibraryディレクトリに移動
- MISRA-C対応のためのコードの修正
- その他のバグフィックス
- サンプルのMakefileの修正
- その他の修正
これらありますが,ターゲット依存部に関連した作業をみていきます。
環境はapsh4_gccです。
char_t型の廃止
grepすれば一発ですが,prc_config.h,target_config.c,target_serial.c,target_serial.h,target_syssvc.hあとはPDICにあるsh_scif.c,sh_scif.hで使われていた char_t型をchar型へ変更しました。
サンプルのMakefileの修正
- LDFLAGSは,cfg1_out.cのリンク時には適用されないように修正.
このためにcfg1_out.cをビルドするときに-nostdlibがつかなくて,止まってました。
sampleのMakefileで該当箇所を見てみます。
1.7.0では
kernel_cfg.timestamp: $(START_OBJS) cfg1_out.o $(END_OBJS) $(HIDDEN_OBJS) kernel_cfg.timestamp $(CFG2_OUT): $(APPL_CFG) $(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \ $(START_OBJS) cfg1_out.o $(END_OBJS)
になっていたのですが,1.8.0では
$(CFG2_OUT_SRCS): kernel_cfg.timestamp kernel_cfg.timestamp: $(APPL_CFG) \ $(START_OBJS) cfg1_out.o $(END_OBJS) $(HIDDEN_OBJS) $(LINK) $(CFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \ $(START_OBJS) cfg1_out.o $(END_OBJS)
に変わっています。ポーティングガイドラインではCFG1_OUT_LDFLAGSについて以下のように記述されています。
(2-4-16) CFG1_OUT_LDFLAGS cfg1_out.cに対するリンクオプション ターゲットに依存して,cfg1_out.cをリンクする際に適用するオプションを追 加する場合には,上に示した変数に定義する. なお,LDFLAGSは,cfg1_out.cをリンクする際には適用されないため,LDFLAGS に定義したオプションで,cfg1_out.cをリンクする際にも必要なものは, CFG1_OUT_LDFLAGSにも定義する必要がある.
というわけで,Makefile.targetに追加すればよさそうです…。が実際にはMakefile.prcが以下のように悪さをしていました。
# # FPUを使用する場合 # ifeq ($(FPU_ENABLE),true) CDEFS := $(CDEFS) -DFPU_ENABLE CFG1_OUT_LDFLAGS := -lgcc endif
なので,この部分変更します。
# # FPUを使用する場合 # ifeq ($(FPU_ENABLE),true) CDEFS := $(CDEFS) -DFPU_ENABLE endif
それで,上に持っていきます。
# # コンパイルオプション # COPTS := $(COPTS) LDFLAGS := -nostdlib $(LDFLAGS) CDEFS := $(CDEFS) -DTOPPERS_LABEL_ASM LIBS := $(LIBS) -lgcc CFG1_OUT_LDFLAGS := -nostdlib -lgcc $(CFG1_OUT_LDFLAGS)
nostdlibの設定についてはポーティングガイドラインにはターゲットで…と書かれていますが,archで設定したほうがターゲット依存部で変更する箇所が少なくなるのでは…と思ったりもしています。この辺りはコントリビュータの好みかもしれませんが…。
Cygwinでのcfg(1.9.0)のビルドについて
Cygwinはパッケージをある程度ダウンロードできるのでcfgのビルドもそんなに難しくはないだろうということで一応まとめておくことにします。
CygwinはLinuxのディストリビューションと同じで、作成したcfgを他のバージョン(端末)のCygwinに持っていっても動作しない可能性がありますので、複数のCygwin環境の場合は個々につくるか、Cygwinの環境を合わせた方がよいです。
Cygwinのインストール
標準パッケージ+Develパッケージを全てインストールしました。
インストール後に以下の作業を行ってください
- boostで検索し、libboost-develを追加インストールしてください。
- xercesで検索し、xercesとxerces-develをアンインストールしてください。*1
Xerces-cのビルドとインストール(HAS_CFG_XML=1の時のみ)
XMLのパースにXerces-cを使っているので構築します。*2
Cygwinのパッケージに入っているXercesが3.0.0と古いのでソースからビルドすることにします。
Xerces-cの3.1.1をダウンロードして、やっぱりconfigureを一部修正して、xerces_cv_icu_presentの値を強制的にYESにする必要がありそうです。
$ ../configure --disable-pretty-make --disable-network --enable-transcoder-icu --disable-shared CFLAGS=-O3 CXXFLAGS=-O3
そうすると以下のような設定が表示されました。
configure: Report: configure: File Manager: POSIX configure: Mutex Manager: Windows configure: Transcoder: icu configure: NetAccessor: disabled configure: Message Loader: inmemory
あとは
$ make;make install
だけです。
cfgのビルド
ATK2をビルド(HAS_CFG_XML=1)するのであれば、
$ ./configure LIBBOOST_SUFFIX=-mt BOOST_VERSION=1_48 BOOST_DIR=/usr/include XERCES_DIR=/usr/include LIBBOOST_DIR=/usr/lib LIBXERCES_DIR=/usr/lib OPTIONS= HAS_CFG_XML=1
しないのであれば、
$ ./configure --without-xml LIBBOOST_SUFFIX=-mt BOOST_VERSION=1_48 BOOST_DIR=/usr/include XERCES_DIR=/usr/include LIBBOOST_DIR=/usr/lib LIBXERCES_DIR=/usr/lib OPTIONS=
で
$ make
とすればcft.exeの出来上がりです。ちなみに出来上がったcfgのサイズは以下のとおりでした。
今回使った環境は
でした
Mountain Lionでgccのクロスコンパイル作成
Snow Leopardまではすんなりいったんですけど…とか言われてちょっと自分のマシンでもできるか試して見ました。
作成環境
$sudo port install libmpc
環境変数の設定
MacPortsでインストールしたmpcのライブラリを使うために。ソースからインストールした場合はそのインストール先を。
$ export CFLAGS="-I/opt/local/include -O2"
$ export LDFLAGS="-L/opt/local/lib"
binutils
以下,sh-elfの例
インストール先は/usr/local/gnu以下です
$mkdir builld
$cd build
$../configure --prefix=/usr/local/gnu --target=sh-elf --disable-nls
$make -j4
$sudo make install
gcc
$mkdir build
$cd build
$../configure --prefix=/usr/local/gnu --target=sh-elf --disable-nls --enable-languages=c --disable-libssp --with-gnu-ld --with-gnu-ar --disable-shared --enable-languages=c
$make -j4
$sudo make install
*1:2.23を入れたらldでセグメンテーションエラーが出たので2.22を使っています
コンソーシアムによる公開資料
書籍以外のまとまった日本語情報がなかったのですが,DITAコンソーシアムにおいて,仕様書やライティングガイドの日本語翻訳が公開資料として提供されています。いまさら気が付きました。
言語リファレンスとかチマチマ英語を読んでいたのですが,こちらを参照できるとかなり作業効率があがりそうです。
oXygen 14のDITA-OT 1.5.4で日本語出力させる方法
前回のDITA-OT 1.5.3から1.5.4で日本語の出力方法が若干変わったので,再掲。
default.languageの変更
%DITA-OT/lib/configuration.propertiesのdefault.languageをjaに変更。
#DITA-OT configuration properties
default.language = ja
# PDF2 defaults
org.dita.pdf2.index.frame-markup = false
org.dita.pdf2.i18n.enabled = true
org.dita.pdf2.use-out-temp = false
1.5.3から1.5.4への変更で一番変わったところがここです。まさかマイナーバージョンでここを変えてくるとは思わなかったです。
catalog.xmlの変更
%DITA-OT/demo/fo/Customization/catalog.xml.origを%DITA-OT/demo/fo/Customization/catalog.xmlにコピーします。
そして,font-mappings.xmlを有効にするようにコメントを外します。
<?xml version="1.0" ?> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system"> ... <!-- FontMapper configuration override entry.--> <uri name="cfg:fo/font-mappings.xml" uri="fo/font-mappings.xml"/> ... </catalog>
font-mappings.xmlの変更
相変わらず,adobeのフォントをデフォルトにしているので変更します。
%DITA-OT/demo/fo/cfg/fo/font-mappings.xmlを%DITA-OT/demo/fo/Customization/foへコピーします。
そしてphysical-fontを修正します。
<font-mappings> <font-table> <!-- Backwards compatibility aliases --> <aliases> <alias name="serif">Serif</alias> </aliases> <aliases> <alias name="sans-serif">Sans</alias> </aliases> <aliases> <alias name="monospace">Monospaced</alias> </aliases> <aliases> <alias name="Helvetica">Normal</alias> </aliases> <aliases> <alias name="Courier">Monospaced</alias> </aliases> <logical-font name="Sans"> <physical-font char-set="default"> <font-face>Helvetica, Arial Unicode MS</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, Arial Unicode MS</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 New Roman, 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 New Roman, 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 New, 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 New, Courier</font-face> <baseline-shift>20%</baseline-shift> <override-size>smaller</override-size> </physical-font> </logical-font> </font-table> </font-mappings>
fop.xconfの変更
font-baseと埋め込みフォントの設定を行います。
IPAフォントとフォントメトリックスはC:\fop-1.0\fontsにあるとします。
<!-- NOTE: This is the version of the configuration --> <fop version="1.0"> <!-- Strict FO validation --> <strict-validation>false</strict-validation> <!-- Base URL for resolving relative URLs --> <base>.</base> <font-base>C:\fop-1.0\fonts</font-base> ... <!-- Information for specific renderers --> <!-- Uses renderer mime type for renderers --> <renderers> <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="ipamincho.xml" embed-url="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="ipagothic.xml" embed-url="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> ...
でPython環境(PyDev)を整える Windows編
同僚がPythonistaでして,こちらもそれなりに環境を整えないとレビューもできないわけです。
前提としてEclipseは導入済みです。今回はeclipse-SDK-4.2-win32を使っています。
Pythonのインストール
Python標準リリースを使用します。
Windows用インストーラのpython-2.7.3.msiをダウンロードして,インストールを行いました。
インストール先は,C:\Python27にしました。
PyDevのインストール
残念ながらJunoでも,UpdateSiteにはPythonが無いようです。
今回はPyDevを使って見ることにしました。PyDevでは専用にAptana Studio 3というのがあるようですが,自前のEclipseへインストールします。
UpdateSiteの登録
[Help]-[Install New Software...]の[Work with]にある[Add]をクリックして,PyDevのリポジトリを追加します。
プラグインの追加
[Pydev]-[PyDev for Eclipse]をチェックし,[NEXT]をクリックしプラグインを追加します。
インストール途中で以下のようなダイアログが表示されたら,チェックをつけて,[OK]をクリックします。
プラグインの追加が終わったら,Eclipseを再起動するメッセージが表示されるので,再起動を行います。
Python設定の確認
[Windows]-[Preferences]で[PyDev]-[Interpreter - Python]を表示し,Python標準リリースが設定されているか確認します。
設定されていない場合は,[Auto Config]をクリックすると設定できるはずです。