【问题标题】:Update project-specific packages in buildroot在 buildroot 中更新项目特定的包
【发布时间】:2017-09-17 16:18:06
【问题描述】:

我正在为我的项目使用带有外部树的 buildroot。 Buildroot 用于构建项目,其中包含几个存储在 svn 中的自定义包,并由我们的开发人员开发。我如何从存储库中为每个构建更新这些包? 内置下载助手下载包一次并将其存储到存档中,但我每次都需要从源代码更新它然后我构建它。我需要为此编写自己的下载助手吗? 我唯一想到的是将整个 buildroot 配置存储在 svn 存储库中(包括包的 *.mk 文件),向它们添加 svn-extrenal 属性,并使用“本地”下载规则

【问题讨论】:

    标签: svn buildroot


    【解决方案1】:

    Buildroot 不会svn update 您的资源。原因以及满足您需求的最佳解决方案在Buildroot user manual 的“在开发过程中使用 Buildroot”部分进行了描述。

    原因: Buildroot 的下载是恒定的:在同一个<PKG>_VERSION 重新下载同一个包应该会下载完全相同的相同源代码。当您将其用作构建系统时这是正常的,而不是在开发期间使用它时(这是您所要求的)。

    解决方案 1: 使用 <PKG>_OVERRIDE_SRCDIR 功能。使用它,您可以在一个单独的目录中检出您正在开发的所有包,这些包使用 svn、git 或任何您想要的东西进行管理。 Buildroot 永远不会接触你的代码,它只会将它复制到它的构建目录并构建它。您可以编写一个简单的脚本来更新然后重建或重新配置您的包。例如:

    for D in $(ls my-repos/); do
        pushd $D
        svn update
        popd
    done
    make mypkg1-rebuild mypkg2-reconfigure all
    

    每个开发人员都可以将此方法与一组不同的软件包一起使用,例如只有他们正在开发的那些。

    解决方案 2: 将 Buildroot 代码和所有包源代码放在一个唯一的 Subversion 存储库中,并为您的包使用 <PKG>_SITE_METHOD=local。当你svn update这个大仓库时,一切都会更新。然后用make mypkg1-rebuild mypkg2-reconfigure all 重建如上。

    这个解决方案的一个缺点是,如果你有很多包,唯一的 repo 可能会变得非常大。它还强制您对所有内容都使用 Subversion,并且您不能像第一个解决方案那样选择“本地”包集。

    【讨论】:

      猜你喜欢
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2021-07-24
      • 2015-12-04
      相关资源
      最近更新 更多