2016-06-09: 编译器特别会议
时间:14:00 UTC
环聊链接:https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie
与会者
- Jonathan Helmus
- John Kirkham
- Johannes Koster
- Bjorn Gruning
- Michael Sarahan
- Ray
- Phil Elson
议程
编译器 Docker 镜像
-
Conda-forge
* `docker pull condaforge/linux-anvil`
- 构建于 Quay ( https://quay.io/repository/condaforge/linux-anvil )
- 镜像 ( https://hub.docker.com/r/condaforge/linux-anvil/ )
- CentOS 6, GCC 4.4.7, Devtoolset2 (GCC 4.8)
- 源代码 ( https://github.com/conda-forge/docker-images/tree/fbde090bd608caa720d5caad861aa382a8bf3f5c/linux-anvil )
-
Bioconda: https://hub.docker.com/r/bioconda/bioconda-builder/
* CentOS 5, GCC 4.4, Devtoolset2 (GCC 4.8)
- 默认 PATH 中包含 GCC 4.8
讨论中心
- 需要 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)
- 不是小任务,但我们想承担这个任务吗?
- 这是一个一些源代码的链接 ( https://git.centos.org/commit/rpms!devtoolset-4-gcc/e14f97005a3d22e658d01d0fc8899f5bda1982ca )
-
使用来自 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 是如何构建的?