2016-06-09: Compiler special meeting
Time: 14:00 UTC
Hangout link: https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie
Attendees
- Jonathan Helmus
 - John Kirkham
 - Johannes Koster
 - Bjorn Gruning
 - Michael Sarahan
 - Ray
 - Phil Elson
 
Agenda
Compiler docker images:
- 
Conda-forge
* `docker pull condaforge/linux-anvil`- Built on Quay ( https://quay.io/repository/condaforge/linux-anvil )
 - Mirrored ( https://hub.docker.com/r/condaforge/linux-anvil/ )
 - CentOS 6, GCC 4.4.7, Devtoolset2 (GCC 4.8)
 - Source code ( 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 on PATH by default
 
 
Centers of discussion:
- Need of libstdc++ updates / shadowing
 - Language compatibility needs (C++11/14)
 
As time allows: MSYS2 on Windows
Notes
Overview of the Docker images
- conda-forge and bioconda seems to use same GCC version
 
Key points:
- 
Need to monitor if we need to ship libstdc++
* Not needed if use Devtoolset- But users may still need to install if they are missing this library, like Arch linux, so we may want to ship this anyway
 
 - 
Need to say what language standard we are going to support C++14?
 - 
Legacy ABI support for old libraries (dual API, issues with older/newer ABI)
 
History on conda-forge
- Initial conda-forge used gcc package
 - sometimes this would cause issues if packages were not pinned
 - switched to devoolset2 which does the static linking trick,
 
Future
- 
Use devtoolset4? (GCC 5.3, available on CentOS6)
 - 
Build our own compiler toolchain
 - 
GCC 6, could have some issues
 - 
Could have devtoolset2 and devtoolset4 installed in same Docker image
* Need to have some mechanism to activate a particular toolset - 
Using devtoolset does limit OS (CentOS5 only supports devtoolset2 not 4)
 - 
Could we build our own devtoolset?
* Patches are available (srpm)- Not small task, but do we want to take this on?
 - Here is a link for some source ( https://git.centos.org/commit/rpms!devtoolset-4-gcc/e14f97005a3d22e658d01d0fc8899f5bda1982ca )
 
 - 
Using Docker image from Continuum
* 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)- Not many package in defaults link against libstdc++
 - Have been shipping and has not seen issue yet...
 - Julia has been doing this
 
 - 
libgfortran was broken because defaults was shipping old version which causes issues if user has more recent version of library installed
 - 
Could we have a version of libstdc++ conda package which nothing depends on but users could install if they are missing a system libstdc++?
 - 
Current infrastructure may not be able to support building gcc, but we could user other systems for this.
 - 
Continuum needs to support CentOS 5, conda-forge is happy with CentOS6 as minimum glibc version
 - 
John will do this. (After some discussion it became unclear whether this was best approach; so, holding off for now.)
 - 
Should have common build environment
 - 
How to support fortran on Mac
* New to use gfortran and have packages depend on libgfortran? package- 
May be out of date, should we update?
 - 
Port this solution to Linux?
* Either use patches or ship libstdc++- 
Have same package for Mac and Linux OR use 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) 
 - 
 
 - 
 - 
Come up with a list of gcc 6.x problems that are encountered.
 - 
Why use clang vs gcc on Mac
* gcc has been remove in recent version of OS X - 
MSYS2
* Can be useful to get devtools- What about "alternative" MSYS2 Python environment
 - Visual Studio and MSYS2 gcc are not compatible
 - gfortran is big target (at least for Jonathan)
 - msys2-w64 packages/channels on Anaconda Cloud
 - OpenBLAS... does seem to be working on Windows
 - Does this work with VS 2015?
 
 - 
Use ATLAS instead of OpenBLAS for windows numpy?
* Would need to repackage binary ATLAS DLL - 
Get some BLAS build even if it is not the best
 - 
How are SciPy Windows wheels being built?