You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cd...@apache.org on 2006/04/21 15:44:44 UTC
svn commit: r395881 - in /forrest/trunk: main/forrest.build.xml
main/targets/plugins.xml main/var/pluginlist2fetch.xsl plugins/build.xml
Author: cdupoirieux
Date: Fri Apr 21 06:44:42 2006
New Revision: 395881
URL: http://svn.apache.org/viewcvs?rev=395881&view=rev
Log:
FOR-747, FOR-388, FOR-343...
New Plugin Fetch method to auto update plugins.
I will close these issues when I will have updated the forrest site UsingPlugins page.
Method summary - for each needed plugin :
- search sources of plugin in local and in remote site (see http://svn.apache.org/viewcvs?view=rev&rev=391589)
Locally found :
- local deploy it if found (the new local-deploy does not clean so that only new plugins features are deployed)
Remotly found :
- if the remote zip file is more recent, then download it and extract it
- else, no download, no extract.
- Configure the plugin.
The plugins.xml has been cleared and is documented - a little...
In other files, several targets have been updated in order to be quiet sometimes
The order of the targets execution have been reviewed to avoid duplication of execution (init-proxy, fetch-descriptors-files, for instances...)
Modified:
forrest/trunk/main/forrest.build.xml
forrest/trunk/main/targets/plugins.xml
forrest/trunk/main/var/pluginlist2fetch.xsl
forrest/trunk/plugins/build.xml
Modified: forrest/trunk/main/forrest.build.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/main/forrest.build.xml?rev=395881&r1=395880&r2=395881&view=diff
==============================================================================
--- forrest/trunk/main/forrest.build.xml (original)
+++ forrest/trunk/main/forrest.build.xml Fri Apr 21 06:44:42 2006
@@ -502,7 +502,7 @@
<!-- ** ** -->
<!-- ***************************************************************** -->
<!-- ***************************************************************** -->
- <target name="init-proxy" if="proxy.host">
+ <target name="init-proxy" if="proxy.host" unless="proxy.already.set">
<echo>Using proxy : ${proxy.host}:${proxy.port}</echo>
<if>
<isset property="proxy.user"/>
Modified: forrest/trunk/main/targets/plugins.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/main/targets/plugins.xml?rev=395881&r1=395880&r2=395881&view=diff
==============================================================================
--- forrest/trunk/main/targets/plugins.xml (original)
+++ forrest/trunk/main/targets/plugins.xml Fri Apr 21 06:44:42 2006
@@ -53,16 +53,16 @@
<if>
<isset property="plugin.unavailable"/>
<then>
- <echo>${versioned.name} is not available in the build dir</echo>
+ <echo>${versioned.name} is not available in the build dir. Trying to fetch it...</echo>
</then>
<else>
- <echo>${versioned.name} is available in the build dir</echo>
+ <echo>${versioned.name} is available in the build dir. Trying to update it...</echo>
</else>
</if>
</target>
<target name="unpack-plugin"
- if="plugin.unavailable"
+ if="downloaded"
depends="init-props">
<if>
<available file="${forrest.plugins-dir}/${versioned.name}.zip"/>
@@ -121,12 +121,7 @@
<fileset dir="${forrest.plugins-dir}/">
<include name="${plugin}.zip"/>
</fileset>
- </unzip>
- <delete>
- <fileset dir="${forrest.plugins-dir}/">
- <include name="${plugin}.zip"/>
- </fileset>
- </delete>
+ </unzip>
<!-- add to the entity catalog -->
<copy file="${forrest.core}/var/initial_catalog.xcat"
@@ -297,11 +292,7 @@
tofile="${project.temp-dir}/locationmap.xml"/>
</target>
- <target name="fetch-plugins-descriptors" if="plugin.unavailable" depends="init-proxy">
- <delete>
- <fileset dir="${project.temp-dir}" includes="plugins-*.xml"/>
- </delete>
-
+ <target name="fetch-plugins-descriptors" depends="init-proxy" unless="plugins.desc.already.fetched">
<var name="plugin-counter" value="1"/>
<for list="${forrest.plugins.descriptors}" param="url">
<sequential>
@@ -339,31 +330,41 @@
</target>
<target name="fetch-plugin"
- if = "plugin.unavailable"
+
depends="init-props, fetch-plugins-descriptors">
- <for param="plugin-descriptor-file">
- <path>
- <fileset dir="${project.temp-dir}" includes="plugins-*.xml"/>
- </path>
- <sequential>
- <xslt in="@{plugin-descriptor-file}"
- out="${project.temp-dir}/pluginlist2fetchbuild.xml"
- style="${forrest.core}/var/pluginlist2fetch.xsl"
- force="true">
- <param name="plugin-name" expression="${plugin.name}"/>
- <param name="plugin-version" expression="${plugin.version}"/>
- <param name="plugin-dir" expression="${forrest.plugins-dir}/"/>
- <param name="plugin-src-dir" expression="${project.required.plugins.src}"/>
- <param name="forrest-version" expression="${forrest.version}"/>
- </xslt>
- <ant antfile="${project.temp-dir}/pluginlist2fetchbuild.xml"/>
- </sequential>
- </for>
+ <echo>Trying to find the description of ${versioned.name} in the different descriptor files</echo>
+ <trycatch property="plugin-found">
+ <try>
+ <for param="plugin-descriptor-file">
+ <path>
+ <fileset dir="${project.temp-dir}" includes="plugins-*.xml"/>
+ </path>
+ <sequential>
+ <echo>Using the descriptor file @{plugin-descriptor-file}...</echo>
+ <xslt in="@{plugin-descriptor-file}"
+ out="${project.temp-dir}/pluginlist2fetchbuild.xml"
+ style="${forrest.core}/var/pluginlist2fetch.xsl"
+ force="true">
+ <param name="plugin-name" expression="${plugin.name}"/>
+ <param name="plugin-version" expression="${plugin.version}"/>
+ <param name="plugin-dir" expression="${forrest.plugins-dir}/"/>
+ <param name="plugin-src-dir" expression="${project.required.plugins.src}"/>
+ <param name="forrest-version" expression="${forrest.version}"/>
+ </xslt>
+ <antfetch antfile="${project.temp-dir}/pluginlist2fetchbuild.xml" return="plugin-found,downloaded"/>
+ <fail if="plugin-found"/>
+ </sequential>
+ </for>
+ </try>
+ <catch>
+ <echo>Fetch-plugin Ok, installing !</echo>
+ </catch>
+ </trycatch>
</target>
<target name="install-plugin" depends="check-plugin, fetch-plugin, unpack-plugin"/>
- <target name="init-plugins" depends="init-props"
+ <target name="init-plugins" depends="init-props, fetch-plugins-descriptors"
description="Ensure the required plugins are available locally, if any are not, download them automatically">
<mkdir dir="${forrest.plugins-dir}"/>
@@ -411,6 +412,8 @@
<param name="plugin.name" value="${plugin.name}"/>
<param name="plugin.version" value="${plugin.version}"/>
<param name="versioned.name" value="@{name}"/>
+ <param name="plugins.desc.already.fetched" value="true"/>
+ <param name="proxy.already.set" value="true"/>
</antcall>
<antcall target="configure-plugin">
<param name="plugin.name" value="${plugin.name}"/>
Modified: forrest/trunk/main/var/pluginlist2fetch.xsl
URL: http://svn.apache.org/viewcvs/forrest/trunk/main/var/pluginlist2fetch.xsl?rev=395881&r1=395880&r2=395881&view=diff
==============================================================================
--- forrest/trunk/main/var/pluginlist2fetch.xsl (original)
+++ forrest/trunk/main/var/pluginlist2fetch.xsl Fri Apr 21 06:44:42 2006
@@ -52,7 +52,7 @@
<target name="fetch-remote-versioned-plugin-version-forrest" unless="plugin-found">
<!-- Search for the remote versionned plugin in the versionned Forrest...-->
- <antcallback target="download" return="plugin-found">
+ <antcallback target="download" return="plugin-found,desired.plugin.zip.present">
<param name="download-plugin-version">
<xsl:attribute name="value">-<xsl:value-of select="$plugin-version" /></xsl:attribute>
</param>
@@ -77,7 +77,7 @@
<target name="fetch-remote-unversioned-plugin-version-forrest" unless="plugin-found">
<!-- Search for the remote unversionned plugin in the versionned Forrest...-->
- <antcallback target="download" return="plugin-found">
+ <antcallback target="download" return="plugin-found,desired.plugin.zip.present">
<param name="download-plugin-version" value=""/>
<param name="download-plugin-name">
<xsl:attribute name="value"><xsl:value-of select="$plugin-name" /></xsl:attribute>
@@ -90,7 +90,7 @@
<target name="fetch-remote-unversioned-plugin-unversion-forrest" unless="plugin-found">
<!-- Search for the remote unversionned plugin in the unversionned Forrest...-->
- <antcallback target="download" return="plugin-found">
+ <antcallback target="download" return="plugin-found,desired.plugin.zip.present">
<param name="download-plugin-version" value=""/>
<param name="download-plugin-name">
<xsl:attribute name="value"><xsl:value-of select="$plugin-name" /></xsl:attribute>
@@ -112,9 +112,11 @@
<xsl:attribute name="file">@{plugin-src-dir}/${local-plugin-name}${local-plugin-version}</xsl:attribute>
</available>
<then>
+ <echo message="Found !"/>
<ant target="local-deploy">
<xsl:attribute name="antfile">@{plugin-src-dir}/${local-plugin-name}${local-plugin-version}/build.xml</xsl:attribute>
<xsl:attribute name="dir">@{plugin-src-dir}/${local-plugin-name}${local-plugin-version}</xsl:attribute>
+ <property name="no.echo.init" value="true"/>
</ant>
<fail/>
</then>
@@ -123,13 +125,29 @@
</for>
</try>
<catch>
- <echo>Plugin ${local-plugin-name}${local-plugin-version} deployed !</echo>
+ <echo>Plugin ${local-plugin-name}${local-plugin-version} deployed ! Ready to configure</echo>
</catch>
</trycatch>
</target>
- <target name="download">
+ <target name="download" depends="keep-original-zip,get-from-remote-site,is-downloaded,remove-original-zip"/>
+
+ <target name="keep-original-zip" depends="available-original-zip" if="original.zip.exists">
+ <copy preservelastmodified="true">
+ <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip</xsl:attribute>
+ <xsl:attribute name="tofile"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip.orig</xsl:attribute>
+ </copy>
+ </target>
+
+ <target name="available-original-zip">
+ <available property="original.zip.exists">
+ <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip</xsl:attribute>
+ </available>
+ </target>
+
+ <target name="get-from-remote-site">
<echo>Tying to download ${download-plugin-name}${download-plugin-version} from the distribution site ...</echo>
+ <!-- FIXME the following test does not work... -->
<if>
<not><equals arg2="">
<xsl:attribute name="arg1">${download.forrest.version}</xsl:attribute>
@@ -138,37 +156,68 @@
<echo>Using Forrest version : ${download-forrest-version}</echo>
</then>
</if>
+ <!-- Get from the remote URL -->
<get verbose="true" usetimestamp="true" ignoreerrors="true">
<xsl:attribute name="src"><xsl:value-of select="plugin[@name=$plugin-name]/@url" />/${download-forrest-version}${download-plugin-name}${download-plugin-version}.zip</xsl:attribute>
<xsl:attribute name="dest"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip</xsl:attribute>
</get>
- <available property="plugin-found">
+ <!-- Check if a zip has been downloaded from this URL -->
+ <available property="desired.plugin.zip.present">
<xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip</xsl:attribute>
</available>
+ <condition property="plugin-found">
+ <!-- or -->
+ <and>
+ <isset property="desired.plugin.zip.present"/>
+ <not><isset property="original.zip.exists"/></not>
+ </and>
+ </condition>
+ </target>
+
+ <target name="is-downloaded" if="original.zip.exists">
+ <!-- Check is the downloaded file is more recent than the original zip ... -->
+ <uptodate property="no-difference-found">
+ <xsl:attribute name="srcfile"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip</xsl:attribute>
+ <xsl:attribute name="targetfile"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip.orig</xsl:attribute>
+ </uptodate>
+ <!-- If there are differences, the plugin is found -->
+ <if>
+ <not><isset property="no-difference-found"/></not>
+ <then>
+ <property name="plugin-found" value="true"/>
+ </then>
+ </if>
</target>
- <target name="final-check">
- <available property="desired.plugin.zip.present">
- <xsl:choose>
- <xsl:when test="$plugin-version">
- <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/><xsl:value-of select="$plugin-name" />-<xsl:value-of select="$plugin-version" />.zip</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/><xsl:value-of select="$plugin-name" />.zip</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </available>
+ <target name="remove-original-zip" if="original.zip.exists">
+ <!-- Now, we can delete the original -->
+ <delete>
+ <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/>${download-plugin-name}.zip.orig</xsl:attribute>
+ </delete>
+ </target>
- <if>
- <isset property="desired.plugin.zip.present"/>
- <then>
- <echo><xsl:value-of select="$plugin-name" /> downloaded, ready to install</echo>
- </then>
- <else>
- <available property="unversioned.plugin.present" type="dir">
- <xsl:attribute name="file"><xsl:value-of select="$plugin-dir"/><xsl:value-of select="$plugin-name" /></xsl:attribute>
- </available>
- <fail unless="unversioned.plugin.present">
+ <target name="final-check" depends="has-been-downloaded,downloaded-message,uptodate-message,not-found-message"/>
+
+ <target name="has-been-downloaded" if="desired.plugin.zip.present">
+ <condition property="up-to-date">
+ <not><isset property="plugin-found"/></not>
+ </condition>
+ <condition property="downloaded">
+ <isset property="plugin-found"/>
+ </condition>
+ </target>
+
+ <target name="downloaded-message" if="downloaded">
+ <echo>Plugin <xsl:value-of select="$plugin-name" /> downloaded ! Ready to install</echo>
+ </target>
+
+ <target name="uptodate-message" if="up-to-date">
+ <echo>Plugin <xsl:value-of select="$plugin-name" /> was up-to-date ! Ready to configure</echo>
+ <property name="plugin-found" value="true"/>
+ </target>
+
+ <target name="not-found-message" unless="desired.plugin.zip.present">
+ <fail>
Unable to download the
"<xsl:value-of select="$plugin-name" />" plugin
<xsl:if test="$plugin-version">version <xsl:value-of select="$plugin-version"/></xsl:if>
@@ -187,10 +236,10 @@
To manually install a plugin, download the plugin zip file from
<xsl:value-of select="plugin[@name=$plugin-name]/@url"/> and
extract it into
- <xsl:value-of select="$plugin-dir"/><xsl:value-of select="$plugin-name" /></fail>
- </else>
- </if>
+ <xsl:value-of select="$plugin-dir"/><xsl:value-of select="$plugin-name" />
+ </fail>
</target>
+
</project>
</xsl:when>
<xsl:otherwise>
Modified: forrest/trunk/plugins/build.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/plugins/build.xml?rev=395881&r1=395880&r2=395881&view=diff
==============================================================================
--- forrest/trunk/plugins/build.xml (original)
+++ forrest/trunk/plugins/build.xml Fri Apr 21 06:44:42 2006
@@ -70,7 +70,12 @@
</classpath>
</taskdef>
- <target name="init">
+ <target name="init" depends="init-build-compiler, echo-init"/>
+
+ <target name="init-build-compiler">
+
+ <fail unless="plugin-name" message="You must run plugin build targets from within the plugin directory."/>
+
<tstamp>
<format property="YEAR" pattern="yyyy" locale="en"/>
</tstamp>
@@ -87,10 +92,19 @@
<property name="build.compiler.type" value="classic"/>
<property name="build.compiler.vm" value="1.2"/>
- <fail unless="plugin-name" message="You must run plugin build targets from within the plugin directory."/>
-
<mkdir dir="${build.dir}"/>
+ <path id="classpath">
+ <fileset dir="${forrest.home}/lib" includes="**/*.jar"/>
+ <fileset dir="${plugin.lib.dir}" includes="*.jar"/>
+ <fileset dir="${plugin.lib.dir}" includes="*.zip"/>
+ </path>
+
+ <available file="${plugin.java.dir}" property="java_exists" type="dir"/>
+
+ </target>
+
+ <target name="echo-init" depends="init-build-compiler" unless="no.echo.init">
<buildnumber file="${build.dir}/build.number"/>
<echo>
--------------------------------------------------------------
@@ -106,15 +120,6 @@
--------------------------------------------------------------
</echo>
-
- <path id="classpath">
- <fileset dir="${forrest.home}/lib" includes="**/*.jar"/>
- <fileset dir="${plugin.lib.dir}" includes="*.jar"/>
- <fileset dir="${plugin.lib.dir}" includes="*.zip"/>
- </path>
-
- <available file="${plugin.java.dir}" property="java_exists" type="dir"/>
-
</target>
<target name="clean" depends="init">
@@ -122,11 +127,9 @@
<delete dir="${forrest.plugins.dist.dir}"/>
</target>
-
- <!-- FIXME: FOR-388 Forrest should really use the plugins in-place if they are available as source -->
<target name="local-deploy"
description="Deploy a plugin locally"
- depends="init, clean, jar">
+ depends="init, jar">
<echo>Locally deploying ${plugin-name}</echo>
Re: svn commit: r395881 - in /forrest/trunk:
main/forrest.build.xml main/targets/plugins.xml
main/var/pluginlist2fetch.xsl plugins/build.xml
Posted by Thorsten Scherler <th...@apache.org>.
El vie, 21-04-2006 a las 13:44 +0000, cdupoirieux@apache.org escribió:
> Author: cdupoirieux
> Date: Fri Apr 21 06:44:42 2006
> New Revision: 395881
>
> URL: http://svn.apache.org/viewcvs?rev=395881&view=rev
> Log:
> FOR-747, FOR-388, FOR-343...
> New Plugin Fetch method to auto update plugins.
> I will close these issues when I will have updated the forrest site UsingPlugins page.
Thanks so much for this enhancement Cyriaque.
It is so much more comfortable like this. :)
Merci.
salu2
--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)
Re: svn commit: r395881 - in /forrest/trunk:
main/forrest.build.xml main/targets/plugins.xml
main/var/pluginlist2fetch.xsl plugins/build.xml
Posted by Thorsten Scherler <th...@apache.org>.
El vie, 21-04-2006 a las 13:44 +0000, cdupoirieux@apache.org escribió:
> Author: cdupoirieux
> Date: Fri Apr 21 06:44:42 2006
> New Revision: 395881
>
> URL: http://svn.apache.org/viewcvs?rev=395881&view=rev
> Log:
> FOR-747, FOR-388, FOR-343...
> New Plugin Fetch method to auto update plugins.
> I will close these issues when I will have updated the forrest site UsingPlugins page.
Thanks so much for this enhancement Cyriaque.
It is so much more comfortable like this. :)
Merci.
salu2
--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)