Menu

#198 Compilation Fails with Python 3.9

Done
nobody
None
High
Defect
2022-02-06
2021-04-29
No

Could not Compile or get it in any way to work on my raspi since Python update to 3.9

the problem seems to be ‘PyEval_ThreadsInitialized’ is deprecated [-Wdeprecated-declarations]

Trying to get it work with Python 3.7 on raspian gives me other Problems, my raspi update destroyed it. And I have no clue to get it working again.

:/usr/src/RPIGIO # python3 setup.py install
running install
running build
running build_py
running build_ext
building 'RPi._GPIO' extension
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/c_gpio.c -o build/temp.linux-armv7l-3.9/source/c_gpio.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/common.c -o build/temp.linux-armv7l-3.9/source/common.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/constants.c -o build/temp.linux-armv7l-3.9/source/constants.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/cpuinfo.c -o build/temp.linux-armv7l-3.9/source/cpuinfo.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/event_gpio.c -o build/temp.linux-armv7l-3.9/source/event_gpio.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/py_gpio.c -o build/temp.linux-armv7l-3.9/source/py_gpio.o
source/py_gpio.c: In function PyInit__GPIO:
source/py_gpio.c:1046:4: warning: PyEval_ThreadsInitialized is deprecated [-Wdeprecated-declarations]
 1046 |    if (!PyEval_ThreadsInitialized())
      |    ^~
In file included from /usr/include/python3.9/Python.h:145,
                 from source/py_gpio.c:23:
/usr/include/python3.9/ceval.h:129:36: note: declared here
  129 | Py_DEPRECATED(3.9) PyAPI_FUNC(int) PyEval_ThreadsInitialized(void);
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
source/py_gpio.c:1047:7: warning: PyEval_InitThreads is deprecated [-Wdeprecated-declarations]
 1047 |       PyEval_InitThreads();
      |       ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/Python.h:145,
                 from source/py_gpio.c:23:
