全屏滑条统一路径+对比色(112/115) + 字体索引+查列表+丢失降级(113) + 文档刷新(114) + svcd CLI文档+mips-repo拆bins/mpk(116)

This commit is contained in:
MeowOS Dev committed 2026-08-30 14:14:30 +08:00
1 parent b75ecce5de
commit 19a001f007
22 files changed
+666 -129

No files matched your search

+71
View File
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
#
# build.sh — 交叉编译 Apple mDNSResponder 的 POSIX 精简变体 SAResponder(mipsel-linux-muslsf,静态)
#
# 目标架构 : mipsel (MIPS32r2 little-endian), musl, 静态链接, 无 glibc 依赖
# 交叉编译器: zig (目标 mips-linux-musl / mipsel-linux-musleabi),由 ~/Project/R3ProII/.tools/zig-mipsel-cc 包装
# 产物 : bin/mdnsd = SAResponder (mDNSResponderPosix) —— 本脚本构建,无 UDS/IPC 的精简响应器
# bin/mdnsd.bin = 完整 mdnsd 守护进程(上一轮产物,作为对照保留,需重编译见文件尾注释)
# 用途 : MeowOS (R3 Pro II) 板载 mDNS 响应器,回应 .local 查询
#
# 用法 : ./build.sh # 默认构建 SAResponder → bin/mdnsd
#
# 可复现性 : 源码按固定 commit SHA 下载(codeload sha 方式),产物大小/校验值稳定。
set -euo pipefail
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
BIN_DIR="$REPO_DIR/bin"
WORK="$REPO_DIR/.build"
# ---- 工具链(本机实际路径;zig-mipsel-cc 内部也用 $HOME/Project/R3ProII/.tools)----
ZIGCC="${ZIGCC:-$HOME/Project/R3ProII/.tools/zig-mipsel-cc}"
# ---- 固定源码版本:apple-oss-distributions/mDNSResponder 2881.0.25 ----
MDNS_SHA="${MDNS_SHA:-d4658af3f5f291311c6aee4210aa6d39bda82bbe}"
MDNS_VER="${MDNS_VER:-2881.0.25}"
TARBALL_URL="https://codeload.github.com/apple-oss-distributions/mDNSResponder/tar.gz/${MDNS_SHA}"
TARBALL="$WORK/mDNSResponder-${MDNS_VER}.tar.gz"
SRCDIR="$WORK/src"
mkdir -p "$BIN_DIR" "$WORK"
echo "==> [1/4] 获取源码 mDNSResponder-$MDNS_VER (commit ${MDNS_SHA:0:12})"
if [ ! -f "$TARBALL" ]; then
curl -fsSL --retry 4 --retry-all-errors -o "$TARBALL" "$TARBALL_URL"
fi
gzip -t "$TARBALL" >/dev/null 2>&1 || { echo "错误: 源码包校验失败"; exit 1; }
rm -rf "$SRCDIR"
mkdir -p "$SRCDIR"
tar xzf "$TARBALL" -C "$SRCDIR" --strip-components=1
echo "==> [2/4] 交叉编译 SAResponder (zig: mipsel-linux-musleabi, -Os -static, tls=no)"
cd "$SRCDIR/mDNSPosix"
# 说明:
# - os=linux : 选定 Linux 平台分支 (CFLAGS_OS)
# - tls=no : 关闭 TLS 支持,避免链接 mbedtls (嵌入式设备不需要)
# - CC/LD=$ZIGCC : 强制 zig 交叉编译器,不用宿主 gcc
# - CFLAGS="-Os -static" : -Os 体积优化 + 静态链接;-Wno-date-time 关掉 zig/clang
# 默认的 -Werror -Wdate-time (源码用了 __DATE__/__TIME__ 宏)
# - LINKOPTS="-s" : 链接时直接 strip 符号表 + 调试信息,产出部署版。
# 注意 SAResponder 的链接规则里没有 $(STRIP) $@ 这一行,
# 唯一的 strip 来源就是这个 -s(勿依赖 STRIP=true)
# - SAResponder 目标 : 无 UDS/IPC 的独立响应器,产物 build/prod/mDNSResponderPosix
make os=linux tls=no \
CC="$ZIGCC" CFLAGS="-Os -static -Wno-date-time" \
LD="$ZIGCC" LINKOPTS="-s" STRIP=true SAResponder
echo "==> [3/4] 放置产物 $BIN_DIR/mdnsd (SAResponder)"
install -m 755 build/prod/mDNSResponderPosix "$BIN_DIR/mdnsd"
echo "==> [4/4] 校验"
file "$BIN_DIR/mdnsd"
echo "--- 体积 (静态部署版, strip 后) ---"
ls -l "$BIN_DIR/mdnsd"
echo "字节数: $(stat -c %s "$BIN_DIR/mdnsd")"
echo "MD5 : $(md5sum "$BIN_DIR/mdnsd" | cut -d' ' -f1)"
echo "构建完成: $BIN_DIR/mdnsd"
echo
echo "提示: bin/mdnsd.bin 为上一轮的完整 mdnsd 守护进程(1,018,144 B, md5 fcb0a8ae5ad5696253a6ec56b3e585e6),"
echo " 仅作对照保留。如需重编译完整 mdnsd 放到 mdnsd.bin,改目标为 Daemon 即可:"
echo " make os=linux tls=no CC=\"\$ZIGCC\" CFLAGS=\"-Os -static -Wno-date-time\" LD=\"\$ZIGCC\" LINKOPTS=\"-s\" Daemon"
echo " install -m 755 build/prod/mdnsd \"$BIN_DIR/mdnsd.bin\""