configure.ac assumes -std=c11 rather than checking it, which causes make failures on old compilers
Aberta
Ninguém assumiu esta issue ainda.
build
type-bug
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Bug report
Bug description:
Repro
Steps:
- Run a container having a
gccthat does not support the C11 standard (e.g., gcc 4.4.7) tar xvJf Python-3.13.2.tar.xz && cd Python-3.13.2./configure && make
Expected: configure reports an error like "your compiler doesn't support C11"
Observed: configure succeeds, only for make to fail.
...
configure: creating Makefile
configure:
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations
configure: Your compiler or platform does have a working C11 stdatomic.h. A future version of Python may require stdatomic.h.
sh-4.1# make
gcc -std=gnu99 -pthread -c -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -I./Include/internal/mimalloc -I. -I./Include -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c
cc1: error: unrecognized command line option "-std=c11"
make: *** [Programs/python.o] Error 1
Suggestion
I think this can be fixed by changing configure.ac here:
- CFLAGS_NODIST="$CFLAGS_NODIST -std=c11"
+ AX_CHECK_COMPILE_FLAG([-std=c11],[
+ CFLAGS_NODIST="$CFLAGS_NODIST -std=c11"
+ ], [
+ AC_MSG_ERROR([Python requires -std=c11 on gcc])
+ ], [-Werror])
Related issues
#91731
CPython versions tested on:
3.12.9, 3.13.2
Operating systems tested on:
Linux
Linked PRs
- gh-133608
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
A lógica afetada está em configure.ac, próxima à linha referenciada, onde -std=c11 é adicionado. Reproduza o problema com GCC 4.4.7 usando ./configure && make e, em seguida, verifique se configure informa que o compilador C11 não é compatível, em vez de permitir que make falhe.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- c
- Domínio
- build-system
- Tipo de issue
- Bug
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 25/100