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 file="build.properties" />
11 <property name="version-m" value="0.3" />
12 <property name="version" value="0.3.0" />
13 <property name="stability" value="alpha" />
14 <property name="releasenotes" value="
15 Version 0.3.0 - 2012-09-27
16 --------------------------
18 * Fix bug #10: error when nothing submitted [cweiske]
19 * Fix bug #11: do not index edit, delete and tool pages [cweiske]
20 * Fix bug #20: elasticsearch error on deletion [cweiske]
21 * Fix bug #22: Edited pastes not in 'recently created' [cweiske]
22 * Fix bug #23: 'work dir not found' on failed remote fork [cweiske]
23 * Implement request #5: Add OpenID authentication [jnovack]
24 * Implement request #9: autodetect file type [cweiske]
25 * Implement request #12: DOAP and rel='vcs-git' support [cweiske]
26 * Implement request #13: remote forking support [cweiske]
27 * Hide additional file fields by default, button to toggle their visibility
29 * Markdown support [jnovack]
30 * Added nginx rewrite rules to README [skl]
32 <property name="zipfile" value="${phing.project.name}-${version}.tar.bz2" />
33 <property name="pkgfile" value="${phing.project.name}-${version}.tgz" />
34 <property name="distfile" value="dist/${zipfile}" />
35 <property name="distpkgfile" value="dist/pear/${pkgfile}" />
36 <property name="sfproject" value="phorkie" />
37 <property name="sffilepath" value="p/ph/phorkie/" />
39 <fileset id="fs.zip" dir=".">
40 <include name="data/**"/>
41 <include name="scripts/**"/>
42 <include name="src/**"/>
43 <include name="www/**"/>
45 <include name="ChangeLog"/>
46 <include name="LICENSE"/>
47 <include name="NEWS.rst"/>
48 <include name="README.rst"/>
50 <exclude name="**/.gitignore/"/>
51 <exclude name="data/config.php"/>
54 <fileset id="fs.doc" dir=".">
55 <include name="README.rst"/>
56 <include name="NEWS.rst"/>
59 <taskdef name="rST" classname="phing.tasks.ext.rSTTask" />
60 <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" />
62 <target name="zip" depends="check"
63 description="Create zip file for release"
66 The release file is for end users, so it is safe to
67 remove anything developer-related.
69 Test your zip with: unzip -l phorkie-0.1.0.zip
71 <echo msg="Creating distribution zip for phorkie ${version}"/>
72 <delete file="${distfile}" failonerror="false"/>
73 <tar compression="bzip2" destfile="${distfile}"
74 prefix="${phing.project.name}-${version}/"
76 <fileset refid="fs.zip"/>
82 <target name="package" depends="check"
83 description="Creates the pear package"
85 <d51pearpkg2 dir="." baseinstalldir="/">
87 <summary>Self-hosted pastebin software</summary>
89 Self-hosted pastebin software written in PHP.
90 Pastes are editable, may have multiple files and are stored in git repositories.
92 <channel>phorkie.sourceforge.net</channel>
94 <lead user="cweiske" name="Christian Weiske" email="cweiske@cweiske.de" />
95 <license>AGPL</license>
97 <version release="${version}" api="${version}" />
98 <stability release="${stability}" api="${stability}" />
100 <notes>${releasenotes}</notes>
103 <php minimum_version="5.3.0" />
104 <pear minimum_version="1.9.0" />
106 <package name="Date_HumanDiff"
107 channel="pear.php.net"
108 minimum_version="0.4.0"
110 <package name="HTTP_Request2"
111 channel="pear.php.net"
112 minimum_version="2.1.0"
114 <package name="OpenID"
115 channel="pear.php.net"
116 minimum_version="0.3.3"
118 <package name="Pager"
119 channel="pear.php.net"
120 minimum_version="2.4.8"
122 <package name="Services_Libravatar"
123 channel="pear.php.net"
124 minimum_version="0.2.2"
126 <package name="VersionControl_Git"
127 channel="pear.php.net"
128 minimum_version="0.4.4"
131 <package name="geshi"
132 channel="mediawiki.googlecode.com/svn"
133 minimum_version="1.0.0"
135 <package name="Markdown"
136 channel="pear.michelf.ca"
137 minimum_version="0.0.2"
139 <package name="MIME_Type_PlainDetect"
140 channel="zustellzentrum.cweiske.de"
141 minimum_version="0.0.2"
144 channel="pear.twig-project.org"
145 minimum_version="1.6.0"
150 <!-- map directory (key) to role -->
151 <dirroles key="data">data</dirroles>
152 <dirroles key="scripts">data</dirroles>
153 <dirroles key="src">php</dirroles>
154 <dirroles key="www">www</dirroles>
156 <!-- do not add the following files to the package.
157 copied from excludes above -->
158 <ignore>**/.gitignore</ignore>
159 <ignore>build*</ignore>
160 <ignore>data/config.php</ignore>
161 <ignore>dist/**</ignore>
162 <ignore>*.properties</ignore>
163 <ignore>*.tgz</ignore>
165 <replacement path="www/www-header.php"
166 type="pear-config" from="@data_dir@" to="data_dir"
172 <!-- time to fix the package.xml file since the task does not
173 allow everything we need:
174 - strip the base directory names like src, data and www
175 - remove that dumb baseinstalldir from files
176 - md5sums are generated automatically when packaging
178 <!-- yes, we need to generate a 2nd file and move it back -->
179 <copy file="package.xml" tofile="package2.xml" overwrite="true">
182 <!-- remove md5sums -->
184 pattern="md5sum="[a-z0-9]{32}" "
187 <!-- remove baseinstalldir for files -->
189 pattern="<file baseinstalldir="/""
192 <!-- install-as for different directories -->
194 pattern="(<file name="data/(.+?)")"
195 replace="\1 install-as="\2""
198 pattern="(<file name="doc/(.+?)")"
199 replace="\1 install-as="\2""
202 pattern="(<file name="tests/(.+?)")"
203 replace="\1 install-as="\2""
206 pattern="(<file name="www/(.+?)")"
207 replace="\1 install-as="phorkie/\2""
210 pattern="(<file name="src/(.+?)")"
211 replace="\1 install-as="\2""
216 <move file="package2.xml" tofile="package.xml" overwrite="true" />
219 <exec command="pear package" passthru="true" />
220 <move file="${pkgfile}" todir="dist/pear/" />
222 <delete file="package.xml" failonerror="true" />
226 <target name="build-docs" description="render documentation">
227 <rST format="html" uptodate="true">
228 <fileset refid="fs.doc"/>
229 <mapper type="regexp" from="^(.+?).rst$" to="dist/docs/\1.html"/>
233 <target name="clean-docs" description="delete rendered documentation files">
234 <delete dir="dist/docs" includeemptydirs="yes"/>
238 <target name="release" depends="check,zip,package,deploy-sf"
239 description="Release the version on sourceforge"
246 /home/frs/project/p/ph/phorkie/phorkie/v0.1/
247 /home/frs/project/p/ph/phorkie/phorkie/v0.1/phorkie-v0.1.0.zip
248 /home/frs/project/p/ph/phorkie/phorkie/v0.1/phorkie-v0.1.1.zip
249 https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download
251 <target name="deploy-sf" depends="check,zip"
252 description="Upload release to sourceforge"
254 <delete dir="dist/deploy-sf" /><!-- make empty -->
255 <mkdir dir="dist/deploy-sf" />
256 <mkdir dir="dist/deploy-sf/v${version-m}" />
257 <copy file="${distfile}" tofile="dist/deploy-sf/v${version-m}/${zipfile}"/>
259 <exec command="rsync -av dist/deploy-sf/ /tmp/test/" escape="false" />
262 command="rsync -av -e ssh dist/deploy-sf/ ${sfuser},${sfproject}@frs.sourceforge.net:/home/frs/project/${sffilepath}/${sfproject}/"
263 escape="false" checkreturn="false"
265 <!-- rsync always returns code 23 on sourceforge releases, so we
266 can't check return values -->
271 description="Check variables"
273 <fail unless="version" message="Version not defined!" />
274 <fail unless="sfuser" message="Sourceforge username not defined!" />
275 <fail unless="sfproject" message="Sourceforge project name not defined!" />
276 <fail unless="sffilepath" message="Sourceforge project file path not defined!" />