summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: adba2a64be32dc6ab735fbc35ccfdf90b618bd69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Maintainer: Mark Wagie <mark dot wagie at proton dot me>
# Contributor: ava1ar <mail(at)ava1ar(dot)me>
# Contributor: Corey Hinshaw <corey(at)electrickite(dot)org>
pkgname=system76-driver
pkgver=20.04.107
pkgrel=1
pkgdesc="Universal driver for System76 computers"
arch=('any')
url="https://github.com/pop-os/system76-driver"
license=('GPL-2.0-or-later')
depends=(
  'at'
  'dmidecode'
  'ethtool'
  'gtk3'
  'libnotify'
  'lm_sensors'
  'pciutils'
  'polkit'
  'python-cffi'
  'python-dbus'
  'python-distro'
  'python-evdev'
  'python-gobject'
  'python-pynacl'
  'python-systemd'
  'python-xlib'
  'system76-firmware-daemon'
  'usbutils'
  'wireless_tools'
)
makedepends=(
  'git'
  'python-build'
  'python-installer'
  'python-pyflakes'
  'python-setuptools'
  'python-wheel'
)
optdepends=(
  'firmware-manager: Manage System76 firmware updates via standalone application'
  'grub: Required to apply kernel parameters'
  'pulseaudio: To apply microphone fix'
  'system76-dkms: Control hotkeys and fan on certain System76 laptops'
  'system76-acpi-dkms: Provides the system76_acpi in-tree driver (only for (<5.16))'
  'system76-io-dkms: Enable System76 I/O daughterboard'
  'system76-oled: Control brightness on OLED displays'
  'system76-power: System76 Power Management'
  'xorg-xhost: To enable GUI applications on Wayland'
  'xorg-xbacklight: To use the backlight service'
)
checkdepends=(
  'python-pytest'
)
install="$pkgname.install"
source=(
  "git+https://github.com/pop-os/system76-driver.git#tag=$pkgver"
  'cli.patch'
  'actions.patch')
sha256sums=('5fba0d8e2d23cd47a640e3bc840aaf1e984472c397525543a6a4bd56efec96a0'
            'ef027346c439561dc01f906ae7bd961100aedf9125fd86bb0eb89a87b683fdc3'
            '3ade740c1681f8f33ef78e1e6c087e4002d14c888d7a5bf6bfbeb2aa70111119')

prepare() {
  cd "$pkgname"

  # patch for cli version - enable override vendor/model via /etc/system76-daemon.json
  patch --no-backup-if-mismatch -Np1 -i "$srcdir/cli.patch"

  # Use mkinitcpio instead of initramfs-tools
  patch --no-backup-if-mismatch -Np1 -i "$srcdir/actions.patch"

  # Force Composition Pipeline no longer necessary
  sed -i '/            actions.nvidia_forcefullcompositionpipeline,/d' \
    system76driver/products.py

  # Blacklisting nvidia_i2c accomplishes nothing
  sed -i '/           actions.blacklist_nvidia_i2c,/d' \
    system76driver/products.py
}

build() {
  cd "$pkgname"
  python -m build --wheel --no-isolation
}

check() {
  cd "$pkgname"
  pytest system76driver/tests || :
}

package() {
  cd "$pkgname"
  python -m installer --destdir="$pkgdir" dist/*.whl

  # Install daemons and executables
  install -Dm755 system76-{daemon,user-daemon} -t "$pkgdir/usr/lib/$pkgname/"

  # Install systemd unit files
  # Note: system76-driver* service files shortened to system76*
  install -Dm644 "debian/$pkgname.service" \
    "$pkgdir/usr/lib/systemd/system/system76.service"

  # Install scripts and configuration
  install -Dm755 system76-{nm-restart,thunderbolt-reload,virtual-hub} -t \
    "$pkgdir/usr/lib/systemd/system-sleep/"
  install -Dm644 "com.system76.pkexec.$pkgname.policy" -t \
    "$pkgdir/usr/share/polkit-1/actions/"

  # Install application launchers
  install -Dm644 system76-user-daemon.desktop -t "$pkgdir/etc/xdg/autostart/"

  # Create /var/lib/system76-driver directory for brightness settings saving
  install -d "$pkgdir/var/lib/$pkgname"

  # Remove tests
  local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
  rm -rf "${pkgdir}${site_packages}/system76driver/tests/"
}