/usr/include/python3.9/ceval.h:130:37: note: declared here
  130 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
      |                                     ^~~~~~~~~~~~~~~~~~
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/py_pwm.c -o build/temp.linux-armv7l-3.9/source/py_pwm.o
arm-linux-gnueabihf-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.9 -c source/soft_pwm.c -o build/temp.linux-armv7l-3.9/source/soft_pwm.o
arm-linux-gnueabihf-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro -g -fwrapv -O2 -g -ffile-prefix-map=/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-armv7l-3.9/source/c_gpio.o build/temp.linux-armv7l-3.9/source/common.o build/temp.linux-armv7l-3.9/source/constants.o build/temp.linux-armv7l-3.9/source/cpuinfo.o build/temp.linux-armv7l-3.9/source/event_gpio.o build/temp.linux-armv7l-3.9/source/py_gpio.o build/temp.linux-armv7l-3.9/source/py_pwm.o build/temp.linux-armv7l-3.9/source/soft_pwm.o -o build/lib.linux-armv7l-3.9/RPi/_GPIO.cpython-39-arm-linux-gnueabihf.so
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:41: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:40: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:39: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:38: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:37: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:36: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:35: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:34: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:33: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:33: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:40: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:39: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:38: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:41: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:37: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:36: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:34: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:35: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:42: multiple definition of `both_edge'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:42: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:41: multiple definition of `falling_edge'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:41: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:40: multiple definition of `rising_edge'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:40: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:39: multiple definition of `pud_down'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:39: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:38: multiple definition of `pud_up'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:38: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:37: multiple definition of `pud_off'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:37: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:36: multiple definition of `bcm'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:36: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:35: multiple definition of `board'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:35: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:34: multiple definition of `unknown'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:34: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:33: multiple definition of `spi'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:33: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:32: multiple definition of `i2c'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:32: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:31: multiple definition of `serial'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:31: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:30: multiple definition of `pwm'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:30: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:29: multiple definition of `output'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:29: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:28: multiple definition of `input'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:28: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:27: multiple definition of `low'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:27: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/constants.h:26: multiple definition of `high'; build/temp.linux-armv7l-3.9/source/constants.o:/usr/src/RPIGIO/source/constants.h:26: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:38: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/py_pwm.h:23: multiple definition of `PWMType'; build/temp.linux-armv7l-3.9/source/py_gpio.o:/usr/src/RPIGIO/source/py_pwm.h:23: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:41: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:40: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:39: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:37: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:36: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:35: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:34: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/py_pwm.o:/usr/src/RPIGIO/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-armv7l-3.9/source/common.o:/usr/src/RPIGIO/source/common.h:33: first defined here
/usr/bin/ld: build/temp.linux-armv7l-3.9/source/soft_pwm.o:/usr/src/RPIGIO/source/soft_pwm.c:28: multiple definition of `threads'; build/temp.linux-armv7l-3.9/source/event_gpio.o:/usr/src/RPIGIO/source/event_gpio.c:60: first defined here
collect2: error: ld returned 1 exit status
error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1

Discussion

  • Christian Krausse

    Solution found via https://pypi.org/project/RPi.GPIO/0.7.1a4/

    Change Log :0.7.1a3
    Fix PyEval_InitThreads deprecation warning for Python 3.9 (issue 188)

    Installing latest Version worked:
    pip3 install RPi.GPIO==0.7.1a4

    --- could be closed ---

     

    Last edit: Christian Krausse 2021-05-03
  • Owen Carter

    Owen Carter - 2021-11-23

    November now; Bullseye is released, with python 3.9 as default..

    https://forums.raspberrypi.com/viewtopic.php?t=323289

    Getting a non-alpha release out asap could be a good idea.

     
  • George Harker

    George Harker - 2022-01-13

    Agreed, would be great to promote this to a non alpha status as it was a bit freaky after dist-upgrade to fine rpi.GPIO wouldn't install, worked around with a pin to the alpha version, but would be great for folks to not have to do that.

     
  • Dave Hocker

    Dave Hocker - 2022-02-04

    This problem is caused by a change to the GCC 10 default options. I came across it while migrating my RaspberryPi's from Buster to the newly released Raspberry Pi OS BullsEye. Originally, the default was -fcommon but it has been changed to -fno-common. You can work around the problem by setting the CFLAGS environment variable. For example:

    export CFLAGS=-fcommon

    Alternatively, this problem can be fixed in source by changing setup.py as follows:

    setup(name             = 'RPi.GPIO',
          version          = '0.7.0',
          author           = 'Ben Croston',
          author_email     = 'ben@croston.org',
          description      = 'A module to control Raspberry Pi GPIO channels',
          long_description = open('README.txt').read() + open('CHANGELOG.txt').read(),
          license          = 'MIT',
          keywords         = 'Raspberry Pi GPIO',
          url              = 'http://sourceforge.net/projects/raspberry-gpio-python/',
          classifiers      = classifiers,
          packages         = ['RPi','RPi.GPIO'],
          ext_modules      = [Extension('RPi._GPIO',
                                  ['source/py_gpio.c',
                                  'source/c_gpio.c',
                                  'source/cpuinfo.c',
                                  'source/event_gpio.c',
                                  'source/soft_pwm.c',
                                  'source/py_pwm.c',
                                  'source/common.c',
                                  'source/constants.c'
                                  ],
                                  extra_compile_args=["-fcommon"]
                                )
                         ]
    )
    
     
  • Ben Croston

    Ben Croston - 2022-02-06
     
  • Ben Croston

    Ben Croston - 2022-02-06

    Fixed in 0.7.1

     
  • Ben Croston

    Ben Croston - 2022-02-06
    • status: New --> Done
     
  • Ben Croston

    Ben Croston - 2022-02-06

    Fixed in 0.7.1

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.