Hi all -
I'm trying to use Ant to help automate a software install/update process: a
ZIP download and unpack, remove empty directories, create symlinks in their
place, and then apply some simple regex/replace tasks. I have the process
worked out on a FreeBSD machine, but as soon as I move the build.xml to a
Linux system, things fail when I try to create the symlinks.
I've been working with the assumption that I may be either updating an
existing install (ie I have symlinks) or I am installing fresh (ie I have
empty directories), so the tasks are... uh, probably unnecessarily verbose
(suggestions for improvements welcome). The error on linux comes in when
the `symlink` task is called: I get the following BUILD FAILED error:
'Deletion of file at /home/bridger/bin/basex/data failed, while trying to
overwrite it with a symlink.'
Any suggestions about what to do to fix this and make it more robust?
Thanks in advance for your time and help.
Best,
Bridger
<target name="rm-dirs">
<if>
<available file="${basex-home}/data" type="dir"/>
<then>
<echo>*** ${basex-home}/data symlink available ***</echo>
<delete removenotfollowedsymlinks="true" failonerror="false">
<fileset followsymlinks="false" dir="${basex-home}/data"/>
</delete>
</then>
</if>
<if>
<available file="${basex-home}/repo" type="dir"/>
<then>
<echo>*** ${basex-home}/repo symlink available ***</echo>
<delete removenotfollowedsymlinks="true" failonerror="false">
<fileset followsymlinks="false" dir="${basex-home}/repo"/>
</delete>
</then>
</if>
<if>
<available file="${basex-home}/src" type="dir"/>
<then>
<echo>*** ${basex-home}/repo symlink available ***</echo>
<delete removenotfollowedsymlinks="true" failonerror="false">
<fileset followsymlinks="false" dir="${basex-home}/src "/>
</delete>
</then>
</if>
<if>
<available file="${basex-home}/data" type="dir"/>
<then>
<delete failonerror="false"><fileset dir="${basex-home}/data"/></delete>
</then>
</if>
<if>
<available file="${basex-home}/repo" type="dir"/>
<then>
<delete failonerror="false"><fileset dir="${basex-home}/repo"/></delete>
</then>
</if>
<if>
<available file="${basex-home}/src" type="dir"/>
<then>
<delete failonerror="false"><fileset dir="${basex-home}/src"/></delete>
</then>
</if>
</target>
<target name="symlink-dirs" depends="rm-dirs">
<echo>*** creating symlinks for `data`, `repo`, and `src`
directories ***</echo>
<symlink overwrite="true" link="${basex-home}/data"
resource="${bin}/basex-data"/>
<symlink overwrite="true" link="${basex-home}/repo"
resource="${bin}/basex-repo"/>
<symlink overwrite="true" link="${basex-home}/src"
resource="${bin}/basex-src"/>
</target>