LoginSignup
7
2

More than 3 years have passed since last update.

[Rust] docs.rsのビルド環境が変わります

Posted at

はじめに

docs.rscrates.ioで公開されたRustのクレートのドキュメントを生成・ホスティングしてくれるサービスです。このdocs.rsでドキュメントを生成する環境が変更されるということで以下のアナウンスが出ています。変更タイミングは2019/9/30です。

Upcoming docs.rs changes

詳細はリンク先を見ていただければいいのですが、簡単なまとめと新環境でのビルド確認方法について書いておきます。

新ビルド環境のまとめ

  • ビルドはDockerイメージ(rustops/crates-build-env)内で行われる
  • 実行時間は最大15分(ターゲットプラットフォーム毎)
  • メモリ使用量は最大3GB
  • ビルド中のネットワークアクセス禁止
  • ビルド中のtarget/以外のディレクトリへの書き込み禁止

これまで依存ライブラリ不足などでビルドに失敗した場合は、メンテナが手動でサーバにインストールするなどで対応していたようですが、Dockerイメージにすることでそのあたりを運用しやすくするということだと思われます。

ネットワークアクセス禁止と書き込み禁止はたいていのクレートには関係ないと思いますが、build.rsでいろいろやっている場合は影響があるかもしれません。

新環境でのビルドを試す

Dockerイメージになったことで、手元でもdocs.rsと同じ環境でビルドできるようになります。

まず以下のようにDocker環境に入ります。

$ docker pull rustops/crates-build-env
$ docker run --rm --memory 3221225472 -it rustops/crates-build-env bash

Docker内ではRustのインストール、gitリポジトリのクローン、ビルドを行います。
(Rustは最新のnightlyが使われるようです)

# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain nightly -y
# source $HOME/.cargo/env
# git clone https://github.com/dalance/sv-parser
# cd sv-parser/sv-parser
# cargo fetch
# time cargo doc --no-deps

依存クレートのfetchにかかる時間は15分制限には含まれないようなので、まずcargo fetchで依存クレートを取得してから時間を測ります。最後のcargo docの実行時間が15分を超えなければOKです。

手元で一番大きなクレート(sv-parser)で試してみました。Tokeiでソースコードのサイズを測ったところRustのコードで4万行ほどです。

-------------------------------------------------------------------------------
 Language            Files        Lines         Code     Comments       Blanks
-------------------------------------------------------------------------------
 Markdown                1           89           89            0            0
 Rust                  182        44469        39673          811         3985
 SystemVerilog           4           31           26            0            5
 TOML                    8          154          136            0           18
-------------------------------------------------------------------------------
 Total                 195        44743        39924          811         4008
-------------------------------------------------------------------------------

リリースビルドだと10分近くかかりますが、docだけなら3分ほどでした。
(実行環境はXeon Gold 6134 @ 3.20GHz)

 Documenting sv-parser v0.1.4 (/sv-parser/sv-parser)
    Finished dev [unoptimized + debuginfo] target(s) in 2m 55s

real    2m55.417s
user    3m49.382s
sys     0m14.006s

docs.rsで使われているCPUが何なのか分かりませんが、15分あれば十分なようです。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2