Conan 1.23:并行安装二进制文件,CONAN_V2_MODE环境变量启用Conan v2行为等
三月带来了新的Conan版本发布,但遗憾的是,我们也收到了由于日益增长的冠状病毒担忧而不得不推迟ConanDays的通知。为了所有人的安全和福祉,这是一个艰难的决定,但我们希望这将使我们很快能够举办一场更盛大的Conan社区聚会成为可能。但让我们专注于好消息,看看Conan 1.23带来了什么。
并行二进制文件下载
如您所知,我们一直在努力加快多个Conan命令的速度,以使CI更快。我们已经在Conan 1.21和1.22中实现了一些很酷的功能
-
并行上传:从Conan 1.21开始,可以使用多个线程更快地将Conan包上传到远程服务器。要激活此功能,请将
--parallel
参数添加到conan upload
命令中。并行上传可以实现速度提高约400%,具体取决于情况。 -
下载缓存:在Conan 1.22中,我们引入了下载缓存,可以使用不同的
CONAN_USER_HOME
文件夹的多个Conan实例并发使用。此缓存可以在不同的并发CI作业之间共享,因此,如果以前下载了文件,则将从缓存中重用它们,而无需再次下载。使用此功能,在conan.conf中设置storage.download_cache="path/to/the/cache"
。
现在,作为Conan 1.23的锦上添花,我们提供了并行下载二进制文件的可能性。要使用它,请在conan_conf
中设置general.parallel_download
。此参数必须设置为要用于下载的线程数,并将加快速度。此设置将在安装依赖项(conan install
,conan create
)时使用,以及通过conan download
命令检索同一包的多个二进制文件时使用。
让我们看一个示例,如果我们需要下载大量配置的包,使用此功能可以节省多少时间。例如,我们将为Conan-Center索引中可用的所有82种不同的配置下载zlib/1.2.11。对于传统的互联网连接,通常需要大约3分钟。
我们将下载线程数设置为8,但请根据您的机器随意更改此设置。
➜ conan config set general.parallel_download=8
➜ time conan download zlib/1.2.11
Downloading conanmanifest.txt completed [0.29k]
Downloading conanfile.py completed [7.59k]
Downloading conan_export.tgz completed [0.23k]
Decompressing conan_export.tgz completed [0.00k]
Downloading conan_sources.tgz completed [6.91k]
Decompressing conan_sources.tgz completed [0.00k]
...
Downloading conaninfo.txt completed [0.46k]
Downloading conan_package.tgz completed [88.12k]
Decompressing conan_package.tgz completed [0.00k]
zlib/1.2.11: Package installed c83d8b197f1a331ca3b55943846d427ad4f7f8e1
conan download zlib/1.2.11@ -r conan-center 4.23s user 0.96s system 16% cpu
30.536 total
如您所见,下载所有二进制文件仅用了大约30秒,这意味着时间提高了约600%。
如果您尝试使用此功能,可能会在命令行输出中遇到一些消息重叠。我们优先考虑功能而不是干净的输出,但将很快解决这些输出问题。
组合或单独使用所有这些功能,并请告诉我们它们是否使您的CI更快。
CONAN_V2_MODE开始测试Conan v2发布时将弃用的功能
尽管在Conan 2.0发布之前我们还有大量的时间和工作要做,但我们希望开始测试Conan 2.0中功能的弃用。我们引入了CONAN_V2_MODE
环境变量,它激活了一些旨在在下一个主要版本中使用的行为和默认值。
Conan 2.0的一些最重要的默认行为将是
- 默认情况下启用修订版本(向conan.conf添加
revisions_enabled=1
)。 - 默认情况下不激活钩子。
- SCM数据将存储到conandata.yml中。
- 自动检测的GCC >= 5配置文件将使用
libstdc++11
。
随着我们朝着Conan v2路线图的进展,我们将向此模式添加行为,因此请随时关注文档更新。
我们的目标是在Conan 2.0发布时最大程度地减少对现有食谱的影响,并开始收集有关新配置和行为的反馈。请注意,此模式仅用于实验,请勿在生产环境中激活此模式!
其他酷炫功能
clean-modified
是graph
命令的子命令。当依赖关系图的包将要重新构建时,使用给定的锁定文件,希望在完成构建后知道由于最后一个命令导致哪些包被重建。此命令将在此类构建之前清除所有先前存在的“已修改”标志,因此构建后,“已修改”的仅是现在已构建的那些。https://docs.conan.org.cn/en/latest/reference/commands/misc/graph.html#conan-graph-clean-modifiedfull_transitive_package_id
现在可以在conan.conf中激活,以包含传递依赖项,即使直接依赖项删除了它们,例如当依赖于依赖于静态库的仅头文件库时。此处了解更多信息。
查看更改日志中功能和修复程序的完整列表。