Svn 在buildroot中更新特定于项目的包

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

我正在为我的项目使用带有外部树的buildroot。 Buildroot使用几个存储在svn中的定制包来构建项目,并由我们的开发人员开发。如何从存储库中为每个构建更新这些包? 内置下载助手下载包一次并将其存储到归档文件中,但每次构建时我都需要从源代码对其进行更新。我需要为此编写自己的下载帮助程序吗?
我唯一想到的是将整个buildroot配置存储在svn存储库中(包括包的*.mk文件),向它们添加svn extrenal属性,并使用“本地”下载规则buildroot不会
svn更新你的源代码。其原因以及满足您需求的最佳解决方案在的“在开发过程中使用Buildroot”一节中进行了描述

原因:Buildroot的下载应该是固定的:在相同的
\u版本重新下载相同的包应该下载完全相同的源代码。当您将其用作构建系统时,这是正常的,而不是在开发过程中使用它时(这是您所要求的)

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

for D in $(ls my-repos/); do
    pushd $D
    svn update
    popd
done
make mypkg1-rebuild mypkg2-reconfigure all
每个开发人员都可以将此方法用于不同的包集,例如,仅限于他们正在开发的包

解决方案2:将构建根代码和所有包源代码放在唯一的Subversion repo中,并对包使用
\u SITE\u METHOD=local
。当你
svn更新
这个大型回购协议时,一切都会更新。然后使用
重新构建,使mypkg1重新构建mypkg2重新配置所有
,如上所述

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