#!/bin/sh # # このシェルスクリプトは、OpenRTM-aistのARMクロスコンパイル環境をDebainホストに構築します。 # # 使用方法: # 予め/etc/apt/sources.listに、クロスコンパイラ関連のパッケージ取得URLを追加しておきます。 # deb http://downloads.pylone.jp/cross-toolchain/deb ./\ # その他のDebianパッケージ用の取得URLも必要です。記述していない場合は追加しておいてください。 # 例) # deb http://ftp.jp.debian.org/debian/ etch main contrib non-free # 次に作業用のディレクトリを作り、このシェルスクリプトをコピーします。 # 同じく、ダミーパッケージのpkg-config-arm-dcv1_1.0_all.debもコピーしてください。 # 実行する場合は、スーパーユーザー権限が必要です。 # インストール中に警告が出ますが、Yesと答えて続行してください。 # # 2008/05/16 木村 新規作成 # 05/19 木村 コメント修正 # pkg-config-arm-dcv1を、最後にダミーパッケージでインストールするように変更 # ※pkg-config-arm-dcv1に依存するパッケージを削除しないと、 #  新たにパッケージがインストールできないため # 05/20 木村 コメント修正、コメントアウトコード削除 # 05/22 木村 ダウンロードアドレステーブルから不要パッケージを削除 # # ※TABは4でコーディングしています #--------------------------------------------------------------------------- # aptitudeインストール パッケージ名テーブル #--------------------------------------------------------------------------- declare -a cross_pkg_tbl=( \ "gcc-4.1-arm-linux-gnu" \ "g++-4.1-arm-linux-gnu" \ "gdb-arm-linux-gnu" \ "dpkg-cross" \ "equivs" \ "pkg-config" \ "omniorb4-nameserver " \ "omniidl4" \ "uuid-dev" \ ) #--------------------------------------------------------------------------- # パッケージ ダウンロードアドレステーブル #--------------------------------------------------------------------------- declare -a pkg_tbl=( \ "http://ftp.jp.debian.org/debian/pool/main/a/ace/libace5.4.7c2a_5.4.7-12_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/a/ace/libace-dev_5.4.7-12_arm.deb" \ "http://download.atmark-techno.com/misc/softwaredesign/chapter5/mkXdummy" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libomnithread3c2_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libomnithread3-dev_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.3-13_arm.deb" \ "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl0.9.8_0.9.8c-4etch9_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libomniorb4c2_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.3-13_arm.deb" \ "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl-dev_0.9.8c-4etch9_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libomniorb4-dev_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libcos4c2_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/o/omniorb4/libcos4-dev_4.0.6-2.1_arm.deb" \ "http://ftp.jp.debian.org/debian/pool/main/e/e2fsprogs/libuuid1_1.39+1.40-WIP-2006.11.14+dfsg-2etch1_arm.deb"\ "http://ftp.jp.debian.org/debian/pool/main/e/e2fsprogs/uuid-dev_1.2-1.39+1.40-WIP-2006.11.14+dfsg-2etch1_arm.deb"\ ) #--------------------------------------------------------------------------- # name : disp_error () # description : エラーメッセージ表示関数 # usage : disp_error ライン番号 メッセージ #--------------------------------------------------------------------------- disp_error () { echo -n $scriptName echo -n ": line " echo -n $1 echo -n ": " echo $2 return 0 } #--------------------------------------------------------------------------- # name : aptitude_install () # description : aptitudeパッケージインストール関数 # usage : aptitude_install パッケージ名 #--------------------------------------------------------------------------- aptitude_install () { # 引数チェック if [ $# -eq 0 ] then echo "pkg_install () : There is no argument" exit 1 fi apt-get install "$1" # 実行結果チェック if [ $? -ne 0 ] then exit 1 fi return 0 } #--------------------------------------------------------------------------- # name : pkg_install () # description : パッケージインストール関数 # usage : pkg_install パッケージダウンロードアドレス #--------------------------------------------------------------------------- pkg_install () { # 引数チェック if [ $# -eq 0 ] then echo "pkg_install () : There is no argument" exit 1 fi # パッケージ取得 if ! wget "$1" then return 1 fi # パッケージ名抽出 pkg_name=`echo $1 | sed s:.*/::` # パッケージインストール case $pkg_name in mkXdummy ) # pkg-configダミーパッケージ作成 chmod 755 mkXdummy ./mkXdummy pkg-config # ダミーパッケージインストール pkg_name=`ls pkg-config-arm-cross*.deb` dpkg -i $pkg_name ;; libomnithread3-dev* | libomniorb4-dev* | libcos4-dev* ) # クロスパッケージ作成 dpkg-cross -a arm -b $pkg_name # クロスパッケージインストール pkg_name=`echo $pkg_name | cut -d "_" -f 1` crs_pkg_name=`ls $pkg_name*all.deb` dpkg --ignore-depends=pkg-config-arm-dcv1 -i $crs_pkg_name ;; * ) # クロスパッケージ変換インストール dpkg-cross -a arm -i $pkg_name ;; esac return 0 } #--------------------------------------------------------------------------- # シェルスクリプト メイン #--------------------------------------------------------------------------- declare -i lineNo declare -i num declare -i i #--------------------------------------- # スクリプト起動条件チェック #--------------------------------------- # スクリプト名保存 scriptName=$0 # ルートユーザーチェック if [ `id -u` -ne 0 ] then lineNo=$LINENO-2 disp_error $lineNo "The root authority is necessary" exit 1 fi # apt-line追加チェック grep -q "deb http://downloads.pylone.jp/cross-toolchain/deb ./" /etc/apt/sources.list if [ $? -ne 0 ] then echo "Please add \"deb http://downloads.pylone.jp/cross-toolchain/deb ./\" to \"/etc/apt/sources.list\"" exit 1 fi #--------------------------------------- # aptitudeパッケージインストール #--------------------------------------- # パッケージ情報を更新 apt-get update # テーブル要素数取得 num=${#cross_pkg_tbl[@]} i=0 while [ $i -lt $num ] do if ! aptitude_install ${cross_pkg_tbl[i]} then exit 1 fi i=i+1 done #--------------------------------------- # クロス変換パッケージインストール #--------------------------------------- # テーブル要素数取得 num=${#pkg_tbl[@]} i=0 while [ $i -lt $num ] do if ! pkg_install ${pkg_tbl[i]} then exit 1 fi i=i+1 done #--------------------------------------- # ダミーパッケージインストール #--------------------------------------- pkg_name=`ls pkg-config-arm-dcv1*.deb` dpkg -i $pkg_name #--------------------------------------- # シンボルリンク作成 #--------------------------------------- pushd /usr/arm-linux-gnu/bin ln -s /usr/bin/omniNames omniNames ln -s /usr/bin/omnicpp omnicpp ln -s /usr/bin/omniidl omniidl ln -s /usr/bin/omniidlrun.py omniidlrun.py popd echo "### install complete ! ###" exit 0