【问题标题】:Is gschemas.compiled architecture specific (can I ship it with my python library)?gschemas.compiled 架构是特定的吗(我可以将它与我的 python 库一起提供)吗?
【发布时间】:2019-05-25 21:58:30
【问题描述】:

我正在开发一个使用 Gtk 的 python 库/应用程序。

我的部分构建过程使用 glib-compile-schemas 来创建 gschemas.compiled。

如果我在我的库中包含 gschemas.compiled,如果有人试图在 ARM 或 32 位英特尔之类的东西上使用我的库,这会破坏事情吗?

(我会将其编译为安装后的东西,但这似乎在我使用的 setuptools 中不受支持)。

【问题讨论】:

    标签: python gtk pygobject gobject-introspection


    【解决方案1】:

    您不应将已编译的 gschemas.compiled 缓存作为应用程序的一部分发布 - 相反,您应该仅发布您的 *.gschema.xml 文件。 gschemas.compiled 旨在作为(默认情况下)/usr/share/glib-2.0/schemas 中所有 *.gschema.xml 文件的系统范围缓存,并且应在应用安装新架构后由包管理器重新生成。

    例如,Debian 有 a lintian check 以防止软件包发送 gschemas.compiled

    here on askubuntu 似乎有关于如何使用 setuptools 在安装后步骤中调用 glib-compile-schemas 的答案。

    要回答您的具体问题:是的,您应该将其视为可能特定于架构的问题。

    【讨论】:

    • 好吧,这有点烦人 - 我想将我的应用程序作为 python WHL 发布,但他们正在逐步取消在安装后运行任何用户脚本的选项。我的应用程序是一个 gedit/xed/pluma 插件 - 我正在考虑的一个选项是在第一次运行时编译它。
    • 如果你这样做,你的插件将只能安装在用户的主目录中。为了在系统范围内运行 glib-compile-schemas,您需要是 root。
    【解决方案2】:

    这不是一个确定的答案,但我验证了该文件对于为一个包构建的两个不同架构是相同的,并且它们是相同的。

    (用于附魔的 debian i386 和 arm64 软件包)。

    之所以选择这些是因为位宽不同(32 对 64)和不同的架构。

    如果有人写了更明确的答案,我仍然会接受。

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多