FYI: How I multy-library packaged Xenomai for ALT Linux

Vitaly Chikunov vt at altlinux.org
Sun Sep 27 23:29:20 CEST 2020


Hi,

Maybe to review, maybe just FYI, there is how I packaged Xenomai for
ALT Linux in a multy-library way.

List of commits
    http://git.altlinux.org/people/vt/packages/?p=xenomai.git;a=shortlog;h=5aa47a414f
  including these 4 additional commits:
    `libs: Add linking dependencies to libcopperplate and libsmokey`
    `Multi-library support with core suffix in soname`
    `libs: Add linking dependency for libmodechk`
    `Fix building eth_p_all demo with Mercury core`
  (which I sent before here).

Full (RPM) spec:
    http://git.altlinux.org/people/vt/packages/?p=xenomai.git;a=blob;f=.gear/xenomai.spec;h=ce4cdc6c1a20b53;hb=5aa47a414f

Packages description:

1. xenomai - just top level wrapper `xeno` and `xeno-config` which will
call appropriate `xeno` and `xeno-config` from Xenomai depending on
which library is installed. If appropriate packages are installed it
will transparently use xeno or xeno-config from there, if not installed
or installed both versions it will suggest user what to do.

2. xenomai-cobalt - Cobalt runtime tools in /usr/lib/xenomai/cobalt/{bin,
     sbin,demo,testsuite}, rtnet, tdma configs in /etc, init.d service,
     udev rules, and appropriate man pages. This package adds xenomai
     group on install.
   xenomai-mercury - just a few Mercury tools in
     /usr/lib/xenomai/mercury/{bin/xeno,demo,sbin,testsuite}.

3. xenomai-devel-common - common part of headers in
  /usr/include/xenomai, plus dynlist.ld, bootstrap-pic.o, and bootstrap.o,
  because they need for both versions of cores.

4. libcobalt - just the libs (they are not suffixed, like Jan suggested);
   libcobalt-devel - Cobalt part of headers which include
                     /usr/include/xenomai/cobalt/xeno_config.h, also
		     /usr/lib/xenomai/cobalt/bin/wrap-link.sh and
		     /usr/lib/xenomai/cobalt/bin/xeno-config
		     libs symlinks and cobalt.wrappers, modechk.wrappers.
   libcobalt-devel-static - just the static libs.

5. libmercury - Mercury dynamic libs with "mercury" suffix.
   libmercury-devel - Mercury (boilerplate) headers with 
                      /usr/include/xenomai/mercury/xeno_config.h, and
		      /usr/lib/xenomai/mercury/bin/xeno-config
		      libs symlinks.
   libmercury-devel-static - just the static libs.

6. xenomai-doc - pdf, html, and demos. Demos are used for CI-like testing
    at build time (in %pre checkinstall).
    
7. libcobalt provides 'libxenomai1' name,
   xenomai-cobalt provides 'xenomai-runtime', and
   libcobalt-devel provides 'libxenomai-dev' - this is similar to Debian
     packaging. 

I also noticed some discrepancies:

  - there is `version` binary, but it cannot be run via `xeno` wrapper,
    because it's in sbin/.
  - PDFs are rebuilt again on `make install`, even though they are
    already built on `make`.
  - `doc/gitdoc` target doing strange things (looks like it wants to
    update documentation from git from the same repo (which is already
    checked out), but not actually doing any transfer). I just disabled
    that target.
  - wrap-link.sh is installed for Mercury but it does not needed.
  - there is only sysv init script, but in 2020 we also have systemd.
  - cobalt/testsuite/*.a libs are installed, but somehow conflict with
    dlopen tests (I forgot particular details, this was old change).
  - As said before, extended kernel-headers are needed to build some
    Cobalt examples, and user needs to figure out how on her own.

Thanks,





More information about the Xenomai mailing list