harmattan sdk

このエントリを書く前にやれN9が発表されたとかN950もあるぞとかいろいろあるのですが、まぁただニヤニヤしてるおっさんの絵を想像するしかないトピックなんぞいらんだろということで割愛。

実はこのN9/N950、MeeGo 1.2でHarmattanっていうコードネームがついてるんですが、どうやら下まわりはMeeGoというよりもMaemo6(debianベース)で出てくるような感じです。なので、Qt CreatorやSDKもdebパッケージを作成できるように環境が整ってます。つまりMaemo5 (Fremantle)と同じですね。MeeGoの厳密な定義は何か、という話はありますがまぁなんでもいいでしょう。

ということで、Harmattan Platform SDKという、いわゆるScratchboxベースのSDKで、Maemo 5 SDKの次のバージョンのようなものがbetaでリリースされました。相変わらずUbuntuだとかFedoraだとか言ってるんで、んじゃー俺Gentoo AMD64でやるよ!!っていう主旨の記事です。

基本は前にMaemo 5 SDKを入れたときの流れなので、細かい説明は↓を参照してください。

[prototype020 maemo 5 SDKをGentoo amd64に導入する]({{<ref "/post/maemo5-sdk-install-gentoo-amd64.md" >}})

で、ここでは簡単に手順だけ。流れはこんな感じです。

  1. Xephyrの導入
  2. dpkgの導入
  3. portage overlayの設定
  4. scratchboxの導入
  5. カーネル設定の確認/変更
  6. scratchboxの起動
  7. scratchboxのユーザー設定
  8. Harmattan Platform SDKのインストール
  9. scratchbox環境へのログイン
  10. 動作テスト

ではやってみましょう。

1 Xephyrの導入

細かくは割愛します。kdrive USEフラグを付けてxorg-serverをemergeすればOKです。

2. dpkgの導入

#emerge -v dpkg

3. portage overlayの設定

Gentooではscratchbox系のパッケージがいくつか足りないので、オレオレebuildを書いたり過去の他人のをパクったりしています。overlayとして公開してますので、↓のエントリあたりを見てkenya888s-overlayを追加しておいてください。もしくはdev-embeddedの下のscratchbox回りのebuildファイルを個別にもってってもらってもOKです。

[prototype030 オレオレGentoo overlayを作ってlaymanで管理する]({{<ref "/post/gentoo-oreore-overlay.md" >}})

4. scratchboxの導入

これもemergeするだけです。Maemo 5 SDKのときと違うのは、toolchainが新しいバージョンになっているのと、あたらしいパッケージが増えていることですね。overlayをちゃんと追加してくれていればきちんと入ります。

#emerge -av scratchbox scratchbox-devkit-apt-https \scratchbox-devkit-debian scratchbox-devkit-doctools  \scratchbox-devkit-perl scratchbox-devkit-qemu \scratchbox-toolchain-cs2009q3-eglibc2_10 \scratchbox-devkit-svn scratchbox-devkit-git \scratchbox-devkit-debian-squeeze scratchbox-devkit-hashutils-squeeze-sdk

ちなみに、overlayから入るパッケージはscratchbox-devkit-hashutils-squeeze-sdkだけです。scratchbox-devkit-git scratchbox-devkit-svnは公式ツリーに入ったようです。

※2011/07/29追記: Gentooの公式ツリーのscratchbox系のパッケージのバージョンは、Harmattan SDKでインストールされるUbuntuのパッケージよりも古いため、個人的に追っかけているqimsysのビルドに失敗するという問題が発生しました。よって、いくつかのパッケージをUbuntu側に合わせる形でoverlayに追加しています。最初にこの記事を読まれてセットアップされた方で、プログラムのビルドに問題があるような場合には、laymanで最新のoverlayを取得して更新してみてください。

5. カーネル設定の確認/変更

まぁお約束で。vdso32を無効にします。

#sysctl abi.vsyscall32=0 
#echo "abi.vsyscall32=0" >> /etc/sysctl.conf

6. scratchboxの起動

たいした話じゃありません

#/etc/init.d/scratchbox start

7. scratchboxのユーザー設定

まぁこれも前と同じ。ユーザーの再ログインを忘れずに。

#gpasswd sbox -a YOURUSERNAME 
#/opt/scratchbox/sbin/sbox_adduser YOURUSERNAME

