So here's the full output: [thomas@otto ubuntuone-storage-protocol-1.0.0]$ python setup.py bdist_rpm running bdist_rpm writing 'build/bdist.linux-i686/rpm/SPECS/ubuntuone-storage-protocol.spec' running sdist warning: sdist: missing required meta-data: url warning: sdist: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied reading manifest file 'MANIFEST' creating ubuntuone-storage-protocol-1.0.0 creating ubuntuone-storage-protocol-1.0.0/ubuntuone creating ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol making hard links in ubuntuone-storage-protocol-1.0.0... hard linking README -> ubuntuone-storage-protocol-1.0.0 hard linking setup.cfg -> ubuntuone-storage-protocol-1.0.0 hard linking setup.py -> ubuntuone-storage-protocol-1.0.0 hard linking ubuntuone/__init__.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone hard linking ubuntuone/storageprotocol/__init__.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/client.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/context.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/dircontent.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/hash.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/proxy_tunnel.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/request.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/sharersp.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol hard linking ubuntuone/storageprotocol/validators.py -> ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol tar -cf dist/ubuntuone-storage-protocol-1.0.0.tar ubuntuone-storage-protocol-1.0.0 gzip -f9 dist/ubuntuone-storage-protocol-1.0.0.tar removing 'ubuntuone-storage-protocol-1.0.0' (and everything under it) copying dist/ubuntuone-storage-protocol-1.0.0.tar.gz -> build/bdist.linux-i686/rpm/SOURCES building RPMs rpmbuild -ba --define _topdir /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm --clean build/bdist.linux-i686/rpm/SPECS/ubuntuone-storage-protocol.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.uzMplI + umask 022 + cd /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILD + LANG=C + export LANG + unset DISPLAY + cd /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILD + rm -rf ubuntuone-storage-protocol-1.0.0 + /usr/bin/gzip -dc /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/SOURCES/ubuntuone-storage-protocol-1.0.0.tar.gz + /bin/tar -xvvf - drwxrwxr-x thomas/thomas 0 2009-11-23 21:33 ubuntuone-storage-protocol-1.0.0/ drwxrwxr-x thomas/thomas 0 2009-11-23 21:33 ubuntuone-storage-protocol-1.0.0/ubuntuone/ -rw-r--r-- thomas/thomas 695 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/__init__.py drwxrwxr-x thomas/thomas 0 2009-11-23 21:33 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/ -rw-r--r-- thomas/thomas 5419 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/dircontent.py -rw-r--r-- thomas/thomas 712 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/__init__.py -rw-r--r-- thomas/thomas 5361 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/proxy_tunnel.py -rw-r--r-- thomas/thomas 4942 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/sharersp.py -rw-r--r-- thomas/thomas 2213 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/validators.py -rw-r--r-- thomas/thomas 1390 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/context.py -rw-r--r-- thomas/thomas 18250 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/request.py -rw-r--r-- thomas/thomas 46795 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/client.py -rw-r--r-- thomas/thomas 2227 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/ubuntuone/storageprotocol/hash.py -rw-r--r-- thomas/thomas 3605 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/README -rw-r--r-- thomas/thomas 139 2009-10-12 16:24 ubuntuone-storage-protocol-1.0.0/setup.cfg -rw-rw-r-- thomas/thomas 200 2009-11-23 21:33 ubuntuone-storage-protocol-1.0.0/PKG-INFO -rwxr-xr-x thomas/thomas 4417 2009-11-22 19:04 ubuntuone-storage-protocol-1.0.0/setup.py + STATUS=0 + '[' 0 -ne 0 ']' + cd ubuntuone-storage-protocol-1.0.0 + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.wyx0bN + umask 022 + cd /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILD + cd ubuntuone-storage-protocol-1.0.0 + LANG=C + export LANG + unset DISPLAY + python setup.py build running build running build_py creating build creating build/lib creating build/lib/ubuntuone copying ubuntuone/__init__.py -> build/lib/ubuntuone creating build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/dircontent.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/__init__.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/proxy_tunnel.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/sharersp.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/validators.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/context.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/request.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/client.py -> build/lib/ubuntuone/storageprotocol copying ubuntuone/storageprotocol/hash.py -> build/lib/ubuntuone/storageprotocol + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.0czGoS + umask 022 + cd /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILD + '[' /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386 '!=' / ']' + rm -rf /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386 ++ dirname /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386 + mkdir -p /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT + mkdir /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386 + cd ubuntuone-storage-protocol-1.0.0 + LANG=C + export LANG + unset DISPLAY + python setup.py install -O1 --root=/home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386 --record=INSTALLED_FILES running install running build running build_py running install_lib creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6 creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone copying build/lib/ubuntuone/__init__.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/dircontent.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/__init__.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/proxy_tunnel.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/sharersp.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/validators.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/context.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/request.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/client.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol copying build/lib/ubuntuone/storageprotocol/hash.py -> /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/__init__.py to __init__.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/dircontent.py to dircontent.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/__init__.py to __init__.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/proxy_tunnel.py to proxy_tunnel.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/sharersp.py to sharersp.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/validators.py to validators.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/context.py to context.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/request.py to request.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/client.py to client.pyc byte-compiling /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/usr/lib/python2.6/site-packages/ubuntuone/storageprotocol/hash.py to hash.pyc writing byte-compilation script '/tmp/tmpHLyjGs.py' /usr/bin/python -O /tmp/tmpHLyjGs.py removing /tmp/tmpHLyjGs.py running install_data creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/etc creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/etc/ssl creating /home/thomas/prefix/src/ubuntuone-storage-protocol-1.0.0/build/bdist.linux-i686/rpm/BUILDROOT/ubuntuone-storage-protocol-1.0.0-1.i386/etc/ssl/certs error: can't copy 'data/UbuntuOne-Go_Daddy_CA.pem': doesn't exist or not a regular file error: Bad exit status from /var/tmp/rpm-tmp.0czGoS (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.0czGoS (%install) error: command 'rpmbuild' failed with exit status 1 [thomas@otto ubuntuone-storage-protocol-1.0.0]$ ls data/ UbuntuOne-Go_Daddy_CA.pem UbuntuOne-Go_Daddy_Class_2_CA.pem [thomas@otto ubuntuone-storage-protocol-1.0.0]$ cat MANIFEST README setup.cfg setup.py ubuntuone/__init__.py ubuntuone/storageprotocol/__init__.py ubuntuone/storageprotocol/client.py ubuntuone/storageprotocol/context.py ubuntuone/storageprotocol/dircontent.py ubuntuone/storageprotocol/hash.py ubuntuone/storageprotocol/proxy_tunnel.py ubuntuone/storageprotocol/request.py ubuntuone/storageprotocol/sharersp.py ubuntuone/storageprotocol/validators.py [thomas@otto ubuntuone-storage-protocol-1.0.0]$ So yes, the sdist step uses what is in the MANIFEST As discussed on the IRC, whatever step was used to generate the tarball generated a wrong MANIFEST. I don't know enough about distutils, but I recommend fixing that step, and testing this for the next release.