😳

MariaDBにコミットするまで(1)

2 min read

今日からMariaDBにコミットするまでの過程を記述していこうと思います。まずは公式のcontributeというページを見ます。ここにコードで貢献する方法のリンクがあり、基本的にはその記述に従って今回はビルドとテストをやろうと思います。

環境

cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

ビルド

こちらに従います。

https://mariadb.org/get-involved/getting-started-for-developers/get-code-build-test/

依存

まずはGitHubでMariaDBのソースコードをforkします。そして、ローカルにcloneします。

名前がserverで紛らわしいですが、気にしないことにします。 YOUR-USERNAMEには自分のGitHubのアカウント名を入れます。

git clone https://github.com/YOUR-USERNAME/server

最初にgitcmakeが使える状態かどうか確認し、ない場合はインストールしてください。そして、以下のコマンドで依存ソフトをインストールします。

sudo apt update
sudo apt build-dep mariadb-server
sudo apt install build-essential libncurses5-dev gnutls-dev bison zlib1g-dev ccache -y

ここまでに余計なファイルは生成されていないはずですが、以下のコマンドを打てばそれらを排除できます。

git clean -dffx
git reset --hard HEAD
git submodule update --init --recursive

もしくは

make clean
rm CMakeCache.txt

以下のコマンドでビルド設定を決めます。

sudo cmake ../server -DCMAKE_BUILD_TYPE=Debug

以下のようなエラーが出てくる場合はlibncurses5-devというパッケージをインストールし、rm -f CmakeCache.txtでキャッシュを消すとうまくいくことがあります。

Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

コンパイル

ninjaを使う方法もありますが、ここではcmakeを使ってコンパイルしていこうと思います。

下の8の部分は自分のPCの利用可能なコア数に応じて自由に値を入れられます。

  • cmakeのバージョンが3.20+である場合
sudo cmake --build . --parallel 8
  • cmakeのバージョンが3.20+でない場合
sudo cmake --build . -- -j8

これでコンパイルまでは完了したはずです。

テスト

最後にテストをします。mysql-testというディレクトリにテストフレームワークが入っています。

以下のようなコマンドですべてのテストを実行できます。

cd mysql-test
./mtr --parallel=8 --mem --force --max-test-fail=40

すると以下のようにテストが完了します。

次は?

次は以下のJIRAにまとめられた初心者向けのIssueをやろうと思います。

https://jira.mariadb.org/browse/MDEV-15736?jql=resolution %3D Unresolved AND labels %3D beginner-friendly ORDER BY updated DESC

Discussion

ログインするとコメントできます