Christopher Blunck wrote:
distutils/setuptools creates .pyc files - that's ok.
here's how the problem occurs:
1.) distutils generates a .spec file with an %install that calls setup.py like below. .py and .pyc files are generated, and are included in the INSTALLED_FILES record. see below for what is called in %install:
python setup.py install --single-version-externally-managed --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
2.) rpmbuild is called, and it generates a shell script that calls the command above. AFTER that command is executed, rpmbuild calls some strip commands as well as brp-python-bytecompile. brp-python-bytecompile generates .pyo files from .pyc but it does not update INSTALLED_FILES (because that is a distutils artifact that rpmbuild doesn't know about)
3.) rpmbuild calls into %install, and INSTALLED_FILES is loaded. it does not include the .pyo files that rpmbuild created. since there are unpackaged files (the .pyo files) that exist in the installation directory that are not referenced in the INSTALLED_FILES file, rpmbuild chokes with an error.
step #3 is where the error occurs. it's basically an inconsistency between distutils and rpmbuild. i can run distutils to generate optimized modules (.pyo) but that doesn't apply to my scripts. as a result i still have unpackaged files...
Thanks for the detailed analysis ! It seems a workaround is to provide an install command that creates those .pyo files upfront, so they find their way into the INSTALLED_FILES list. Thus, I tried 'python setup.py bdist_rpm --install-script=install', where the content of 'install' is 'python setup.py install --optimize=1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES', and voila ! It works ! Not sure whether it is worth holding your breath for someone to fix distutils. :-( Thanks, Stefan -- ...ich hab' noch einen Koffer in Berlin...