我是hackage上的程序包的维护人员,lrucache。我最近收到了为Binary
和NFData
添加实例的功能请求。这些都是有用的东西,原则上,我对这些实例没有任何问题。如何处理添加新程序包相关性的功能请求
但是,它们都引入了新的包依赖关系,并且我想尽可能地减少包的依赖关系列表。有一个理智的方式来处理这个问题吗?可能有超过20种不同的包提供有用的类型类,lrucache
中的数据结构可以实现,并从中受益。
显然,将它们全部添加为依赖关系是一个非启动器。但还有什么可以做的?
我可以将标志添加到lrucache.cabal中,以便编译各种实例。这可以起到最小化依赖列表的作用,除非你需要。但是在现实世界中这很可怕,因为你不能在依赖build的部分中指定构建标志。因此,您可以依赖具有特定标志的包,但不指定该依赖关系。这很快就会降低到接近无用的程度。
我可以创建一堆孤儿实例包。这具有允许在依赖于构建的部分中指定对这些实例的依赖性的优点。它的主要缺点是增加了大量额外的软件包,并需要将它们作为单独的软件包进行维护。
我还能做什么?什么是正确的做法?
至少,“孤立实例包”方法似乎是一种常见策略。正确的做法可能是创造更好的依赖管理,但是...... –
@C。 A. McCann,当我使用'./configure --enable-Z'时,我个人不喜欢它。我喜欢简单的事情 - 安装标记为已安装的软件包,而不是“它安装了选项X和Y但不是Z”。也许Hackage可以更好地组织孤立实例包,但我认为它们在概念上并不合法。 – gatoatigrado
@gatoatigrado:我同意。像我提到的那样,Cabal更好地组织它们也可以称为“更好的依赖管理”,所以请随时发明它。 :]我不确定实施这样的系统会遇到什么障碍。 –