Reply
Thread Tools
blubbi's Avatar
Posts: 288 | Thanked: 113 times | Joined on Dec 2009 @ Germany
#1
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
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

Last edited by blubbi; 2010-08-25 at 14:30. Reason: Solved
 
Posts: 16 | Thanked: 3 times | Joined on Dec 2009 @ Uithoorn, Netherlands
#2
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.
 
Posts: 3,617 | Thanked: 2,412 times | Joined on Nov 2009 @ Cambridge, UK
#3
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
    )
 
Posts: 144 | Thanked: 134 times | Joined on Jan 2010 @ Hamburg
#4
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's Avatar
Posts: 288 | Thanked: 113 times | Joined on Dec 2009 @ Germany
#5
Originally Posted by mbo View Post
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's Avatar
Posts: 2,473 | Thanked: 12,265 times | Joined on Oct 2009 @ Jerusalem, PS/IL
#6
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
 

The Following User Says Thank You to MohammadAG For This Useful Post:
blubbi's Avatar
Posts: 288 | Thanked: 113 times | Joined on Dec 2009 @ Germany
#7
Originally Posted by MohammadAG View Post
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
 
Reply


 
Forum Jump


All times are GMT. The time now is 19:49.