Unicorn feed-back

Hi,

Thank you for the great software! Some questions and issues found will
follow.
But I do very like the Unicorn web application, the idea to bundle
everything under one umbrella, your architecture
<http://code.w3.org/unicorn/wiki/Documentation/Architecture> and the new
layout.

It goes even so far, that I would like to use Unicorn to address the ODF
Validator
<http://odftoolkit.org/projects/conformancetools/pages/ODFValidator>
(now about to move to Apache
<http://incubator.apache.org/projects/odftoolkit.html>).
Is there already documentation available how I would be able to reuse
Unicorn to implement the ODF validator as an observer (as described in
the your architecture
<http://code.w3.org/unicorn/wiki/Documentation/Architecture>).

Still there are two minor issues, I stumbled over, when I tried to
validate the latest ODF specification
http://docs.oasis-open.org/office/v1.2/cos01/OpenDocument-v1.2-cos01-part1.html

I run into the 2MB upload limit, which is fine, as the spec should be
parted into multiple HTML.
Therefore I installed the web application locally.

The first issue: I was unable to download of the sources with Mercurial:
"hg clone https://dvcs.w3.org/hg/unicorn

destination directory: unicorn
requesting all changes
adding changesets
adding manifests
transaction abort!
rollback completed
abort: stream ended unexpectedly (got 36 bytes, expected 189)"

Using Mercurial 1.8.2 with W7.

Second problem was that when I tried to build the unzipped bundle
sources, I run into the problem that the IVY retrieve statement was not
found.

I was following exactly your instructions on
http://code.w3.org/unicorn/wiki/Documentation/Install
and ran "ant retrieve default_conf war".

But the "retrieve" task could not be identified.
I could fix this to run out-of-the-box by reusing part of the IVY
bootstrap example build.xml
<http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml>
from their first tutorial
<http://ant.apache.org/ivy/history/latest-milestone/tutorial.html>.
Inserting the following into your build.xml...

---- COPY START ---
<!--
    this build file is a self contained project: it doesn't require
anything else
    that ant 1.6.2 or greater and java 1.4 or greater properly installed.
   
    It is used to showcase how easy and straightforward it can be to use
Ivy.
   
    This is not an example of the best pratice to use in a project,
especially
    for the java source code "generation" :-) (see generate-src target)
   
    To run copy this file in an empty directory, open a shell or a
command window
    in this directory and run "ant". It will download ivy and then use
it to resolve
    the dependency of the class which is itself "contained" in this
build script.
   
    After a successful build run "ant" again and you will see the build
will be
    much faster.
   
    More information can be found at http://ant.apache.org/ivy/
    -->

<!-- here is the version of ivy we will use. change this property to try
a newer
     version if you want -->
<property name="ivy.install.version" value="2.2.0" />
<property name="ivy.jar.dir" value="${basedir}/ivy" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />

<property name="build.dir" value="build" />
<property name="src.dir" value="src" />


<target name="download-ivy" unless="skip.download">
    <mkdir dir="${ivy.jar.dir}"/>
    <!-- download Ivy from web site so that it can be used even without
any special installation -->
    <echo message="installing ivy..."/>
    <get
src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
         dest="${ivy.jar.file}" usetimestamp="true"/>
</target>

<!-- =================================
      target: install-ivy        
        this target is not necessary if you put ivy.jar in your ant lib
directory
        if you already have ivy in your ant lib, you can simply remove this
        target and the dependency the 'go' target has on it
     ================================= -->
<target name="install-ivy" depends="download-ivy" description="-->
install ivy">
    <!-- try to load ivy here from local ivy dir, in case the user has
not already dropped
          it into ant's lib dir (note that the latter copy will always
take precedence).
          We will not fail as long as local lib dir exists (it may be
empty) and
          ivy is in at least one of ant's lib dir or the local lib dir. -->
    <path id="ivy.lib.path">
        <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml"
              uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</target>       
---- COPY END ---

...and adding "install-ivy" as dependency to your existing tag:
<target name="retrieve" depends="install-ivy" description="--> retrieve
dependencies with ivy">
    <ivy:retrieve />
</target>

There might be other ways, like adding

Note: That I only changed the IVY version from the example, I used 2.2.0
as latest available from
http://repo1.maven.org/maven2/org/apache/ivy/ivy/

About a feed-back on ideas how to reuse modules from your architecture
(e.g. as Maven artifacts) I would be grateful.
 
Thank you,
Svante

Received on Thursday, 15 September 2011 07:20:50 UTC