MANIFEST.in选项是&global-include',' include-global'应该与' bdist_rpm'?合作

时间:2014-06-12 10:43:32

标签: python rpm setuptools distutils

使用setup.py sdist我可以通过在MANIFEST.in中指定'global-include'或'recursive-include'选项来打包非python文件的目录树。有没有办法将相同的任意目录树包含在setup.py bdist_rpm创建的RPM中?

在setup.py的'package_data'中指定每个单独的文件有效,但不方便。

到目前为止我的发现:

似乎在bdist_rpm的情况下,'MANIFEST.in'设置无效:生成的RPM不包括在生成的'MANIFEST'文件中写的内容。

例如,我正在尝试打包'pkg1'目录,包括整个目录extras

├── MANIFEST
├── MANIFEST.in
├── pkg1
│   ├── extras
│   │   ├── dir1
│   │   │   ├── dir2
│   │   │   │   └── script2.pl
│   │   │   └── script1.pl
│   │   └── README
│   ├── __init__.py
│   └── pkg2
│       ├── __init__.py
│       └── module1.py
├── README
└── setup.py

'setup.py sdist'按预期执行此操作('extra'目录已到位):

# python setup.py sdist
# tar tzf ./dist/module1-1.0.tar.gz
module1-1.0/
module1-1.0/README
module1-1.0/setup.py
module1-1.0/PKG-INFO
module1-1.0/pkg1/
module1-1.0/pkg1/pkg2/
module1-1.0/pkg1/pkg2/module1.py
module1-1.0/pkg1/pkg2/__init__.py
module1-1.0/pkg1/extras/
module1-1.0/pkg1/extras/dir1/
module1-1.0/pkg1/extras/dir1/script1.pl
module1-1.0/pkg1/extras/dir1/dir2/
module1-1.0/pkg1/extras/dir1/dir2/script2.pl
module1-1.0/pkg1/__init__.py

,但'setup bdist_rpm'不会将“额外”目录内容包含在RPM中:

# python setup.py bdist_rpm --python=/usr/local/bin/python2.7 
# rpm -qlp dist/module1-1.0-1.noarch.rpm 
/usr/local/lib/python2.7/site-packages/module1-1.0-py2.7.egg-info
/usr/local/lib/python2.7/site-packages/pkg1/__init__.py
/usr/local/lib/python2.7/site-packages/pkg1/__init__.pyc
/usr/local/lib/python2.7/site-packages/pkg1/__init__.pyo
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/__init__.py
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/__init__.pyc
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/__init__.pyo
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/module1.py
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/module1.pyc
/usr/local/lib/python2.7/site-packages/pkg1/pkg2/module1.pyo

setup.plMANIFEST.in在两种情况下均相同:

# cat MANIFEST.in
global-include *.pl

# cat setup.py
from distutils.core import setup
setup(name="module1",version="1.0",packages=["pkg1", "pkg1.pkg2"])

0 个答案:

没有答案