summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 60726aa07703ee5352ce7914435d14ab087e8239 (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
# Maintainer: bcoiner <x6ji7ar9 at anonaddy dot me>

pkgbase=asusctl-nosystemd
pkgname=(asusctl-nosystemd rog-control-center-nosystemd)
pkgver=6.1.12
pkgrel=1
pkgdesc="A control daemon, CLI tools, and a collection of crates for interacting with ASUS ROG laptops (with no SystemD)"
arch=('x86_64')
url="https://gitlab.com/asus-linux/asusctl"
license=('MPL-2.0')
makedepends=(clang cmake fontconfig git hicolor-icon-theme libayatana-appindicator libinput libusb rust seatd)
source=("git+https://gitlab.com/asus-linux/asusctl.git#tag=$pkgver")
sha256sums=('b09f27a6d906e942f17dc537391ab209bed25e1cc3d124a2be50474cbc701368')

_PROJECT=asusctl

prepare() {
  cd "${_PROJECT}"

  # Keep rust/cargo build-dependency management inside the build directory
  export CARGO_HOME="${srcdir}/cargo"

  # Follow Rust package guidelines
  ## https://wiki.archlinux.org/title/Rust_package_guidelines
  export RUSTUP_TOOLCHAIN=stable
  cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
  cd "${_PROJECT}"

  # Keep rust/cargo build-dependency management inside the build directory
  export CARGO_HOME="${srcdir}/cargo"

  # Follow Rust package guidelines
  ## https://wiki.archlinux.org/title/Rust_package_guidelines
  export RUSTUP_TOOLCHAIN=stable
  export CARGO_TARGET_DIR=target

  make build
}

_pick() {
  local p="$1" f d; shift
  for f; do
    d="$srcdir/$p/${f#$pkgdir/}"
    mkdir -p "$(dirname "$d")"
    mv "$f" "$d"
    rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
  done
}

package_asusctl-nosystemd() {
  pkgdesc="${pkgdesc/tools/CLI tools}"
  depends=(gcc-libs glibc hicolor-icon-theme libusb)
  conflicts=(gnome-shell-extension-asusctl-gnome asusctl)
  provides=(asusctl)
  install=asusctl.install
  optdepends=(
    'acpi_call: fan control'
    'supergfxctl: hybrid GPU control'
    'asusctltray: tray profile switcher'
    'rog-control-center-nosystemd: app to control asusctl'
  )

  cd "${_PROJECT}"
  export CARGO_HOME="${srcdir}/cargo"
  make DESTDIR="${pkgdir}" install

  _pick rogcc "${pkgdir}/usr/bin/rog-control-center" \
     "${pkgdir}/usr/share/applications/rog-control-center.desktop" \
     "${pkgdir}/usr/share/icons/hicolor/512x512/apps/rog-control-center.png" \
     "${pkgdir}/usr/share/rog-gui"
}

package_rog-control-center-nosystemd() {
  depends=(asusctl-nosystemd fontconfig freetype2 gcc-libs glibc hicolor-icon-theme libayatana-appindicator libinput libxkbcommon mesa seatd)
  conflicts=(rog-control-center)
  provides=(rog-control-center)
  pkgdesc="App to control asusctl"
  mv rogcc/* "${pkgdir}"
}