From Fedora Project Wiki

The new stuff

Going back to first principles -- and patching spring (and its crazy dependency chain) out of the process -- I've managed as of today (24/11/2009) to create a SRPM of sesame that builds on my computer. There are a number of dependencies, most of them supporting packages from aduna-commons and aduna-appbase. There are also a number of existing Fedora packages which need minor updates in order for Sesame (or its dependencies) to build successfully against them.

The following graph shows the dependency chain. The colour scheme is as follows: red indicates a package which is pending in Fedora (under review or awaiting CVS); blue indicates an existing Fedora package which needs an update; and dotted lines indicate dependencies which I have patched out. Click the image for a fullsize version.

Graph of Sesame dependencies

You can also download the dependency graph in various other forms if the .png file isn't useful:

Links to SRPMs and spec files

I've put all of the relevant SRPMs and specs here:

This includes unofficial versions of many of the Fedora packages which need modification, and a modified version of the soprano-backend-sesame SRPM from kde-redhat that uses the system sesame (see below).

Relevant bugs

Packages under review

Requested updates to existing Fedora packages

Note that I have requested provenpackager status on 2/12/2009 (edit: and was granted it the same day, wow!) in an effort to make the (mostly trivial) required changes in existing packages ( As of 6/1/2010, there are no more outstanding issues!

Completed bugs

Modifications to soprano-backend-sesame2

I've successfully patched the soprano-backend-sesame2 SRPM from kde-redhat to build against this version of sesame, and it appears to work when I run it. Here are the spec-file diffs:

--- soprano-backend-sesame2.spec        2009-11-02 19:38:37.000000000 +0000                                       
+++ soprano-backend-sesame2.spec.mef    2009-11-24 15:54:55.987342313 +0000                                       
@@ -4,7 +4,7 @@                                                                                                   
 Summary: Sesame2 Backend for Soprano                                                                             
 Name:    soprano-backend-sesame2                                                                                 
 Version: 2.3.67                                                                                                  
-Release: 0.1.%{snap}%{?dist}                                                                                     
+Release: 0.2.%{snap}%{?dist}                                                                                     
 Group:   System Environment/Libraries                                                                            
 License: LGPLv2+                                                                                                 
@@ -12,6 +12,7 @@                                                                                                 
 Source0: soprano-%{snap}svn.tar.bz2                                                                              
+Patch0:  soprano-sesame-classpath.patch                                                                          
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)                                        
 ExcludeArch: ppc ppc64                                                                                           
@@ -22,9 +23,15 @@                                                                                                
 BuildRequires: redland-devel                                                                                     
 BuildRequires: raptor-devel                                                                                      
 BuildRequires: qt4-devel                                                                                         
+BuildRequires: sesame, aduna-commons-iteration                                                                   
+# We may not need all of the aduna-commons-* stuff in practice                                                   
+Requires: sesame                                                                                                 
+Requires: aduna-appbase-core, aduna-appbase-logging, aduna-commons-collections                                   
+Requires: aduna-commons-concurrent, aduna-commons-i18n, aduna-commons-io                                         
+Requires: aduna-commons-iteration, aduna-commons-lang, aduna-commons-net
+Requires: aduna-commons-platform, aduna-commons-text, aduna-commons-xml
 Requires: java-1.6.0
-#Requires: java-1.6.0-openjdk%{?_isa}
 Requires: soprano%{?_isa} = %{version}

 # pkg rename
@@ -41,9 +48,13 @@
 %setup -q -n soprano%{!?snap:-%{version}}

+find . -name "*.jar" | xargs rm -f
+find . -name "*.class" | xargs rm -f
+%patch0 -p1

-export JAVA_HOME=%{_jvmdir}/java
+export JAVA_HOME=%{java_home}
 mkdir -p %{_target_platform}
 pushd %{_target_platform}
 %{cmake} \
