[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: