bornagain packaging: how to split binaries
Hi,
I'm at the moment working on packaging BornAgain (see #844618 "ITP:
bornagain -- Simulating and fitting X-ray and neutron small-angle
scattering at grazing incidence") for debian within the debian science
team. I'm wondering how to split the rather large source package into
several binary packages.
BornAgain upstream advertises three usage modes:
* via the qt GUI
* using the python bindings (there are bindings for python and python3)
from your own python scripts, GUI projects can also be exported to
python scripts.
* writing C++ programs using the BornAgain headers (I suspect this is
used less than the other usage modes).
BornAgain itself is also structured along these lines, there is
* a core library, written in C++ and compiled to _libBornAgainCore.so
* a fitting library, also mainly written in C++ and compiled to
_libBornAgainFit.so
* the GUI library, also mainly written in C++ and
compiled to _libBornAgainGUI.so
* python{,3} bindings, written using SWIG, with the high-level module
name "bornagain".
* the GUI, compiled to the executable "bornagain".
Now I'm wondering how to split this into binary packages. From a user
standpoint, I think it would make sense to have:
* python{,3}-bornagain, which would bring everything needed for using
BornAgain from python{,3}, but which does not pull in the GUI. This
package would be useful e.g. for using BornAgain on a remote machine
like a compute server.
* bornagain, which would bring the GUI and depends on
python{,3}-bornagain. This would be the default package to install
for GUI use etc.
Additionally, I probably need some kind of "bornagain-core" or
"libbornagainX.Y"-package, which provides the .so files for
python-bornagain and python3-bornagain.
What I'm wondering now is if I should also accommodate the C++ work
flow, i.e. have something like libbornagainX.Y and libbornagain-dev
with the shared libraries and the C++ include files, respectively. I'm
a bit reluctant to do that because having a shared library package
sounds like a lot of work for little gain since as a whole BornAgain is
(and as far as I can see will be for the foreseeable future) a leave
package and the reverse dependencies will all be "internal", i.e.
from the bornagain source package.
So, my question is basically:
What binary packages make sense, how would I split bornagain into
several packages to support both the python workflow as well as GUI
usage. And: how much work would it be to support C++ usage as
well and what additional package would I need for that?
Cheers + thanks,
Mika
Reply to: