在 mingw/pacman 上,为什么 harfbuzz 需要 glib2,而 glib2 又需要 python?

在 mingw/pacman 上,为什么 harfbuzz 需要 glib2,而 glib2 又需要 python?

我正在从 pacman 安装 SFML,它需要 freetype,但我遇到了 freetype 和 harfbuzz 之间的严重循环依赖,这又是一个问题。

我的主要问题是关于这个依赖链:

Freetype -> harfbuzz -> glib2 -> python -> sqlite 等

$ pactree -s mingw-w64-x86_64-sfml输出一棵非常大的树。我以为 freetype 是一个轻量级库……

我想要 sfml,最后用的是 python 和 sqlite,安装量达到 350MB。

这正常吗?

我不太清楚 harfbuzz 或 glib 是如何编写的,但这些依赖关系似乎超出了范围。

答案1

FreeType 使用 HarfBuzz 作为“改进的 OpenType 字体自动提示”的塑造器。这对于基本的 FreeType 操作并非严格要求,但是否使用它是一个编译时选择。

HarfBuzz 不使用 GLib 通用运行时很多,但它似乎导入了 GLib 提供的 Unicode 规范化函数。

(另外,附加的 CLI 工具(例如“hb-view”或“hb-shape”)也是使用 GLib 提供的函数编写的,用于字符串操作、UTF-8 解码等。这些工具不是基本操作所必需的,但每个发行版都可以决定是否将它们包含在主包中或拆分到“-bin”包中。)

GLib 包含用 Python 编写的开发工具,例如“gdbus-codegen”或“glib-mkenums”。这些工具对于基本操作来说不是必需的,但每个发行版都可以自行决定是否将 Python 设为可选依赖,或者将开发工具拆分为“-dev”包,或者采用偷懒的方式。

总体而言,这三个库本身的依赖关系非常合理(也就是说,减去 6 年来一直未解决的依赖循环),但强制 GLib 包依赖 Python 是您的发行版的错误。

相关内容