是否可以仅通过编写 debian/rules 来编译两次并构建单独的软件包?



让我详细阐述我的问题,并进一步详细说明我试图完成的任务。

我的最终目标是拥有两个 debian 软件包:一个包含为 x86 构建的二进制文件,另一个包含为 ARM 构建的二进制文件。在 debian/control 中,我定义了两个不同的软件包,并且两个软件包的架构目前都设置为"any"。

我试图按照 https://wiki.debian.org/PkgSplit 的说明进行操作,并查看 debhelper (http://www.fifi.org/doc/debhelper/examples/rules.multi2) 的 rules.multi2 示例,但到目前为止没有任何运气。

源代码是一个Qt项目,将同时部署在x86和ARM上。

我使用 dpkg-buildpackage 成功构建,但无论我如何尝试,我的源代码都只编译一次。

达到我的目标的理想方式是什么,在 debian/rules 中输入正确的信息是否"简单",还是我必须采取另一种方法?我真的不确定这是否可能;我只是一开始就走错了路(我是 debian 打包世界的新手)。

(我故意在这个阶段不包括我的 debian/control 和 debian/rules,如果需要,我会提供进一步的细节,因为它们在这个阶段有点混乱)。

编辑: 我被这个评论带到了 PkgSplit https://askubuntu.com/questions/246718/change-environment-variables-in-debian-rules-according-to-debian-control-targets/908351#908351 但对我来说,答案有点神秘,所以帮助将不胜感激。

no.

单次运行dpkg-buildpackage将为单个体系结构(amd64i386,或armhfs390x或其他)创建二进制包。

只需多次调用dpkg-buildpackage即可(交叉)构建多个体系结构:

dpkg-buildpackage -rfakeroot
dpkg-buildpackage -rfakeroot --host-arch i386
dpkg-buildpackage -rfakeroot --host-arch armhf

这将(最多)创建 3 个包:一个原生架构(最有可能:amd64),一个用于x86_32(又名i386),一个用于树莓(armhf)。

顺便说一句,PkgSplit文档讨论了为同一架构创建多个包。 例如,当您有一个库时,您通常希望将其拆分为库部分(安装libfoo.so.1)和开发部分(安装头文件)。

最新更新