maemo.org - Talk

maemo.org - Talk (https://talk.maemo.org/index.php)
-   Development (https://talk.maemo.org/forumdisplay.php?f=13)
-   -   [Solved] How to use py_compilefiles in rules file? (https://talk.maemo.org/showthread.php?t=60986)

blubbi 2010-08-24 11:47

[Solved] How to use py_compilefiles in rules file?
 
Hi guys,

I tried to compile my python files in the following way:
/usr/bin/py_compilefiles $(CURDIR)/debian/www2sms/opt/www2sms/*.py

But the buildsystem complaints about missing py_compilefiles.

Now I found the following on the WIKI:
http://wiki.maemo.org/Performance_Co...python_Startup
Quote:

py_compilefiles src/*.py [4]
Python-support is even very easy to use, basically just add dh_pysupport to debian/rules and python-support to build-depends and depends. Just make sure that postinst has #DEBHELPER# somewhere [5]
python -m compileall TOPLEVEL.py [6]
But I am unshure of how to handle this in the debian rules file:
Code:

#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1




CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
        CFLAGS += -O0
else
        CFLAGS += -O2
endif

configure: configure-stamp
configure-stamp:
        dh_testdir
        # Add here commands to configure the package.
        touch configure-stamp


build: build-stamp

build-stamp: configure-stamp
        dh_testdir
        touch build-stamp

clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp configure-stamp
        find . -name "*.pyc" -exec rm {} \;
        find . -name "*.pyo" -exec rm {} \;
        dh_clean

install: build
        dh_testdir
        dh_testroot
        dh_clean -k
        dh_installdirs

        # Add here commands to install the package into debian/www2sms.
        #$(MAKE) DESTDIR=$(CURDIR)/debian/www2sms install
        mkdir -p "$(CURDIR)/debian/www2sms/opt/www2sms"
        mkdir -p "$(CURDIR)/debian/www2sms/usr/share/pixmaps"
        mkdir -p "$(CURDIR)/debian/www2sms/usr/share/applications/hildon"
        #Python files
        cp -a *.py "$(CURDIR)/debian/www2sms/opt/www2sms/"
        #Gfx Stuff
        cp -a "www2sms.desktop" "$(CURDIR)/debian/www2sms/usr/share/applications/hildon/"
        cp -a "www2sms.png" "$(CURDIR)/debian/www2sms/usr/share/pixmaps/"
        #Make www2sms.py executable
        chmod +x "$(CURDIR)/debian/www2sms/opt/www2sms/www2sms.py"
        #Compiling all files
        /usr/bin/py_compilefiles $(CURDIR)/debian/www2sms/opt/www2sms/*.py


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs debian/changelog
        dh_installdocs
        dh_installexamples
#        dh_install
#        dh_installmenu
#        dh_installdebconf       
#        dh_installlogrotate
#        dh_installemacsen
#        dh_installpam
#        dh_installmime
#        dh_python
        dh_pysupport
#        dh_installinit
#        dh_installcron
#        dh_installinfo
        dh_installman
        dh_link
        dh_strip
        dh_compress
        dh_fixperms
#        dh_perl
#        dh_makeshlibs
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

Any hints are welcome.

Cheers
Bjoern

Shane Kerr 2010-08-25 09:05

Re: How to use py_compilefiles in rules file?
 
It sounds like py_compilefiles is not on the Maemo build system.

One alternative may be to pre-build the pyc files and ship those are part of the source Debian package. I'm not sure if this is recommended practice, but it would get around a missing py_compilefiles and still let you have the pre-compiled binaries.

Rob1n 2010-08-25 09:31

Re: How to use py_compilefiles in rules file?
 
I copied a chunk out of the main python package's post-install script (you'll need to replace the package name & path):

Code:

#!/bin/sh -e

if [ "$1" = configure ]; then
    (
        files=$(dpkg -L autocompleteeditor | sed -n '/^\/opt\/AutoCompleteEditor\/.*\.py$/p')
        /usr/bin/python2.5 /usr/lib/python2.5/py_compile.py $files
        if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
            /usr/bin/python2.5 -O /usr/lib/python2.5/py_compile.py $files
        fi
    )


mbo 2010-08-25 10:08

Re: How to use py_compilefiles in rules file?
 
I let the .pyc files precompile in the following way:

I've added python-support to build_depends and depends in debian/control and dh_pysupport to debian/rules.

In debian/rules it is important to add the path of your installed app to dh_pysupport. e.g. "dh_pysupport /opt/your-package", because your module will not be installed in a standard public path.

blubbi 2010-08-25 10:56

Re: How to use py_compilefiles in rules file?
 
Quote:

Originally Posted by mbo (Post 797713)
I let the .pyc files precompile in the following way:

I've added python-support to build_depends and depends in debian/control and dh_pysupport to debian/rules.

In debian/rules it is important to add the path of your installed app to dh_pysupport. e.g. "dh_pysupport /opt/your-package", because your module will not be installed in a standard public path.

Ahhhh, I see I forgot to add the path to my package to dh_pysupport.

At least it passes the build system now :)

Lets see what happens when I install it.

Thanks
Bjoern

MohammadAG 2010-08-25 12:35

Re: How to use py_compilefiles in rules file?
 
py_compilefiles is part of python-central, have a look at noor's source (debian/rules) and see how I use it, don't forget to add a command to delete the pyc files in clean

blubbi 2010-08-25 14:27

Re: How to use py_compilefiles in rules file?
 
Quote:

Originally Posted by MohammadAG (Post 797822)
py_compilefiles is part of python-central, have a look at noor's source (debian/rules) and see how I use it, don't forget to add a command to delete the pyc files in clean

Thanks, I guess this did the trick!

Cheers
Bjoern


All times are GMT. The time now is 08:15.

vBulletin® Version 3.8.8