OUCH Getting GoPiGo3 python egg files built/installed on Bookworm may be a long haul requiring @cleoqc and an MR decision on the value of supporting the Pi5 (or even Bookworm on Pi4).
Python continues to change in ways that break system designs (virtual-environment default now) and system install scripts (setup.py deprecated)
Previously the GoPiGo3 install broke by the deprecation of Python 2, requiring minor install script changes at strategic points, but the advance to Python 3.11.2 with stricter package management seems to require deeper install design changes.
I have seen a few hints that user permissions may have been altered in Bookworm. Driving the GoPiGo3 hardware by a non-privileged user was carefully crafted by DI by adding the pi user to privileged groups, and adding rules for accessing the GoPiGo3 hardware. I cannot get far enough in the install to test for any changes there but I’m pretty sure the bcm2835-gpiomem rule won’t work on the Pi5 since the RP1 replaces the BCM2835 chip.
The GoPiGo3 sensors and software I2C depend on wiringpi , which has not been updated for the RP1 I/O controller of the Raspberry Pi 5 (and Bookworm). This is the major hurdle
== Details ==
I got Dexter_AutoDetection_and_I2C_Mutex-1.3.2-py3.11.egg built and installed.
The DI Sensors and I2C depend on wiringpi which fails build/install:
Running wiringpi-2.60.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-qxc_o8le/wiringpi-2.60.1/egg-dist-tmp-9w9i89c3
/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
.
.
File "/usr/lib/python3/dist-packages/setuptools/command/install_lib.py", line 17, in finalize_options
self.set_undefined_options('install',('install_layout','install_layout'))
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 296, in set_undefined_options
setattr(self, dst_option, getattr(src_cmd_obj, src_option))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
raise AttributeError(attr)
AttributeError: install_layout. Did you mean: 'install_platlib'?
Seems like DI implemented the software I2C using WiringPi (to support devices which require clock stretching like the DI IMU). This would need to be rewritten or changed to only support hardware I2C on the Pi5.
DI already removed the main GoPiGo3 dependency on wiringpi - switching to pigpio back in 2020: