Adam Mizerski
W dniu 18.12.2018 o 12:22, Dan Čermák pisze:
Martin Pluskal
writes: On Tue, 2018-12-18 at 10:41 +0100, Dan Čermák wrote:
Hi list,
I would like to package a (kind-of) header only C++ library (https://github.com/emilk/loguru). The problem is, that it actually ships a cpp file in it's source tree (so I guess it needs to be compiled to a shared library?).
The issue at hand is, that loguru is designed to be embedded in your C++ project (there is *a lot* of compile time switches) and even running the test suite from a shared library requires a lot of patching of the source tree.
What would be the correct procedure for packaging? Create a shared library nevertheless? Or create multiple libraries with some common compile time switches? Or just install the sources into the file system? Hi
I guess you mean something like installing just headers like in i.e [1] - if so just having -devel subpackage is absolutely ok.
Yes, kind of. The difference is however that loguru ships a cpp file and not just headers.
I would personally prefer to just ship the sources, as upstream clearly wants it that way.
I see no problem with packaging this as a shared library.
There is a practical problem: the library provides multiple compile time switches, that are intended to be set by the user of the library. Most of these only add features, so they can (probably) be enabled in a shared library (I'll check that to be sure). But there are switches (like LOGURU_USE_FMTLIB) which are not a pure addition but actual switches, so we would essentially have to hardcode these. Is that a viable approach? Maybe coupled with patching the source file so that the compiler produces an error if you define that macro?
Otherwise it makes not much sense to package it at all, I think.
It would add a little convenience. And I plan on packaging other software that depends on loguru.
Since it's a single cpp file, you don't need any build system. Just write a single gcc command it spec file. Shared library should be named libloguru-2.0.0.so and shipped in package libloguru-2_0_0. See https://en.opensuse.org/openSUSE:Shared_library_packaging_policy
Adam Mizerski
--
Dan Čermák