Atlas 試行錯誤
Atlas とは
Nim 2.0.0 から導入された開発環境構築ツール。
思想としては Python の venv に近いか。
プロジェクトごとに Nim のバージョンとパッケージの依存関係を管理できる。
こんな感じにしたい
<nim_project>
├ src
│ ├ nim.cfg
│ ├ <nim_project>.nim
│ └ <nim_project>pkg
│ ├ ...
│ ...
│ └ ...
├ nim_env
│ ├ atlas.workspace
│ ├ nim_env.nimble
│ ├ nim-<nim_version>
│ ├ bin
│ ├ nim.exe
│ ...
│ ├ ...
│ ...
│ └ activate.bat
│ └ packages
│ ├ <nimble_package_name_1>
│ ├ ...
│ └ <nimble_package_name_n>
└ <nim_project>.nimble
プロジェクト構築手順
1. $ nimble init <nim_project> でプロジェクトを作成する。
2. <nim_project>\nim_env ディレクトリを作成する。
3. <nim_project>\nim_env に移動し、$ atlas init --deps=packages で環境を初期化する。
4. $ atlas env <nim_version> で Nim をインストールする。
5. nim_env.nimble を作成し、srcDir = "..\\src" を追記する。
6. atlas use (<nimble_package_name>|<package_repository_url>) で必要なパッケージをリポジトリから clone する(nimble で既にローカルにインストールされている場合はコピーする?)。この際に <nim_project>\src\nim.cfg が作成される。
作成された <nim_project>\src\nim.cfg は何をしているのか?
試しに HappyX 3.8.1 をインストールした場合を見てみたところ、依存パッケージへのパスが設定されていることがわかった。 <nim_project>\src で nim c <nim_project>.nim を実行した場合に、nim.cfg で設定されたパスの依存ライブラリが使用されてビルドされる、ということになる。
code:nim.cfg
############# begin Atlas config section ##########
--noNimblePath
--path:"../nim_env/happyx/src"
--path:"../nim_env/cligen"
--path:"../nim_env/illwill"
--path:"../nim_env/nim-regex/src"
--path:"../nim_env/httpx/src"
--path:"../nim_env/microasynchttpserver/src"
--path:"../nim_env/httpbeast/src"
--path:"../nim_env/nimja/src"
--path:"../nim_env/websocket.nim"
--path:"../nim_env/websocketx/src"
--path:"../nim_env/nimcrypto"
--path:"../nim_env/oauth/src"
--path:"../nim_env/nimpy"
--path:"../nim_env/nim-unicodedb/src"
--path:"../nim_env/ioselectors/src"
--path:"../nim_env/nim-picohttpparser"
--path:"../nim_env/asynctools"
--path:"../nim_env/ws/src"
--path:"../nim_env/sha1"
--path:"../nim_env/wepoll/src"
############# end Atlas config section ##########
開発環境の使用方法
1. <nim_project>\nim_env\nim-<nim_version>\activate.bat を実行すると <nim_project>\nim_env\nim-<nim_version>\bin への PATH が通り、そのバージョンの nim.exe 等が使用できるようになる。
検証項目
1. <nim_project>\nim_env\atlas.workspace を <nim_project>\atlas.workspace とした状態で <nim_project>\nim_env\nim-<nim_version> を作成できるか?デフォルトでは <nim_project>\nim-<nim_version> が作成されてしまう。
→ atlas init --deps=DIR のように、atlas env <nim_version> でインストールパスを指定することは今のところ出来ない様子。
2. choosenim を使わず atlas のみで Nim の環境構築ができるか?
→ gcc がないと atlas env <nim_version> が失敗する。choosenim を使わなくても gcc さえ入っていれば実行できそうだが、choosenim を使うのが無難か。