c64271d6a4e2d9075de8e71fddf617b480c467ce
[phorkie.git] / build.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <project name="phorkie" default="zip" basedir=".">
3   <!--
4     phorkie phing build file.
5     This script should provide a one-stop tool for all administrative
6     tasks around phorkie, like creating a release version,
7     tagging a release
8   -->
9   <property name="version"    value="0.8.0" />
10   <property name="stability"  value="beta" />
11
12   <property name="libdir"      value="${phing.dir}/lib"/>
13
14   <property name="zipfile"     value="${phing.project.name}-${version}.tar.bz2" />
15   <property name="pharfile"    value="${phing.project.name}-${version}.phar" />
16   <property name="pkgfile"     value="${phing.project.name}-${version}.tgz" />
17
18   <property name="pharpath"    value="${phing.dir}/dist/${pharfile}" />
19   <property name="distfile"    value="dist/${zipfile}" />
20   <property name="distpkgfile" value="dist/pear/${pkgfile}" />
21
22   <fileset id="fs.zip" dir=".">
23    <include name="data/**"/>
24    <include name="scripts/**"/>
25    <include name="src/**"/>
26    <include name="www/**"/>
27
28    <include name="ChangeLog"/>
29    <include name="LICENSE"/>
30    <include name="NEWS.rst"/>
31    <include name="README.rst"/>
32
33    <exclude name="**/.git/"/>
34    <exclude name="**/.gitignore/"/>
35    <exclude name="data/cache/**"/>
36    <exclude name="data/config.php"/>
37    <exclude name="www/**/.phar"/>
38    <exclude name="www/repos"/>
39   </fileset>
40
41   <fileset id="fs.phar" dir="${phing.dir}">
42    <include name="data/**"/>
43    <include name="lib/**"/>
44    <include name="scripts/**"/>
45    <include name="src/**"/>
46    <include name="www/**"/>
47
48    <include name="ChangeLog"/>
49    <include name="README.rst"/>
50
51    <exclude name="**/.git/"/>
52    <exclude name="**/.gitignore/"/>
53    <exclude name="data/cache/**"/>
54    <exclude name="data/config.php"/>
55    <exclude name="www/**/.phar"/>
56    <exclude name="www/repos"/>
57   </fileset>
58
59   <fileset id="fs.doc" dir=".">
60    <include name="README.rst"/>
61    <include name="NEWS.rst"/>
62   </fileset>
63
64   <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" />
65
66
67   <target name="phar" depends="preparedirs,collectdeps"
68           description="Create phar file for release"
69   >
70    <delete file="${pharpath}"/>
71    <exec command="php scripts/build-rewritemap.php" dir="${phing.dir}"/>
72    <pharpackage basedir="${phing.dir}"
73                 destfile="${pharpath}"
74                 stub="${phing.dir}/src/stub-phar.php"
75                 alias="phorkie.phar"
76    >
77     <fileset refid="fs.phar"/>
78    </pharpackage>
79
80    <exec executable="bzip2" dir="${phing.dir}/dist">
81     <arg value="-kf"/>
82     <arg file="${pharpath}"/>
83    </exec>
84   </target>
85
86
87   <target name="collectdeps" description="Copy package dependencies to lib/">
88    <delete dir="${libdir}"/>
89    <mkdir dir="${libdir}"/>
90
91    <!-- requires phing >= 2.8.0 -->
92    <copy todir="${libdir}">
93     <pearPackageFileset package="pear.php.net/Cache_Lite"/><!-- OpenID -->
94     <pearPackageFileset package="pear.php.net/Console_Getopt"/>
95     <pearPackageFileset package="pear.php.net/Crypt_DiffieHellman"/><!-- OpenID -->
96     <pearPackageFileset package="pear.php.net/Date_HumanDiff"/>
97     <pearPackageFileset package="pear.geshi.org/geshi">
98      <!-- remove files that are probably not needed to save space in the .phar -->
99      <exclude name="geshi/arm.php"/>
100      <exclude name="geshi/autoit.php"/>
101      <exclude name="geshi/thinbasic.php"/>
102     </pearPackageFileset>
103     <pearPackageFileset package="pear.php.net/HTTP2"/>
104     <pearPackageFileset package="pear.php.net/HTTP_Request2"/>
105     <pearPackageFileset package="pear.php.net/MIME_Type"/>
106     <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect"/>
107     <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect" role="data"/>
108     <pearPackageFileset package="pear.michelf.com/Markdown"/>
109     <pearPackageFileset package="pear.php.net/Net_URL2"/>
110     <pearPackageFileset package="pear.php.net/OpenID"/>
111     <pearPackageFileset package="pear.php.net/Pager"/>
112     <pearPackageFileset package="pear.php.net/PEAR">
113      <include name="PEAR/Exception.php"/>
114      <include name="PEAR.php"/>
115      <include name="PEAR5.php"/>
116      <include name="OS/Guess.php"/>
117      <include name="System.php"/>
118     </pearPackageFileset>
119     <pearPackageFileset package="pear.php.net/Services_Libravatar"/>
120     <pearPackageFileset package="pear2.php.net/PEAR2_Services_Linkback"/>
121     <pearPackageFileset package="pear.php.net/Services_Yadis"/>
122     <pearPackageFileset package="pear.php.net/System_Command"/>
123     <pearPackageFileset package="pear.twig-project.org/Twig"/>
124     <pearPackageFileset package="pear.php.net/Validate"/>
125     <pearPackageFileset package="pear.php.net/VersionControl_Git"/>
126    </copy>
127   </target>
128
129
130   <target name="zip" depends="preparedirs"
131    description="Create zip file for release"
132    >
133     <!--
134       The release file is for end users, so it is safe to
135       remove anything developer-related.
136
137       Test your zip with: unzip -l phorkie-0.1.0.zip
138     -->
139     <echo msg="Creating distribution zip for phorkie ${version}"/>
140     <delete file="${distfile}" failonerror="false"/>
141     <tar compression="bzip2" destfile="${distfile}"
142          prefix="${phing.project.name}-${version}/"
143     >
144      <fileset refid="fs.zip"/>
145     </tar>
146   </target>
147
148
149   <target name="docs" description="render documentation">
150    <rST format="html" uptodate="true">
151     <fileset refid="fs.doc"/>
152     <mapper type="regexp" from="^(.+?).rst$" to="dist/docs/\1.html"/>
153    </rST>
154   </target>
155
156   <target name="clean-docs" description="delete rendered documentation files">
157    <delete dir="dist/docs" includeemptydirs="yes"/>
158   </target>
159
160
161   <target name="release" depends="check,phar,zip"
162    description="Package the new version"
163    >
164    <!-- meta-target -->
165   </target>
166
167
168   <target name="preparedirs">
169     <mkdir dir="dist" />
170   </target>
171
172   <target name="check" depends="preparedirs"
173    description="Check variables"
174    >
175     <fail unless="version" message="Version not defined!" />
176   </target>
177
178 </project>