如何让已过时的软件包重新纳入未来的Stack LTS快照?
当然有标准流程啦,下面一步步给你理清楚:
先确认软件包的适配性与可维护性
LTS快照核心是稳定,所以首先得确保你的包不是真的“被淘汰”,只是版本没跟上。先把包更新到能兼容目标LTS对应的GHC版本,调整cabal文件里的依赖约束,保证它能和当前LTS里的其他包和平共处。另外,得确认包本身没有未修复的严重bug,维护状态也还ok——毕竟没人愿意把一个没人管的包放进稳定快照里。提交PR到Stackage的curator仓库
Stackage的包收录规则都在stackage-curator仓库里。找到你想加入的目标LTS系列对应的配置文件(比如lts-21.x相关的),把你的包添加到允许列表,或者更新它的版本限制。提交PR的时候一定要写清楚理由:比如这个包是某个生态里的刚需,你已经验证过它能在目标LTS环境下正常构建,或者它的更新解决了之前的兼容性问题。过审自动化测试与人工审核
PR提交后,Stackage的CI会自动跑一遍构建测试,检查你的包能不能在目标LTS的环境里顺利编译、通过测试用例。要是测试失败,你得根据日志排查问题——可能是依赖没调好,也可能是包本身的代码需要适配新的GHC版本。等测试通过后,Stackage的维护团队会人工审核你的PR,评估这个包的价值、稳定性,以及会不会给整个LTS快照带来依赖冲突之类的问题。等待下一次LTS快照更新
如果PR被合并,你的包就会被纳入下一轮的LTS快照更新。LTS一般几周更一次,所以等着新版本发布就行啦。
另外提个小提醒:如果你的包之前是因为依赖冲突被排除的,可能得先和冲突的依赖包维护者沟通,调整版本兼容,或者在PR里给出充分的理由,说服维护者添加例外规则——这种情况得把兼容性问题讲得明明白白才行。
内容的提问来源于stack exchange,提问作者Damian Nadales

