【问题标题】:launchpad.net: Multiple dependencies in the same large project...?launchpad.net:同一个大型项目中的多个依赖项......?
【发布时间】:2013-12-02 16:57:37
【问题描述】:

我有一个大型项目,其中包含许多主要二进制文件所依赖的库。我想知道在启动板中处理这个问题的正确方法是什么,以便我可以构建库,然后是主二进制文件并在 ppa 上提供每个 debian pacakge。

您可以在 lp:snapcpp (https://code.launchpad.net/snapcpp/) 查看相关项目。在 snacpp 中,我们有“snapwebsites”,这是一个 C++ CMS 系统,它通过我们的库“libQtCassandra”连接到 Cassandra 数据库。 “snapwebsites”依赖于 libQtCassandra,就像它依赖于 libltd 和其他一样。这些库中的每一个都需要是单独的 debian 包本身。每个项目都有自己的“debian”文件夹,但此时没有根 debian 文件夹。

我怎样才能让它在需要根 debian 文件夹的启动板上工作?我是否需要在根目录中构建一个列出每个依赖项的 debian 项目?如果没有,我是否需要使用 bzr 将每个项目分解为自己的分支?如果我做后者,我如何为构建调用那些依赖 debs(换句话说,我如何告诉 snapwebsites 的配方它需要安装 libQtCassandra 及其依赖包)?

谢谢!

【问题讨论】:

  • 这些依赖项在标准主存储库中可用吗?
  • Braiam:不,依赖项是主项目的一部分。查看主干中的每个子项目:bazaar.launchpad.net/~doug/snapcpp/trunk/files 例如,snapCMakeModules 是一个源包依赖项,我们将自定义模块安装到 cmake 的搜索路径中。所有 snapcpp 项目都依赖它。或者另一个例子,查看 advgetopt,它允许 C++ 友好的命令行解析(它依赖于受控变量,也在同一个项目中)。
  • 听起来你应该将每个依赖项放在一个单独的项目中?
  • Triplee:如果我将它们分成许多子项目(这本身就是一个问题,因为 bzr 分支希望来自 git 项目的根目录),我仍然会遇到同样的问题。如果我创建依赖于受控变量的 advgetopt,我如何告诉 launchpad.net 构建系统它需要首先构建和安装受控变量?

标签: linux ubuntu debian deb launchpad


【解决方案1】:

我自己发现的解决方案是使用配方命令“nest-part”,它允许您从 bzr 分支中取出单个文件夹并将其映射到您的项目中。但是,它不能映射到您的分支的根目录。

我所做的是创建一个只包含打包信息的分支,以及一个包含“add_subdirectory(src)”的 CMakeLists.txt 文件。然后我从主代码分支 (lp:snapcpp) 映射,但只映射有问题的项目。例如,这里是 snapcpp 中“受控变量”项目的配方:

# bzr-builder format 0.3 deb-version {debupstream}+{revno}
lp:~snapcpp/snapcpp/controlled_vars
nest-part src lp:snapcpp controlled_vars src

每个子项目确实需要一个带有打包信息的分支,但这是一次性设置问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多