From Fedora Project Wiki
Line 24: Line 24:
=== Modifications to soprano ===
=== Modifications to soprano ===


Using this library instead of the bundled library with Soprano is pretty straightforward -- basically, you need to delete the bundled JAR files and modify the SESAME2_CLASSPATH to point to the system-wide JAR files instead of the bundled monolithic one. As far as I can tell (untested), the following <code>sesame2-config.h</code> should suffice:
Using this library instead of the bundled library with Soprano is pretty straightforward -- basically, you need to delete the bundled JAR files and modify the SESAME2_CLASSPATH to point to the system-wide JAR files instead of the bundled monolithic one. As far as I can tell (untested), the following <code>sesame2-config.h</code> should suffice ('''TODO: not quite, still needs the /usr/share/soprano/sesame2 directory'''):


<pre>
<pre>

Revision as of 13:54, 24 November 2009

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 four existing Fedora packages -- mysql-connector-java, postgresql-jdbc, jakarta-commons-fileupload, and jakarta-commons-pool -- which need minor updates in order for Sesame 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:

Relevant bugs

Modifications to soprano

Using this library instead of the bundled library with Soprano is pretty straightforward -- basically, you need to delete the bundled JAR files and modify the SESAME2_CLASSPATH to point to the system-wide JAR files instead of the bundled monolithic one. As far as I can tell (untested), the following sesame2-config.h should suffice (TODO: not quite, still needs the /usr/share/soprano/sesame2 directory):

#define JAVA_ROOT /usr/share/java
#define SESAME_ROOT JAVA_ROOT/sesame

#define SESAME2_CLASSPATH "SESAME_ROOT/queryparser-api.jar:SESAME_ROOT/sail-nativerdf.jar:SESAME_ROOT/
repository-sail.jar:SESAME_ROOT/repository-api.jar:SESAME_ROOT/model.jar:SESAME_ROOT/sail-api.jar:SESA
ME_ROOT/sail-memory.jar:SESAME_ROOT/query.jar:JAVA_ROOT/slf4j/api.jar:JAVA_ROOT/slf4j/simple.jar"

Then you need to change the CMakeList.txt file so that it doesn't auto-generate sesame2-config.h or try to install the bundled jar files:

diff -ur soprano-2.3.1.orig/backends/sesame2/CMakeLists.txt soprano-2.3.1/backends/sesame2/CMakeLists.
txt
--- soprano-2.3.1.orig/backends/sesame2/CMakeLists.txt  2009-11-24 13:33:21.408280962 +0000
+++ soprano-2.3.1/backends/sesame2/CMakeLists.txt       2009-11-24 13:40:56.903280519 +0000
@@ -14,8 +14,6 @@
   ${JNI_INCLUDE_DIRS}
 )

-configure_file(sesame2-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/sesame2-config.h)
-
 set(sesame2_backend_SRC
   jniwrapper.cpp
   jniobjectwrapper.cpp
@@ -53,9 +51,6 @@
 endif(WIN32)

 install(FILES
-  openrdf-sesame-2.2.4-onejar.jar
-  slf4j-api-1.5.5.jar
-  slf4j-simple-1.5.5.jar
   SopranoSesame2Wrapper.class
   DESTINATION share/soprano/sesame2
   )

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 http://carol.ow2.org/): 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