|
root / base / conky
conky Plain Text 116 lines 5.0 KB
  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
#!/bin/sh
# Build script for conky (CMake, Ninja generator). RISKY per task brief:
# conky's native stats backend is Linux/BSD/Solaris-specific and illumos is
# not an upstream-supported OS name (it only recognizes "SunOS").
#
# GOOD NEWS: conky already ships a real Solaris/illumos kstat-based stats
# backend (src/data/os/solaris.cc, gated on OS_SOLARIS, which is set from
# `CMAKE_SYSTEM_NAME MATCHES "SunOS"`). Hammerhead's uname -s is
# "Hammerhead", not "SunOS", so that gate never fires and CMake instead
# hits ConkyPlatformChecks.cmake's final `if(NOT OS_LINUX AND NOT ...)
# message(FATAL_ERROR "platform not supported")`. Patch the OS_SOLARIS
# gate to also match "Hammerhead" (see patches/001-illumos-os-detect.patch
# for the readable diff) so the REAL native kstat backend builds - the
# M3 config's ${exec}-based widgets don't strictly need this, but it's a
# strictly better outcome than a stub, and Hammerhead does ship libkstat.
set -e
cd "$SRCDIR"

sed -i \
    -e 's/if(CMAKE_SYSTEM_NAME MATCHES "SunOS")/if(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")/' \
    -e 's/else(CMAKE_SYSTEM_NAME MATCHES "SunOS")/else(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")/' \
    -e 's/endif(CMAKE_SYSTEM_NAME MATCHES "SunOS")/endif(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")/' \
    cmake/ConkyPlatformChecks.cmake

# solaris.cc is missing get_battery_power_draw() - every OTHER platform
# backend (linux.cc, freebsd.cc, netbsd.cc, haiku.cc, darwin.mm) implements
# it, but upstream conky's Solaris/illumos backend never got battery-draw
# support (real Solaris/illumos servers rarely have batteries). common.cc
# calls it unconditionally regardless of platform -> link failure
# ("undefined reference to get_battery_power_draw"). Add the same
# "not implemented" stub every other unsupported-metric function in this
# file already uses (get_battery_short_status, get_acpi_fan, ...).
cat >> src/data/os/solaris.cc <<'EOF'

void get_battery_power_draw(char *buffer, unsigned int n, const char *bat) {
  /* Not implemented - illumos/Solaris kstat has no standard battery
   * power-draw metric; real servers rarely have batteries. */
  (void)bat;
  if (buffer && n > 0) memset(buffer, 0, n);
}
EOF

# Same Platform-module gotcha as base/tint2 and base/libjpeg-turbo: CMake
# has no Platform/Hammerhead.cmake, so map it onto the (real) SunOS module
# for shared-lib/UNIX conventions.
mkdir -p "$SRCDIR/.cmake/Platform"
echo 'include(Platform/SunOS)' > "$SRCDIR/.cmake/Platform/Hammerhead.cmake"

export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig:/usr/lib/pkgconfig:$PKG_CONFIG_PATH"

# -DRELEASE=ON: cmake/Conky.cmake only shells out to `git rev-parse` (for a
# -pre-<sha> dev version string) when RELEASE is unset; the tarball has no
# .git and Hammerhead has no git binary yet, so this is a hard
# `message(FATAL_ERROR "Unable to find program 'git'")` without it.
cmake -B build -G Ninja \
    -DCMAKE_MODULE_PATH="$SRCDIR/.cmake" \
    -DCMAKE_PREFIX_PATH="$PREFIX" \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX="$PREFIX" \
    -DCMAKE_INSTALL_RPATH="$PREFIX/lib" \
    -DCMAKE_C_FLAGS="-D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS -fpermissive -fcommon" \
    -DCMAKE_CXX_FLAGS="-D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS" \
    -DBUILD_TESTING=OFF \
    -DBUILD_X11=ON \
    -DBUILD_LUA_CAIRO=ON \
    -DBUILD_WLAN=OFF \
    -DBUILD_CURL=OFF \
    -DBUILD_IRC=OFF \
    -DBUILD_HTTP=OFF \
    -DBUILD_ICAL=OFF \
    -DBUILD_NCURSES=OFF \
    -DBUILD_DOCS=OFF \
    -DBUILD_I18N=OFF \
    -DRELEASE=ON

ninja -C build -j${JOBS:-1}
DESTDIR="$PKGDIR" ninja -C build install
# conky - lightweight system monitor for X (via ${exec} calls to illumos
# tools in the M3 config; conky's own native Solaris/kstat backend is also
# enabled here since illumos already carries one - see build.sh)
# https://github.com/brndnmtthws/conky

[package]
name = "conky"
version = "1.24.2"
release = 1
description = "Lightweight system monitor for X11"
url = "https://github.com/brndnmtthws/conky"
license = "GPL-3.0-or-later"
maintainer = "Chris Tusa <chris.tusa@leafscale.com>"
arch = "x86_64"

[dependencies]
runtime = ["libX11", "libXext", "libXdamage", "libXinerama", "libXft", "cairo", "lua"]
build = ["libX11", "libXext", "libXdamage", "libXinerama", "libXft", "cairo", "lua"]

[[source]]
file = "conky-1.24.2.tar.gz"
urls = ["https://github.com/brndnmtthws/conky/archive/refs/tags/v1.24.2.tar.gz"]
checksum = "1366b6efcee2cd2c56e5d3430c9d8a1f16d6fef76c5560ff1d8f3fc59dd23959"

[build]
parallel = true
--- a/cmake/ConkyPlatformChecks.cmake
+++ b/cmake/ConkyPlatformChecks.cmake
@@
-if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
+if(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")
   set(OS_SOLARIS true)
   set(conky_libs ${conky_libs} -lkstat)
-else(CMAKE_SYSTEM_NAME MATCHES "SunOS")
+else(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")
   set(OS_SOLARIS false)
-endif(CMAKE_SYSTEM_NAME MATCHES "SunOS")
+endif(CMAKE_SYSTEM_NAME MATCHES "SunOS" OR CMAKE_SYSTEM_NAME MATCHES "Hammerhead")