How can I create an architecture dependant Debian package for my Python extension?

1.1k views Asked by At

I've written a Python 3 LIRC extension since pylirc doesn't work for Python 3. I'm trying to package it up into a Debian package and have had success in creating the packages python3-lirc_1.2.0-1_all.deb and python-lirc_1.2.0-1_all.deb. The packages install fine but only work on the specific architecture that they were compiled on.

So python3-lirc_1.2.0-1_all.deb works on my laptop when it was compiled on my laptop and python3-lirc_1.2.0-1_all.deb works on my Raspberry Pi when it was compiled on my Raspberry Pi but each package is architecture dependant.

I could just rename the packages before handing them out:

python3-lirc_1.2.0-1_all.deb -> python3-lirc_1.2.0-1_amd64.deb
python3-lirc_1.2.0-1_all.deb -> python3-lirc_1.2.0-1_armhf.deb

but this doesn't seem the right way. Are there any flags inside the debian/{control,rules} files that I need to set? Usually this is handled automatically.

Here is my debian/control file:

Source: python-lirc
Maintainer: Thomas Preston <[email protected]>
Section: python
Priority: optional
Build-Depends: python (>= 2.6.6-3),
               debhelper (>= 7),
               python3,
               python3-setuptools,
               liblircclient-dev,
               cython
Standards-Version: 3.9.1
X-Python-Version: >= 2.6
X-Python3-Version: >= 3.2
Homepage: https://github.com/tompreston/python-lirc

Package: python-lirc
Architecture: all
Depends: ${misc:Depends}, ${python:Depends}, lirc
Description: Python module for creating LIRC clients.
 This Python module allows you to retrieve commands from the LIRC
 server.

Package: python3-lirc
Architecture: all
Depends: ${misc:Depends}, ${python3:Depends}, lirc
Description: Python 3 module for creating LIRC clients.
 This Python 3 module allows you to retrieve commands from the LIRC
 server.

Here is my debian/rules file:

#!/usr/bin/make -f

%:
    dh $@ --with python2,python3 --buildsystem=python_distutils

override_dh_auto_build:
    cython -a lirc/lirc.pyx;
    python2.6 setup.py build;
    python2.7 setup.py build;
    cython -3 -a lirc/lirc.pyx;
    python3 setup.py build;

override_dh_auto_install:
    python2.6 setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb;
    python2.7 setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb;
    python3 setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb;
1

There are 1 answers

0
ydache On BEST ANSWER

Architecture: all is for platform-independant packages.

Try Architecture: any.

See: Debian Policy Manual : Chapter 5 - Control files and their fields