Release 0.8.0
[phorkie.git] / build.xml
index bb7b1a0dc9224195b6952b9a25b4a49c22615254..c040f13297b9a09592884b930915e5f4830476a9 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -6,41 +6,27 @@
     tasks around phorkie, like creating a release version,
     tagging a release
   -->
-  <property file="build.properties" />
-
-  <property name="version-m"  value="0.3" />
-  <property name="version"    value="0.3.1" />
-  <property name="stability"  value="alpha" />
+  <property name="version"    value="0.8.0" />
+  <property name="stability"  value="beta" />
   <property name="releasenotes" value="
-Version 0.3.1 - 2012-09-27
---------------------------
-* Check for OpenID package in SetupCheck
-* Fix bug #24: setupcheck: verify geshi installation
-* Fix bug #25: setupcheck: verify markdown
-
-Version 0.3.0 - 2012-09-27
+Version 0.8.0 - 2017-04-19
 --------------------------
-
-* Fix bug #10: error when nothing submitted [cweiske]
-* Fix bug #11: do not index edit, delete and tool pages [cweiske]
-* Fix bug #20: elasticsearch error on deletion [cweiske]
-* Fix bug #22: Edited pastes not in 'recently created' [cweiske]
-* Fix bug #23: 'work dir not found' on failed remote fork [cweiske]
-* Implement request #5: Add OpenID authentication [jnovack]
-* Implement request #9: autodetect file type [cweiske]
-* Implement request #12: DOAP and rel='vcs-git' support [cweiske]
-* Implement request #13: remote forking support [cweiske]
-* Hide additional file fields by default, button to toggle their visibility
-  [cweiske]
-* Markdown support [jnovack]
-* Added nginx rewrite rules to README [skl]
+* Add support for git 2.11
+* Fix 'Please tell me who you are' messages
+* Fix crash on /new when a paste has been deleted
+* Fix crash on broken git repositories
+* Fix memory leak
+* Move phorkie off sourceforge
 " />
+  <property name="libdir"      value="${phing.dir}/lib"/>
+
   <property name="zipfile"     value="${phing.project.name}-${version}.tar.bz2" />
+  <property name="pharfile"    value="${phing.project.name}-${version}.phar" />
   <property name="pkgfile"     value="${phing.project.name}-${version}.tgz" />
+
+  <property name="pharpath"    value="${phing.dir}/dist/${pharfile}" />
   <property name="distfile"    value="dist/${zipfile}" />
   <property name="distpkgfile" value="dist/pear/${pkgfile}" />
-  <property name="sfproject"   value="phorkie" />
-  <property name="sffilepath"  value="p/ph/phorkie/" />
 
   <fileset id="fs.zip" dir=".">
    <include name="data/**"/>
@@ -53,8 +39,30 @@ Version 0.3.0 - 2012-09-27
    <include name="NEWS.rst"/>
    <include name="README.rst"/>
 
+   <exclude name="**/.git/"/>
    <exclude name="**/.gitignore/"/>
+   <exclude name="data/cache/**"/>
    <exclude name="data/config.php"/>
+   <exclude name="www/**/.phar"/>
+   <exclude name="www/repos"/>
+  </fileset>
+
+  <fileset id="fs.phar" dir="${phing.dir}">
+   <include name="data/**"/>
+   <include name="lib/**"/>
+   <include name="scripts/**"/>
+   <include name="src/**"/>
+   <include name="www/**"/>
+
+   <include name="ChangeLog"/>
+   <include name="README.rst"/>
+
+   <exclude name="**/.git/"/>
+   <exclude name="**/.gitignore/"/>
+   <exclude name="data/cache/**"/>
+   <exclude name="data/config.php"/>
+   <exclude name="www/**/.phar"/>
+   <exclude name="www/repos"/>
   </fileset>
 
   <fileset id="fs.doc" dir=".">
@@ -62,10 +70,73 @@ Version 0.3.0 - 2012-09-27
    <include name="NEWS.rst"/>
   </fileset>
 
-  <taskdef name="rST" classname="phing.tasks.ext.rSTTask" />
   <taskdef name="d51pearpkg2" classname="phing.tasks.ext.d51PearPkg2Task" />
 
-  <target name="zip" depends="check"
+
+  <target name="phar" depends="preparedirs,collectdeps"
+          description="Create phar file for release"
+  >
+   <delete file="${pharpath}"/>
+   <exec command="php scripts/build-rewritemap.php" dir="${phing.dir}"/>
+   <pharpackage basedir="${phing.dir}"
+                destfile="${pharpath}"
+                stub="${phing.dir}/src/stub-phar.php"
+                alias="phorkie.phar"
+   >
+    <fileset refid="fs.phar"/>
+   </pharpackage>
+
+   <exec executable="bzip2" dir="${phing.dir}/dist">
+    <arg value="-kf"/>
+    <arg file="${pharpath}"/>
+   </exec>
+  </target>
+
+
+  <target name="collectdeps" description="Copy package dependencies to lib/">
+   <delete dir="${libdir}"/>
+   <mkdir dir="${libdir}"/>
+
+   <!-- requires phing >= 2.8.0 -->
+   <copy todir="${libdir}">
+    <pearPackageFileset package="pear.php.net/Cache_Lite"/><!-- OpenID -->
+    <pearPackageFileset package="pear.php.net/Console_Getopt"/>
+    <pearPackageFileset package="pear.php.net/Crypt_DiffieHellman"/><!-- OpenID -->
+    <pearPackageFileset package="pear.php.net/Date_HumanDiff"/>
+    <pearPackageFileset package="pear.geshi.org/geshi">
+     <!-- remove files that are probably not needed to save space in the .phar -->
+     <exclude name="geshi/arm.php"/>
+     <exclude name="geshi/autoit.php"/>
+     <exclude name="geshi/thinbasic.php"/>
+    </pearPackageFileset>
+    <pearPackageFileset package="pear.php.net/HTTP2"/>
+    <pearPackageFileset package="pear.php.net/HTTP_Request2"/>
+    <pearPackageFileset package="pear.php.net/MIME_Type"/>
+    <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect"/>
+    <pearPackageFileset package="zustellzentrum.cweiske.de/MIME_Type_PlainDetect" role="data"/>
+    <pearPackageFileset package="pear.michelf.com/Markdown"/>
+    <pearPackageFileset package="pear.php.net/Net_URL2"/>
+    <pearPackageFileset package="pear.php.net/OpenID"/>
+    <pearPackageFileset package="pear.php.net/Pager"/>
+    <pearPackageFileset package="pear.php.net/PEAR">
+     <include name="PEAR/Exception.php"/>
+     <include name="PEAR.php"/>
+     <include name="PEAR5.php"/>
+     <include name="OS/Guess.php"/>
+     <include name="System.php"/>
+    </pearPackageFileset>
+    <pearPackageFileset package="pear.php.net/Services_Libravatar"/>
+    <pearPackageFileset package="pear2.php.net/PEAR2_Services_Linkback"/>
+    <pearPackageFileset package="pear.php.net/Services_Yadis"/>
+    <pearPackageFileset package="pear.php.net/System_Command"/>
+    <pearPackageFileset package="pear.twig-project.org/Twig"/>
+    <pearPackageFileset package="pear.php.net/Validate"/>
+    <pearPackageFileset package="pear.php.net/VersionControl_Git"/>
+   </copy>
+  </target>
+
+
+  <target name="zip" depends="preparedirs"
    description="Create zip file for release"
    >
     <!--
@@ -84,152 +155,7 @@ Version 0.3.0 - 2012-09-27
   </target>
 
 
-
-  <target name="package" depends="check"
-   description="Creates the pear package"
-  >
-   <d51pearpkg2 dir="." baseinstalldir="/">
-     <name>phorkie</name>
-     <summary>Self-hosted pastebin software</summary>
-     <description>
-      Self-hosted pastebin software written in PHP.
-      Pastes are editable, may have multiple files and are stored in git repositories.
-     </description>
-     <channel>phorkie.sourceforge.net</channel>
-
-     <lead user="cweiske" name="Christian Weiske" email="cweiske@cweiske.de" />
-     <license>AGPL</license>
-
-     <version   release="${version}"   api="${version}" />
-     <stability release="${stability}" api="${stability}" />
-
-     <notes>${releasenotes}</notes>
-
-     <dependencies>
-       <php minimum_version="5.3.0" />
-       <pear minimum_version="1.9.0" />
-
-       <package name="Date_HumanDiff"
-                channel="pear.php.net"
-                minimum_version="0.4.0"
-                />
-       <package name="HTTP_Request2"
-                channel="pear.php.net"
-                minimum_version="2.1.0"
-                />
-       <package name="OpenID"
-                channel="pear.php.net"
-                minimum_version="0.3.3"
-                />
-       <package name="Pager"
-                channel="pear.php.net"
-                minimum_version="2.4.8"
-                />
-       <package name="Services_Libravatar"
-                channel="pear.php.net"
-                minimum_version="0.2.2"
-                />
-       <package name="VersionControl_Git"
-                channel="pear.php.net"
-                minimum_version="0.4.4"
-                />
-
-       <package name="geshi"
-                channel="mediawiki.googlecode.com/svn"
-                minimum_version="1.0.0"
-                />
-       <package name="Markdown"
-                channel="pear.michelf.ca"
-                minimum_version="0.0.2"
-                />
-       <package name="MIME_Type_PlainDetect"
-                channel="zustellzentrum.cweiske.de"
-                minimum_version="0.0.2"
-                />
-       <package name="Twig"
-                channel="pear.twig-project.org"
-                minimum_version="1.6.0"
-                />
-
-     </dependencies>
-
-     <!-- map directory (key) to role -->
-     <dirroles key="data">data</dirroles>
-     <dirroles key="scripts">data</dirroles>
-     <dirroles key="src">php</dirroles>
-     <dirroles key="www">www</dirroles>
-
-     <!-- do not add the following files to the package.
-          copied from excludes above -->
-     <ignore>**/.gitignore</ignore>
-     <ignore>build*</ignore>
-     <ignore>data/config.php</ignore>
-     <ignore>dist/**</ignore>
-     <ignore>*.properties</ignore>
-     <ignore>*.tgz</ignore>
-
-     <replacement path="www/www-header.php"
-      type="pear-config" from="@data_dir@" to="data_dir"
-      />
-
-
-   </d51pearpkg2>
-
-   <!-- time to fix the package.xml file since the task does not
-        allow everything we need:
-        - strip the base directory names like src, data and www
-        - remove that dumb baseinstalldir from files
-        - md5sums are generated automatically when packaging
-   -->
-   <!-- yes, we need to generate a 2nd file and move it back -->
-   <copy file="package.xml" tofile="package2.xml" overwrite="true">
-    <filterchain>
-     <replaceregexp>
-      <!-- remove md5sums -->
-      <regexp
-       pattern="md5sum=&quot;[a-z0-9]{32}&quot; "
-       replace=""
-       />
-      <!-- remove baseinstalldir for files -->
-      <regexp
-       pattern="&lt;file baseinstalldir=&quot;/&quot;"
-       replace="&lt;file"
-       />
-      <!-- install-as for different directories -->
-      <regexp
-       pattern="(&lt;file name=&quot;data/(.+?)&quot;)"
-       replace="\1 install-as=&quot;\2&quot;"
-       />
-      <regexp
-       pattern="(&lt;file name=&quot;doc/(.+?)&quot;)"
-       replace="\1 install-as=&quot;\2&quot;"
-       />
-      <regexp
-       pattern="(&lt;file name=&quot;tests/(.+?)&quot;)"
-       replace="\1 install-as=&quot;\2&quot;"
-       />
-      <regexp
-       pattern="(&lt;file name=&quot;www/(.+?)&quot;)"
-       replace="\1 install-as=&quot;phorkie/\2&quot;"
-       />
-      <regexp
-       pattern="(&lt;file name=&quot;src/(.+?)&quot;)"
-       replace="\1 install-as=&quot;\2&quot;"
-       />
-     </replaceregexp>
-    </filterchain>
-   </copy>
-   <move file="package2.xml" tofile="package.xml" overwrite="true" />
-
-   <!-- package up -->
-   <exec command="pear package" passthru="true" />
-   <move file="${pkgfile}" todir="dist/pear/" />
-
-   <delete file="package.xml" failonerror="true" />
-  </target>
-
-
-  <target name="build-docs" description="render documentation">
+  <target name="docs" description="render documentation">
    <rST format="html" uptodate="true">
     <fileset refid="fs.doc"/>
     <mapper type="regexp" from="^(.+?).rst$" to="dist/docs/\1.html"/>
@@ -241,47 +167,21 @@ Version 0.3.0 - 2012-09-27
   </target>
 
 
-  <target name="release" depends="check,zip,package,deploy-sf"
-   description="Release the version on sourceforge"
+  <target name="release" depends="check,phar,zip"
+   description="Package the new version"
    >
    <!-- meta-target -->
   </target>
 
 
-  <!--
-  /home/frs/project/p/ph/phorkie/phorkie/v0.1/
-  /home/frs/project/p/ph/phorkie/phorkie/v0.1/phorkie-v0.1.0.zip
-  /home/frs/project/p/ph/phorkie/phorkie/v0.1/phorkie-v0.1.1.zip
-  https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download
-  -->
-  <target name="deploy-sf" depends="check,zip"
-   description="Upload release to sourceforge"
-   >
-    <delete dir="dist/deploy-sf" /><!-- make empty -->
-    <mkdir dir="dist/deploy-sf" />
-    <mkdir dir="dist/deploy-sf/v${version-m}" />
-    <copy file="${distfile}" tofile="dist/deploy-sf/v${version-m}/${zipfile}"/>
-    <!-- test
-    <exec command="rsync -av dist/deploy-sf/ /tmp/test/" escape="false" />
-    -->
-    <exec
-     command="rsync -av -e ssh dist/deploy-sf/ ${sfuser},${sfproject}@frs.sourceforge.net:/home/frs/project/${sffilepath}/${sfproject}/"
-     escape="false" checkreturn="false"
-     />
-    <!-- rsync always returns code 23 on sourceforge releases, so we
-         can't check return values -->
+  <target name="preparedirs">
+    <mkdir dir="dist" />
   </target>
 
-
-  <target name="check"
+  <target name="check" depends="preparedirs"
    description="Check variables"
    >
     <fail unless="version" message="Version not defined!" />
-    <fail unless="sfuser" message="Sourceforge username not defined!" />
-    <fail unless="sfproject" message="Sourceforge project name not defined!" />
-    <fail unless="sffilepath" message="Sourceforge project file path not defined!" />
-
-    <mkdir dir="dist" />
   </target>
 
 </project>