[Libosinfo] Splitting off the database (and tools)

Daniel P. Berrange berrange at redhat.com
Thu Mar 3 15:06:26 UTC 2016


I've talked about splitting off the database several times in the past,
and I think we're now in a position to do exactly that.

The two core goals of splitting off the database are

 - Make it easy to issue updates to the DB without updating the code.
   This will help LTS distros which are often loathe to upgrade the
   code, but still wish to pull in DB refreshes frequently

 - Enable apps to consume the database without going via the libosinfo
   library API. libguestfs already does this, and openstack wants todo
   this, so they can avoid a dep on c libraries for python access

Anyway, my thoughts on the approach to doing this are as follows..

 - We want some way to deploy a downloaded database into the right
   place. a "osinfo-db-import" tool.

 - We want some way to take a directory containing a database and
   bundle it into distributable format, merging translations as
   it goes. a "osinfo-db-export" tool

Both of these would basically be thin wrappers around tar or zip I
think.

We already have an "osinfo-db-validate" tool that is used to validate
the database against the published schema.

So, I'm thinking we should create a 'osinfo-db-tools' package / GIT
repo which contains the RNG schema, and the aforementioned tools.
This would be the minimal set of C tools that something like OpenStack
would want to use & depend of.  I would create thisi GIT repo by taking
the current GIT repo & just trimming the bits that are not applicable.
That way we keep GIT history intact for the existing RNG schema and
osinfo-db-validate tool.

For the actual database we would have a 'osinfo-db' package & GIT
repo. This would *not* contain any automake/autoconf stuff. It would
contain the actual XML files for the DB, test data (all the .iso header
text files) and .po files with translations for the XML. To publish the
contents of this GIT repo, we'd simply use the osinfo-db-export tool to
create a distributable archive of it. Again, I'd start with current GIT
and just trim out bits to leave what we want, to preserve GIT history

The current libosinfo GIT repository would have its data/ directory,
the tools/osinfo-db-validate and tests/isodata/ files deleted. Its
RPM would gain a Requires: on osinfo-db-tools and osinfo-db, so that
from end user point the upgrade path is seemless.

For the osinfo-db package I don't think we'd bother doing formal
releases manually. Instead I think I'd just setup a cron job that
runs osinfo-db-export and publishes the result on libosinfo.org
once a day. So we'll always have latest data published for consumption.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the Libosinfo mailing list