跳到主要内容

2016-06-09: 编译器特别会议

时间:14:00 UTC

环聊链接:https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie

与会者

议程

编译器 Docker 镜像

讨论中心

  • 需要 libstdc++ 更新 / 阴影
  • 语言兼容性需求 (C++11/14)

如果时间允许:Windows 上的 MSYS2

笔记

Docker 镜像概述

  • conda-forge 和 bioconda 似乎使用相同的 GCC 版本

要点

  • 需要监控是否需要发布 libstdc++

    *   Not needed if use Devtoolset 
    • 但是用户可能仍然需要安装它,如果他们缺少这个库,例如 Arch linux,所以我们可能还是想发布它
  • 需要说明我们将要支持的语言标准 C++14?

  • 旧库的旧 ABI 支持(双 API,旧/新 ABI 的问题)

conda-forge 历史

  • 最初的 conda-forge 使用 gcc 软件包
  • 有时如果软件包没有被固定,这会导致问题
  • 切换到 devoolset2,它使用了静态链接技巧,

未来

  • 使用 devtoolset4?(GCC 5.3,在 CentOS6 上可用)

  • 构建我们自己的编译器工具链

  • GCC 6,可能存在一些问题

  • 可以在同一个 Docker 镜像中安装 devtoolset2 和 devtoolset4

    *   Need to have some mechanism to activate a particular toolset
  • 使用 devtoolset 确实限制了操作系统(CentOS5 仅支持 devtoolset2 而不支持 4)

  • 我们可以构建我们自己的 devtoolset 吗?

    *   Patches are available (srpm)
  • 使用来自 Continuum 的 Docker 镜像

    *   Would  need to ship libstdc++ and keep it up to date to avoid shadowing system  version (need to be newer than users with newest version)
    • defaults 中没有很多软件包链接到 libstdc++
    • 一直在发布,但尚未看到问题...
    • Julia 一直在这样做
  • libgfortran 损坏是因为 defaults 发布了旧版本,如果用户安装了更新版本的库,这会导致问题

  • 我们可以有一个 libstdc++ conda 软件包的版本,它不依赖于任何东西,但用户可以在他们缺少系统 libstdc++ 时安装它吗?

  • 当前的基础设施可能无法支持构建 gcc,但我们可以为此使用其他系统。

  • Continuum 需要支持 CentOS 5,conda-forge 很高兴 CentOS6 作为最低 glibc 版本

  • John 将会做这件事。(经过一些讨论,还不清楚这是否是最佳方法;所以,暂时搁置。)

  • 应该有通用的构建环境

  • 如何在 Mac 上支持 fortran

    *   New to use gfortran and have packages depend on libgfortran? package
    • 可能已过时,我们应该更新吗?

    • 将此解决方案移植到 Linux?

          *   Either use patches or ship libstdc++
      • Mac 和 Linux 使用相同的软件包,还是使用 devtoolset 魔法?

        *   Want time to think and advantages and disadvantages for both

        * [Hackpad](https://conda-forge.hackpad.com/Devtools-vs-Ship-libstdc-Oz7Qqr4WrOr)

        * Private vote by next Thursday, fill out [](http://goo.gl/forms/CexagdweBOKZZDjv1)[http://goo.gl/forms/CexagdweBOKZZDjv1](http://goo.gl/forms/CexagdweBOKZZDjv1)
  • 列出遇到的 gcc 6.x 问题清单。

  • 为什么在 Mac 上使用 clang 而不是 gcc

    *   gcc has been remove in recent version of OS X
  • MSYS2

    *   Can be useful to get devtools 
    • “替代” MSYS2 Python 环境怎么样
    • Visual Studio 和 MSYS2 gcc 不兼容
    • gfortran 是一个大目标(至少对于 Jonathan 而言)
    • Anaconda Cloud 上的 msys2-w64 软件包/通道
    • OpenBLAS... 似乎在 Windows 上工作
    • 这适用于 VS 2015 吗?
  • Windows numpy 使用 ATLAS 而不是 OpenBLAS?

    *   Would need to repackage binary ATLAS DLL
  • 即使不是最好的,也要获得一些 BLAS 构建

  • SciPy Windows wheels 是如何构建的?