#######################################
時雨堂 MQTTゲートウェイ Fuji ビルド方法
#######################################

:バージョン: 1.0.2

fujiはGoプログラミング言語で記述されています。
fujiをデバッグ、拡張するためにソースコードをビルドするまでのおおよその流れは以下のようになります。

1. 開発環境の準備(Go言語、gitコマンド, makeコマンド)
2. リポジトリからソースコードを取得
3. ビルド


開発環境の準備
=============

FujiはGo言語で記述されているのでGo言語の開発環境を準備します。
また、ソースコードを利用するためにgitコマンドも準備します。

Go言語パッケージのダウンロードとインストール
=======================


Go言語の公式サイトのダウンロードページから、ビルドをするマシンのOSに合ったパッケージを選んでダウンロードします。
現在サポートされているのはFreeBSD 8以降, Linux 2.6.23以降, MacOS X 10.6以降, Windows XP以降のバージョンのOSですが、おすすめなのはMac OSXの環境です。

註：Go言語パッケージのダウンロードページ: https://golang.org/doc/install

Mac OSXの場合はインストールパッケージ、LinuxとFreeBSDの場合は圧縮されたtarファイル、Windowsの場合は圧縮された実行可能ファイルを選びます。

Mac OSXの場合
-------------

ダウンロードしたインストールパッケージをダブルクリックして開きます。そして画面の指示に従ってパッケージをインストールします。

Linux, Free BSDの場合
---------------------

マシンの管理者権限(通常はrootユーザー)にて、以下の操作を行います。

::

    tar -C /usr/local -xzf go<バージョン番号>.<OS名>-<CPUのタイプ>.tar.gz


Windowsの場合
-------------

まずお使いのOSが32bit版であるか、64bit版であるかを確認します。
適応するMSIファイル（インストールパッケージ）の名前は次のようになりますので、ダウンロードページからダウンロードしてください。

- 32bit版OS : go1.5.3.windows-386.msi
- 64bit版OS : go1.5.3.windows-amd64.msi

ダウンロードしたファイルを開けば、インストールが開始されます。

gitコマンドの準備
================

fujiのソースコードはgithub.comにてgitを使って管理されています。

gitの公式サイトからインストールパッケージをダウンロードします。

注意：なるべく最新のバージョンのgitコマンドが使えるようになっている必要があります。
Redhat系のOS(CentOSなど)では、公式のリポジトリからインストールできるgitのバージョンが古いことがあり、githubと連携した作業に支障を来すことがありましたのでご注意ください。

Mac OSXの場合
------------

下記のURLからダウンロードできます。

http://git-scm.com/download/mac

ダウンロードしたインストールパッケージをダブルクリックして開きます。そして画面の指示に従ってパッケージをインストールします。


Linux, Free BSDの場合
---------------------

下記のURLからダウンロードできます。
お使いのOSによって操作方法は異なりますので、下記のページに書いてある手順でインストールをしてください。

http://git-scm.com/download/linux

Windowsの場合
-------------

下記のURLからダウンロードできます。

http://git-scm.com/download/win

ダウンロードしたインストールパッケージをダブルクリックして開きます。そして画面の指示に従ってパッケージをインストールします。

makeコマンドの準備
==================

ビルドの具体的手順は Makefile に記述されています。
それを簡単に実行するため、makeコマンドが使えると便利です。

すでに他の言語でプログラミングをしている場合には、インストール済みのことが多いかと思います。


Mac OSXの場合
------------

Xcodeの環境がインストールされていれば、すでにインストール済みです。


Linux, Free BSDの場合
---------------------

yumコマンドやapt-getコマンドなど、OSに合ったパッケージ管理コマンドでインストールできます。


Windowsの場合
-------------

Windowsの開発環境である MinGW や Cygwin などをインストールした時点でインストールされているはずです。


go言語の開発用ディレクトリの整備
================================

以下の例では$HOMEという環境変数には、ホームディレクトリが指定されているものとします。
そして、ホームディレクトリ直下に go という名前で作業用のディレクトリを作成しています。この名前は空白などを含まないASCII文字であれば任意の名前で大丈夫かと思います。

Windows環境の場合、ユーザー名に空白が含まれている場合やASCII文字以外の場合がありますが、できればそれは避けたほうが良いでしょう。

::

    mkdir $HOME/go
    mkdir $HOME/go/{bin,pkg,src}

シェルの起動時に環境変数を設定します。

::

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOPATH/bin



リポジトリからソースコードを取得
================================

ソースコードを取得するだけであれば、以下のようにgitコマンドを利用すれば現在のディレクトリの直下に ./fuji のディレクトリ名でソースコードを取得できます。

::

    git clone https://github.com/shiguredo/fuji

すでにGo言語の開発環境が設定ずみで、fujiをライブラリとして利用したい場合には、
以下のコマンドを使ってGo言語の開発環境に取り込むことができます。

::

    go get github.com/shiguredo/fuji




ビルド(コンパイル)の実行
============

テスト、パッケージングまですべて実行する場合
-------------------------------------------

fujiのソースファイルにはMakefileが含まれているので、makeコマンドを利用すると、依存するgo言語ライブラリの更新とfujiパッケージのソースコードのビルドとテストを実施し、パッケージングも行います。

注意：クロスコンパイルの環境設定のためにgoxコマンドをroot（サーバ管理者)権限で実行する工程があります。その際にパスワードを入力する必要があるかもしれません。

::

    make all

ビルドのみ行う場合
----------

余分な工程を省いて最新の実行可能コードを作るには以下のコマンドを実行します。

::

    make build

ビルドとテスト
-----------------

以下のコマンドを実行すると、
ソースコードの変更があった部分を再コンパイルし、
テストが実行されます。
その結果として、テストの正否とカバレッジが表示されます。

::

    make test



ラズベリーパイ用パッケージ作成
------------------------------

以下のコマンドを実行すると、
パッケージは ./downloads/fuji-gw_<バージョン>_raspi_arm6.deb として作成されます。

注意：クロスコンパイルの環境設定のためにgoxコマンドをroot（サーバ管理者)権限で実行する工程があります。その際にパスワードを入力する必要があるかもしれません。

::

    make raspi


ラズベリーパイ２用パッケージ作成
--------------------------------

以下のコマンドを実行すると、
パッケージは ./downloads/fuji-gw_<バージョン>_raspi2_arm7.deb として作成されます。

注意：クロスコンパイルの環境設定のためにgoxコマンドをroot（サーバ管理者)権限で実行する工程があります。その際にパスワードを入力する必要があるかもしれません。

::

    make raspi2

Armadillo-IoT用バイナリファイル作成
-----------------------------------

以下のコマンドを実行すると、
バイナリと設定ファイルサンプルのtar.gzファイルは ./downloads/fuji-gw_<バージョン>_arm5.tar.gz として作成されます。

注意：クロスコンパイルの環境設定のためにgoxコマンドをroot（サーバ管理者)権限で実行する工程があります。その際にパスワードを入力する必要があるかもしれません。

::

    make armadillo


Intel Edison用バイナリ作成
--------------------------

以下のコマンドを実行すると、
パッケージは ./downloads/fuji-gw_<バージョン>_edison_386.ipk として作成されます。

::

    make edison
