Skip to content

Commit

Permalink
Merge branch 'master' into checkvalgrind-after-pr4417
Browse files Browse the repository at this point in the history
  • Loading branch information
fgalan committed Sep 13, 2023
2 parents e4b33d2 + d3f52bf commit b59aea6
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 430 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ endif (${CMAKE_BUILD_TYPE} STREQUAL DEBUG)

# Enables some some #ifdef in the code for compiling in old system
# FIXME: cleanup OLD_SSL_VERSION_FORMAT stuff after consolidating the change to Debian 12+
IF(${DISTRO} MATCHES "Debian_11.*")
IF((${DISTRO} MATCHES "Debian_11.*") OR (${DISTRO} MATCHES "Alpine_3.16.*"))
ADD_DEFINITIONS(-DOLD_SSL_VERSION_FORMAT)
ENDIF()

Expand Down
179 changes: 3 additions & 176 deletions doc/manuals.jp/admin/build_source.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# ソースからのビルド

Orion Context Broker のリファレンス配布は Debian 12 です。これは、broker を他のディストリビューションに組み込むことができないことを意味しません (実際には可能です)。このセクションでは、他のディストリビューションをビルドする方法についても説明しています。Debian を使用していない人に役立つかもしれません。ただし、"公式にサポートされている" 唯一の手順は Debian 12 用の手順です。他のものは "現状のまま" 提供され、随時時代遅れになる可能性があります。
Orion Context Broker のリファレンス配布は Debian 12 です。これは、broker を他のディストリビューションに組み込むことができないことを意味しません (実際には可能です)。このセクションには、Debian を使用していない人に役立つ可能性があるため、他のディストリビューションに組み込む方法に関する指示が含まれる場合があります。ただし、"公式にサポートされている" 唯一の手順は Debian 12 用の手順です。

