|
1 | 1 | # Created by: damachin3 (damachine3 at proton dot me) |
2 | 2 | # Website: https://github.com/damachine/coolerdash |
3 | 3 |
|
4 | | -pre_install() { |
5 | | - echo "Checking for legacy files and performing migration cleanup..." 2>/dev/null |
6 | | - # Stop and disable service before install or update to prevent conflicts with plugin mode |
7 | | - if systemctl list-unit-files coolerdash.service 2>/dev/null || systemctl list-unit-files coolerdash.service 2>/dev/null; then |
8 | | - echo "Stopping coolerdash service..." 2>/dev/null |
9 | | - systemctl stop coolerdash.service 2>/dev/null |
10 | | - echo "Disabling coolerdash service (CoolerControl plugin mode preferred)..." 2>/dev/null |
11 | | - systemctl disable coolerdash.service 2>/dev/null |
12 | | - fi |
13 | | - |
14 | | - # Remove old systemd service file if it exists (migration from standalone to plugin mode) |
15 | | - if [ -f /etc/systemd/system/coolerdash.service ]; then |
16 | | - echo "Removing deprecated systemd service file..." 2>/dev/null |
17 | | - rm -f /etc/systemd/system/coolerdash.service 2>/dev/null |
18 | | - fi |
19 | | - |
20 | | - # Remove legacy installation directories if they exist |
21 | | - if [ -d /opt/coolerdash ]; then |
22 | | - echo "Removing legacy installation: /opt/coolerdash/" 2>/dev/null |
23 | | - rm -rf /opt/coolerdash 2>/dev/null |
24 | | - fi |
25 | | - |
26 | | - # Remove legacy config directory if it exists |
27 | | - if [ -d /etc/coolerdash ]; then |
28 | | - echo "Removing legacy config: /etc/coolerdash/" 2>/dev/null |
29 | | - rm -rf /etc/coolerdash 2>/dev/null |
30 | | - fi |
31 | | - |
32 | | - # Remove legacy config.ini and ui.html if they exist in plugin directory |
33 | | - if [ -f /etc/coolercontrol/plugins/coolerdash/config.ini ]; then |
34 | | - echo "Removing legacy config.ini..." 2>/dev/null |
35 | | - rm -f /etc/coolercontrol/plugins/coolerdash/config.ini 2>/dev/null |
36 | | - fi |
37 | | - if [ -f /etc/coolercontrol/plugins/coolerdash/ui.html ]; then |
38 | | - echo "Removing legacy ui.html..." 2>/dev/null |
39 | | - rm -f /etc/coolercontrol/plugins/coolerdash/ui.html 2>/dev/null |
40 | | - fi |
41 | | - if [ -f /usr/share/applications/coolerdash-settings.desktop ]; then |
42 | | - echo "Removing legacy coolerdash-settings.desktop..." 2>/dev/null |
43 | | - rm -f /usr/share/applications/coolerdash-settings.desktop 2>/dev/null |
44 | | - fi |
45 | | - |
46 | | - # Remove legacy user if it exists |
47 | | - if id -u coolerdash &>/dev/null; then |
48 | | - echo "Removing legacy coolerdash user..." 2>/dev/null |
49 | | - userdel -rf coolerdash 2>/dev/null || true |
50 | | - fi |
51 | | - |
52 | | - # Remove legacy symlinks in /bin/ and /usr/bin/ if they exist (migration from standalone) |
53 | | - if [ -L /bin/coolerdash ] || [ -f /bin/coolerdash ]; then |
54 | | - echo "Removing legacy symlink: /bin/coolerdash" |
55 | | - rm -f /bin/coolerdash |
56 | | - fi |
57 | | - if [ -L /usr/bin/coolerdash ] || [ -f /usr/bin/coolerdash ]; then |
58 | | - echo "Removing legacy symlink: /usr/bin/coolerdash" |
59 | | - rm -f /usr/bin/coolerdash |
60 | | - fi |
| 4 | +pkgname=coolerdash-git |
| 5 | +pkgver=2.1.4.r0.gabf6a17 |
| 6 | +pkgrel=1 |
| 7 | +provides=('coolerdash') |
| 8 | +replaces=('coolerdash') |
| 9 | +conflicts=('coolerdash') |
| 10 | +pkgdesc="Monitor telemetry data on an AIO liquid cooler with an integrated LCD display" |
| 11 | +arch=('x86_64') |
| 12 | +url="https://github.com/damachine/coolerdash" |
| 13 | +license=('MIT') |
| 14 | +depends=('cairo' 'coolercontrol' 'jansson' 'libcurl-gnutls' 'ttf-roboto') |
| 15 | +makedepends=('gcc' 'make' 'pkg-config' 'git') |
| 16 | +backup=('etc/coolercontrol/plugins/coolerdash/config.json') |
| 17 | +install=coolerdash.install |
| 18 | +_commit=abf6a17754f2c0230076a6e1a8d02012fe9257b4 |
| 19 | +source=("git+https://github.com/damachine/coolerdash.git#commit=${_commit}") |
| 20 | +sha256sums=('SKIP') # SKIP for git repo source builds |
| 21 | + |
| 22 | +pkgver() { |
| 23 | + cd "${srcdir}/coolerdash" |
| 24 | + git fetch --tags |
| 25 | + git describe --tags --long --match "v*" | sed -E 's/^v//; s/-([0-9]+)-g/\.r\1.g/; s/-/./g' |
61 | 26 | } |
62 | 27 |
|
63 | | -post_install() { |
64 | | - # Ensure plugin directory files have correct permissions |
65 | | - if [ -d /etc/coolercontrol/plugins/coolerdash ]; then |
66 | | - echo "Plugin directory permissions configured" |
67 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash 2>/dev/null || true |
68 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash/coolerdash 2>/dev/null || true |
69 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.md 2>/dev/null || true |
70 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/VERSION 2>/dev/null || true |
71 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/LICENSE 2>/dev/null || true |
72 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.toml 2>/dev/null || true |
73 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.png 2>/dev/null || true |
74 | | - chmod 666 /etc/coolercontrol/plugins/coolerdash/config.json 2>/dev/null || true |
75 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash/ui 2>/dev/null || true |
76 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/ui/* 2>/dev/null || true |
77 | | - fi |
| 28 | +build() { |
| 29 | + # Build inside the checked-out repository |
| 30 | + cd "${srcdir}/coolerdash" || return 1 |
78 | 31 |
|
79 | | - # Reload udev rules for USB power management |
80 | | - if [ -f /usr/lib/udev/rules.d/99-coolerdash.rules ]; then |
81 | | - echo "Reloading udev rules..." |
82 | | - udevadm control --reload-rules 2>/dev/null || true |
83 | | - udevadm trigger --subsystem-match=usb 2>/dev/null || true |
84 | | - fi |
85 | | - |
86 | | - # Create systemd drop-in for startup delay (allow shutdown.png to display) |
87 | | - mkdir -p /etc/systemd/system/cc-plugin-coolerdash.service.d |
88 | | - printf "[Service]\nExecStartPre=/bin/sleep 10\n" > /etc/systemd/system/cc-plugin-coolerdash.service.d/startup-delay.conf |
89 | | - chmod 644 /etc/systemd/system/cc-plugin-coolerdash.service.d/startup-delay.conf |
90 | | - echo "Systemd drop-in created: 10s startup delay" |
91 | | - |
92 | | - # Create/ensure shutdown notifier unit (uses printf to avoid cat heredocs) |
93 | | - printf "[Unit]\nDescription=CoolerDash helper daemon\nBindsTo=coolercontrold.service\nPartOf=coolercontrold.service\nAfter=coolercontrold.service\n\n[Service]\nType=simple\nExecStart=/bin/sleep infinity\nExecStop=/etc/coolercontrol/plugins/coolerdash/coolerdash --shutdown\nTimeoutStopSec=3\nRestart=no\n\n[Install]\nWantedBy=multi-user.target\n" > /etc/systemd/system/coolerdash-helperd.service |
94 | | - chmod 644 /etc/systemd/system/coolerdash-helperd.service || true |
95 | | - echo "Helper unit created: coolerdash-helperd.service" |
96 | | - |
97 | | - # Reload systemd manager configuration |
98 | | - systemctl daemon-reload |
99 | | - |
100 | | - # Create shutdown notifier unit |
101 | | - if systemctl list-unit-files coolerdash-helperd.service >/dev/null 2>&1; then |
102 | | - echo "Enabling and starting coolerdash-helperd.service..." |
103 | | - systemctl enable --now coolerdash-helperd.service || echo "Note: coolerdash-helperd.service enable/start failed. Please enable/start manually." |
104 | | - fi |
| 32 | + # Remove all previous tarball builds |
| 33 | + rm -rf coolerdash-*.pkg.* || true |
105 | 34 |
|
106 | | - # Restart CoolerControl to pick up the new plugin |
107 | | - if systemctl list-unit-files coolercontrold.service >/dev/null 2>&1; then |
108 | | - echo "Restarting CoolerControl service to load new plugin..." |
109 | | - systemctl restart coolercontrold.service || echo "Note: CoolerControl service restart failed. Please restart manually." |
| 35 | + # Clean any previous builds if a Makefile exists |
| 36 | + if [[ -f Makefile || -f GNUmakefile ]]; then |
| 37 | + make clean || true |
110 | 38 | fi |
111 | 39 |
|
112 | | - echo "================================================================" |
113 | | - echo "CoolerDash has been installed successfully!" |
114 | | - echo "================================================================" |
| 40 | + # Build |
| 41 | + make || return 1 |
115 | 42 | } |
116 | 43 |
|
117 | | -post_upgrade() { |
118 | | - # Ensure plugin directory files have correct permissions after upgrade |
119 | | - if [ -d /etc/coolercontrol/plugins/coolerdash ]; then |
120 | | - echo "Plugin directory permissions configured" |
121 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash 2>/dev/null || true |
122 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash/coolerdash 2>/dev/null || true |
123 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.md 2>/dev/null || true |
124 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/VERSION 2>/dev/null || true |
125 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/LICENSE 2>/dev/null || true |
126 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.toml 2>/dev/null || true |
127 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/*.png 2>/dev/null || true |
128 | | - chmod 666 /etc/coolercontrol/plugins/coolerdash/config.json 2>/dev/null || true |
129 | | - chmod 755 /etc/coolercontrol/plugins/coolerdash/ui 2>/dev/null || true |
130 | | - chmod 644 /etc/coolercontrol/plugins/coolerdash/ui/* 2>/dev/null || true |
131 | | - fi |
132 | | - |
133 | | - # Create systemd drop-in for startup delay (allow shutdown.png to display) |
134 | | - mkdir -p /etc/systemd/system/cc-plugin-coolerdash.service.d |
135 | | - printf "[Service]\nExecStartPre=/bin/sleep 10\n" > /etc/systemd/system/cc-plugin-coolerdash.service.d/startup-delay.conf |
136 | | - chmod 644 /etc/systemd/system/cc-plugin-coolerdash.service.d/startup-delay.conf |
137 | | - echo "Systemd drop-in updated: 10s startup delay" |
138 | | - |
139 | | - # Create/ensure shutdown notifier unit (uses printf to avoid cat heredocs) |
140 | | - printf "[Unit]\nDescription=CoolerDash helper daemon\nBindsTo=coolercontrold.service\nPartOf=coolercontrold.service\nAfter=coolercontrold.service\n\n[Service]\nType=simple\nExecStart=/bin/sleep infinity\nExecStop=/etc/coolercontrol/plugins/coolerdash/coolerdash --shutdown\nTimeoutStopSec=3\nRestart=no\n\n[Install]\nWantedBy=multi-user.target\n" > /etc/systemd/system/coolerdash-helperd.service |
141 | | - chmod 644 /etc/systemd/system/coolerdash-helperd.service || true |
142 | | - echo "Helper unit updated: coolerdash-helperd.service" |
143 | | - |
144 | | - # Reload systemd manager configuration |
145 | | - systemctl daemon-reload |
146 | | - |
147 | | - # Create shutdown notifier unit |
148 | | - if systemctl list-unit-files coolerdash-helperd.service >/dev/null 2>&1; then |
149 | | - echo "Enabling and starting coolerdash-helperd.service..." |
150 | | - systemctl enable --now coolerdash-helperd.service || echo "Note: coolerdash-helperd.service enable/start failed. Please enable/start manually." |
151 | | - fi |
| 44 | +check() { |
| 45 | + # Check in the checked-out repository |
| 46 | + cd "${srcdir}/coolerdash" || return 1 |
152 | 47 |
|
153 | | - # Restart CoolerDash to pick up the updated plugin |
154 | | - if systemctl list-unit-files cc-plugin-coolerdash.service >/dev/null 2>&1; then |
155 | | - echo "Restarting CoolerDash service to load updated plugin..." |
156 | | - systemctl restart cc-plugin-coolerdash.service || echo "Note: CoolerDash service restart failed. Please restart manually." |
| 48 | + # Verify that the binary was created successfully |
| 49 | + if [[ -f bin/coolerdash ]]; then |
| 50 | + echo "Build successful - binary created" |
| 51 | + else |
| 52 | + echo "ERROR: Binary not found" |
| 53 | + return 1 |
157 | 54 | fi |
158 | | - |
159 | | - echo "================================================================" |
160 | | - echo "CoolerDash has been upgraded successfully!" |
161 | | - echo "================================================================" |
162 | 55 | } |
163 | 56 |
|
164 | | -pre_remove() { |
165 | | - # Stop and disable service before uninstallation |
166 | | - if systemctl is-active --quiet coolerdash.service || systemctl is-enabled --quiet coolerdash.service; then |
167 | | - echo "Stopping coolerdash service..." |
168 | | - systemctl stop coolerdash.service |
169 | | - echo "Disabling coolerdash service" |
170 | | - systemctl disable coolerdash.service |
171 | | - fi |
172 | | - |
173 | | - # Stop and disable service before uninstallation |
174 | | - if systemctl is-active --quiet cc-plugin-coolerdash.service || systemctl is-enabled --quiet cc-plugin-coolerdash.service; then |
175 | | - echo "Stopping cc-plugin-coolerdash service..." |
176 | | - systemctl stop cc-plugin-coolerdash.service |
177 | | - echo "Disabling cc-plugin-coolerdash service" |
178 | | - systemctl disable cc-plugin-coolerdash.service |
179 | | - fi |
180 | | - |
181 | | - # Remove systemd drop-in directory |
182 | | - if [ -d /etc/systemd/system/cc-plugin-coolerdash.service.d ]; then |
183 | | - echo "Removing systemd drop-in directory..." |
184 | | - rm -rf /etc/systemd/system/cc-plugin-coolerdash.service.d || echo "Note: Failed to remove systemd drop-in directory. Please remove manually." |
185 | | - fi |
186 | | - |
187 | | - # Remove notify unit (stop, disable and remove) |
188 | | - if systemctl list-unit-files coolerdash-helperd.service >/dev/null 2>&1; then |
189 | | - echo "Stopping, disabling and removing coolerdash-helperd.service..." |
190 | | - systemctl stop --no-block coolerdash-helperd.service 2>/dev/null || true |
191 | | - systemctl disable --now coolerdash-helperd.service 2>/dev/null || true |
192 | | - rm -f /etc/systemd/system/coolerdash-helperd.service || echo "Note: Failed to remove coolerdash-helperd.service file. Please remove manually." |
193 | | - fi |
194 | | - |
195 | | - # Remove all installed users, files and directories |
196 | | - if id -u coolerdash &>/dev/null; then |
197 | | - echo "Removing legacy coolerdash user..." 2>/dev/null |
198 | | - userdel -rf coolerdash || true |
199 | | - fi |
200 | | - |
201 | | - # Remove old systemd service file if it exists (migration from standalone to plugin mode) |
202 | | - if [ -f /etc/systemd/system/coolerdash.service ]; then |
203 | | - echo "Removing deprecated systemd service file..." |
204 | | - rm -f /etc/systemd/system/coolerdash.service || echo "Note: Failed to remove coolerdash.service file. Please remove manually." |
205 | | - fi |
206 | | - |
207 | | - # Remove legacy installation directories if they exist |
208 | | - rm -f /usr/share/applications/coolerdash-settings.desktop |
209 | | - rm -f /bin/coolerdash |
210 | | - rm -f /usr/bin/coolerdash |
211 | | - rm -rf /opt/coolerdash |
212 | | - rm -rf /etc/coolerdash |
213 | | - |
214 | | - systemctl daemon-reload |
215 | | - |
216 | | - # Restart CoolerControl to remove the plugin |
217 | | - if systemctl list-unit-files coolercontrold.service >/dev/null 2>&1; then |
218 | | - echo "Restarting CoolerControl service to unload plugin..." |
219 | | - systemctl restart coolercontrold.service || echo "Note: CoolerControl service restart failed. Please restart manually." |
220 | | - fi |
221 | | - echo "================================================================" |
222 | | - echo "CoolerDash and all related files have been removed." |
223 | | - echo "================================================================" |
| 57 | +package() { |
| 58 | + # Plugin-mode installation: Everything in /etc/coolercontrol/plugins/coolerdash/ |
| 59 | + install -dm755 "${pkgdir}/etc/coolercontrol/plugins/coolerdash" |
| 60 | + install -m755 "${srcdir}/coolerdash/bin/coolerdash" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/coolerdash" |
| 61 | + install -m644 "${srcdir}/coolerdash/README.md" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/README.md" |
| 62 | + install -m644 "${srcdir}/coolerdash/VERSION" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/VERSION" |
| 63 | + install -m644 "${srcdir}/coolerdash/LICENSE" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/LICENSE" |
| 64 | + install -m644 "${srcdir}/coolerdash/CHANGELOG.md" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/CHANGELOG.md" |
| 65 | + install -m666 "${srcdir}/coolerdash/etc/coolercontrol/plugins/coolerdash/config.json" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/config.json" |
| 66 | + |
| 67 | + # Create ui directory first with correct permissions |
| 68 | + install -dm755 "${pkgdir}/etc/coolercontrol/plugins/coolerdash/ui" |
| 69 | + install -m644 "${srcdir}/coolerdash/etc/coolercontrol/plugins/coolerdash/ui/index.html" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/ui/index.html" |
| 70 | + install -m644 "${srcdir}/coolerdash/etc/coolercontrol/plugins/coolerdash/ui/cc-plugin-lib.js" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/ui/cc-plugin-lib.js" |
| 71 | + install -m644 "${srcdir}/coolerdash/images/shutdown.png" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/shutdown.png" |
| 72 | + install -m644 "${srcdir}/coolerdash/etc/coolercontrol/plugins/coolerdash/manifest.toml" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/manifest.toml" |
| 73 | + |
| 74 | + # Substitute VERSION placeholder in manifest.toml |
| 75 | + sed -i "s/{{VERSION}}/${pkgver}/g" "${pkgdir}/etc/coolercontrol/plugins/coolerdash/manifest.toml" |
| 76 | + |
| 77 | + # Manual page |
| 78 | + install -Dm644 "${srcdir}/coolerdash/man/coolerdash.1" "${pkgdir}/usr/share/man/man1/coolerdash.1" |
| 79 | + |
| 80 | + # Desktop shortcut for settings UI |
| 81 | + install -Dm644 "${srcdir}/coolerdash/etc/applications/coolerdash.desktop" "${pkgdir}/usr/share/applications/coolerdash.desktop" |
| 82 | + |
| 83 | + # USB power management udev rule for |
| 84 | + install -Dm644 "${srcdir}/etc/udev/rules.d/99-coolerdash.rules" "${pkgdir}/usr/lib/udev/rules.d/99-coolerdash.rules" |
| 85 | + |
| 86 | + # Application icon |
| 87 | + install -Dm644 "${srcdir}/coolerdash/etc/icons/coolerdash.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/coolerdash.svg" |
224 | 88 | } |
0 commit comments