v0.0.88 - Add full static ARM64 build support for didactyl and c-relay with dynamic nostr lib resolution and --platform override

This commit is contained in:
Your Name
2026-03-18 19:34:33 -04:00
parent 90948989ac
commit 47bb5d76bc
4 changed files with 62 additions and 26 deletions

View File

@@ -68,6 +68,7 @@ COPY nostr_core_lib /build/nostr_core_lib/
RUN cd nostr_core_lib && \
chmod +x build.sh && \
sed -i 's/CFLAGS="-Wall -Wextra -std=c99 -fPIC -O2"/CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -Wall -Wextra -std=c99 -fPIC -O2"/' build.sh && \
sed -i 's/CC="aarch64-linux-gnu-gcc"/CC="gcc"/' build.sh && \
rm -f *.o *.a 2>/dev/null || true && \
./build.sh --nips=all
@@ -78,7 +79,10 @@ COPY Makefile /build/Makefile
# Build didactyl with full static linking (only rebuilds when src/ changes)
# Disable fortification to avoid __*_chk symbols that don't exist in MUSL
# Use conditional compilation flags based on DEBUG_BUILD argument
RUN if [ "$DEBUG_BUILD" = "true" ]; then \
RUN NOSTR_LIB=$(ls /build/nostr_core_lib/libnostr_core_*.a 2>/dev/null | head -1) && \
if [ -z "$NOSTR_LIB" ]; then echo "ERROR: nostr_core_lib .a not found"; exit 1; fi && \
echo "Using nostr library: $NOSTR_LIB" && \
if [ "$DEBUG_BUILD" = "true" ]; then \
CFLAGS="-g -O2 -DDEBUG"; \
STRIP_CMD="echo 'Keeping debug symbols'"; \
echo "Building with DEBUG symbols enabled (optimized with -O2)"; \
@@ -103,7 +107,7 @@ RUN if [ "$DEBUG_BUILD" = "true" ]; then \
src/tools/tool_skill.c src/tools/tool_nostr_post.c src/tools/tool_memory.c src/tools/tool_config.c src/trigger_manager.c \
src/prompt_template.c src/http_api.c src/setup_wizard.c src/mongoose.c src/debug.c \
-o /build/didactyl_static \
nostr_core_lib/libnostr_core_x64.a \
$NOSTR_LIB \
-lsecp256k1 \
$OPENSSL_LIBS \
$CURL_LIBS \

View File

@@ -55,11 +55,11 @@ Skills compose by adoption-list order (`10123`) and trigger tags carry runtime e
Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers.
## Current Status — v0.0.87
## Current Status — v0.0.88
**Active build — this project is barely working. Experiment at your own risk.**
> Last release update: v0.0.87Fix config_store d_tag use-after-free causing llm_config replacement failures
> Last release update: v0.0.88Add full static ARM64 build support for didactyl and c-relay with dynamic nostr lib resolution and --platform override
- Connects to configured relays with auto-reconnect and relay state transition logging
- Publishes configured startup events per relay as each relay becomes connected

View File

@@ -11,8 +11,19 @@ DOCKERFILE="$SCRIPT_DIR/Dockerfile.alpine-musl"
# Parse command line arguments
DEBUG_BUILD=false
if [[ "$1" == "--debug" ]]; then
DEBUG_BUILD=true
TARGET_PLATFORM=""
for arg in "$@"; do
case "$arg" in
--debug)
DEBUG_BUILD=true
;;
--platform=*)
TARGET_PLATFORM="${arg#*=}"
;;
esac
done
if [ "$DEBUG_BUILD" = true ]; then
echo "=========================================="
echo "Didactyl MUSL Static Binary Builder (DEBUG MODE)"
echo "=========================================="
@@ -61,24 +72,45 @@ DOCKER_CMD="docker"
echo "✓ Docker is available and running"
echo ""
# Detect architecture
ARCH=$(uname -m)
case "$ARCH" in
x86_64)
PLATFORM="linux/amd64"
OUTPUT_NAME="didactyl_static_x86_64"
;;
aarch64|arm64)
PLATFORM="linux/arm64"
OUTPUT_NAME="didactyl_static_arm64"
;;
*)
echo "WARNING: Unknown architecture: $ARCH"
echo "Defaulting to linux/amd64"
PLATFORM="linux/amd64"
OUTPUT_NAME="didactyl_static_${ARCH}"
;;
esac
# Detect architecture (or use explicit target platform override)
if [ -n "$TARGET_PLATFORM" ]; then
PLATFORM="$TARGET_PLATFORM"
case "$PLATFORM" in
linux/amd64)
OUTPUT_NAME="didactyl_static_x86_64"
;;
linux/arm64)
OUTPUT_NAME="didactyl_static_arm64"
;;
linux/arm/v7)
OUTPUT_NAME="didactyl_static_armv7"
;;
linux/arm/v6)
OUTPUT_NAME="didactyl_static_armv6"
;;
*)
OUTPUT_NAME="didactyl_static_custom"
;;
esac
else
ARCH=$(uname -m)
case "$ARCH" in
x86_64)
PLATFORM="linux/amd64"
OUTPUT_NAME="didactyl_static_x86_64"
;;
aarch64|arm64)
PLATFORM="linux/arm64"
OUTPUT_NAME="didactyl_static_arm64"
;;
*)
echo "WARNING: Unknown architecture: $ARCH"
echo "Defaulting to linux/amd64"
PLATFORM="linux/amd64"
OUTPUT_NAME="didactyl_static_${ARCH}"
;;
esac
fi
# Append _debug suffix to output name for debug builds
if [ "$DEBUG_BUILD" = true ]; then

View File

@@ -12,8 +12,8 @@
// Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros
#define DIDACTYL_VERSION_MAJOR 0
#define DIDACTYL_VERSION_MINOR 0
#define DIDACTYL_VERSION_PATCH 87
#define DIDACTYL_VERSION "v0.0.87"
#define DIDACTYL_VERSION_PATCH 88
#define DIDACTYL_VERSION "v0.0.88"
// Agent metadata
#define DIDACTYL_NAME "Didactyl"