blob: 82462ac457015a281a297ce3c7927c188bfde51b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
-->
<project name="Engine-Installer">
<property name="download.dir" value="${basedir}/engines-download"/>
<property name="download.engines" value="${download.dir}/engines"/>
<property name="download.file" value="${download.dir}/engines.zip"/>
<property name="merged.engines.dir" value="${basedir}/target/merged-engines"/>
<property name="temp.services.dir" value="${basedir}/target/services-temp"/>
<target name="check-merged">
<condition property="already.merged" >
<and>
<available file="${basedir}/target/bsf-engines-${bsf.version}.jar"/>
</and>
</condition>
</target>
<macrodef name="unpack_factory">
<attribute name="dir" />
<attribute name="jar" />
<sequential>
<echo level="info" message="** Extracting factory for @{dir} **"/>
<!-- Unpack factory into shared dir (except services) -->
<unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${merged.engines.dir}" overwrite="true">
<patternset>
<exclude name="**/javax.script.*"/>
</patternset>
</unzip>
<!-- Unpack services into work directory, replacing previous file -->
<unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${temp.services.dir}" overwrite="true">
<patternset>
<include name="**/javax.script.*"/>
</patternset>
</unzip>
<!-- Append the services file to the common services file -->
<concat destfile="${merged.engines.dir}/META-INF/services/javax.script.ScriptEngineFactory" append="true">
<fileset dir="${temp.services.dir}"/>
</concat>
</sequential>
</macrodef>
<target name="merge-engines" depends="check-merged, download-engines" unless="already.merged">
<mkdir dir="${download.dir}"/>
<unzip src="${download.file}" dest="${download.engines}" overwrite="true"/>
<!-- now unzip all the engine jars into a single directory -->
<delete dir="${merged.engines.dir}" quiet="true"/>
<mkdir dir="${merged.engines.dir}"/>
<delete dir="${temp.services.dir}" quiet="true"/>
<mkdir dir="${temp.services.dir}"/>
<!-- unpack_factory dir="beanshell" jar="bsh-engine"/ -->
<!-- unpack_factory dir="browserjs" jar="browserjs-engine"/ -->
<!-- unpack_factory dir="ejs" jar="js-engine"/ -->
<!-- unpack_factory dir="freemarker" jar="freemarker-engine"/ -->
<!-- unpack_factory dir="groovy" jar="groovy-engine"/ -->
<!-- unpack_factory dir="jacl" jar="jacl-engine"/ -->
<!-- unpack_factory dir="jaskell" jar="jaskell-engine"/ -->
<!-- unpack_factory dir="java" jar="java-engine"/ -->
<!-- unpack_factory dir="javascript" jar="js-engine"/ -->
<unpack_factory dir="javascript" jar="js-engine"/>
<!-- unpack_factory dir="jawk" jar="jawk-engine"/ -->
<!-- unpack_factory dir="jelly" jar="jelly-engine"/ -->
<!-- unpack_factory dir="jep" jar="jep-engine"/ -->
<!-- unpack_factory dir="jexl" jar="jexl-engine"/ -->
<!-- unpack_factory dir="jruby" jar="jruby-engine"/ -->
<!-- unpack_factory dir="jst" jar="jst-engine"/ -->
<!-- unpack_factory dir="judo" jar="judo-engine"/ -->
<!-- unpack_factory dir="juel" jar="juel-engine"/ -->
<unpack_factory dir="jython" jar="jython-engine"/>
<!-- unpack_factory dir="ognl" jar="ognl-engine"/ -->
<!-- unpack_factory dir="pnuts" jar="pnuts-jsr223"/ -->
<!-- unpack_factory dir="scheme" jar="scheme-engine"/ -->
<!-- unpack_factory dir="velocity" jar="velocity-engine"/ -->
<!-- unpack_factory dir="xpath" jar="xpath-engine"/ -->
<!-- unpack_factory dir="xslt" jar="xslt-engine"/ -->
<!-- Now package all that up into a single jar -->
<jar destfile="${basedir}/target/bsf-engines.tmp.jar" basedir="${merged.engines.dir}">
</jar>
<!-- Delete work directory -->
<delete dir="${merged.engines.dir}" />
<delete dir="${temp.services.dir}" />
<!-- Use Retroweaver to convert all the classes to JDK 1.4 -->
<echo level="info">localRepository='${localRepository}'</echo>
<echo level="info">settings.localRepository='${settings.localRepository}'</echo>
<taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask">
<classpath>
<pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver/2.0.7/retroweaver-2.0.7.jar"/>
<pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver-rt/2.0.7/retroweaver-rt-2.0.7.jar"/>
<pathelement location="${localRepository}/asm/asm/3.1/asm-3.1.jar"/>
<pathelement location="${localRepository}/asm/asm-commons/3.1/asm-commons-3.1.jar"/>
<pathelement location="${localRepository}/asm/asm-util/3.1/asm-util-3.1.jar"/>
<pathelement location="${localRepository}/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.jar"/>
</classpath>
</taskdef>
<retroweaver inputjar="${basedir}/target/bsf-engines.tmp.jar" outputjar="${basedir}/target/bsf-engines-${bsf.version}.jar"/>
<!-- Delete the temporary work file -->
<delete file="${basedir}/target/bsf-engines.tmp.jar"/>
</target>
<target name="check-downloaded">
<condition property="already.downloaded" >
<and>
<available file="${download.file}"/>
</and>
</condition>
<!-- these are required for the mvn install command to work correctly -->
<condition property="maven.suffix" value="">
<os family="unix"/>
</condition>
<condition property="maven.suffix" value=".bat">
<os family="windows"/>
</condition>
</target>
<target name="download-engines" depends="check-downloaded" unless="already.downloaded">
<mkdir dir="${download.dir}"/>
<get src="https://scripting.dev.java.net/files/documents/4957/37593/jsr223-engines.zip"
dest="${download.file}"
verbose="true"
usetimestamp="false"/>
<unzip src="${download.file}"
dest="${download.engines}"
overwrite="false"/>
</target>
</project>