読者です 読者をやめる 読者になる 読者になる

Tizen SDK Emulatorのアプリを変更/更新する (2)

f:id:moguriso:20130421104005p:plain

インストール時のログを見るとインストール時にシンボリックリンクを作っている様です。

I/osp-installer( 2250):         | (0). > + Remove(): path=[/opt/apps/kmcele1k0n.Internet]
I/osp-installer( 2250):         | (0). > Remove(): lstat(/opt/apps/kmcele1k0n.Internet): No such file or directory[errno:2]: skip
I/osp-installer( 2250):         | (0). > + CreateSymlink(): oldPath=[/opt/apps/kmcele1k0n], newPath=[/opt/apps/kmcele1k0n.Internet]
I/osp-installer( 2250):         | (0). > CreateSymlink(): [/opt/apps/kmcele1k0n.Internet] -> [/opt/apps/kmcele1k0n]

昨日は /usr/apps/kmcele1k0n/Internet として起動してNGになっていました。そこで

sh-4.1# /opt/usr/apps/kmcele1k0n/bin/Internet

とすると、メニュースクリーンにアイコンが出来ました。
f:id:moguriso:20130421104524p:plain
どうも、インストールの手順にいくらか誤りがあるように見えますが、一応これで追加したアプリケーションが起動するようになりました。試しにデバッグログを入れてみます。

 53 int
 54 OspMain(int argc, char* pArgv[])
 55 {   
 56     result r = E_SUCCESS;
 57     
 58     AppLogDebug("-------- log add by moguriso --------");
 59    
 60     AppLogDebug("Application started.");

デバッグログはsdb shellでdlogutilを実行すると表示されます。

$ sdb shell dlogutil
arc = 1, optind = 1 ,Kb 0, rotate 4
--------- beginning of /dev/log_main
D/Internet( 2385): int OspMain(int, char**) (48). > Application started.

・・・追加したはずのログが表示されませんでした。ビルドしたパッケージが更新できていないかもしれません。gbsにoverwriteとincrementalを追加して見ました。

$ gbs lb -A i586 --overwrite --incremental

が、どうもダメのようです。ビルドそのものができていない可能性も考えて

 53 int
 54 OspMain(int argc, char* pArgv[])
 55 {   
 56     result r = E_SUCCESS;
 57     hogehogehoge
 58     AppLogDebug("-------- log add by moguriso --------");
 59    
 60     AppLogDebug("Application started.");

としてみると、ちゃんとビルドエラーにはなります。

〜(略)〜
[    1s] -- Build files have been written to: /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0
[    1s] + make -j8
[    1s] [  2%] Building CXX object CMakeFiles/Internet.dir/src/IntInternetEntry.o
[    1s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp:41:14: warning: extra tokens at end of #undef directive
[    1s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp:42:19: warning: extra tokens at end of #undef directive
[    1s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp:43:23: warning: extra tokens at end of #undef directive
[    2s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp: In function 'int OspMain(int, char**)':
[    2s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp:56:5: error: 'hogehogeho' was not declared in this scope
[    2s] /home/abuild/rpmbuild/BUILD/apps.Internet-1.0.0.0/src/IntInternetEntry.cpp:58:2: error: expected ';' before 'AppLogDebugInternal'
[    2s] make[2]: *** [CMakeFiles/Internet.dir/src/IntInternetEntry.o] Error 1
[    2s] make[1]: *** [CMakeFiles/Internet.dir/all] Error 2
[    2s] make: *** [all] Error 2
[    2s] error: Bad exit status from /var/tmp/rpm-tmp.RdH8vJ (%build)
[    2s] 
[    2s] 
[    2s] RPM build errors:
[    2s]     Bad exit status from /var/tmp/rpm-tmp.RdH8vJ (%build)
warning: build failed, Leaving the logs in /home/moguriso/GBS-ROOT/local/repos/tizen2.0emul/i586/logs/fail/apps.Internet-1.0.0.0-1/log
error: *** Error Summary ***
=== the following packages failed to build due to rpmbuild issue ===
apps.Internet-tizen2.0emul-i586: /home/moguriso/GBS-ROOT/local/repos/tizen2.0emul/i586/logs/fail/apps.Internet-1.0.0.0-1/log

error: <gbs>rpmbuild fails

defineマクロが期待した用に置換されていないのかと疑って、下記のようにして見ました。

 52 int
 53 OspMain(int argc, char* pArgv[])
 54 {
 55     result r = E_SUCCESS;
 56     
 57     AppLogDebugInternal(__PRETTY_FUNCTION__, __LINE__,"-------- log add by moguriso --------");
 58     
 59     AppLogDebug("Application started.");

念の為、さっきインストールしたrpmを削除して

sh-4.1# rpm -e apps.Internet-1.0.0.0-1.i586

入れ直すと、変なエラーが出るようになりました。。。

sh-4.1# rpm -ivh apps.Internet-1.0.0.0-1.i586.rpm 
error: Failed dependencies:
        rpmlib(ShortCircuited) <= 4.9.0-1 is needed by apps.Internet-1.0.0.0-1.i586

面倒になってきてので、nodepsで無理やりインストールしてみます。

sh-4.1# rpm -ivh --force --nodeps apps.Internet-1.0.0.0-1.i586.rpm 
Preparing...                ########################################### [100%]
   1:apps.Internet          ########################################### [100%]

これで動かすと、何故か両方(L59のログ)とも表示されました。

sh-4.1# dlogutil 
arc = 1, optind = 1 ,Kb 0, rotate 4
--------- beginning of /dev/log_main
D/Internet( 2472): int OspMain(int, char**) (57). > -------- log add by moguriso --------
D/Internet( 2472): int OspMain(int, char**) (59). > Application started.

何が良くて何が悪いのかよく分かりませんが、とりあえずログを入れられる用になりました。