@@ -55,6 +66,9 @@

 make %{?_smp_mflags} -C %{_target_platform}/backends/sesame2

+%{javac} -cp `build-classpath sesame/repository sesame/model aduna-commons-iteration` \
+       -d backends/sesame2 backends/sesame2/*.java

@@ -91,6 +105,9 @@

+* Tue Nov 24 2009 Mary Ellen Foster <mefoster at> 2.3.67-0.2.20091102
+- Build against system sesame instead of using the included jar files
 * Mon Nov 02 2009 Rex Dieter <> 2.3.67-0.1.20091102
 - soprano-2.3.67 (20091102 snapshot)

And here is the patch file referred to above -- this CLASSPATH is probably overkill, but it works, and since the main symptom of an inadequate CLASSPATH is that nepomuk segfaults, I'm leaving it like this for now. :)

diff -ur soprano-2.3.1/backends/sesame2/CMakeLists.txt
--- soprano-2.3.1/backends/sesame2/CMakeLists.txt       2009-06-25 08:44:09.000000000 +0100
+++   2009-11-24 14:37:39.441280419 +0000
@@ -53,9 +53,6 @@

-  openrdf-sesame-2.2.4-onejar.jar
-  slf4j-api-1.5.5.jar
-  slf4j-simple-1.5.5.jar
   DESTINATION share/soprano/sesame2
diff -ur soprano-2.3.1/backends/sesame2/sesame2-config.h.cmake
--- soprano-2.3.1/backends/sesame2/sesame2-config.h.cmake       2009-06-25 08:44:09.000000000 +0100
+++   2009-11-24 14:39:34.208280016 +0000
@@ -1 +1 @@
-#define SESAME2_CLASSPATH "${CMAKE_INSTALL_PREFIX}/share/soprano/sesame2/openrdf-sesame-2.2.4-onejar.jar:${CMAKE_INSTALL_PREFIX
+#define SESAME2_CLASSPATH "/usr/share/java/aduna-commons-collections.jar:/usr/share/java/aduna-commons-concurrent.jar:/usr/shar

Older stuff

I'm keeping around the rest of the page because it could potentially be interesting, even if it's not relevant at the current time -- for example, if we decide to package Spring later on.

Review requests

Please do not review any of these packages until further notice -- turns out I didn't do a good enough job of searching for existing packages/review requests before filing them. I'm in the process of cleaning up the list. Sorry about that. :(

Unmet dependencies from the jpackage version of spring

I'm keeping this list for posterity, but note that most of this is not actually needed for sesame if I patch out the http-server-spring subpackage.

  • annotation_1_0_api -- Not sure
  • aopalliance -- UP FOR REVIEW
  • apache-ibatis-sqlmap >= 0:2.3.2 -- needs cglib, derby, db-ojb
    • derby: UP FOR REVIEW
    • db-ojb: apache-jdo-1.1*, other stuff ...
  • apache-jdo-2.0-api -- probably just needs renaming of dependencies
    • NO: Building the newest version (2.2) needs geronimo-jpa_3.0_spec-1.0, which is not in current Fedora geronimo-specs package
  • aspectj >= 0:1.5.3 -- jpackage, in progress (seems to want an old JDK (< 0:1.5.0, investigate)
  • bsh2 -- Fedora has bsh v.1
  • burlap >= 0:3.0.8 -- needs caucho-services, hessian
    • caucho-services: builds fine is it current? the SRPM uses a gentoo source bundle ...
  • c3p0 >= 0:0.9.0 -- no deps, build issues -- doesn't work with the 1.6 version of javax.sql; can I make it use 1.5?
  • cglib -- needs (aspeckwerkz and) jarjar
    • aspectwerkz: jarjar, jrexx, piccolo, gnu-trove
      • jrexx: UP FOR REVIEW
      • piccolo: includes very old bundled libraries; don't really need it
      • gnu-trove: UP FOR REVIEW
  • commonj_1_1_apis -- Not sure
  • easymock-classextension -- needs cglib
  • ehcache >= 0:1.3.0 -- jpackage has 1.3.0, which requires many things including spring v1 (WTF?). Maybe try updating to 1.5.0 for Fedora
  • ejb_3_0_api -- Not sure
  • el_1_0_api -- Not sure
  • geronimo-interceptor-3.0-api -- Not sure
  • glassfish-javamail >= 0:1.4.0 -- needs glassfish-jaf
    • glassfish-jaf: builds fine
  • glassfish-jstl -- needs jbossweb (urgh)
  • glassfish-persistence-impl -- should be fine
  • groovy15 -- needs cglib, jarjar, jmock, mockobjects, openejb1, xstream
    • jmock: needs cglib
    • mockobjects: no extra deps; VERY VERY old and may not be worth patching
    • openejb: needs a bunch of maven stuff (probably just package name issues), along with castor0
      • castor0: needs cglib, ldapsdk, mockejb, tyrex
        • ldapsdk: UP FOR REVIEW
        • mockejb: aspectj, cglib, jakarta-cactus
          • jakarta-cactus: aspectj, cargo, maven stuff
            • cargo: needs ITSELF (?!?!), jmock, gnu-trove, jakarta-commons-vfs
              • jakarta-commons-vfs: jakarta-slide-webdavclient, jcifs
                • jakarta-slide-webdavclient: jakarta-commons-transaction, xml-im-exporter
                  • jakarta-commons-transaction: builds cleanly
                  • xml-im-exporter: UP FOR REVIEW
                • jcifs: UP FOR REVIEW
        • tyrex: castor0(?!) ldapsdk, openorb, openorb-tns
          • openorb*: avalon stuff (package name issue only), excalibur-configuration (is obsolete! may need to patch openorb)
    • xstream: needs cglib, jettison, jmock, wstx
      • jettison: needs jakarta-slide-webdavclient
      • wstx: no extra dependencies; builds nicely, nearly done -- dead old review request
  • hessian -- UP FOR REVIEW (investigate "hessian-nodep" though)
  • hibernate3 -- needs cglib jboss-cache jboss-common ehcache oscache swarmcache c3p0 proxool docbook-xsl-saxon
    • jboss*: I really don't want to package this too ... :(
    • oscache: ivy hibernate3(?!) jakarta-commons-logging >= 1.1
      • ivy: builds clean; project seems defunct
      • jakarta-commons-logging: Fedora has 1.0
    • swarmcache: builds cleanly
    • proxool: no extra dependencies, but jpackage SRPM seems corrupt
    • docbook-xsl-saxon: builds cleanly
  • hibernate3-annotations -- needs cglib, hibernate3, hibernate3-ejb-persistence-3.0-api
    • hibernate3-ejb-persistence-3.0-api: no deps, builds cleanly
  • hibernate3-entitymanager -- cglib, hibernate3, hibernate3-annotations, hibernate3-ejb-persistence-3.0-api, jboss-common
  • j2ee_connector_1_5_api -- Not sure
  • jakarta-cactus -- needs aspectj, cargo, maven stuff
    • cargo: needs ITSELF (?!?!), jmock, gnu-trove, jakarta-commons-vfs
  • jakarta-commons-attributes -- no deps, build failure
  • jakarta-poi >= 0:2.5.1 -- needs commons-logging > 1.1 (Fedora has 1.0)
  • jamonapi -- needs interceptor_3_0_api (not sure)
  • jarjar -- UP FOR REVIEW
  • jasperreports >= 0:2.0.4 -- needs jakarta-commons-javaflow jakarta-poi
    • jakarta-commons-javaflow: needs junit-addons maven2-default-skin mojo-maven2-plugin-taglist jakarta-commons-jci
    • maven2-default-skin: not sure on deps
    • mojo-maven2-plugin-taglist: from huge mojo-maven-plugins SRPM
    • jakarta-commons-jci: groovy15 vafer-dependency
      • vafer-dependency: UP FOR REVIEW
  • jboss4-common -- not sure where this comes from
  • jexcelapi -- UP FOR REVIEW
  • jmock -- needs cglib
  • jotm -- needs carol howl-logger jonathan-core jonathan-jeremie openorb-ots kilim1
    • carol (NB: jpackage version (2.2.7) seems newer than anything I'm currently able to download from carol-irmi carol-cmi jonathan-core jonathan-jeremie monolog kilim1 nanoxml-lite
      • carol-irmi: no deps, builds fine
      • carol-cmi: probably fine, just dep names -- not a separate package any more?
      • monolog: p6spy
        • p6spy: needs jboss :(
    • jonathan-core: kilim1 monolog nanoxml-lite
    • jonathan-jeremie: jonathan-core kilim1 monolog
    • kilim1: nanoxml-lite
    • nanoxml-lite: UP FOR REVIEW (as part of nanoxml package)
  • jpa_3_0_api -- Not sure
  • jruby >= 0:1.1.1 -- requires jarjar joni jruby-bytelist jvyamlb retroweaver; there's a dead Fedora package that could be resurrected
    • joni: no deps
    • jvyamlb: jruby-bytelist
    • retroweaver (may not be needed actually): wants a lot of JREs(?)
  • jruby-bytelist: no extra deps, builds clean
  • jsf_1_2_api -- Not sure
  • junit44 >= 0:4.4 -- Fedora has a 3.x version
  • junit-addons -- UP FOR REVIEW
  • ognl -- UP FOR REVIEW
  • openjpa >= 0:1.0.1 -- needs derby docbkx docbook-xml serp
    • docbkx: maven stuff, avalon stuff (renaming), and xslthl
      • xlslthl: builds clean
    • docbook-xml: nodeps, builds clean
  • portlet-1.0-api -- needs maven stuff (plugin name issues)
    • NO: Newer version on website needs extra Maven love to compile
  • quartz16 -- needs lots of APIs and jboss :(
  • saaj_1_3_api -- Not sure
  • serp: UP FOR REVIEW (although it's probably obsolete ...
  • struts >= 0:1.3.8 -- Fedora has 1.2.9
  • struts-tiles >= 0:1.3.8 -- See if this is in the Fedora package
  • testng -- needs bsh2 and qdox18
    • qdox18: maven2-plugin-release jmock jakarta-slide-webdavclient xsite
      • xsite: maven-release nanocontainer sitemesh xstream
        • nanocontainer: aopalliance bsh2 cglib1(really?) dynaop groovy15 jakarta-commons-logging >= 1.1 jakarta-commons-vfs jmock jruby picocontainer proxytoys rhino16 xstream
          • dynaop: cglib1 bsh2
          • picocontainer: cglib jakarta-slide-webdavclient jmock prefuse proxytoys xstream
            • prefuse: lucene1 (ick ...)
          • proxytoys: jmock cglib xstream
          • rhino16: xmlbeans
            • xmlbeans: saxon8 saxon8-dom saxon8-xpath
              • saxon8 (all same SRPM): no outstanding deps; may be better to get existing saxon(v6) package upgraded
  • tiles -- needs maven stuff, portlet_1.0_api, shale-test
    • shale-test: srpm is "shale", requires lots of stuff, hopefully it's just for running tests and can be patched out
  • velocity >= 0:1.5 -- Fedora has 1.4
  • velocity-tools -- needs struts >= 0:1.3.8, struts-taglib, struts-tiles, velocity-dvsl, mojo-maven-plugin-taglist, maven2-default-skin
    • velocity-dvsl: needs velocity >= 0:1.5, mojo-maven-plugin-taglist, maven2-default-skin
  • ws_metadata_2_0_api -- Not sure
  • xapool -- needs carol, jotm, p6spy