Issue 28017: bluetooth.h on big endian needs GNU C extensions (original) (raw)

Created on 2016-09-08 09:31 by christian.heimes, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (10)
msg274990 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2016-09-08 09:31
PPC Fedora build bot is not able to build the _ssl and _socket module. It looks like bluetooth.h is not compatible with std=c99. It uses some GNU C extensions like __extension__, __attribute__((packed)) and __typeof__. The C99 variant -std=gnu99 should do the trick. http://buildbot.python.org/all/builders/PPC64%20Fedora%203.x/builds/1527/steps/test/logs/stdio In file included from /usr/include/bluetooth/bluetooth.h:37:0, from /home/shager/cpython-buildarea/3.x.edelsohn-fedora-ppc64/build/Modules/socketmodule.h:58, from /home/shager/cpython-buildarea/3.x.edelsohn-fedora-ppc64/build/Modules/socketmodule.c:321: /usr/include/bluetooth/bluetooth.h: In function ‘bt_get_le64’: /usr/include/bluetooth/bluetooth.h:238:18: error: expected specifier-qualifier-list before ‘typeof’ return bswap_64(bt_get_unaligned((const uint64_t *) ptr)); ^ /usr/include/bluetooth/bluetooth.h:238:18: error: called object is not a function or function pointer return bswap_64(bt_get_unaligned((const uint64_t *) ptr)); ^ /usr/include/bluetooth/bluetooth.h:238:18: error: ‘struct ’ has no member named ‘__v’ return bswap_64(bt_get_unaligned((const uint64_t *) ptr));
msg274991 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-09-08 09:37
I don’t have access to the buildbot. Are you sure it uses __typeof__? The error message says “typeof” without the underscores. I suspect that it would work with the underscores.
msg274992 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-09-08 09:39
New changeset b5b2bb56d303 by Christian Heimes in branch 'default': Issue 28017: Use -std=gnu99 to get C99 with GNU extensions for bluetooth.h on big endian. https://hg.python.org/cpython/rev/b5b2bb56d303
msg274993 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2016-09-08 09:41
Let's give it a try.
msg274996 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2016-09-08 09:49
It compiles now. Sorry for the duplicate ticket.
msg275100 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2016-09-08 18:17
Hmm, I prefer to compile with stdc99. I wonder if we should consider this (presumably quite old) bluetooth.h to not exist if it doesn't work with c99. On Thu, Sep 8, 2016, at 02:49, Christian Heimes wrote: > > Christian Heimes added the comment: > > It compiles now. Sorry for the duplicate ticket. > > ---------- > resolution: -> fixed > stage: needs patch -> resolved > status: open -> closed > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue28017> > _______________________________________
msg275102 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2016-09-08 18:25
I checked my local bluetooth.h. It looks like it won't compile on big endian platforms either. Python uses some GCC features like __attribute__. Do they all work in C99 mode?
msg275103 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2016-09-08 18:32
stc99 means "C99 + GCC extensions that aren't incompatible with the standard". gnuc99 means "sort of C99 with whatever GNU weirdness" On Thu, Sep 8, 2016, at 11:25, Christian Heimes wrote: > > Christian Heimes added the comment: > > I checked my local bluetooth.h. It looks like it won't compile on big > endian platforms either. > > Python uses some GCC features like __attribute__. Do they all work in C99 > mode? > > ---------- > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue28017> > _______________________________________
msg275354 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2016-09-09 17:23
New changeset 91017e2202ae by Benjamin Peterson in branch 'default': compile with -std=c99 instead of -std=gnu99; use kiddie-gloves with bluetooth/bluetooh.h (#28017) https://hg.python.org/cpython/rev/91017e2202ae
msg275523 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-09-10 01:08
For the record (and my curiosity) I think the header file was fixed in 2014: https://git.kernel.org/cgit/bluetooth/bluez.git/commit?id=cf52a40
History
Date User Action Args
2022-04-11 14:58:36 admin set github: 72204
2016-09-10 01:08:38 martin.panter set messages: +
2016-09-09 17:23:29 python-dev set messages: +
2016-09-08 18:32:29 benjamin.peterson set messages: +
2016-09-08 18:25:22 christian.heimes set messages: +
2016-09-08 18:17:07 benjamin.peterson set messages: +
2016-09-08 09:49:18 christian.heimes set status: open -> closedresolution: fixedmessages: + stage: needs patch -> resolved
2016-09-08 09:41:07 christian.heimes set messages: +
2016-09-08 09:39:51 python-dev set nosy: + python-devmessages: +
2016-09-08 09:37:48 martin.panter set superseder: PPC64 Fedora socket and ssl compile failuremessages: + nosy: + martin.panter
2016-09-08 09:31:34 christian.heimes create