BLD: support 3.8 pre
State: closed

closes #26626


Labels:
name: Build
description: Library building on various platforms

Comments:
this is not working yet :-<

https://travis-ci.org/pandas-dev/pandas/jobs/555081822

```
    error: Command "ccache gcc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Ibuild/src.linux-x86_64-3.8/numpy/core/src/common -Inumpy/core/include -Ibuild/src.linux-x86_64-3.8/numpy/core/include/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/home/travis/miniconda3/envs/pandas-dev/include/python3.8m -Ibuild/src.linux-x86_64-3.8/numpy/core/src/common -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -Ibuild/src.linux-x86_64-3.8/numpy/core/src/common -Ibuild/src.linux-x86_64-3.8/numpy/core/src/npymath -c build/src.linux-x86_64-3.8/numpy/core/src/npysort/radixsort.c -o build/temp.linux-x86_64-3.8/build/src.linux-x86_64-3.8/numpy/core/src/npysort/radixsort.o -MMD -MF build/temp.linux-x86_64-3.8/build/src.linux-x86_64-3.8/numpy/core/src/npysort/radixsort.o.d" failed with exit status 1
    ----------------------------------------
ERROR: Command "/home/travis/miniconda3/envs/pandas-dev/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-req-build-midvhiik/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-89u54j1w/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-req-build-midvhiik/
```

any ideas here @mattip
I think you need to add `-std=c99` to the CFLAGS
You are building NumPy since NumPy does not yet provide a wheel for python3.8, and somehow the build script is not adding that flag. NumPy seems to be adding it into the CI configurations. This might be a bug in the way `pip install git+https://github.com/numpy/numpy` is invoking the compiler.

I cannot reproduce on python3.7 (ubuntu 18.04), in a clean virtualenv this works with no error
```
pip install cython pytz
pip install git+https://github.com/numpy/numpy
```
> You are building NumPy since NumPy does not yet provide a wheel for python3.8, and somehow the build script is not adding that flag. NumPy seems to be adding it into the CI configurations. This might be a bug in the way `pip install git+https://github.com/numpy/numpy` is invoking the compiler.

interesting, is there any way to force this on pip?
Can you try this in a clean python 3.8 virtualenv?
```
pip install cython pytz
pip install git+https://github.com/numpy/numpy
```
> Can you try this in a clean python 3.8 virtualenv?
> 
> ```
> pip install cython pytz
> pip install git+https://github.com/numpy/numpy
> ```

I tried this exactly on macosx and it fails as well (was using the conda install via the pre channel for python & pip; cython from source)

e.g. I was always doing
```pip install cython pytz --no-binary :all: --pre```
Maybe we only set the flag automatically for gcc (I assume you are using clang)? What happens if you
```
CFLAGS='-std=c99' pip install git+https://github.com/numpy/numpy
```
You should see the flag appear in the compile flags in the call to the compiler
Anything left to do here?
numpy is not installing correctly yet.
Steps I took to reproduce, these succeeded for me on x86-64 Ubuntu 18.04

```
conda init -n python3.8
conda activate python3.8
conda config --env --add channels conda-forge/label/pre-3.8
conda install python=="3.8.*"
python3.8 -mpip install --pre --no-binary :all: cython
python3.8 -mpip install --pre --no-binary :all: git+https://github.com/numpy/numpy
```
@TomAugspurger didnt you recently have a PR that was 3.8-specific?  Does that make this either easy or redundant?
That was only tested against 3.8 locally. We would ideally have a 3.8 build
on CI before release 0.25.2.

I think we'll need to wait for 3.8b4, otherwise we'll have segfaults from
https://bugs.python.org/issue37915.

On Wed, Aug 28, 2019 at 11:51 AM jbrockmendel <notifications@github.com>
wrote:

> @TomAugspurger <https://github.com/TomAugspurger> didnt you recently have
> a PR that was 3.8-specific? Does that make this either easy or redundant?
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/27266?email_source=notifications&email_token=AAKAOITU2LX5THWB4IAWHKDQG2UKNA5CNFSM4H6T6ZDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5LYOKY#issuecomment-525829931>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AAKAOIXVP3ISU2CSP4KNY3DQG2UKNANCNFSM4H6T6ZDA>
> .
>

> I think we'll need to wait for 3.8b4

`pyenv install 3.8-dev` now installs 3.8b4.  Does that un-block this?
Not really. We use conda on CI.

Travis already provided a python-dev base environment. If anyone wants to,
we'd probably be OK with a PR that added
a new entry on travis using 3.8 from travis and compiling NumPy from source
as a stopgap until conda packages are
ready for 3.8.

On Mon, Sep 16, 2019 at 12:00 PM jbrockmendel <notifications@github.com>
wrote:

> I think we'll need to wait for 3.8b4
>
> pyenv install 3.8-dev now installs 3.8b4. Does that un-block this?
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/27266?email_source=notifications&email_token=AAKAOITOR5WDEISO6O3TJWLQJ63SHA5CNFSM4H6T6ZDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6Z2A4I#issuecomment-531865713>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AAKAOIRXAWF3YNEF7X4XQKTQJ63SHANCNFSM4H6T6ZDA>
> .
>

looks like @jbrockmendel is working on this now.