# Maintainer: Maxime Gauduin <alucryd@archlinux.org>

pkgname=klipper
pkgver=0.13.0
pkgrel=2
pkgdesc='3D printer firmware with motion planning on the host'
arch=(x86_64)
url=https://www.klipper3d.org/
license=(GPL3)
depends=(
  python-can
  python-cffi
  python-greenlet
  python-jinja
  python-markupsafe
  python-pyserial
  libusb
)
optdepends=(
  'ncurses: for choosing compilation config'
  'avrdude: for flashing firmware on AVR MCU'
  'stm32flash: for flashing firmware on STM32 MCUs'
  'avr-gcc: for AVR MCU firmware compilation'
  'avr-binutils: for AVR MCU firmware compilation'
  'avr-libc: for AVR MCU firmware compilation'
  'python-numpy: for resonance measurement'
  'python-matplotlib: for resonance measurement'
  'dfu-util: for flashing firmware on STM32 MCUs'
  'arm-none-eabi-gcc: for RPi firmware compilation'
  'arm-none-eabi-newlib: for RPi firmware compilation'
)
makedepends=(git)
_tag=61c0c8d2ef40340781835dd53fb04cc7a454e37a
source=(
  git+https://github.com/Klipper3d/klipper.git#tag=${_tag}
  klipper.service
  klipper.sysusers
  klipper.tmpfiles
  # data dictionary from https://github.com/Klipper3d/klipper/issues/1438
  https://github.com/user-attachments/files/20556385/klipper-dict-20250602.tar.gz
)
b2sums=('06718519b209bb3a8ae91e123c181a0e4b81991487e18a66170b6943fab518911c09810ec838003746b16f1c55ce703705aa115101b38f2a3888bc22c2debed4'
        '6163736c66e8f8711bf004d3b8b3a072269dd1a2959b5b32cd092c904af778c75b280c8dfb0fce44fd20f6b4beb8e95bb96c8daa49658bf654794fa1e77fe8c4'
        '418e30a46010385166a7ca190381c7a9a8d24e36b2663bef3754ad70fa930a91baec4c0f1b1d5c18f5c9ca0045e68b8410f65134c75f504541bc8567350cb9d7'
        'c41b0d0f0d473684aabc55ce76944473e1edf272d05a301f07e2a1978b7d3e7f8bad05e87295eee489163158fb6809b0ce9be62feee7399cc08451825cb85b81'
        'e90e735db1c97a8fdbdac1345d5d703c0620f6c9de91fecd29b6d37f514fdd91ff2707324efce08822b86987b53040f2eb96546d9a9aecbe6dce21cd2d803c30')

pkgver() {
  cd klipper
  git describe --tags | sed 's/^v//'
}

build() {
  cd klipper
  python -m compileall klippy
  python klippy/chelper/__init__.py
}

#check() {
#  cd klipper
#  python scripts/test_klippy.py -d "${srcdir}/dict" -t test/ test/klippy/*.test
#}

package() {
  install -dm 755 "${pkgdir}"/opt/klipper
  cp -dr --no-preserve=ownership klipper/{config,docs,klippy,lib,scripts,src,Makefile} "${pkgdir}"/opt/klipper/
  python klipper/scripts/make_version.py arch > "${pkgdir}"/opt/klipper/klippy/.version

  install -Dm 644 klipper.service -t "${pkgdir}"/usr/lib/systemd/system/
  install -Dm 644 klipper.sysusers "${pkgdir}"/usr/lib/sysusers.d/klipper.conf
  install -Dm 644 klipper.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/klipper.conf
}

# vim: ts=2 sw=2 et:
