• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Changeset
  • Next Changeset →

Changeset 2542

Show
Ignore:
Timestamp:
06/25/08 15:59:22 (5 months ago)
Author:
jmoore
Message:

OmeroBuild : Reworking Ivy while trying to fix jbossall-client

jbossall-client contains hibernate-search classes which are out
of sync with our hibernate-search version, causing invalid class
exceptions and similar.

In an attempt to fix this, ivy was upgraded to 2.0.0-beta2 as well
as having a new top-level build.xml written. This ultimately did not work.

The only solution for the moment is to ship our own jbossall-client
jar with the hibernate-search classes removed. Hopefully,
the next upgrade of jboss will correct this.

Location:
trunk
Files:
3 added
2 removed
12 modified

  • build.xml (modified) (1 diff)
  • components/antlib/resources/dependencies.xml (modified) (3 diffs)
  • components/antlib/resources/directories.xml (modified) (3 diffs)
  • components/antlib/resources/global.xml (modified) (3 diffs)
  • components/antlib/resources/lifecycle.xml (modified) (1 diff)
  • components/antlib/resources/multiproject.xml (deleted)
  • components/server/ivy.xml (modified) (1 diff)
  • components/server/src/ome/services/fulltext/FullTextIndexer.java (modified) (1 diff)
  • components/tools/OmeroFS/.gitignore (added)
  • components/tools/OmeroImporter/build.xml (modified) (1 diff)
  • components/tools/OmeroImporter/ivy.xml (modified) (1 diff)
  • components/tools/build.xml (modified) (3 diffs)
  • deprecated.xml (added)
  • etc/ivysettings.xml (modified) (1 diff)
  • lib/repository/ivy-2.0.0-beta1.jar (deleted)
  • lib/repository/ivy-2.0.0-beta2.jar (added)
  • lib/repository/jbossall-client-4.2.1.GA.jar (modified) (previous)

Legend:

Unmodified
Added
Removed
  • trunk/build.xml

    r2492 r2542  
    11<?xml version="1.0" encoding="utf-8"?> 
    2 <project name="main" default="usage" basedir="."  xmlns:ivy="antlib:org.apache.ivy.ant"> 
     2<project name="main" default="build-default" basedir="."  xmlns:ivy="antlib:org.apache.ivy.ant"> 
    33<!-- 
    44#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    55# 
    66# $Id$ 
    7 #  
    8 # Copyright 2006 University of Dundee. All rights reserved. 
     7# 
     8# Copyright 2008 Glencoe Software, Inc. All rights reserved. 
    99# Use is subject to license terms supplied in LICENSE.txt 
    10 #  
     10# 
    1111#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    1212 
    1313#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    14 # Written by:  Josh Moore <josh.moore@gmx.de> 
     14# Written by:  Josh Moore, josh at glencoesoftware.com 
    1515#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    16      
    17   DOCUMENTATION: 
    18   ================================================= 
    1916 
    20   To use this script you need only have downloaded 
    21   the source code (either from subversion or as 
    22   distribution). The build system can be used by  
    23   calling: 
    24  
    25     java omero <arguments> 
    26  
    27   from within the OMERO_HOME directory (this is  
    28   what you checked out of subversion and where this 
    29   file is located). 
     17Rewrite of the OMERO build system to allow for building 
     18individual components. Use "ant -p" to see the individual 
     19build-* targets. 
    3020 
    3121--> 
    3222 
    33         <property name="import.dir" value="${basedir}/components/antlib/resources"/> 
    34         <import file="${import.dir}/global.xml"/> 
    35         <import file="${import.dir}/setup.xml"/> 
    36         <import file="${import.dir}/dependencies.xml"/> 
    37         <import file="${import.dir}/multiproject.xml"/> 
     23    <property name="import.dir" value="${basedir}/components/antlib/resources"/> 
     24    <import file="${basedir}/deprecated.xml"/> 
     25    <import file="${import.dir}/global.xml"/> 
    3826 
    39         <target name="help" depends="usage"/> 
    40         <target name="usage" 
    41                 description="Usage information"> 
    42                 <concat> 
    43                         <filelist dir="${import.dir}" files="usage-ant.txt"/> 
    44                 </concat> 
    45         </target> 
    46         <target name="all-help" 
    47                 description="Print all help targets"> 
    48                 <echo> 
    49                   help                  -- Simple build help 
    50                   help-deps             -- Help on dependency management 
    51                   help-life             -- Help on lifecycle targets (compile, test, ...) 
    52                   help-setup            -- Help on setup targets 
    53                   help-server           -- Help on server management 
    54                   help-release          -- Help on release process 
    55                 </echo> 
    56         </target> 
    57          
     27    <!-- Top-level ivy setup. Also defined in antlib/resources/dependencies.xml --> 
     28     <path id="ivy.classpath"> 
     29        <fileset dir="${omero.home}/lib/repository" includes="ivy*.jar"/> 
     30    </path> 
     31    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.classpath"/> 
     32    <property name="deps.buildlist.dir" value="${omero.home}/components"/> 
    5833 
    59 <!--    =============================================== 
    60                 BUILD 
    61 ==================================================  --> 
    62         <target name="fullbuild" depends="check-system,clean,build,reload-db" 
    63                 description="Extensive build which checks and cleans the build environment, builds, and setups the database"/> 
     34    <ivy:settings id="ivy.toplevel"  file="${etc.dir}/ivysettings.xml" override="true"/> 
     35    <ivy:buildlist reference="all.buildpath" settingsRef="ivy.toplevel"> 
     36        <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/policy/**,**/tools/**"/> 
     37    </ivy:buildlist> 
     38    <ivy:buildlist reference="blitzserver.buildpath" settingsRef="ivy.toplevel"> 
     39        <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/app/**,**/bioformats-omero/**,**/policy/**,**/tools/**"/> 
     40    </ivy:buildlist> 
     41    <ivy:buildlist reference="appserver.buildpath" settingsRef="ivy.toplevel"> 
     42        <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/blitz/**,**/policy/**,**/tools/**"/> 
     43    </ivy:buildlist> 
     44    <!-- Single file paths defined in antlib/resources/directories.xml --> 
    6445 
    65         <target name="build" depends="install" 
    66                 description="A simple build that will install all artifacts to ${omero.repo.local}"/> 
     46    <target name="no-tests" description="Disable tests"> 
     47        <property name="test.skip" value="true"/> 
     48    </target> 
    6749 
    68         <target name="deploy" depends="check-system"> 
    69                 <iterate buildpathref="app.buildpath" target="deploy"/> 
    70         </target> 
     50    <target name="clean" description="Calls 'clean' on all components"> 
     51        <iterate buildpathref="all.buildpath"   target="clean"/> 
     52        <iterate buildpathref="tools.buildpath" target="clean"/> 
     53        <delete dir="${dist.dir}"/> 
     54        <delete dir="${lib.dir}/cache"/> 
     55    </target> 
    7156 
    72         <target name="fulldeploy" depends="fullbuild,deploy"/> 
     57    <target name="build-default" description="Build all components except for C++"> 
     58        <property name="test.skip" value="true"/> 
     59        <antcall target="clean" inheritRefs="true" inheritAll="true"/> 
     60        <iterate buildpathref="blitzserver.buildpath" target="dist"/> 
     61        <iterate buildpathref="app.buildpath" target="dist"/> 
     62        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/> 
     63        <antcall target="build-py" inheritRefs="true" inheritAll="true"/> 
     64        <antcall target="build-importer" inheritRefs="true" inheritAll="true"/> 
     65    </target> 
    7366 
    74         <target name="clean" depends="multiproject" 
    75                 description="Lifecycle target: calls 'clean' on all components"> 
    76                 <iterate target="clean"/> 
    77                 <delete dir="${dist.dir}"/> 
    78                 <delete dir="${lib.dir}/cache"/> 
    79         </target> 
     67    <target name="build-all" description="Build everything and copy to dist"> 
     68        <iterate buildpathref="all.buildpath" target="dist"/> 
     69        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/> 
     70        <iterate buildpathref="tools.buildpath" target="build"/> 
     71        <iterate buildpathref="tools.buildpath" target="dist"/> 
     72    </target> 
    8073 
    81         <target name="withtools" 
    82                 description="Calls build and dist on the tools component, copying over dist/"> 
    83                 <iterate buildpathref="tools.buildpath" target="build"/> 
    84                 <iterate buildpathref="tools.buildpath" target="dist"/> 
    85         </target> 
     74    <target name="build-blitz" description="Build blitz and copy to dist/blitz"> 
     75        <iterate buildpathref="blitzserver.buildpath" target="dist"/> 
     76        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/> 
     77        <antcall target="build-py" inheritRefs="true" inheritAll="true"/> 
     78        <!-- Must also build python since it provides our command lines --> 
     79    </target> 
    8680 
    87         <target name="cleantools" 
    88                 description="Calls cleans on the tools component and removes tools/target"> 
    89                 <iterate buildpathref="tools.buildpath" target="clean"/> 
    90         </target> 
     81    <target name="build-ear" description="Build ear and copy to dist"> 
     82        <iterate buildpathref="appserver.buildpath" target="dist"/> 
     83        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/> 
     84        <iterate buildpathref="tools.buildpath" target="dist"/> 
     85    </target> 
    9186 
    92         <target name="zip"> 
    93                 <zip destfile="${product.name}-${omero.version}.zip"> 
    94                         <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
    95                             excludes="bin/omero"/> 
    96                         <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
    97                             includes="bin/omero" 
    98                             filemode="755"/> 
    99                 </zip> 
    100         </target> 
     87    <target name="build-importer" description="Build importer and copy to dist/client"> 
     88        <iterate buildpathref="OmeroImporter.buildpath" target="tools-dist"/> 
     89        <iterate buildpathref="tools.buildpath" target="dist"/> 
     90    </target> 
    10191 
    102         <target name="tar"> 
    103                 <tar destfile="${product.name}-${omero.version}.tar.bz2" compress="bzip2"> 
    104                         <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}"/> 
    105                 </tar> 
    106         </target> 
     92    <target name="build-cpp" description="Build C++ bindings and copy to dist/client"> 
     93        <iterate buildpathref="OmeroCpp.buildpath" target="tools-dist"/> 
     94        <iterate buildpathref="tools.buildpath" target="dist"/> 
     95    </target> 
    10796 
    108 <!--    =============================================== 
    109                 Mgmt Targets 
    110         ==================================================  --> 
     97    <target name="build-py" description="Build python bindings and copy to dist/client"> 
     98        <iterate buildpathref="OmeroPy.buildpath" target="tools-dist"/> 
     99        <iterate buildpathref="tools.buildpath" target="dist"/> 
     100    </target> 
    111101 
    112         <target name="reload-db"> 
    113                 <iterate buildpathref="server.buildpath" target="reload-db"/> 
    114         </target> 
     102    <!-- 
     103    Packaging 
     104    --> 
     105    <target name="zip"> 
     106        <zip destfile="${product.name}-${omero.version}.zip"> 
     107            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
     108                excludes="bin/omero"/> 
     109            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
     110                includes="bin/omero" 
     111                filemode="755"/> 
     112        </zip> 
     113    </target> 
    115114 
    116         <target name="addgroup"> 
    117                 <iterate buildpathref="client.buildpath" target="addgroup"/> 
    118         </target> 
     115    <target name="tar"> 
     116        <tar destfile="${product.name}-${omero.version}.tar.bz2" compress="bzip2"> 
     117            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
     118                excludes="bin/omero"/> 
     119            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}" 
     120                includes="bin/omero" 
     121                filemode="755"/> 
     122        </tar> 
     123    </target> 
    119124 
    120         <target name="adduser"> 
    121                 <iterate buildpathref="client.buildpath" target="adduser"/> 
    122         </target> 
     125    <target name="prepare-dist"> 
     126        <mkdir dir="${dist.dir}/bin"/> 
     127            <copy todir="${dist.dir}/etc" overwrite="true"> 
     128                <fileset dir="${omero.home}/etc"> 
     129                    <exclude name="local.properties"/> 
     130                </fileset> 
     131            </copy> 
     132            <copy todir="${dist.dir}"> 
     133                <fileset dir="${omero.home}"> 
     134                    <include name="omero.class"/> 
     135                    <include name="components/antlib/**"/> 
     136                    <include name="sql/**"/> 
     137                    <include name="lib/tools/**"/> 
     138                </fileset> 
     139            </copy> 
    123140 
    124         <target name="dist" depends="multiproject,_dist"> 
    125                 <iterate target="dist"/> 
    126                 <mkdir dir="${dist.dir}/bin"/> 
    127                 <chmod perm="a+x"> 
    128                         <fileset dir="${dist.dir}/bin" includes="omero"/> 
    129                         <fileset dir="${dist.dir}/lib" includes="**/*.py"/> 
    130                 </chmod> 
    131         </target> 
     141            <mkdir dir="${dist.dir}/client"/> 
     142            <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="client" transitive="false"/> 
     143            <ivy:retrieve conf="client" pattern="${dist.dir}/client/[module]-[revision].[ext]" sync="true" log="quiet"/> 
     144            <mkdir dir="${dist.dir}/lib/repository"/> 
     145            <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="server" transitive="true"/> 
     146            <ivy:retrieve conf="server" pattern="${dist.dir}/lib/repository/[module]-[revision].[ext]" sync="true" log="quiet"/> 
    132147 
    133         <target name="_dist" depends="deps-configure"> 
    134                 <mkdir dir="${dist.dir}"/> 
    135                 <!--  
    136                         etc/ 
    137                         ======================================================== 
    138                         Copies example property files to the ${dist.dir} 
    139                         for use by the user to configure the install. 
    140                 --> 
    141                 <copy todir="${dist.dir}/etc" overwrite="true"> 
    142                         <fileset dir="${omero.home}/etc"> 
    143                                 <exclude name="local.properties"/> 
    144                         </fileset> 
    145                 </copy> 
     148            <copy 
     149                file="${import.dir}/omero.xml" 
     150                tofile="${dist.dir}/build.xml" 
     151                overwrite="true" /> 
     152            <copy 
     153                file="${import.dir}/omero.ivy" 
     154                tofile="${dist.dir}/omero.ivy" 
     155                overwrite="true" /> 
    146156 
    147                 <!--  
    148                         Copies ... 
    149                 --> 
    150                 <copy todir="${dist.dir}"> 
    151                         <fileset dir="${omero.home}"> 
    152                                 <include name="omero.class"/> 
    153                                 <include name="components/antlib/**"/> 
    154                                 <include name="sql/**"/> 
    155                                 <include name="lib/tools/**"/> 
    156                         </fileset> 
    157                 </copy> 
     157    </target> 
    158158 
    159                 <mkdir dir="${dist.dir}/client"/> 
    160                 <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="client" transitive="false"/> 
    161                 <ivy:retrieve conf="client" pattern="${dist.dir}/client/[module]-[revision].[ext]" sync="true"/> 
    162                 <mkdir dir="${dist.dir}/lib/repository"/> 
    163                 <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="server" transitive="true"/> 
    164                 <ivy:retrieve conf="server" pattern="${dist.dir}/lib/repository/[module]-[revision].[ext]" sync="true"/> 
     159    <target name="prepare-eclipse" description="Symlink (or copy) all lib/repository jars needed by each component"> 
     160        <ivy:retrieve pattern="${omero.home}/omero.ivy" log="quiet" sync="true" symlink="true"/> 
     161        <iterate buildpathref="all.buildpath" target="prepare"/> 
     162        <iterate buildpathref="OmeroImporter.buildpath" target="prepare"/> 
     163        <iterate buildpathref="licenses.buildpath" target="prepare"/> 
     164    </target> 
    165165 
    166                 <!-- Copy new build.xml to ${dist.dir} --> 
    167                 <copy 
    168                         file="${import.dir}/omero.xml" 
    169                         tofile="${dist.dir}/build.xml" 
    170                         overwrite="true" 
    171                 /> 
    172                 <copy 
    173                         file="${import.dir}/omero.ivy" 
    174                         tofile="${dist.dir}/omero.ivy" 
    175                         overwrite="true" 
    176                 /> 
     166     <target name="findbugs" description="Generates findbugs.xml and checkstyle.xml for all components"> 
     167        <iterate target="findbugs"/> 
     168        <iterate buildpathref="tools.buildpath" target="findbugs"/> 
     169     </target> 
    177170 
    178         </target> 
    179  
    180         <target name="get-libs"> 
    181                 <property name="deps.build.dir" value="${omero.home}"/> 
    182                 <antcall target="deps-retrieve" inheritAll="true" inheritRefs="true"/> 
    183         </target> 
    184  
    185          <target name="findbugs" depends="multiproject" description="Generates findbugs.xml and checkstyle.xml for all components"> 
    186                 <iterate target="findbugs"/> 
    187                 <iterate buildpathref="tools.buildpath" target="findbugs"/> 
    188          </target> 
    189  
    190          <target name="coverage" depends="get-libs" 
    191                 description="Merge code coverage reports into single top-level report"> 
    192                 <taskdef resource="emma_ant.properties" classpathref="omero.classpath" /> 
    193                 <emma> 
    194                         <merge outfile="${target.dir}/coverage.es" > 
    195                                 <fileset dir="components" includes="**/target/coverage.emma,**/target/metadata.emma"/> 
    196                         </merge> 
    197                         <report sourcepath="${src.dir}" > 
    198                                 <fileset dir="${target.dir}" includes="coverage.es"/> 
    199                                 <html outfile="${target.dir}/coverage.html" /> 
    200                                 <xml outfile="${target.dir}/coverage.xml" /> 
    201                         </report> 
    202                 </emma> 
    203          </target> 
     171     <target name="coverage" depends="prepare-eclipse" 
     172        description="Merge code coverage reports into single top-level report"> 
     173        <taskdef resource="emma_ant.properties" classpathref="omero.classpath" /> 
     174        <emma> 
     175            <merge outfile="${target.dir}/coverage.es" > 
     176                <fileset dir="components" includes="**/target/coverage.emma,**/target/metadata.emma"/> 
     177            </merge> 
     178            <report sourcepath="${src.dir}" > 
     179                <fileset dir="${target.dir}" includes="coverage.es"/> 
     180                <html outfile="${target.dir}/coverage.html" /> 
     181                <xml outfile="${target.dir}/coverage.xml" /> 
     182            </report> 
     183        </emma> 
     184     </target> 
    204185 
    205186</project> 
  • trunk/components/antlib/resources/dependencies.xml

    r2073 r2542  
    7373        ${msg.macro.missing_properties} 
    7474    </fail> 
    75     <ivy:settings id="ivy.instance"  file="${etc.dir}/ivysettings.xml" /> 
     75    <ivy:settings id="ivy.instance"  file="${etc.dir}/ivysettings.xml" override="true"/> 
    7676  </target> 
    7777 
    … …  
    9090          unless="deps.lib.dir.needed"> 
    9191    <mkdir dir="${deps.lib.dir}"/> 
    92     <ivy:retrieve pattern="${deps.lib.dir}/[artifact].[ext]"/> 
     92    <ivy:retrieve pattern="${deps.lib.dir}/[artifact].[ext]" log="quiet" sync="true" symlink="true"/> 
    9393  </target> 
    9494 
    … …  
    9797    <ivy:info file="${basedir}/ivy.xml"/> 
    9898  </target> 
    99    
     99 
    100100  <target name="deps-resolve" 
    101101          depends="deps-configure" 
    102102          description="Transitively resolves all dependencies"> 
    103     <ivy:resolve file="${ivy.dep.file}" type="jar"/> 
     103    <ivy:resolve file="${ivy.dep.file}" type="jar" log="quiet"/> 
    104104  </target> 
    105    
     105 
    106106  <target name="deps-report"  
    107107    depends="deps-retrieve"  
  • trunk/components/antlib/resources/directories.xml

    r2012 r2542  
    4747        <property name="blitz.comp"     value="${components.dir}/blitz"/> 
    4848        <property name="tools.comp"     value="${components.dir}/tools"/> 
     49        <property name="licenses.comp"     value="${tools.comp}/licenses"/> 
     50        <property name="OmeroCpp.comp"     value="${tools.comp}/OmeroCpp"/> 
     51        <property name="OmeroJava.comp"     value="${tools.comp}/OmeroJava"/> 
     52        <property name="OmeroImporter.comp"     value="${tools.comp}/OmeroImporter"/> 
     53        <property name="OmeroPy.comp"     value="${tools.comp}/OmeroPy"/> 
    4954 
    5055        <!-- Build Path References --> 
    … …  
    6166          <pathelement location="${server.comp}/build.xml"/> 
    6267        </path> 
     68        <path id="licenses.buildpath"> 
     69          <pathelement location="${licenses.comp}/build.xml"/> 
     70        </path> 
     71        <path id="OmeroImporter.buildpath"> 
     72          <pathelement location="${OmeroImporter.comp}/build.xml"/> 
     73        </path> 
     74        <path id="OmeroCpp.buildpath"> 
     75          <pathelement location="${OmeroCpp.comp}/build.xml"/> 
     76        </path> 
     77        <path id="OmeroJava.buildpath"> 
     78          <pathelement location="${OmeroJava.comp}/build.xml"/> 
     79        </path> 
     80        <path id="OmeroPy.buildpath"> 
     81          <pathelement location="${OmeroPy.comp}/build.xml"/> 
     82        </path> 
    6383        <path id="tools.buildpath"> 
    6484          <pathelement location="${tools.comp}/build.xml"/> 
    … …  
    7090        <property name="tools.jars"    value="${components.dir}/tools/target/jars"/> 
    7191        <property name="tools.classes" value="${components.dir}/tools/target/service-classes"/> 
    72          
     92 
    7393        <!-- Relative paths --> 
    7494        <property name="target.rel"    value="target"/> 
    7595        <property name="classes.rel"   value="${target.rel}/classes"/> 
    76         <property name="generated.rel" value="${target.rel}/generated"/>         
     96        <property name="generated.rel" value="${target.rel}/generated"/> 
    7797        <property name="emmaclasses.rel" value="${target.rel}/emma-classes"/> 
    7898        <property name="testclasses.rel" value="${target.rel}/test-classes"/> 
    7999        <property name="testreports.rel" value="${target.rel}/reports"/> 
    80                  
     100 
    81101        <!-- Directories relative to basedir: different for each component --> 
    82102        <property name="src.dir"         value="${basedir}/src" /> 
  • trunk/components/antlib/resources/global.xml

    r2502 r2542  
    1414# Written by:  Josh Moore <josh.moore@gmx.de> 
    1515#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    16      
     16 
    1717  DOCUMENTATION: 
    1818  ============================================================================== 
    1919  Central ant script. It imports all other helper scripts and property 
    2020  files in the proper order, and in general can be imported from 
    21   anywhere.  
     21  anywhere. 
    2222 
    2323  global.xml will determine its own location and bootstrap all other 
    … …  
    4949        <property name="test.with.fail" value="true"/> 
    5050        <property name="classpath.file" value="classpath.xml"/> 
    51          
     51 
    5252        <!-- Imports --> 
    5353        <import file="${import.dir}/patterns.xml"/> 
    5454        <import file="${import.dir}/macros.xml"/> 
    55          
     55 
    5656        <!-- Message bundles, so all properties are defined --> 
    5757        <property file="${import.dir}/messages.properties" /> 
    5858 
    59     <!-- Post-import properties --> 
    60     <property name="sql.dir" value="${omero.home}/sql/${omero.db.profile}/${omero.dbversion}__${omero.dbpatch}"/> 
     59        <!-- Post-import properties --> 
     60        <property name="sql.dir" value="${omero.home}/sql/${omero.db.profile}/${omero.dbversion}__${omero.dbpatch}"/> 
     61 
     62        <!-- 
     63          The idea for this macro is taken from maven2. Use deps-buildlist 
     64          to create deps.build.path if you do not have one specified. 
     65        --> 
     66        <macrodef name="iterate"> 
     67                <attribute name="inheritAll" default="false"/> 
     68                <attribute name="inheritRefs" default="false"/> 
     69                <attribute name="buildpathref" default="deps.build.path"/> 
     70                <attribute name="target"/> 
     71                <sequential> 
     72                <subant verbose="true" buildpathref="@{buildpathref}" inheritAll="@{inheritAll}" inheritRefs="@{inheritRefs}" failonerror="true" target="@{target}"> 
     73                        <property name="multi.test.with.fail" value="${test.with.fail}"/> 
     74                        <property name="multi.test.skip" value="${test.skip}"/> 
     75                        <property name="multi.generate.skip" value="${generate.skip}"/> 
     76                        <property name="multi.checks.skip" value="${checks.skip}"/> 
     77                        <property name="multi.emma.enabled" value="${emma.enabled}"/> 
     78                        <!-- Defaults set in dependencies.xml --> 
     79                        <property name="ivy.buildlist.ivyfilepath" value="${ivy.buildlist.ivyfilepath}"/> 
     80                        <property name="ivy.dep.file" value="${ivy.dep.file}"/> 
     81                </subant> 
     82                </sequential> 
     83        </macrodef> 
    6184 
    6285    <!-- = = = = = = = = = = = = = = = = = 
    63           help  
     86          help 
    6487         = = = = = = = = = = = = = = = = = --> 
    6588        <target name="help"> 
    … …  
    6992        </target> 
    7093 
    71         <target name="variables-define"> 
    72                 <condition property="test.with.fail"> 
    73                         <equals arg1="${multi.test.with.fail}" arg2="true"/> 
    74                 </condition> 
    75                 <condition property="test.skip"> 
    76                         <equals arg1="${multi.test.skip}" arg2="true"/> 
    77                 </condition> 
    78                 <condition property="emma.enabled"> 
    79                         <equals arg1="${multi.emma.enabled}" arg2="true"/> 
    80                 </condition> 
    81                 <condition property="generate.skip"> 
    82                         <equals arg1="${multi.generate.skip}" arg2="true"/> 
    83                 </condition> 
    84                 <condition property="checks.skip"> 
    85                         <equals arg1="${multi.checks.skip}" arg2="true"/> 
    86                 </condition> 
    87         </target> 
    88  
    89         <target name="quick"> 
    90                 <property name="config.skip" value="true"/> 
    91                 <property name="test.skip" value="true"/> 
    92                 <property name="generate.skip" value="true"/> 
    93         </target> 
    94  
    95         <target name="nochecks"> 
    96                 <property name="checks.skip" value="true"/> 
    97         </target> 
    98  
    99         <target name="fail-on-error"> 
    100                 <property name="test.with.fail" value="true"/> 
    101         </target> 
    102  
    103         <target name="load-groovy"> 
    104                 <available property="groovy-exists" classname="org.codehaus.groovy.ant.Groovy" classpathref="omero.classpath" /> 
    105                 <fail unless="groovy-exists" message="Groovy ${msg.macro.missing_fail}"/> 
    106  
    107                 <!-- http://groovy.codehaus.org/Ant+Task+Troubleshooting --> 
    108                 <taskdef name="rootLoaderRef" classname="org.codehaus.groovy.ant.RootLoaderRef" classpathref="omero.classpath"/> 
    109                 <rootLoaderRef ref="groovy.classpath"> 
    110                         <classpath refid="omero.classpath"/> 
    111                 </rootLoaderRef> 
    112                 <taskdef classname="org.codehaus.groovy.ant.Groovy" loaderref="groovy.classpath" name="groovy"/> 
    113         </target> 
    114  
    115         <target name="setup-db" depends="prepare"> 
    116                 <java classname="ome.security.PasswordUtil" outputproperty="ROOTPASS" classpathref="omero.classpath"> 
    117                         <arg value="${omero.rootpass}"/> 
    118                 </java> 
    119                 <copy file="${sql.dir}/schema.sql" tofile="${target.dir}/ddl.sql"  overwrite="true"/> 
    120                 <copy file="${sql.dir}/data.sql"   tofile="${target.dir}/data.sql"  overwrite="true"/>