公式以外のディストリビューションで Docker コンテナ・イメージをビルドする方法は、Docker ドキュメントの [3.1 非公式ディストリビューションでのビルド](../../../docker/README.jp.md#31-building-in-not-official-distributions)・セクションで確認できます。

## Debian 12 (正式サポート)

Expand Down Expand Up @@ -151,178 +153,3 @@ aarch64 アーキテクチャの場合、apt-get を使用して libxslt をイ
* カバレッジを実行します

make coverage INSTALL_DIR=~

## Ubuntu 20.04 LTS

この手順は、Ubuntu 20.04 LTS 上で x86_64 および aarch64 アーキテクチャ用の Orion Context Broker をすることです。
また、Orion が依存する MongoDB 4.4 をビルドするための手順が含まれています。Orion Context Brokerは、ビルドの依存関係と
して次のライブラリを使用します :

* boost: 1.71.0
* libmicrohttpd: 0.9.76 (ソースから)
* libcurl: 7.68.0
* openssl: 1.1.1f
* libuuid: 2.34-0.1
* libmosquitto: 2.0.15 (ソースから)
* Mongo C driver: 1.23.1 (ソースから)
* rapidjson: 1.1.0 (ソースから)
* gtest (only for `make unit_test` building target): 1.5 (ソースから)
* gmock (only for `make unit_test` building target): 1.5 (ソースから)

基本的な手順は次のとおりです (root 権限でコマンドを実行しないと仮定し、root 権限が必要なコマンドに sudo を使用します) :

* 必要なビルドツール (コンパイラなど) をインストールします

sudo apt install build-essential cmake

* 必要なライブラリをインストールします (次の手順で説明する、ソースから取得する必要があるものを除きます)

sudo apt install libboost-dev libboost-regex-dev libboost-thread-dev libboost-filesystem-dev \
libcurl4-gnutls-dev gnutls-dev libgcrypt-dev libssl-dev uuid-dev libsasl2-dev

* ソースから Mongo Driver をインストールします

wget https://github.com/mongodb/mongo-c-driver/releases/download/1.23.1/mongo-c-driver-1.23.1.tar.gz
tar xfvz mongo-c-driver-1.23.1.tar.gz
cd mongo-c-driver-1.23.1
mkdir cmake-build
cd cmake-build
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
make
sudo make install

* ソースから rapidjson をインストールします :

wget https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz
tar xfvz v1.1.0.tar.gz
sudo mv rapidjson-1.1.0/include/rapidjson/ /usr/local/include

* ソースから libmicrohttpd をインストールします (`./configure` 下のコマンドはライブラリの最小限のフットプリントを
得るための推奨ビルド設定を示していますが、上級ユーザの方は好きなように設定できます)

wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.76.tar.gz
tar xvf libmicrohttpd-0.9.76.tar.gz
cd libmicrohttpd-0.9.76
./configure --disable-messages --disable-postprocessor --disable-dauth
make
sudo make install # installation puts .h files in /usr/local/include and library in /usr/local/lib
sudo ldconfig # just in case... it doesn't hurt :)

* ソースから mosquitto をインストールします (WITH_CJSON, WITH_STATIC_LIBRARIES, WITH_SHARED_LIBRARIES の設定を変更することで、mosquitto-2.0.15/ の下の config.mk ファイルを変更してビルドを微調整できます)

wget https://mosquitto.org/files/source/mosquitto-2.0.15.tar.gz
tar xvf mosquitto-2.0.15.tar.gz
cd mosquitto-2.0.15
sed -i 's/WITH_CJSON:=yes/WITH_CJSON:=no/g' config.mk
sed -i 's/WITH_STATIC_LIBRARIES:=no/WITH_STATIC_LIBRARIES:=yes/g' config.mk
sed -i 's/WITH_SHARED_LIBRARIES:=yes/WITH_SHARED_LIBRARIES:=no/g' config.mk
make
sudo make install # installation puts .h files in /usr/local/include and library in /usr/local/lib
sudo ldconfig # Update /etc/ld.so.cache with the new library files in /usr/local/lib

* コードを取得します (または、圧縮されたバージョンや別の URL パターンを使用してダウンロードできます。例えば、
`git clone [email protected]:telefonicaid/fiware-orion.git`) :

sudo apt install git
git clone https://github.com/telefonicaid/fiware-orion

* ソースをビルドします :

cd fiware-orion
make

* (オプションですが、強くお勧めします) 単体テスト (unit test) と機能テスト (functional tests) を実行します。
詳細については、[以下のセクション](#testing-and-coverage)をご覧ください。

* バイナリをインストールします。INSTALL_DIR を使用して、インストール・プレフィックス・パス (デフォルトは /usr) を設定する
ことができます。したがって、broker は `$INSTALL_DIR/bin` ディレクトリにインストールされます

sudo make install INSTALL_DIR=/usr

* broker のバージョン・メッセージを呼び出し、すべてが正常であることを確認してください :

contextBroker --version

<a name="testing-and-coverage"></a>
### テストとカバレッジ

Orion Context Broker には、次の手順 (オプション) に従って実行することができる、valgrind およびエンド・ツー・エンドのテストの
機能的なスイートが付属しています :

* ソースから Google Test/Mock をインストールします。以前は URL は http://googlemock.googlecode.com/files/gmock-1.5.0.tar.bz2
でしたが、Google では2016年8月下旬にそのパッケージを削除したため、動作しなくなりました

sudo apt install python-is-python2 xsltproc
wget https://nexus.lab.fiware.org/repository/raw/public/storage/gmock-1.5.0.tar.bz2
tar xfvj gmock-1.5.0.tar.bz2
cd gmock-1.5.0
./configure
make
sudo make install # installation puts .h files in /usr/local/include and library in /usr/local/lib
sudo ldconfig # just in case... it doesn't hurt :)

aarch64 アーキテクチャの場合、`.-configure``--build=arm-linux` オプションとともに実行します。

* MongoDB をインストールします (テストはローカルホストで実行されている mongod に依存します)。詳細については、
[MongoDB の公式ドキュメント](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)を確認してください。
推奨バージョンは 4.4 です (以前のバージョンで動作する可能性がありますが、お勧めしません)。

* 単体テストを実行します :

make unit_test

* 機能テストと valgrind テストに必要な追加のツールをインストールします :

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python get-pip.py
sudo apt install netcat valgrind bc
sudo pip install --upgrade pip
pip install virtualenv

* テスト・ハーネスのための環境を準備します。基本的には、`accumulator-server.py` スクリプトをコントロールの下にあるパスに
インストールしなければならず、`~/bin` が推奨です。また、`/usr/bin` のようなシステム・ディレクトリにインストールすることも
できますが、他のプログラムと衝突する可能性がありますので、お勧めしません。さらに、ハーネス・スクリプト (`scripts/testEnv.sh`
ファイル参照) で使用されるいくつかの環境変数を設定し、Ubuntu のデフォルトの Flask の代わりに Flask version 1.0.2 を使用する
ために、virtualenv 環境を作成する必要があります。この環境でテスト・ハーネスを実行します。

mkdir ~/bin
export PATH=~/bin:$PATH
make install_scripts INSTALL_DIR=~
. scripts/testEnv.sh
virtualenv /opt/ft_env
. /opt/ft_env/bin/activate
pip install Flask==2.0.2 paho-mqtt==1.6.1 amqtt==0.10.1

* テスト・ハーネスを実行してください (時間がかかりますので、気をつけてください) make コマンドでテストを開始する前に、テストが失敗しないように次のパッチを適用してください。

sed -i -e "s/Peer certificate cannot be authenticated[^\"]*/SSL peer certificate or SSH remote key was not OK/" /opt/fiware-orion/test/functionalTest/cases/0706_direct_https_notifications/direct_https_notifications_no_accept_selfsigned.test
make functional_test INSTALL_DIR=~

* すべての機能テストに合格したら、valgrind テストを実行できます (これは機能テストよりも時間がかかります) :

make valgrind

次の手順を使用して、Orion Context Broker のカバレッジレポートを生成できます (オプション) :

* lcov ツールをインストールします

sudo apt install lcov

* まず、unit_test と functional_test の成功パスを実行して、すべてが正常であることを確認します (上記参照)

* カバレッジを実行します

make coverage INSTALL_DIR=~

* テストの実行後にシステムサービスとして Orion を実行するためのセットアップを行います。`curl localhost:1026/version` コマンドを実行して、
セットアップが成功したことを確認します :

sudo mkdir /etc/sysconfig
sudo cp /opt/fiware-orion/etc/config/contextBroker /etc/sysconfig/
sudo touch /var/log/contextBroker/contextBroker.log
sudo chown orion /var/log/contextBroker/contextBroker.log
sudo cp /opt/fiware-orion/etc/logrotate.d/logrotate-contextBroker-daily /etc/logrotate.d/
sudo cp /opt/fiware-orion/etc/sysconfig/logrotate-contextBroker-size /etc/sysconfig/
sudo cp /opt/fiware-orion/etc/cron.d/cron-logrotate-contextBroker-size /etc/cron.d/
sudo systemctl daemon-reload
sudo systemctl start contextBroker.service
Loading

0 comments on commit b59aea6

Please sign in to comment.