summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 073495ae69c34668ed33ea27c1efbae472582a2b (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
120
121
122
123
124
125
126
127
128
129
130
# 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.90
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"
_commit=3bb15049bf78a25da77ede27681317da167acb60  # tags/20.04.90^0
source=(
  "git+https://github.com/pop-os/system76-driver.git#commit=${_commit}"
  'cli.patch'
  'wayland.patch'
  'actions.patch')
sha256sums=('81df865a8a0adedc7d99d4360a1ee3f88fbc6384bfa7ce05a8941f70f77f9778'
            'ef027346c439561dc01f906ae7bd961100aedf9125fd86bb0eb89a87b683fdc3'
            '2ffbd813744c0b99416947a2755767767af434758aa20dcfafefb49fb367d5d3'
            '3ade740c1681f8f33ef78e1e6c087e4002d14c888d7a5bf6bfbeb2aa70111119')

pkgver() {
  cd "$pkgname"
  git describe --tags | sed 's/-/+/g'
}

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 xhost for GUI apps on Wayland
  patch --no-backup-if-mismatch -Np1 -i "$srcdir/wayland.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 -Dm755 "$pkgname-pkexec" -t "$pkgdir/usr/bin/"

  # 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 -m755 system76-{nm-restart,thunderbolt-reload} "$pkgdir/usr/lib/$pkgname/"
  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/"
}