Skip to content
SMSpp-ProjectPublic

About

Debian packaging of SMS++: the source package of a release, out of which Launchpad builds one package per module and per tool | mirror of https://gitlab.com/smspp/ppa

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

Debian packaging of SMS++

The source package of the SMS++ umbrella for the PPA, out of which Launchpad builds one library package per module, one command package per tool and the smspp-project metapackage of them all:

sudo add-apt-repository ppa:smspp-project/smspp
sudo apt install smspp-project     # everything
sudo apt install smspp-ucblock     # the Unit Commitment tool alone
sudo apt install libsmspp-mcf-dev  # the headers of the MCFBlock module

The umbrella is built once, and the install of each module goes to its own package: libsmspp-<module><soname> holds the shared library, libsmspp-<module>-dev the headers and the CMake configuration that find_package() finds, smspp-<tool> the executable with its configuration files, its examples and its man page.

Layout

debian/           the packaging, with the tables of the packages that
                  gen_debian.py writes: control, modules.tsv, tools.tsv
gen_debian.py     generator of those tables, whose own tables carry the
                  modules, the tools and their dependencies
mk-ppa-source     source package of a release, for one or more series
daqp/             the source package of DAQP, a QP solver of the MILP
                  Solvers, which no Ubuntu series carries
qpoases/          the source package of qpOASES, another QP solver of
                  the MILP Solvers, which no Ubuntu series carries

A release

The tag of the umbrella publishes the release tarball, from which

./mk-ppa-source 0.6.0 resolute --upload

builds the source package of that version for that series and uploads it to the PPA, which then builds the binary packages for every architecture. The upload needs a GPG key registered on Launchpad, and devscripts and dput installed.

Adding a module

A new module needs its row in the LIBS table of gen_debian.py (directory, package base, the modules it needs, the -dev packages outside the project that its CMake configuration finds, and its description), and a new tool its row in TOOLS. The version of a package comes from the VERSION.txt of its module, so a minor bump renames the library package: that is the point of the name, since the SONAME changes with it.

What the packages do not carry

CPLEX, Gurobi, SCIP and MOSEK are not redistributable, and the C interface of Clarabel is in no package, so libsmspp-milp carries the HiGHS, DAQP and qpOASES backends alone; a build against the others is still the one of the sources. FastFlow, which the core fetches at configure time, travels in the source package as a second component, so that the build needs no network.

DAQP

DAQP, the dual active-set solver of DAQPMILPSolver, is in no Ubuntu series, so the PPA carries it as a source package of its own, out of the tag of its release and of daqp/debian: libdaqp0.10 holds the shared library, whose SONAME is libdaqp.so.0.10, and libdaqp-dev the headers, the static library and the CMake configuration. The patch in daqp/debian/patches builds the static library without linking the shared one, links the math library and installs the CMake configuration where find_package() looks for it.

daqp/mk-ppa-source noble resolute --upload

builds the source package of DAQP for both series and uploads it; it has to be built on Launchpad before the first upload of SMS++ that depends on libdaqp-dev. A new release of DAQP is DAQP_VERSION in that script, and a new SONAME the name of the library package in daqp/debian/control and of its .install file.

qpOASES

qpOASES, the online active-set solver of QPOASESMILPSolver, is in no Ubuntu series either, and the PPA carries it the same way, out of the tag of its release and of qpoases/debian: libqpoases3.2 holds the shared library, whose SONAME is libqpOASES.so.3.2 and whose own BLAS and LAPACK replacements are renamed, and libqpoases-dev the headers and the CMake configuration. The rules drop the RPATH that upstream puts on the library and let the newer CMake accept the old minimum version of the project.

qpoases/mk-ppa-source noble resolute --upload

builds it for both series and uploads it, before the first upload of SMS++ that depends on libqpoases-dev.

About

Debian packaging of SMS++: the source package of a release, out of which Launchpad builds one package per module and per tool | mirror of https://gitlab.com/smspp/ppa

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages