Commits

beberlei committed 2ebae44

New build process

- Switch from phing to ant
- Add composer archive for packages
- Remove PEAR package building

  • Participants
  • Parent commits 6422456

Comments (0)

Files changed (3)

File build.properties

-# Project Name
-project.name=DoctrineDBAL
-
-# Dependency minimum versions
-dependencies.common=2.0.1
-dependencies.sfconsole=2.0.0
-
 # Version class and file
-project.version_class = Doctrine\DBAL\Version
+project.version_class = Doctrine\\DBAL\\Version
 project.version_file = lib/Doctrine/DBAL/Version.php
 <?xml version="1.0"?>
 <project name="DoctrineDBAL" default="build" basedir=".">
-    <taskdef classname="phing.tasks.ext.d51PearPkg2Task" name="d51pearpkg2" />
-    <import file="${project.basedir}/lib/vendor/doctrine-build-common/packaging.xml" />
-
     <property file="build.properties" />
 
-    <!--
-        Fileset for artifacts shared across all distributed packages.
-    -->
-    <fileset id="shared-artifacts" dir=".">
-        <include name="LICENSE"/>
-    </fileset>
+    <target name="php">
+        <exec executable="which" outputproperty="php_executable">
+            <arg value="php" />
+        </exec>
+    </target>
 
-    <!--
-        Fileset for command line scripts
-    -->
-    <fileset id="bin-scripts" dir="./bin">
-        <include name="doctrine-dbal"/>
-        <include name="doctrine-dbal.php"/>
-    </fileset>
+    <target name="prepare">
+        <mkdir dir="build" />
+    </target>
 
-    <!--
-        Fileset for the sources of the Doctrine Common dependency.
-    -->
-    <fileset id="common-sources" dir="./lib/vendor/doctrine-common/lib">
-        <include name="Doctrine/Common/**"/>
-    </fileset>
+    <target name="build" depends="check-git-checkout-clean,prepare,php,composer">
+        <exec executable="${php_executable}">
+            <arg value="build/composer.phar" />
+            <arg value="archive" />
+            <arg value="--dir=build" />
+        </exec>
+    </target>
 
-    <!--
-        Fileset for the sources of the Doctrine DBAL package.
-    -->
-    <fileset id="dbal-sources" dir="./lib">
-        <include name="Doctrine/DBAL/**"/>
-    </fileset>
+    <target name="composer" depends="php,composer-check,composer-download">
+        <exec executable="${php_executable}">
+            <arg value="build/composer.phar" />
+            <arg value="install" />
+        </exec>
+    </target>
 
-    <!--
-      Fileset for source of the Symfony YAML and Console components.
-    -->
-    <fileset id="external-sources" dir="./lib/vendor">
-        <include name="Symfony/Component**"/>
-    </fileset>
+    <target name="composer-check" depends="prepare">
+        <available file="build/composer.phar" property="composer.present"/>
+    </target>
 
-    <target name="copy-files" depends="prepare">
-        <echo msg="Checking for ${version} in ${project.version_file}" />
-        <exec command="grep '${version}' ${project.basedir}/${project.version_file}" checkreturn="true"/>
-        <copy todir="${build.dir}/${project.name}-${version}">
-            <fileset refid="shared-artifacts"/>
-        </copy>
-        <copy todir="${build.dir}/${project.name}-${version}">
-            <fileset refid="common-sources"/>
-            <fileset refid="dbal-sources"/>
-        </copy>
-        <copy todir="${build.dir}/${project.name}-${version}/Doctrine">
-            <fileset refid="external-sources"/>
-        </copy>
-        <copy todir="${build.dir}/${project.name}-${version}/bin">
-            <fileset refid="bin-scripts"/>
-        </copy>
+    <target name="composer-download" unless="composer.present">
+        <exec executable="wget">
+            <arg value="-Obuild/composer.phar" />
+            <arg value="http://getcomposer.org/composer.phar" />
+        </exec>
     </target>
 
-    <target name="define-pear-package" depends="copy-files">
-        <d51pearpkg2 baseinstalldir="/" dir="${build.dir}/${project.name}-${version}">
-            <name>${project.name}</name>
-            <summary>Doctrine Database Abstraction Layer</summary>
-            <channel>pear.doctrine-project.org</channel>
-            <description>The Doctrine DBAL package is the database abstraction layer used to power the ORM package.</description>
-            <lead user="jwage" name="Jonathan H. Wage" email="jonwage@gmail.com" />
-            <lead user="guilhermeblanco" name="Guilherme Blanco" email="guilhermeblanco@gmail.com" />
-            <lead user="romanb" name="Roman Borschel" email="roman@code-factory.org" />
-            <lead user="beberlei" name="Benjamin Eberlei" email="kontakt@beberlei.de" />
-            <license>LGPL</license>
-            <version release="${pear.version}" api="${pear.version}" />
-            <stability release="${pear.stability}" api="${pear.stability}" />
-            <notes>-</notes>
-            <dependencies>
-                <php minimum_version="5.3.2" />
-                <pear minimum_version="1.6.0" recommended_version="1.6.1" />
-                <package name="DoctrineCommon" channel="pear.doctrine-project.org" minimum_version="${dependencies.common}" />
-                <package name="Console" channel="pear.symfony.com" minimum_version="${dependencies.sfconsole}" />
-            </dependencies>
-            <dirroles key="bin">script</dirroles>
-            <ignore>Doctrine/Common/</ignore>
-            <ignore>Doctrine/Symfony/</ignore>
-            <release>
-                <install as="doctrine-dbal" name="bin/doctrine-dbal" />
-                <install as="doctrine-dbal.php" name="bin/doctrine-dbal.php" />
-            </release>
-        </d51pearpkg2>
+    <target name="make-release" depends="check-git-checkout-clean,prepare,php">
+        <replace file="${project.version_file}" token="-DEV" value="" failOnNoReplacements="true" />
+        <exec executable="${php_executable}" outputproperty="doctrine.current_version" failonerror="true">
+            <arg value="-r" />
+            <arg value="require_once '${project.version_file}';echo ${project.version_class}::VERSION;" />
+        </exec>
+        <exec executable="${php_executable}" outputproperty="doctrine.next_version" failonerror="true">
+            <arg value="-r" />
+            <arg value="$parts = explode('.', str_ireplace(array('-DEV', '-ALPHA', '-BETA'), '', '${doctrine.current_version}'));
+                if (count($parts) != 3) {
+                    throw new \InvalidArgumentException('Version is assumed in format x.y.z, ${doctrine.current_version} given');
+                }
+                $parts[2]++;
+                echo implode('.', $parts);
+            " />
+        </exec>
+
+        <git-commit file="${project.version_file}" message="Release ${doctrine.current_version}" />
+        <git-tag version="${doctrine.current_version}" />
+        <replace file="${project.version_file}" token="${doctrine.current_version}" value="${doctrine.next_version}-DEV" />
+        <git-commit file="${project.version_file}" message="Bump version to ${doctrine.next_version}" />
     </target>
+
+    <target name="check-git-checkout-clean">
+        <exec executable="git" failonerror="true">
+            <arg value="diff-index" />
+            <arg value="--quiet" />
+            <arg value="HEAD" />
+        </exec>
+    </target>
+
+    <macrodef name="git-commit">
+        <attribute name="file" default="NOT SET"/>
+        <attribute name="message" default="NOT SET"/>
+
+        <sequential>
+            <exec executable="git">
+                <arg value="add" />
+                <arg value="@{file}" />
+            </exec>
+            <exec executable="git">
+                <arg value="commit" />
+                <arg value="-m" />
+                <arg value="@{message}" />
+            </exec>
+        </sequential>
+    </macrodef>
+
+    <macrodef name="git-tag">
+        <attribute name="version" default="NOT SET" />
+
+        <sequential>
+            <exec executable="git">
+                <arg value="tag" />
+                <arg value="-m" />
+                <arg value="v@{version}" />
+                <arg value="v@{version}" />
+            </exec>
+        </sequential>
+    </macrodef>
 </project>

File composer.json

     },
     "extra": {
         "branch-alias": {
-            "dev-master": "2.4.x-dev"
+            "dev-master": "2.5.x-dev"
         }
+    },
+    "archive": {
+        "exclude": ["!vendor", "tests", "*phpunit.xml", ".travis.yml", "build.xml", "build.properties", "composer.phar"]
     }
 }