我正在尝试让python distutils为我建立一个RPM。这证明是非常困难的!
在我的Mac上,一切正常,但在CentOS 6.7(我的CI服务器)上,由于不同平台的RPM不同,它并没有。
在CentOS上.py
文件由rpm/brp-python-bytecompile
预编译。这会创建.pyc
和.pyo
文件,这些文件未由bdist_rpm
列出,因此我收到错误!
我找到了this issue和this issue,但很久以前就已经发现了它们!所以我很惊讶我仍然看到这种情况发生了!有没有解决方法?我不想创建spec文件,我使用bdist_rpm来避免它...谢谢。
这是我试图打包的东西的示例结构:
<root>/
setup.py
my-awesome-app.py
help-scripts/
extract-config.py
这是我的setup.py:
from distutils.core import setup
setup(name='my-awesome-app',
version='1.0',
author='Daniel Gruszczyk',
scripts=['my-awesome-app.py'],
data_files=[('/etc/bake',['help-scripts/extract-config.py'])],
)
以下是运行python setup.py bdist_rpm
的示例输出(只是导致错误的行):
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /var/lib/jenkins/workspace/my-awesome-app/build/bdist.linux-x86_64/rpm/BUILD/my-awesome-app-1.0
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/brp-python-bytecompile
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: my-awesome-app-1.0-1.noarch
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /var/lib/jenkins/.pyenv/versions/2.7.5/bin/python
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/lib/jenkins/workspace/my-awesome-app/build/bdist.linux-x86_64/rpm/BUILDROOT/my-awesome-app-1.0-1.x86_64
error: Installed (but unpackaged) file(s) found:
/etc/help-scripts/extract-config.pyc
/etc/help-scripts/extract-config.pyo
我认为+ /usr/lib/rpm/brp-python-bytecompile
行是问题(考虑到我包含的链接)。有没有办法摆脱这种废话,因为它似乎会导致周围的问题?
答案 0 :(得分:2)
这些错误很老,但CentOS6也是如此。
Bdist_rpm非常简单,一旦达到极限,你就处于死路。我真的害怕没有人会告诉你如何使用setup.py来修复它。关于这个主题的更多内容写在这里: http://ziade.org/2011/03/25/bdist_rpm-is-dead-long-life-to-py2rpm/
我真的建议你使用: pyp2rpm - https://github.com/fedora-python/pyp2rpm