Bazel Sandboxingと仲良くしてもらう会 by しもとり

iOSDC Japan 2021
レギュラートーク(20分)

Bazel Sandboxingと仲良くしてもらう会

S_Shimotori_pub しもとり S_Shimotori_pub
2

皆さん、Bazelを使ったことはありますか?Bazel最大の特徴であり避けて通れないのがSandboxing機能です。予め指定した入力ファイル以外は使用できず、隔離された場所で実行され、予め指定したファイル以外は出力されません。また、得られた出力ファイルは入力ファイルから隔離しなければなりません。このお陰で同一ファイルからは必ず同じ結果が得られますし、キャッシュ削除も確実に行うことができます。安心ですね。

Re:View「config.ymlのあるディレクトリにPDFを出力したいんですけど!Bazelでは入力ファイルと出力ファイルを混ぜちゃダメなんですかー!」
Swiftコンパイラ「swiftdepsを再利用しないとincremental buildができないんですけど!Bazelったら前回の出力ファイルを使わせてくれないじゃないですかー!」

……Sandboxingに合わない操作をする彼らは、果たしてBazelと仲良くできるでしょうか?

【対象】

  • Bazel初心者の方
  • Bazelで何かビルドを試してみたいと思っていた方
  • Bazelでのファイルの扱いがそんなに厳しいとは知らなかった方
  • Sandboxing機能をオフにするのは流石に勿体無いと思った方

【取り扱うテーマ】

  • BazelにおけるSandboxingの特徴
    • 入出力ファイルの扱い
    • execroot内の構造
  • 相性の良くないツール・コマンドをどうにか扱う方法
    • Re:Viewのreview-pdfmaker
    • rules_swiftにおけるSwiftコンパイラのincremental build有効化