blob: c58cde246c763cfd6d58d31bc39ba0682315dcdf (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
#!/usr/bin/env bash
# AUR package script for MayaFlux-dev
# Maintainer: Ranjith Hegde <mayafluxcollective@proton.me>
pkgname=mayaflux-dev-bin
pkgver=0.4.0
pkgrel=2
pkgdesc="MayaFlux development build - A modern C++ framework for real-time graphics and audio"
arch=('x86_64' 'aarch64')
url="https://github.com/MayaFlux/MayaFlux"
license=('GPLv3')
depends=(
'llvm'
'llvm-libs'
'clang'
'cmake'
'pkg-config'
'glm'
'eigen'
'spirv-headers'
'spirv-tools'
'spirv-cross'
'vulkan-headers'
'vulkan-icd-loader'
'vulkan-tools'
'vulkan-utility-libraries'
'vulkan-validation-layers'
'wayland'
'wayland-protocols'
'libxkbcommon'
'dbus'
'ffmpeg'
'assimp'
'stb'
'hidapi'
'asio'
'freetype2'
'libutf8proc'
'fontconfig'
'nlohmann-json'
'libpipewire'
)
makedepends=(
'git'
)
optdepends=(
'doxygen: for documentation generation'
'vulkan-extra-layers: additional Vulkan layers'
'vulkan-extra-tools: additional Vulkan tools'
)
provides=('MayaFlux')
conflicts=('MayaFlux')
source=(
"MayaFlux-${pkgver}-dev-linux-arch.tar.gz::https://github.com/MayaFlux/MayaFlux/releases/download/v${pkgver}-dev/MayaFlux-${pkgver}-dev-linux-arch.tar.gz"
"MayaFlux-${pkgver}-dev-linux-arch.tar.gz::https://github.com/MayaFlux/MayaFlux/releases/download/v${pkgver}-dev/MayaFlux-${pkgver}-dev-linux-arch.tar.gz.sha256"
)
sha256sums=('SKIP' 'SKIP')
prepare() {
echo "Verifying package integrity..."
local expected_sha=$(cat "MayaFlux-${pkgver//_/-}-linux-arch.tar.gz.sha256")
local actual_sha=$(sha256sum "MayaFlux-${pkgver//_/-}-linux-arch.tar.gz" | cut -d' ' -f1)
echo "Expected SHA256: $expected_sha"
echo "Actual SHA256: $actual_sha"
if [[ "$expected_sha" != "$actual_sha" ]]; then
error "SHA256 verification failed!"
error "Expected: $expected_sha"
error "Actual: $actual_sha"
return 1
fi
echo "✅ SHA256 verification passed"
}
package() {
install -d "$pkgdir/usr/lib"
install -d "$pkgdir/usr/include"
install -d "$pkgdir/usr/bin"
install -d "$pkgdir/usr/share/MayaFlux"
install -d "$pkgdir/usr/share/licenses/$pkgname"
local extract_dir="${srcdir}/MayaFlux-${pkgver}-dev-extracted"
mkdir -p "$extract_dir"
tar -xzf "${srcdir}/MayaFlux-${pkgver}-dev-linux-arch.tar.gz" -C "$extract_dir"
[[ -d "$extract_dir/lib" ]] && cp -r "$extract_dir/lib/"* "$pkgdir/usr/lib/"
[[ -d "$extract_dir/include" ]] && cp -r "$extract_dir/include/"* "$pkgdir/usr/include/"
[[ -d "$extract_dir/bin" ]] && cp -r "$extract_dir/bin/"* "$pkgdir/usr/bin/"
[[ -d "$extract_dir/share" ]] && cp -r "$extract_dir/share/"* "$pkgdir/usr/share/"
if [[ -f "$extract_dir/LICENSE" ]]; then
install -Dm644 "$extract_dir/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
fi
if [[ -f "$extract_dir/README.md" ]]; then
install -Dm644 "$extract_dir/README.md" "$pkgdir/usr/share/MayaFlux/README.md"
fi
install -d "$pkgdir/etc/profile.d"
cat > "$pkgdir/etc/profile.d/mayaflux.sh" <<'EOF'
#!/bin/sh
export MAYAFLUX_ROOT="/usr"
export CMAKE_PREFIX_PATH="/usr:$CMAKE_PREFIX_PATH"
EOF
chmod 755 "$pkgdir/etc/profile.d/mayaflux.sh"
if [[ -f "$pkgdir/usr/lib/pkgconfig/MayaFlux.pc" ]]; then
sed -i 's|^prefix=.*|prefix=/usr|' "$pkgdir/usr/lib/pkgconfig/MayaFlux.pc"
fi
find "$pkgdir/usr/lib" -type f -name "*.so*" -exec chmod 755 {} \;
find "$pkgdir/usr/bin" -type f -exec chmod 755 {} \;
install -d "$pkgdir/etc/security/limits.d"
cat > "$pkgdir/etc/security/limits.d/50-mayaflux.conf" <<'EOF'
@mayaflux - rtprio 95
@mayaflux - memlock unlimited
@mayaflux - nice -19
EOF
}
post_install() {
if ! getent group mayaflux > /dev/null 2>&1; then
groupadd --system mayaflux
fi
echo "MayaFlux ${pkgver} installed."
echo ""
echo "To enable real-time audio scheduling, add your user to the mayaflux group:"
echo " sudo usermod -aG mayaflux \$USER"
echo "Then log out and back in."
echo ""
echo "Source /etc/profile.d/mayaflux.sh or restart your shell for environment variables."
}
post_upgrade() {
post_install
}
post_remove() {
groupdel mayaflux 2>/dev/null || true
rm -f /etc/security/limits.d/50-mayaflux.conf
echo "MayaFlux has been removed. You may want to clean up your environment variables."
echo "Remove or edit /etc/profile.d/mayaflux.sh if desired."
}
|