mirror of
				https://github.com/Klipper3d/klipper.git
				synced 2025-10-27 16:26:11 +01:00 
			
		
		
		
	
		
			
	
	
		
			106 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/bin/bash
 | ||
|  | # This script installs Klipper on an debian | ||
|  | # | ||
|  | 
 | ||
|  | PYTHONDIR="${HOME}/klippy-env" | ||
|  | SYSTEMDDIR="/etc/systemd/system" | ||
|  | KLIPPER_USER=$USER | ||
|  | KLIPPER_GROUP=$KLIPPER_USER | ||
|  | 
 | ||
|  | # Step 1: Install system packages | ||
|  | install_packages() | ||
|  | { | ||
|  |     # Packages for python cffi | ||
|  |     PKGLIST="python-virtualenv virtualenv python-dev libffi-dev build-essential" | ||
|  |     # kconfig requirements | ||
|  |     PKGLIST="${PKGLIST} libncurses-dev" | ||
|  |     # hub-ctrl | ||
|  |     PKGLIST="${PKGLIST} libusb-dev" | ||
|  |     # AVR chip installation and building | ||
|  |     PKGLIST="${PKGLIST} avrdude gcc-avr binutils-avr avr-libc" | ||
|  |     # ARM chip installation and building | ||
|  |     PKGLIST="${PKGLIST} stm32flash libnewlib-arm-none-eabi" | ||
|  |     PKGLIST="${PKGLIST} gcc-arm-none-eabi binutils-arm-none-eabi" | ||
|  | 
 | ||
|  |     # Update system package info | ||
|  |     report_status "Running apt-get update..." | ||
|  |     sudo apt-get update | ||
|  | 
 | ||
|  |     # Install desired packages | ||
|  |     report_status "Installing packages..." | ||
|  |     sudo apt-get install --yes ${PKGLIST} | ||
|  | } | ||
|  | 
 | ||
|  | # Step 2: Create python virtual environment | ||
|  | create_virtualenv() | ||
|  | { | ||
|  |     report_status "Updating python virtual environment..." | ||
|  | 
 | ||
|  |     # Create virtualenv if it doesn't already exist | ||
|  |     [ ! -d ${PYTHONDIR} ] && virtualenv ${PYTHONDIR} | ||
|  | 
 | ||
|  |     # Install/update dependencies | ||
|  |     ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/klippy-requirements.txt | ||
|  | } | ||
|  | 
 | ||
|  | # Step 3: Install startup script | ||
|  | install_script() | ||
|  | { | ||
|  | # Create systemd service file | ||
|  |     KLIPPER_LOG=/tmp/klippy.log | ||
|  |     report_status "Installing system start script..." | ||
|  |     sudo /bin/sh -c "cat > $SYSTEMDDIR/klipper.service" << EOF | ||
|  | #Systemd service file for klipper | ||
|  | [Unit] | ||
|  | Description=Starts klipper on startup | ||
|  | After=network.target | ||
|  | 
 | ||
|  | [Install] | ||
|  | WantedBy=multi-user.target | ||
|  | 
 | ||
|  | [Service] | ||
|  | Type=simple | ||
|  | User=$KLIPPER_USER | ||
|  | RemainAfterExit=yes | ||
|  | ExecStart=${PYTHONDIR}/bin/python ${SRCDIR}/klippy/klippy.py ${HOME}/printer.cfg -l ${KLIPPER_LOG} | ||
|  | Restart=always | ||
|  | RestartSec=10 | ||
|  | EOF | ||
|  | # Use systemctl to enable the klipper systemd service script | ||
|  |     sudo systemctl enable klipper.service | ||
|  | } | ||
|  | 
 | ||
|  | # Step 4: Start host software | ||
|  | start_software() | ||
|  | { | ||
|  |     report_status "Launching Klipper host software..." | ||
|  |     sudo systemctl start klipper | ||
|  | } | ||
|  | 
 | ||
|  | # Helper functions | ||
|  | report_status() | ||
|  | { | ||
|  |     echo -e "\n\n###### $1" | ||
|  | } | ||
|  | 
 | ||
|  | verify_ready() | ||
|  | { | ||
|  |     if [ "$EUID" -eq 0 ]; then | ||
|  |         echo "This script must not run as root" | ||
|  |         exit -1 | ||
|  |     fi | ||
|  | } | ||
|  | 
 | ||
|  | # Force script to exit if an error occurs | ||
|  | set -e | ||
|  | 
 | ||
|  | # Find SRCDIR from the pathname of this script | ||
|  | SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )" | ||
|  | 
 | ||
|  | # Run installation steps defined above | ||
|  | verify_ready | ||
|  | install_packages | ||
|  | create_virtualenv | ||
|  | install_script | ||
|  | start_software |