[redland-dev] Proposal to rearrange Redland packages

Dave Beckett dave.beckett at bristol.ac.uk
Fri Jul 16 15:17:45 BST 2004


This is a summary of some thoughts I've been having about rearranging
the Redland packages after some poking by Edd.

The problem I've been having is that the (7 or 8) language APIs are
changing at a faster rate than the core C redland librdf.  This is a
good thing of course, but it affects releases in two ways - I can't
get the redland release out while lots of the bindings parts are in
flux, and fixes to the bindings are often quickly made in CVS but
can't be shipped because the librdf or other bindings are being
worked on.

So... I'm proposing to split out the redland package into two:

  redland          - the C parts and docs, utilities
    (librdf, raptor, rasqal)
  redland-bindings - the API bindings
    (C#, java, perl, php, python, ruby, tcl, [Obj C])

In Debian GNU/Linux terms the above would be called source packages,
which are used to generated installed things that are binary
packages.  I currently make the following Redhat/Debian packages
according to each package convention:

Source    Description Redhat package     Debian package
Package	 	      	     
	 	      	     
redland {  librdf     redland            librdf0
	{    headers  redland-devel      librdf0-dev
        {  perl API   redland-perl       librdf-perl
        {  python API redland-python     python2.2-librdf python2.3-librdf
        {  ruby API                      librdf-ruby
                      
(and for completeness)
	 	      	     
raptor	{  libraptor  raptor             libraptor1
	{    headers  raptor-devel       libraptor1-dev
        {  rapper                        raptor-utils
	 	      	     
rasqal	{  librasqal  rasqal             librasqal0
	{     headers rasqal-utils       librasqal0-dev
        {  roqet                         rasqal-utils


So the proposal is to rip out the language bindings to make:

source    description redhat package     debian package
package	 	      	     

redland {  librdf     redland            librdf0
	{    headers  redland-devel      librdf0-dev

redland-bindings
        {  perl API   redland-perl       librdf-perl
        {  python API redland-python     python2.2-librdf python2.3-librdf
        {  ruby API                      librdf-ruby

(raptor and rasqal as before)

Package end users will see no difference, since the binary packages
will be the same.  Anyone building from source will now need one more
package, so this affects those users and distributions that use
source-based packaging such as the BSDs, Gentoo etc.  Those will have
to deal with the split by adding some build-time dependency.

The advantages are: a more up-to-date redland/librdf since it'll be
easier for me to make new version and redland-bindings that can
revision at different, faster times as need be.  I'd propose that
redland-bindings would have a version number based on the redland
package version such as:
  redland 1.0
  redland-bindings 1.0-1.0

It might be that new or improved bindings appear in a separate
package again like redland-sharp, redland-ruby (there's a substantial
change to this one not yet fully merged) and get merged into
redland-bindings as they get stable.

Another thought is to remove raptor and rasqal from inside the
redland package.  This would have additional advantages for me trying
to keep the three things consistent compared to their separate
releases, but it would again mean more downloads for those building
from source (although for example, raptor is in the BSD, Gentoos on
it's own already).

Thoughts, comments?

Dave



More information about the redland-dev mailing list