‘CPyModule__ctypes’ undeclared
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Bug Report
When trying to use mypyc with ctypes, I get a compile error:
$ mypyc ioctl.py
running build_ext
building 'ioctl' extension
gcc -pthread -B /home/mypy/source/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/mypy/source/include -fPIC -O2 -isystem /home/mypy/source/include -fPIC -I/home/mypy/source/lib/python3.11/site-packages/mypyc/lib-rt -I/home/mypy/source/include/python3.11 -c build/__native.c -o build/temp.linux-x86_64-cpython-311/build/__native.o -O3 -g1 -Werror -Wno-unused-function -Wno-unused-label -Wno-unreachable-code -Wno-unused-variable -Wno-unused-command-line-argument -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-ignored-optimization-argument -Wno-cpp
build/__native.c: In function ‘CPyDef___top_level__’:
build/__native.c:189:17: error: ‘CPyModule__ctypes’ undeclared (first use in this function); did you mean ‘CPyModule_ctypes’?
189 | cpy_r_r19 = CPyModule__ctypes;
| ^~~~~~~~~~~~~~~~~
| CPyModule_ctypes
build/__native.c:189:17: note: each undeclared identifier is reported only once for each function it appears in
build/__native.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-ignored-optimization-argument’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-unknown-warning-option’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-unused-command-line-argument’ may have been intended to silence earlier diagnostics
error: command '/usr/bin/gcc' failed with exit code 1
To Reproduce
Test script ioctl.py:
import ctypes
class _GPIOchipInfo(ctypes.Structure):
_fields_ = [
('name', ctypes.c_char * 32),
('label', ctypes.c_char * 32),
('lines', ctypes.c_uint32),
]
Workaround
Adding
#define CPyModule__ctypes CPyModule_ctypes
in the CPy.h include file "fixes" this error and the compiler succeeds.
Your Environment
- Mypy version used: 1.7.1
- Python version used: 3.11.6
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo il problema con mypyc 1.7.1 e lo script ioctl.py fornito, quindi esamina il file build/__native.c generato e il file di inclusione CPy.h. Traccia il motivo per cui il codice generato fa riferimento a CPyModule__ctypes mentre CPyModule_ctypes è dichiarato; il lavoro è completato quando l’esempio ctypes viene compilato senza l’errore segnalato di identificatore non dichiarato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers, devtools
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100