第三方软件与归属

来源

依赖下载身份由 configs/dependencies.lock.json 给出,源码子模块由 .gitmodules 和 gitlink 固定。fetch 校验摘要;原生生产目标只消费已验证缓存。 Linux 6.12 Kbuild/Kconfig 的来源与逐文件摘要见 scripts/kbuild-source.json。 不能直接修改上游引擎来绕过项目边界。

make fetch-check 检查锁定下载地址的可用性,不比较上游版本。 依赖升级需要另行核对对应 Alpine 仓库索引或上游正式发布,并同步版本、 下载地址、SHA256、补丁和构建适配中的版本信息。APK 同时验证官方签名; 运行库与开发包采用匹配版本,升级后重新检查构建与运行行为。

当前 GRUB 2.16 的 EFI 路径使用 GOP;上游已移除仅用于旧固件的 UGA 支持, 镜像模块清单不再请求 efi_uga。Legacy BIOS 的引导路径保持独立。

musl、BusyBox、GRUB、认证库等保留各自原生构建与 移植边界。目标程序与开发 SDK 的 staging 不可混用。上游 README、许可证、 COPYING、归属和字体许可是来源资料,保留原文,不属于待清理的过程报告。

musl 的互斥锁属性探测补丁将内核缺少 PI futex 的 ENOSYS 转换为 POSIX 的 ENOTSUP,以便 PulseAudio 等调用者回退到普通互斥锁。 该补丁不伪装成已实现优先级继承,也不改变其他 futex 错误。补丁及摘要由 依赖锁管理;已有镜像需要重新构建 musl 和系统包才会取得此修正。

ReliefPlayer 的 MP4 解码使用官方 FFmpeg 8.1.3 源码,以 LGPL 配置构建 avformat、avcodec、avutil、swresample 和 swscale。 源码 tag、commit、归档摘要和许可证由依赖锁固定;构建使用独立的 -reliefplayer 库名和 SONAME,避免与用户安装的完整 FFmpeg 运行库发生文件及提供者冲突。 只将选中的播放器所需运行库与 LGPL 原文装入 reliefos-media-codecs 包, 不向镜像发布 FFmpeg 命令行程序或开发头文件。

移植与打包

添加依赖时同步获取锁、配置/组件、Kbuild 适配、运行路径、包归属、 动态库依赖、桌面入口及许可证。不要仅为安装成功关闭上游验证。 标准控制台工具没有必要伪装成自研图形应用或分配桌面图标。 上游源码修订先在其仓库提交并推送,再更新父仓引用。

预编译基础依赖

sl、ncurses、zlib、libpng、SQLite 和 mbedTLS 3 使用 Alpine v3.24 x86_64 的 原始签名 APK;不再初始化对应的六个源码子模块。准确版本与 SHA256 均在依赖锁中。 运行时 APK 经过 upstream-apk 校验;runtime-development 仅从锁定且通过 官方签名校验的运行、dev 和 static 包暂存匹配的头文件与库,不将开发树覆盖到来宾。 生产构建离线消费缓存,缺包时先执行 make fetch。

libreliefos.so.2 和 libleonos.so.2 通过 ELF NEEDED 引用独立的 PNG、zlib、 mbedTLS 库。所有使用方采用 mbedtls3-dev 的配置头;不能继续定义旧的 ALT 配置, 也不能混用 main 仓库的 mbedTLS 4.x。时钟、熵和线程接口由官方库经 musl/内核获取, 证书链、域名、有效期验证继续生效。

ReliefMail 链接标准 libsqlite3.so.0,不再单独编译 amalgamation 或旧的 sqlite.so.3 自定义 VFS。数据库继续使用 DELETE journal、FULL synchronous、 foreign_keys,并显式设置 mmap_size=0。扩展库的厂商私有符号不是稳定 ABI, 需要使用它们的外部应用应针对独立库及同版本头文件重新构建。

component:sl、component:ncurses、component:sqlite 锁特性由镜像的 etc/reliefos/apk-components 选择,保留 BUILD/IMAGE 的组件约束;运行库的 基础依赖在控制台和桌面配置中均可用。命令和库由官方包直接提供,不生成本地 包装包、注册表包装入口或迁移说明载荷。离线更新器迁移旧 world 请求并卸载旧包, 保留独立的许可证文本。许可证在 resources/licenses, SDK 另带原始 .PKGINFO 记录;源码和构建配方可从对应 Alpine aports 获取。

目标 ABI 使用实际 SDK 在 Linux/QEMU 验证。带 ASan 的 glibc 宿主测试不能链接 musl 静态归档,因此 host-runtime-development 从锁定的同版本 SQLite/mbedTLS 发布归档 构建原生测试库(使用官方配置);该目标仅属于测试,不参与系统、SDK 或发行包构建。 可通过 RELIEFOS_TEST_DEP_ROOT 指向其他 O 的 host/runtime-development。