summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 3c91da6d95064b2c8ca252aa8330c7a50a254f3b (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
_commit="f01f599526784492bd892af943b3c2b08bdc4ac0"
_solarxr_commit="b0147eeffaa97a16400de174383c91be2ec31ab5"
_pkgname="slimevr-server"
pkgbase="${_pkgname}"
pkgname=(
  "slimevr-server"
  "slimevr-gui"
)
pkgver="18.1.0"
pkgrel="3"
pkgdesc="Server for SlimeVR Full Body Tracking System"
arch=("x86_64")
url="https://github.com/SlimeVR/SlimeVR-Server"
license=("MIT" "Apache-2.0")
makedepends=(
  "git"
  "pnpm"
  "npm"
  "rust"
  "libgit2"
  "gtk3"
  "webkit2gtk-4.1"
  "java-runtime-headless-openjdk=17"
)
depends=()
source=(
  "slimevr-server::git+${url}.git#commit=${_commit}"
  "solarxr-protocol::git+https://github.com/SlimeVR/SolarXR-Protocol.git#commit=${_solarxr_commit}"
  "slimevr-server-bin"
  "slimevr-server.service"
)
sha512sums=(
  "SKIP"
  "SKIP"
  "SKIP"
  "SKIP"
)
options+=(!lto)

prepare() {
  cd "${srcdir}/slimevr-server"
  git config submodule.solarxr-protocol.url "${srcdir}/solarxr-protocol"
  git -c protocol.file.allow=always submodule update
}

build() {
  cd "${srcdir}/slimevr-server"

  (
    # export LIBGIT2_NO_VENDOR=1
    pnpm install
    pnpm run skipbundler --config "$(./gui/scripts/gitversion.mjs)"
  )

  (
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    ./gradlew shadowJar
  )
}

package_slimevr-gui() {
  depends+=(
    "gtk3"
    "webkit2gtk-4.1"
    "java-runtime-headless-openjdk=17"
  )
  pkgdesc="GUI for SlimeVR Full Body Tracking System"

  install -Dm 755 \
    "${srcdir}/slimevr-server/target/release/slimevr" \
    "${pkgdir}/usr/bin/slimevr"

  install -Dm 644 \
    "${srcdir}/slimevr-server/gui/src-tauri/icons/icon.svg" \
    "${pkgdir}/usr/share/icons/slimevr.svg"

  install -Dm 644 \
    "${srcdir}/slimevr-server/gui/src-tauri/dev.slimevr.SlimeVR.desktop" \
    -t "${pkgdir}/usr/share/applications"

  sed -i '
    s~{{exec}}~/usr/bin/slimevr~g;
    s~{{icon}}~slimevr~g;
  ' "${pkgdir}/usr/share/applications/dev.slimevr.SlimeVR.desktop"
}

package_slimevr-server() {
  depends+=(
    "java-runtime-headless-openjdk=17"
  )
  pkgdesc="Server for SlimeVR Full Body Tracking System"

  install -Dm755 \
    "${srcdir}/slimevr-server-bin" \
    "${pkgdir}/usr/bin/slimevr-server"

  install -Dm644 \
    "${srcdir}/slimevr-server.service" \
    -t "${pkgdir}/usr/lib/systemd/user"

  install -Dm644 \
    "${srcdir}/slimevr-server/LICENSE-MIT" \
    "${srcdir}/slimevr-server/LICENSE-APACHE" \
    -t "${pkgdir}/usr/share/licenses/${_pkgname}"

  install -Dm644 \
    "${srcdir}/slimevr-server/gui/src-tauri/69-slimevr-devices.rules" \
    -t "${pkgdir}/usr/lib/udev/rules.d"

  install -Dm644 \
    "${srcdir}/slimevr-server/server/desktop/build/libs/slimevr.jar" \
    -t "${pkgdir}/usr/share/slimevr"
}