python / python/cpython

Compiling 3.13.1 fails when /usr/local/include/pyconfig.h is outdated

オープン
#129,019 コメント 19 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

build pending type-bug
主要言語
Python
スター
77.2k
フォーク
36k
PR マージ指標
PR 指標を取得中

説明

Compiling Python 3.13.1 with

$ ./configure --with-lto --enable-shared --without-static-libpython --prefix=/root/chroot-n/python --disable-ipv6 --enable-optimizations CFLAGS='--sysroot=/root/chroot-n  -Ichr/include -Wl,--dynamic-linker=/chr/lib/ld-linux-x86-64.so.2'
$ make

prints

make profile-gen-stamp                                                                                                 
make[1]: Entering directory '/src/chroot/Python-3.13.1'                                                                                 
Building with support for profile generation:                                                                                           
make build_all CFLAGS_NODIST=" -fprofile-generate" LDFLAGS_NODIST=" -fprofile-generate" LIBS="-ldl "                                    
make[2]: Entering directory '/src/chroot/Python-3.13.1'                                                                                 
gcc -DUSE_ZLIB_CRC32 -I/usr/local/include -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall --sysroot=/root/chroot-n  -Ichr/include -Wl,--dynamic-linker=/chr/lib/ld-linux-x86-64.so.2   -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -fprofile-generate -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include   -fPIC -fPIC -c ./Modules/binascii.c -o Modules/binascii.o                                                                                         
In file included from ./Include/Python.h:79,               
                 from ./Modules/binascii.c:60:       
./Include/unicodeobject.h:61:9: warning: "Py_USING_UNICODE" redefined                 
   61 | #define Py_USING_UNICODE                                    
      |         ^~~~~~~~~~~~~~~~
In file included from ./Include/Python.h:14:            
/usr/local/include/pyconfig.h:994:9: note: this is the location of the previous definition
  994 | #define Py_USING_UNICODE 1                                  
      |         ^~~~~~~~~~~~~~~~                                    
./Include/unicodeobject.h:67:9: warning: "Py_UNICODE_SIZE" redefined
   67 | #define Py_UNICODE_SIZE SIZEOF_WCHAR_T
      |         ^~~~~~~~~~~~~~~                                                                                                         
/usr/local/include/pyconfig.h:991:9: note: this is the location of the previous definition
  991 | #define Py_UNICODE_SIZE 2                                                                                                       
      |         ^~~~~~~~~~~~~~~
/usr/local/include/pyconfig.h:982:25: error: two or more data types in declaration specifiers
  982 | #define PY_UNICODE_TYPE unsigned short                                                                                          
      |                         ^~~~~~~~
./Include/cpython/unicodeobject.h:9:37: note: in expansion of macro ‘PY_UNICODE_TYPE’
    9 | Py_DEPRECATED(3.13) typedef wchar_t PY_UNICODE_TYPE;
      |                                     ^~~~~~~~~~~~~~~
/usr/local/include/pyconfig.h:982:34: error: two or more data types in declaration specifiers
  982 | #define PY_UNICODE_TYPE unsigned short
      |                                  ^~~~~
./Include/cpython/unicodeobject.h:9:37: note: in expansion of macro ‘PY_UNICODE_TYPE’
    9 | Py_DEPRECATED(3.13) typedef wchar_t PY_UNICODE_TYPE;
      |                                     ^~~~~~~~~~~~~~~
In file included from ./Include/unicodeobject.h:1014:
./Include/cpython/unicodeobject.h:9:1: warning: useless type name in empty declaration
    9 | Py_DEPRECATED(3.13) typedef wchar_t PY_UNICODE_TYPE;
      | ^~~~~~~~~~~~~
make[2]: *** [Makefile:3346: Modules/binascii.o] Error 1
make[2]: Leaving directory '/src/chroot/Python-3.13.1'
make[1]: *** [Makefile:883: profile-gen-stamp] Error 2
make[1]: Leaving directory '/src/chroot/Python-3.13.1'
make: *** [Makefile:895: profile-run-stamp] Error 2

My /usr/local/include/pyconfig.h is from 2016! After removing it, the compilation progresses.

  • Building Python should not depend on /usr/local/include/pyconfig.h or /usr/include/pyconfig.h, installed from previous Python versions.
Linked PRs
  • gh-134019

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず configure と make のコマンドを再現し、次に生成された Makefile と、Include/Python.h、Include/unicodeobject.h、Include/cpython/unicodeobject.h を経由するインクルードチェーンを調べます。Modules/binascii.c のビルド中に /usr/local/include/pyconfig.h がどのように選択されるかを確認します。Python のビルドが古いシステムの pyconfig.h ファイルに依存しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
build-system
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。