2016-06-09:編譯器特別會議
時間:UTC 14:00
Hangout 連結: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)
- 預設路徑中的 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)
- 預設套件中沒有很多套件連結到 libstdc++
- 一直在發布,但尚未看到問題...
- Julia 一直在這樣做
-
libgfortran 壞掉了,因為預設發布了舊版本,如果使用者安裝了更新版本的函式庫,就會導致問題
-
我們可以有一個 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 magic?
* 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 是如何建置的?