跳到主要內容

2016-06-09:編譯器特別會議

時間:UTC 14:00

Hangout 連結: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)
    • 預設套件中沒有很多套件連結到 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 是如何建置的?