Generating two Debian packages with stdeb
Hi, I'm wondering if there is a way to generate two .deb-files from a single setup.py file. Or, if that's not possible, generate deb files from custom-named setup.py files, e.g. client_setup.py & server_setup.py. The reason I'm asking is that I need the source code to reside in the same root folder. I'd also like to keep a clean folder structure, something along the lines of this: /test-program client.py server.py server_adapter.py setup.py tests/ unit/ client_unit_test.py server_unit_test.py function/ client_function_test.py server_function_test.py etc/ init.d/ server server.conf usr/ bin/ client server I'd like to generate client.deb, containing [client.py, usr/bin/client], and server.deb, containing [server.py, server_adapter.py, etc/server.conf, etc/init.d/server, user/bin/server]. Also server.deb should be depend on client.deb. After copying the stdeb folder to /test-program/ I've tried running python client_setup.py --command-packages=stdeb.command bdist_deb It fails however, since it seems that one of the dh-scripts is hard coded to look for setup.py. I have no idea how to configure setup.py to generate two .debs. Thanks, Eddie
On Tue, Nov 20, 2012 at 01:30:43PM +0100, Edward Ekelund wrote:
Hi,
I'm wondering if there is a way to generate two .deb-files from a single setup.py file. Or, if that's not possible, generate deb files from custom-named setup.py files, e.g. client_setup.py & server_setup.py.
You can just use setup.py and move the files to appropriate sub directories of the debian/ directory in a override_dh_autobuild rule in your debian/rules file. You will have to define appropriate binary package stanzas in your debian/control file. Regards Jan Dittberner -- Jan Dittberner - Debian Developer GPG-key: 4096R/558FB8DD 2009-05-10 B2FF 1D95 CE8F 7A22 DF4C F09B A73E 0055 558F B8DD http://www.dittberner.info/
I have modified the debian/control file to produce two .debs. I have no idea, however, how to correctly use override_dh_autobuild in debian/rules to put files in the appropriate sub directories. My google-fu seems weak, and I haven't been able to find an answer on the internet either. Could you provide a simple example for how I should do it? Thanks, Eddie On 11/20/2012 02:27 PM, Jan Dittberner wrote:
On Tue, Nov 20, 2012 at 01:30:43PM +0100, Edward Ekelund wrote:
Hi,
I'm wondering if there is a way to generate two .deb-files from a single setup.py file. Or, if that's not possible, generate deb files from custom-named setup.py files, e.g. client_setup.py & server_setup.py.
You can just use setup.py and move the files to appropriate sub directories of the debian/ directory in a override_dh_autobuild rule in your debian/rules file.
You will have to define appropriate binary package stanzas in your debian/control file.
Regards Jan Dittberner
On Wed, Nov 21, 2012 at 11:03:45AM +0100, Edward Ekelund wrote:
I have modified the debian/control file to produce two .debs. I have no idea, however, how to correctly use override_dh_autobuild in debian/rules to put files in the appropriate sub directories. My google-fu seems weak, and I haven't been able to find an answer on the internet either.
Could you provide a simple example for how I should do it?
use override_dh_autoinstall -- 8< --- example: debian/rules ------------------------------------------- #!/usr/bin/make -f override_dh_auto_install: python setup.py install --install-layout=deb \ --root $(CURDIR)/debian/python-xyzclient mkdir -p $(CURDIR)/debian/python-xyzserver/usr/share/pyshared/xyz mv \ $(CURDIR)/debian/python-xyzclient/usr/share/pyshared/xyz/server.py \ $(CURDIR)/debian/python-xyzserver/usr/share/pyshared/xyz/ ... %: dh $@ --with python2 --buildsystem=python_distutils -- 8< --------------------------------------------------------------------- override_dh_autobuild would be too early, sorry for the confusion. You basically prepare the files for each binary package in a separate subdirectory of your debian/ directory. Debhelper's dh sequencer takes care of building the proper binary packages. Be aware that package names like python-xyzserver and python-xyzclient are not compliant with the Debian Python policy (they should be named python-<modulename> and you should have separate modules for client and server to allow this split in a policy conforming way). Regards Jan -- Jan Dittberner - Debian Developer GPG-key: 4096R/558FB8DD 2009-05-10 B2FF 1D95 CE8F 7A22 DF4C F09B A73E 0055 558F B8DD http://www.dittberner.info/
I had to change the equivalent of $(CURDIR)/debian/python-xyzclient/usr/share/pyshared/xyz/server.py \ to $(CURDIR)/debian/python-xyzclient/usr/lib/python2.7/dist-packages/server.py Not sure why, but the pyshared folder isn't created until after a successful debuild. Otherwise it worked quite well. Thanks! Regards Eddie On 11/21/2012 11:39 AM, Jan Dittberner wrote:
On Wed, Nov 21, 2012 at 11:03:45AM +0100, Edward Ekelund wrote:
I have modified the debian/control file to produce two .debs. I have no idea, however, how to correctly use override_dh_autobuild in debian/rules to put files in the appropriate sub directories. My google-fu seems weak, and I haven't been able to find an answer on the internet either.
Could you provide a simple example for how I should do it?
use override_dh_autoinstall
-- 8< --- example: debian/rules ------------------------------------------- #!/usr/bin/make -f
override_dh_auto_install: python setup.py install --install-layout=deb \ --root $(CURDIR)/debian/python-xyzclient mkdir -p $(CURDIR)/debian/python-xyzserver/usr/share/pyshared/xyz mv \ $(CURDIR)/debian/python-xyzclient/usr/share/pyshared/xyz/server.py \ $(CURDIR)/debian/python-xyzserver/usr/share/pyshared/xyz/ ...
%: dh $@ --with python2 --buildsystem=python_distutils -- 8< ---------------------------------------------------------------------
override_dh_autobuild would be too early, sorry for the confusion. You basically prepare the files for each binary package in a separate subdirectory of your debian/ directory. Debhelper's dh sequencer takes care of building the proper binary packages. Be aware that package names like python-xyzserver and python-xyzclient are not compliant with the Debian Python policy (they should be named python-<modulename> and you should have separate modules for client and server to allow this split in a policy conforming way).
Regards Jan
participants (2)
-
Edward Ekelund
-
Jan Dittberner