# 2016-06-09: Compiler special meeting Time: 14:00 UTC Hangout link: [](https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie)[https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie](https://hangouts.google.com/call/v5olhwzpfzgzpoq5i3wthjpqpie) **Attendees** * Jonathan Helmus * [John Kirkham](https://conda-forge.hackpad.com/ep/profile/wv6uvIZX6h0) * [Johannes Koster](https://conda-forge.hackpad.com/ep/profile/vuQo2WAv29A) * [Bjorn Gruning](https://conda-forge.hackpad.com/ep/profile/DMmBLyb21HK) * [Michael Sarahan](https://conda-forge.hackpad.com/ep/profile/yHQTJXZ4gyS) * Ray * Phil Elson **Agenda** Compiler docker images: * Conda-forge * `docker pull condaforge/linux-anvil` * Built on Quay ( [](https://quay.io/repository/condaforge/linux-anvil)[https://quay.io/repository/condaforge/linux-anvil](https://quay.io/repository/condaforge/linux-anvil) ) * Mirrored ( [](https://hub.docker.com/r/condaforge/linux-anvil/)[https://hub.docker.com/r/condaforge/linux-anvil/](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)[https://github.com/conda-forge/docker-images/tree/fbde090bd608caa720d5caad861aa382a8bf3f5c/linux-anvil](https://github.com/conda-forge/docker-images/tree/fbde090bd608caa720d5caad861aa382a8bf3f5c/linux-anvil) ) * Bioconda: [](https://hub.docker.com/r/bioconda/bioconda-builder/)[https://hub.docker.com/r/bioconda/bioconda-builder/](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)[https://git.centos.org/commit/rpms](https://git.centos.org/commit/rpms%21devtoolset-4-gcc/e14f97005a3d22e658d01d0fc8899f5bda1982ca)[!devtoolset-4-gcc/e14f97005a3d22e658d01d0fc8899f5bda1982ca](https://git.centos.org/commit/rpms%21devtoolset-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?