Conan 1.6:配方中执行进程的新参数、改进的工具以及命令的小幅新增
新版本和一些新功能!Conan 1.6 带来了许多围绕工具和配方内进程执行的小改进,以及对命令行的少量新增。
self.run() 的新参数
在查看了许多配方后,我们意识到设置环境变量(例如DYLD_LIBRARY_PATH
)以启动打包应用程序是一个非常常见的用例。之前已经有一些工具可以帮助完成此过程,但仍然存在一些重复使用的代码行,通常位于test_package中。
def test(self):
with tools.environment_append(RunEnvironment(self).vars):
bin_path = os.path.join("bin", "example")
if self.settings.os == "Windows":
self.run(bin_path)
elif self.settings.os == "Macos":
self.run("DYLD_LIBRARY_PATH=%s %s" % (os.environ.get('DYLD_LIBRARY_PATH', ''), bin_path))
else:
self.run("LD_LIBRARY_PATH=%s %s" % (os.environ.get('LD_LIBRARY_PATH', ''), bin_path))
因此,我们推出了tools.run_environment(),并在conanfile的self.run()方法中命令之前注入了所需的变量。现在,您可以简单地使用
def test(self):
bin_path = os.path.join("bin", "example")
self.run(bin_path, run_environment=True)
改进的工具
此版本主要集中在改进 Conan 工具和新增功能上,如上所述,包括tools.run_environment()
。
我们新增了tools.unix2dos()
/dos2unix()
用于在 LF 和 CRLF 行结束符之间进行转换。
对tools.get()
进行了一些改进,包括参数filename
,用于下载无法从 URL 推断名称的文件,以及keep_permissions
,用于将标志传播到tools.unzip()
。
此外,在tools.unzip()
中,我们引入了对 XZ 扩展名的支持。这仅适用于 Python 3 用户,并开启了 Python 2 弃用的旅程,因为没有支持来实现此类新功能。
最后,我们继续改进tools.Git()
,这次允许使用get_branch()
捕获当前分支,并使用get_commit()
捕获当前提交。
请转到工具部分查看所有新的更改。
命令的小幅新增
我们在conan remote list
中包含了新的--raw
标志,以与注册表中配置的方式相同的方式显示远程。您可以将输出复制粘贴到您的remotes.txt文件中,以使用conan config install
功能!
说到config install
,它有一个新的--type "git"
标志,用于指示应从提供的 URL 克隆 Git 存储库以进行安装。例如,如果您使用 Microsoft Team Foundation Server TFS Git 存储库,这将非常方便。
最后,添加了conan build --test
以及conanfile中的should_test
属性,作为控制测试阶段的逻辑步骤
其他亮点
- LLVM 工具集(用于 Visual Studio)已包含在settings.yml中。
- 我们改进了我们的 pyinstaller 以包含 Python 依赖项,并改进了适用于 Debian 9 等发行版的deb 安装程序。