如何安装使用bazel构建的项目?

时间:2017-04-21 18:45:43

标签: bazel

我正在开发一个从CMake过渡到Bazel的项目。我们在讨价还价中显然失去的一个关键特征是能够安装项目,以便其他(不一定是Bazel)项目可以使用它。

AFAICT,目前没有内置支持安装项目?!

我需要创建一个便携式(必须至少在Linux和MacOS上工作)的方式来安装项目。具体做法是:

  • 我需要能够指定需要安装的库,标题,可执行文件和其他文件(例如LICENSE)。
  • 用户需要能够指定应安装内容的绝对前缀。
    • 我真的,真的应该能够不止一次地执行“安装”步骤,每次都给出不同的前缀,而不会让Bazel感到困惑(即它不能试图“记住”它已安装的文件,或者它是否当前缀与上次不同时必须明白。
  • 应该将库安装到正确的位置(例如lib64),或者至少应该可以让用户指定正确的libdir。
  • 安装步骤不得触摸上次安装中未更改的任何文件的时间戳。 (理想情况下,Bazel本身会处理这个问题;使用install命令很棘手并且存在潜在的可移植性问题。请注意上面的平台要求。)

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

除非你想要特定的包(例如debrpm),否则你可能想要创建一个可执行规则来为你安装。

您可以创建一个规则来创建一个可执行文件的安装程序(例如shell脚本)(例如,执行校验和检查是否对已安装文件进行了更改,如果文件有实际副本,则执行改变)。您必须使用扩展语言,这与docker rules does to load an imageincremental loader

的{{3}}类似

另外:我忘了说如果规则在顶级BUILD文件中命名为bazel run install,则使用run命令运行安装本身:install