8. Harmattan Platform SDKのインストール

ここから"harmattan-sdk-setup.py"をダウンロードします。

Harmattan Platform SDK

https://harmattan-dev.nokia.com/Introduction.html

こいつはscratchboxの導入、設定からHarmattanのターゲット作成まで一気にやってくれます。迷惑なので、適当にパッケージのチェックとscratchboxのインストールをスキップするように編集します。scratchboxのインストールパスもGentooに合わせます。

↓パッチです。

*** ./harmattan-sdk-setup.py.orig       Mon Jun 20 21:58:30 2011
+++ harmattan-sdk-setup.py      Thu Jun 30 17:03:49 2011
***************
*** 79,85 ****
  # Where scratchbox is found and is going to be installed to in case of tarball
  # installation. This path must begin with / and end with /scratchbox, check
  # check_sb_path_sane for details.
! SB_PATH = "/scratchbox"

  # scratchbox group
  SB_GROUP = "sbox"
+++ 79,86 +++-
  # Where scratchbox is found and is going to be installed to in case of tarball
  # installation. This path must begin with / and end with /scratchbox, check
  # check_sb_path_sane for details.
! #SB_PATH = "/scratchbox"
! SB_PATH = "/opt/scratchbox"

  # scratchbox group
  SB_GROUP = "sbox"
***************
*** 1872,1885 ****
          # install needed extra packages
          pkgs_to_install = [PKG_MGR.pkg_name_xephyr]

!         if PKG_MGR.repo_requires_authentication():
!             pkgs_to_install.append(PKG_MGR.pkg_name_https_transport)

!         for pkg in pkgs_to_install:
!             if not PKG_MGR.pkg_is_installed(pkg):
!                 tasks.append(PKG_MGR.pkg_install, pkg, False)

!         tq_append_install_sb_tasks(tasks, install_selections)
       
          num_users = len(install_selections.usernames)
       
+++ 1873,1886 +++-
          # install needed extra packages
          pkgs_to_install = [PKG_MGR.pkg_name_xephyr]

!         #if PKG_MGR.repo_requires_authentication():
!         #    pkgs_to_install.append(PKG_MGR.pkg_name_https_transport)

!         #for pkg in pkgs_to_install:
!         #    if not PKG_MGR.pkg_is_installed(pkg):
!         #        tasks.append(PKG_MGR.pkg_install, pkg, False)

!         #tq_append_install_sb_tasks(tasks, install_selections)
       
          num_users = len(install_selections.usernames)
       
***************
*** 1887,1894 ****
              tq_append_install_sdk_tasks(tasks, install_selections)
           
          # install files
!         for f in PRODUCT_FILES:
!             tasks.append(f.install)

          return tasks

+++ 1888,1895 +++-
              tq_append_install_sdk_tasks(tasks, install_selections)
           
          # install files
!         #for f in PRODUCT_FILES:
!         #    tasks.append(f.install)

          return tasks

ファイルを編集したら、実行権限つけて実行しましょう。rootユーザーでやってください。

#chmod 755 harmattan-sdk-setup.py 
#python mattan-sdk-setup.py -i c

CLIでインストールしたければ"-i c"オプションを付ければCLIでインストールが進みます。というかCLIでしか試してないです。

CLIでは"0admininstall"を選んでください。あとは流れで。

9. scratchbox環境へのログイン

いつも通りです。

$/opt/scrachbox/login
[sbox-HARMATTAN_X86: ~] > 

こんな感じのプロンプトが出れば成功。

[sbox-HARMATTAN_X86: ~] >sb-conf se HARMATTAN_ARMEL

とかやって、ARMのターゲットに変更できることも確認しておきましょう。

10. 動作テスト

このへんみてやってください。Maemo 5のときと大体同じです(手抜き)

Harmattan:Platform Guide/Getting started with Harmattan Platform SDK/Using Harmattan Platform SDK

https://www.developer.nokia.com/Community/Wiki/Harmattan:Platform_Guide/Getting_started_with_Harmattan_Platform_SDK/Using_Harmattan_Platform_SDK

ま、こんなところでしょうか。意味がわからないところはMaemo 5の時のエントリを見てもらえれば補完できると思いますので。

ということでこれを動かしながら開発したり、N9が買えるようになるのを心待ちにしましょうw