新版本和一些新功能!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 安装程序

查看变更日志中功能和修复程序的完整列表,不要忘记更新