As it turns out, flash-sdcard.sh is the only script with this issue! Here's a patch for your stuff that'll fix this script:
https://gist.github.com/synthead/8b10a0a8ee4db43a5fa4852230c5b75d
Git Clone URL: | https://aur.archlinux.org/klipper-git.git (read-only, click to copy) |
---|---|
Package Base: | klipper-git |
Description: | 3D printer firmware with motion planning on the host |
Upstream URL: | https://www.klipper3d.org/ |
Licenses: | GPL3 |
Conflicts: | klipper |
Provides: | klipper |
Submitter: | jade1 |
Maintainer: | dack |
Last Packager: | dack |
Votes: | 4 |
Popularity: | 0.000000 |
First Submitted: | 2018-10-19 05:10 (UTC) |
Last Updated: | 2023-03-21 07:03 (UTC) |
As it turns out, flash-sdcard.sh is the only script with this issue! Here's a patch for your stuff that'll fix this script:
https://gist.github.com/synthead/8b10a0a8ee4db43a5fa4852230c5b75d
Could we fix the scripts in /usr/lib/klipper/scripts/ to use the system-wide Python instead of Python in a venv? For example, in /usr/lib/klipper/scripts/flash-sdcard.sh, this is line 6:
KLIPPY_ENV="${HOME}/klippy-env/bin/python"
$KLIPPY_ENV is used to call the Python executable (which should be /usr/bin/python) here:
while getopts "hlcb:f:d:" arg; do
case $arg in
h)
print_help_message
exit 0
;;
l)
${KLIPPY_ENV} ${SPI_FLASH} -l
exit 0
;;
c) CHECK_ARG="-c";;
b) BAUD_ARG="-b ${OPTARG}";;
f) KLIPPER_BIN=$OPTARG;;
d) KLIPPER_DICT=$OPTARG;;
esac
done
...and here:
${KLIPPY_ENV} ${SPI_FLASH} ${CHECK_ARG} ${BAUD_ARG} ${KLIPPER_DICT} ${DEVICE} ${BOARD} ${KLIPPER_BIN}
If I call this script as-is, I get this error:
$ /usr/lib/klipper/scripts/flash-sdcard.sh -l
/usr/lib/klipper/scripts/flash-sdcard.sh: line 45: /home/george/klippy-env/bin/python: No such file or directory
However, if KLIPPY_ENV is set to /usr/bin/python, everything works a-ok :)
For the curious, I use the above script to flash a BIGTREETECH SKR Mini E3 V3.0 over USB. This controller only allows updates via writing a file called firmware.bin to an SD card, then using the SD card to do updates. The Klipper firmware has a feature that will write this file over USB and perform a reset on the controller, essentially providing abstracted USB updates. More information can be found here: https://www.klipper3d.org/SDCard_Updates.html
We may want to configure a log directory for this package. When it starts, it shows this in the output:
WARNING:root:No log file specified! Severe timing issues may result!
I have updated this package to use python 3. If you are currently using klipper-py3-git, please switch to using this package instead. It's now fully up to date. All future updates will go here and I will be removing klipper-py3-git at some point.
Moonraker expects the config examples and docs to be kept in their default locations, but this PKGBUILD moves them to /usr/share/klipper/examples and /usr/share/doc/klipper. As a result, moonraker will give warnings/errors. There is no configuration in moonraker for this - it just expects them to be in the standard location.
I worked around it as follows:
ln -s /usr/share/klipper/examples /usr/lib/klipper/config
ln -s /usr/share/doc/klipper /usr/lib/klipper/docs
I would recommend adding those symlinks to the PKGBUILD.
This application now needs Python 3:
I was trying to compile the Klipper MCU code and hit a hurdle and was wondering what the intention here is: As I understand it, the code is supposed to be compiled in /usr/lib/klipper
(as in cd /usr/lib/klipper; make menuconfig; make
). I the issue I've hit is that the build process requires running scripts which are located /usr/share/klipper/scripts
, but the Makefile expects the scripts to be in /usr/lib/klipper/scripts
. Am I supposed to manually copy the scripts there?
Also, the Makefile includes the following line:
PYTHON=python2
I guess it's pretty easy to overwrite by running make PYTHON=python
, you decide whether it's worth patching. Just letting you know in case you haven't stumbled upon this until now.
Pinned Comments
dack commented on 2023-03-21 07:13 (UTC)
I have updated this package to use python 3. If you are currently using klipper-py3-git, please switch to using this package instead. It's now fully up to date. All future updates will go here and I will be removing klipper-py3-git at some point.