我正在为我的项目使用带外部树的buildroot。 Buildroot用于构建具有多个自定义包的项目,这些包存储在svn中,并由我们的开发人员开发。如何从存储库为每个构建更新这些包? 内置下载帮助程序下载包一次并将其存储到存档中,但每次我构建它时我都需要从源代码更新它。我需要为此编写自己的下载助手吗? 我唯一想到的是将整个buildroot配置存储在svn存储库中(包括* .mk文件包),向它们添加svn-extrenal属性,并使用“本地”下载规则
答案 0 :(得分:2)
Buildroot不会svn update
您的来源。其原因以及满足您需求的最佳解决方案将在"在开发过程中使用Buildroot" Buildroot user manual。
原因: Buildroot的下载是不变的:在同一个<PKG>_VERSION
重新下载相同的软件包应该完全下载相同的< / em>源代码。当您将其用作构建系统时,这是正常的,而不是在开发期间使用它时(这是您要求的)。
解决方案1:使用<PKG>_OVERRIDE_SRCDIR
功能。使用它,您可以在一个单独的目录中检出您正在开发的所有包,使用svn,git或任何您想要的方式进行管理。 Buildroot永远不会触及您的代码,它只会将其复制到其构建目录中并构建它。您可以编写一个简单的脚本来更新,然后重新构建或重新配置您的包。 E.g:
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用于所有内容,并且您无法选择&#34; local&#34;包与第一个解决方案一样。