CentOS 6.7,python distutils和bloody brp-python-bytecompile

时间:2015-11-30 10:55:25

标签: python-2.7 centos rpm

我正在尝试让python distutils为我建立一个RPM。这证明是非常困难的! 在我的Mac上,一切正常,但在CentOS 6.7(我的CI服务器)上,由于不同平台的RPM不同,它并没有。 在CentOS上.py文件由rpm/brp-python-bytecompile预编译。这会创建.pyc.pyo文件,这些文件未由bdist_rpm列出,因此我收到错误!
我找到了this issuethis 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行是问题(考虑到我包含的链接)。有没有办法摆脱这种废话,因为它似乎会导致周围的问题?

1 个答案:

答案 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