我当前的Buildroot配置包括一个包,其源代码托管在GitLab服务器上。不幸的是,这个服务器的SSL证书有错误;当Buildroot到达此包时,它会尝试克隆存储库,但Git会抛出有关SSL证书和中止的错误。
这是合理的行为,合理的回应是:
不幸的是,我也受到以下限制:
我认为GIT_NO_SSL_VERIFY
环境变量是最简单的解决方案。如果我将它添加到Buildroot的EXTRA_ENV
变量,一切都按预期工作。
不幸的是,这会为Buildroot克隆的所有 Git存储库禁用SSL。由于此问题只有一个Git存储库,因此对通过Buildroot克隆的所有 Git存储库禁用SSL感觉不对。
如果我可以设置EXTRA_ENV
添加GIT_NO_SSL_VERIFY
,那将会很棒,但仅限于我遇到问题的包。我找不到Buildroot支持这个的任何建议,但文档很少,所以我想我会在这里问。
谢谢!
答案 0 :(得分:2)
事实证明,Buildroot支持这一点。对于给定的包,$(PKG)_DL_OPTS
变量用于将选项传递给包的下载工具。
我意识到我的软件包没有使用git
进行克隆,而是使用wget
作为tarball下载。将包的$(PKG)_DL_OPTS
变量设置为--no-check-certificate
修复了所有内容。
正如请注意,$(PKG)_DL_OPTS
变量仅在Buildroot的2016.11版本中添加。对于旧版本,您需要更复杂的解决方法。
答案 1 :(得分:1)
除了设置$(PKG)_DL_OPTS
之外,还有一些其他黑客可以使用。
添加一个覆盖EXTRA_ENV
的规则,但仅适用于您的包(但请注意,这将 为legal-info工作):
$(MYPKG_TARGET_SOURCE): EXTRA_ENV += GIT_NO_SSL_VERIFY=1
请注意,这必须在$(eval $(generic-package))
调用之后,因此要么在.mk
文件的末尾,要么在外部Makefile中。
您也可以覆盖EXTRA_ENV
:
DL_WRAPPER
$(MYPKG_TARGET_SOURCE): DL_WRAPPER := GIT_NO_SSL_VERIFY=1 $(DL_WRAPPER)
修补程序Buildroot为下载添加环境覆盖。最简单的方法是以不同的方式定义DL_WRAPPER
:
DL_WRAPPER = $($(PKG)_DL_ENV) support/download/dl-wrapper
(但是如果你想在上游发送这样的补丁,那么应该在每个单独的下载方法中完成。)
注意:我还没有真正尝试过上述任何一种。