在buildbot上构建包时,我目前只有一个buildstep,它可以完成
dpkg-buildpackage ...这很有效,但所有输出都集中在瀑布中的单个步骤中,这使得很难一目了然地看到失败是在配置过程中、构建过程中还是打包过程中。所以我想要一种更细粒度的构建方式。
碰巧我知道我想要使用dh构建的所有包。这意味着我可以执行configure、build、test和package构建步骤,每个步骤都运行以下命令之一:
dh build --until dh_auto_configure
dh build --until dh_auto_build
dh build --until dh_auto_test
dpkg-buildpackage -nc ...(我使用dh来调用这些函数,这样如果包使用了这些函数,它就可以进行覆盖。我不希望buildbot必须知道有问题的包是否使用重写。)
到现在为止还好。问题是,dh不想让我使用--until选项。上面写着
"dh:--until选项已弃用。请改用重写目标。“
这让我很伤心..。听起来像是dh没有预料到这个用例。
所以,现在的问题是:
这些事情应该在哪里讨论呢?
dh是否真的以其他方式处理我的用例,而我只是错过了备忘录?
发布于 2013-03-08 03:30:03
对于dh来说,这可能不是一份好工作。一般来说,它实际上只是在debian/rules生成文件中使用。--until方法可能会给您带来很大的问题,即使它没有被弃用。
但是,您可以通过采取dpkg-buildpackage在您自己的脚本中采取的所有步骤来拆分您的构建过程(手册页顶部的摘要应该告诉您所需的一切)。
但即便如此,也不一定能让您将流程的configure和build部分分开。debian/rules文件不是用来分隔这些步骤的,也不是为了简化用户的操作而进行的required。许多人这样做,有些人不这样做。
我的建议是让dpkg-buildpackage在每个阶段做尽可能多的事情,以避免在构建环境、依赖项检查、树准备、fakeroot调用等方面搞砸一些微妙的东西。只需在第一个阶段之后传递-nc,以避免清理树和从头开始。当阶段重叠时(如build*和binary*),dh足够聪明,可以跳过您已经完成的部分。
你可以对大多数包进行正确的配置/构建分离,如下所示:
set -e
# check build deps, clean tree, make source debs
dpkg-buildpackage -S -us -uc
if grep '^configure:' debian/rules; then
debian/rules configure
elif grep '^override_dh_auto_configure:' debian/rules; then
debian/rules override_dh_auto_configure
elif grep '^%:' debian/rules; then
dh_auto_configure
else
: # oh well, it'll get done during the build phase if necessary
fi
# prepare environment, perform build
dpkg-buildpackage -nc -T build
# install stuff into temp dir, tar it up, make the deb file
dpkg-buildpackage -nc -b -us -uc
# remake the changes file, if you care, since right now it only
# includes the binaries
dpkg-genchanges > ../$whatever.changes至少,这应该始终是正确的包。
https://stackoverflow.com/questions/15079207
复制相似问题