Title: Compile error with pytime.h - struct timespec declared inside parameter list
Type: compile error Stage:
Components: Build Versions: Python 3.5
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: jamespharvey20, martin.panter
Priority: normal Keywords:

Created on 2015-12-12 23:09 by jamespharvey20, last changed 2015-12-14 12:01 by martin.panter.

Messages (3)
msg256301 - (view) Author: jamespharvey20 (jamespharvey20) Date: 2015-12-12 23:09
When including pytime.h:

n file included from /usr/include/python3.5m/Python.h:65:0,
                 from src/package.c:25:
/usr/include/python3.5m/pytime.h:136:56: error: ‘struct timespec’ declared inside parameter list [-Werror]
 PyAPI_FUNC(int) _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts);
/usr/include/python3.5m/pytime.h:136:56: error: its scope is only this definition or declaration, which is probably not what you want [-Werror]
cc1: all warnings being treated as errors
error: command 'gcc' failed with exit status 1
msg256303 - (view) Author: jamespharvey20 (jamespharvey20) Date: 2015-12-12 23:25
This is using

GCC v5.3.0

Using Werror obviously
msg256378 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2015-12-14 12:01
What platform, C library, etc do you have? According to Posix, struct timespec is normally defined in <time.h>, but can also be gotten via various other include files, many of which are included before "pytime.h".

In particular, <Python.h> includes "pyport.h", which has conditional code for including <time.h>, <sys/select.h> and <sys/stat.h>. All of these should define timespec. It might be useful to check your pyconfig.h file to see if stuff like the following is defined:

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
Date User Action Args
2015-12-14 12:01:08martin.pantersetnosy: + martin.panter
messages: + msg256378
components: + Build, - Library (Lib)
2015-12-12 23:25:53jamespharvey20setmessages: + msg256303
2015-12-12 23:09:50jamespharvey20create