I have Phing build file to create releases of my components.
I have two kind of packages: the free and the pro one. Inside the pro package, all the files should be included, while in the free one I have to exclude files that match this patter:
@category[ \t]+ProVersion
I just reused a PHPDocumentor tag to flag my pro files.
Said that, these are my two fileset
tag:
<fileset dir="${dirs.component}" id="pro">
<exclude name="media/photos/**"/>
</fileset>
<fileset dir="${dirs.component}" id="free">
<exclude name="media/photos/**"/>
<not>
<containsregexp expression="@category[ \t]+ProVersion" casesensitive="false" />
</not>
</fileset>
And this is my target
one:
<zipme basedir="${dirs.component}" destfile="${dirs.release}/${version}_pro.zip" includeemptydirs="true">
<fileset refid="pro" />
</zipme>
<zipme basedir="${dirs.component}" destfile="${dirs.release}/${version}_free.zip" includeemptydirs="true">
<fileset refid="free" />
</zipme>
Everything works fine on the pro package, but on the free one I always get this error message:
Could not read file backend\liveupdate\assets
This folder is symlinked to another part of my filesystem, but I really can't understand why Phing can't read it if (and only if) I'm using the containsregexp
tag.
Infact if I remove that, everything works fine (but wrong files are included).
After a lot of tests, I found out that the build fails under Windows and if the file is a symlinked one.
Sadly there is no solution other than using Linux or Mac OS.
By the way, the bug was reported to Phing, too:
http://www.phing.info/trac/ticket/1047