1 <?xml version="1.0" encoding="utf-8"?>
2 <project name="phorkie" default="zip" basedir=".">
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,
9 <property name="version" value="0.7.0" />
10 <property name="stability" value="beta" />
11 <property name="releasenotes" value="
12 Version 0.7.0 - 2015-11-05
13 --------------------------
14 * Add support for elasticsearch 2.0
15 * Add text file detection for unknown file extensions
17 <property name="libdir" value="${phing.dir}/lib"/>
19 <property name="zipfile" value="${phing.project.name}-${version}.tar.bz2" />
20 <property name="pharfile" value="${phing.project.name}-${version}.phar" />
21 <property name="pkgfile" value="${phing.project.name}-${version}.tgz" />
23 <property name="pharpath" value="${phing.dir}/dist/${pharfile}" />
24 <property name="distfile" value="dist/${zipfile}" />
25 <property name="distpkgfile" value="dist/pear/${pkgfile}" />
27 <fileset id="fs.zip" dir=".">
28 <include name="data/**"/>
29 <include name="scripts/**"/>
30 <include name="src/**"/>
31 <include name="www/**"/>
33 <include name="ChangeLog"/>
34 <include name="LICENSE"/>
35 <include name="NEWS.rst"/>
36 <include name="README.rst"/>
38 <exclude name="**/.git/"/>
39 <exclude name="**/.gitignore/"/>
40 <exclude name="data/cache/**"/>
41 <exclude name="data/config.php"/>
42 <exclude name="www/**/.phar"/>
43 <exclude name="www/repos"/>
46 <fileset id="fs.phar" dir="${phing.dir}">
47 <include name="data/**"/>
48 <include name="lib/**"/>
49 <include name="scripts/**"/>
50 <include name="src/**"/>
51 <include name="www/**"/>
53 <include name="ChangeLog"/>
54 <include name="README.rst"/>
56 <exclude name="**/.git/"/>
57 <exclude name="**/.gitignore/"/>
58 <exclude name="data/cache/**"/>
59 <exclude name="data/config.php"/>
60 <exclude name="www/**/.phar"/>
61 <exclude name="www/repos"/>
64 <fileset id="fs.doc" dir=".">
65 <include name="README.rst"/>
66 <include name="NEWS.rst"/>
69 <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" />
72 <target name="phar" depends="preparedirs,collectdeps"
73 description="Create phar file for release"
75 <delete file="${pharpath}"/>
76 <exec command="php scripts/build-rewritemap.php" dir="${phing.dir}"/>
77 <pharpackage basedir="${phing.dir}"
78 destfile="${pharpath}"
79 stub="${phing.dir}/src/stub-phar.php"
82 <fileset refid="fs.phar"/>
85 <exec executable="bzip2" dir="${phing.dir}/dist">
87 <arg file="${pharpath}"/>
92 <target name="collectdeps" description="Copy package dependencies to lib/">
93 <delete dir="${libdir}"/>
94 <mkdir dir="${libdir}"/>
96 <!-- requires phing >= 2.8.0 -->
97 <copy todir="${libdir}">
98 <pearPackageFileset package="pear.php.net/Cache_Lite"/><!-- OpenID -->
99 <pearPackageFileset package="pear.php.net/Console_Getopt"/>
100 <pearPackageFileset package="pear.php.net/Crypt_DiffieHellman"/><!-- OpenID -->
101 <pearPackageFileset package="pear.php.net/Date_HumanDiff"/>
102 <pearPackageFileset package="pear.geshi.org/geshi">
103 <!-- remove files that are probably not needed to save space in the .phar -->
104 <exclude name="geshi/arm.php"/>
105 <exclude name="geshi/autoit.php"/>
106 <exclude name="geshi/thinbasic.php"/>
107 </pearPackageFileset>
108 <pearPackageFileset package="pear.php.net/HTTP2"/>
109 <pearPackageFileset package="pear.php.net/HTTP_Request2"/>
110 <pearPackageFileset package="pear.php.net/MIME_Type"/>
111 <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect"/>
112 <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect" role="data"/>
113 <pearPackageFileset package="pear.michelf.com/Markdown"/>
114 <pearPackageFileset package="pear.php.net/Net_URL2"/>
115 <pearPackageFileset package="pear.php.net/OpenID"/>
116 <pearPackageFileset package="pear.php.net/Pager"/>
117 <pearPackageFileset package="pear.php.net/PEAR">
118 <include name="PEAR/Exception.php"/>
119 <include name="PEAR.php"/>
120 <include name="PEAR5.php"/>
121 <include name="OS/Guess.php"/>
122 <include name="System.php"/>
123 </pearPackageFileset>
124 <pearPackageFileset package="pear.php.net/Services_Libravatar"/>
125 <pearPackageFileset package="pear2.php.net/PEAR2_Services_Linkback"/>
126 <pearPackageFileset package="pear.php.net/Services_Yadis"/>
127 <pearPackageFileset package="pear.php.net/System_Command"/>
128 <pearPackageFileset package="pear.twig-project.org/Twig"/>
129 <pearPackageFileset package="pear.php.net/Validate"/>
130 <pearPackageFileset package="pear.php.net/VersionControl_Git"/>
135 <target name="zip" depends="preparedirs"
136 description="Create zip file for release"
139 The release file is for end users, so it is safe to
140 remove anything developer-related.
142 Test your zip with: unzip -l phorkie-0.1.0.zip
144 <echo msg="Creating distribution zip for phorkie ${version}"/>
145 <delete file="${distfile}" failonerror="false"/>
146 <tar compression="bzip2" destfile="${distfile}"
147 prefix="${phing.project.name}-${version}/"
149 <fileset refid="fs.zip"/>
155 <target name="pear" depends="check"
156 description="Creates the pear package"
158 <d51pearpkg2 dir="." baseinstalldir="/">
160 <summary>Self-hosted pastebin software</summary>
162 Self-hosted pastebin software written in PHP.
163 Pastes are editable, may have multiple files and are stored in git repositories.
165 <channel>phorkie.sourceforge.net</channel>
167 <lead user="cweiske" name="Christian Weiske" email="cweiske@cweiske.de" />
168 <license>AGPL</license>
170 <version release="${version}" api="${version}" />
171 <stability release="${stability}" api="${stability}" />
173 <notes>${releasenotes}</notes>
176 <php minimum_version="5.3.0" />
177 <pear minimum_version="1.9.0" />
179 <package name="Date_HumanDiff"
180 channel="pear.php.net"
181 minimum_version="0.4.0"
183 <package name="HTTP_Request2"
184 channel="pear.php.net"
185 minimum_version="2.1.0"
187 <package name="OpenID"
188 channel="pear.php.net"
189 minimum_version="0.3.3"
191 <package name="Pager"
192 channel="pear.php.net"
193 minimum_version="2.4.8"
195 <package name="PEAR2_Services_Linkback"
196 channel="pear2.php.net"
197 minimum_version="0.2.1"
199 <package name="Services_Libravatar"
200 channel="pear.php.net"
201 minimum_version="0.2.2"
203 <package name="VersionControl_Git"
204 channel="pear.php.net"
205 minimum_version="0.4.4"
208 <package name="geshi"
209 channel="pear.geshi.org/geshi"
210 minimum_version="1.0.0"
212 <package name="Markdown"
213 channel="pear.michelf.com"
214 minimum_version="0.0.2"
216 <package name="MIME_Type_PlainDetect"
217 channel="zustellzentrum.cweiske.de"
218 minimum_version="0.0.2"
221 channel="pear.twig-project.org"
222 minimum_version="1.6.0"
227 <!-- map directory (key) to role -->
228 <dirroles key="data">data</dirroles>
229 <dirroles key="scripts">data</dirroles>
230 <dirroles key="src">php</dirroles>
231 <dirroles key="www">www</dirroles>
233 <!-- do not add the following files to the package.
234 copied from excludes above -->
235 <ignore>**/.gitignore</ignore>
236 <ignore>build*</ignore>
237 <ignore>data/config.php</ignore>
238 <ignore>dist/**</ignore>
239 <ignore>*.properties</ignore>
240 <ignore>*.tgz</ignore>
242 <replacement path="www/www-header.php"
243 type="pear-config" from="@data_dir@" to="data_dir"
249 <!-- time to fix the package.xml file since the task does not
250 allow everything we need:
251 - strip the base directory names like src, data and www
252 - remove that dumb baseinstalldir from files
253 - md5sums are generated automatically when packaging
255 <!-- yes, we need to generate a 2nd file and move it back -->
256 <copy file="package.xml" tofile="package2.xml" overwrite="true">
259 <!-- remove md5sums -->
261 pattern="md5sum="[a-z0-9]{32}" "
264 <!-- remove baseinstalldir for files -->
266 pattern="<file baseinstalldir="/""
269 <!-- install-as for different directories -->
271 pattern="(<file name="data/(.+?)")"
272 replace="\1 install-as="\2""
275 pattern="(<file name="doc/(.+?)")"
276 replace="\1 install-as="\2""
279 pattern="(<file name="tests/(.+?)")"
280 replace="\1 install-as="\2""
283 pattern="(<file name="www/(.+?)")"
284 replace="\1 install-as="phorkie/\2""
287 pattern="(<file name="src/(.+?)")"
288 replace="\1 install-as="\2""
293 <move file="package2.xml" tofile="package.xml" overwrite="true" />
296 <exec command="pear package" passthru="true" />
297 <move file="${pkgfile}" todir="dist/pear/" />
299 <delete file="package.xml" failonerror="true" />
303 <target name="docs" description="render documentation">
304 <rST format="html" uptodate="true">
305 <fileset refid="fs.doc"/>
306 <mapper type="regexp" from="^(.+?).rst$" to="dist/docs/\1.html"/>
310 <target name="clean-docs" description="delete rendered documentation files">
311 <delete dir="dist/docs" includeemptydirs="yes"/>
315 <target name="release" depends="check,zip,pear"
316 description="Package the new version"
322 <target name="preparedirs">
326 <target name="check" depends="preparedirs"
327 description="Check variables"
329 <fail unless="version" message="Version not defined!" />