
SQLite开发团队启动了一项探索性专案,计画将现有建置系统从原本的GNU Autotools,转移至Autosetup。这项变更的目的是要提高系统的可维护性和稳定性,但由于新系统与现有配置方法存在一些差异,可能对部分应用的自动化建置流程产生影响。目前团队正在积极测试新方案,并持续收集回馈以决定最终实作。
SQLite从创立以来就使用GNU Autotools作为主要建置工具,由于其开源和灵活等特性,能够适应多数Unix-like平台和作业系统,但是随着SQLite应用逐渐扩展至各种嵌入式和企业环境,Autotools複杂的语法和外部相依需求,逐渐成为专案维护的阻碍,因此SQLite团队希望更换成更为简化的建置工具Autosetup,能够嵌入至专案原始码树中,维持建置的独立性和稳定性。
Autosetup是一个使用TCL语法的建置工具,内建轻量版的TCL直译器JimTCL,可用于不具备完整TCL安装的环境,由于SQLite团队长期以来测试和工具皆使用TCL,因此Autosetup也就成为理想的建置工具选择。
SQLite团队现在正探索迁移至Autosetup的可能性,以解决Autotools的维护困难。因为Autosetup的轻量特性,减少了建置系统的複杂性和开发人员负担,此外,将Autosetup直接嵌入到专案中,SQLite团队也就不用担心外部工具更新时所带来潜在的不相容问题。
而且相较于Autotools,Autosetup拥有更简单的语法和更快的执行速度,过去Autotools架构混合了GNU m4和POSIX Shell语法,而Autosetup仅使用TCL,使得建置流程对开发者更为友善。而且SQLite专案中原本相依于TCL的所有程序码生成步骤,现在都可以直接使用Autosetup提供的JimTCL完成,大幅减少建置过程的系统需求。
虽然Autosetup拥有不少优势,但是也产生一些新的问题,像是Autosetup主要针对POSIX标準开发,目前对部分非POSIX平台的支援尚未完全确认。SQLite团队正在评估对应方案,当新系统无法全面相容这些平台,可能会透过提供静态Makefile确保新系统的相容性。
另外,因为Autosetup和Autotools在解析和执行配置旗标的方式不同,部分建置选项需要重新命名以保持相同语义,虽然这些变更仅会影响少数自动化建置流程,但开发者仍需要调整脚本跟新系统相容。
SQLite团队正在测试Autosetup的适用性,以确保新系统能在相容性和长期维护性间取得平衡,目前团队尚未做出最终决定,将会根据测试结果决定是否正式迁移。