[Fedora-packaging] Python byte-compilation

Toshio Kuratomi toshio at tiki-lounge.com
Sat Oct 1 15:25:34 UTC 2005


On Sat, 2005-10-01 at 13:17 +0000, Alan Milligan wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi,
> 
> I wonder if anyone has a solution to incorrect path-names in
> byte-compiled python packages.
> 
> In the normal dist-utils install step within the context of an rpmbuild,
> all paths get prepended
> /var/tmp/buildroot-.../usr/lib/python2.x/site-packages.  This causes
> incorrect stack trace information to be shown.
> 
Two solutions:
1) In FC4, there's an rpm script: /usr/lib/rpm/brp-python-bytecompile
which performs byte compilation correctly.  I believe it will
re-compile code that distutils already installed as well.  Let this do
its job and everything should be fine.

2) To create a spec that works for previous versions of FC you have to
recompile the code yourself.  Here's a snippet::

%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from
distutils.sysconfig import get_python_lib; print get_python_lib()")}
[...]
%install
file=roman.py
extradest=%{python_sitelib}
fullextradest=$RPM_BUILD_ROOT/$extradest
install -m 0644 extras/$file $fullextradest
%{__python} -c "import py_compile; py_compile.compile(\
    '$fullextradest/$file', \
    '$fullextradest/$file' + 'c', \
    '$extradest/$file')"
%{__python} -O -c "import py_compile; py_compile.compile(\
    '$fullextradest/$file', \
    '$fullextradest/$file' + 'o', \
    '$extradest/$file')"

The variables at top will need some tweaking.  In most situations you'll
want a for loop instead of simply assigning one value to $file.  And you
may have to change $extradest if you aren't installing a python module
to the sitelib.

> I'd taken to doing byte-compilation in the %post step to fix this, but
> I've discovered a much worse effect from this in that all the .pyc and
> pyo files thus fall outside RPM control, and when removing the package,
> stay in place, effectively negating the removal (although the
> translation units are definitely gone...)

Don't do this!  As you've discovered, it's broken  :-)  

-Toshio
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.fedoraproject.org/pipermail/packaging/attachments/20051001/91347cda/attachment.bin 


More information about the packaging mailing list