Build the service in a container, and fix what the target compiler found
The openlgtv NDK is a Linux toolchain with no macOS or Windows build, so
tools/build.sh could not produce a binary anywhere else. docker-build.sh
bakes the SDK into an image and compiles there; packaging and deploy stay
on the host, where the TV is reachable. The SDK ships aarch64 as well as
x86_64, so the image picks the one matching the daemon and Apple Silicon
builds natively rather than under emulation.
Cross-compiling for real turned up three things the host compiler did
not:
sink_hyperhdr_viz.c read p->width and p->height to format the error
message after free(p)
sink_hyperhdr.c an SDP connection line of 128 bytes cannot hold
"IN IP4 " plus a 127-byte host plus "/255", so a
long hostname would silently lose its TTL suffix
common/log.c the log body was sized to the whole ring line,
leaving nothing for the prefix; budget for it so
the bound is provable rather than left to
snprintf
A clean cross-compile is now warning-free, and readelf confirms the
design rule holds: luna-service2, glib, PmLogLib and libc, with no
libpulse or libasound.
Also: @webosose/ares-cli was pinned to ^3.0.0, which does not exist
(latest is 2.4.0), so npm install failed outright. build.sh now puts
node_modules/.bin on PATH so a local install is enough.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7529a60650
commit
3e4d0e17bc
@@ -17,6 +17,10 @@ set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
# `npm install` puts ares-cli here rather than on PATH, so a local install works
|
||||
# without also needing the global one.
|
||||
[ -d "$ROOT/node_modules/.bin" ] && PATH="$ROOT/node_modules/.bin:$PATH"
|
||||
|
||||
APP_ID=org.webosbrew.audiocap
|
||||
SERVICE_ID=$APP_ID.service
|
||||
BINARY=audiocap-service
|
||||
@@ -52,6 +56,11 @@ Download and unpack the buildroot NDK, then point WEBOS_SDK at it:
|
||||
\$HOME/arm-webos-linux-gnueabi_sdk-buildroot/relocate-sdk.sh
|
||||
|
||||
WEBOS_SDK=\$HOME/arm-webos-linux-gnueabi_sdk-buildroot ./tools/build.sh
|
||||
|
||||
The SDK only runs on Linux. On macOS or Windows, compile in a container
|
||||
instead and then come back here to package:
|
||||
|
||||
./tools/docker-build.sh && ./tools/build.sh package
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user