diff options
-rw-r--r-- | composer.json | 40 | ||||
-rw-r--r-- | php-doctrine-orm-bin.patch | 2 | ||||
-rwxr-xr-x | php-doctrine-orm-get-source.sh | 4 | ||||
-rw-r--r-- | php-doctrine-orm-phpunit54.patch | 12 | ||||
-rw-r--r-- | php-doctrine-orm.spec | 213 |
5 files changed, 201 insertions, 70 deletions
diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..25eedef --- /dev/null +++ b/composer.json @@ -0,0 +1,40 @@ +{ + "name": "doctrine/orm", + "type": "library", + "description": "Object-Relational-Mapper for PHP", + "keywords": ["orm", "database"], + "homepage": "http://www.doctrine-project.org", + "license": "MIT", + "authors": [ + {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"}, + {"name": "Roman Borschel", "email": "roman@code-factory.org"}, + {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"}, + {"name": "Jonathan Wage", "email": "jonwage@gmail.com"} + ], + "require": { + "php": ">=5.3.2", + "ext-pdo": "*", + "doctrine/collections": "~1.1", + "doctrine/dbal": "~2.4", + "symfony/console": "~2.0" + }, + "require-dev": { + "symfony/yaml": "~2.1", + "satooshi/php-coveralls": "dev-master" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "autoload": { + "psr-0": { "Doctrine\\ORM\\": "lib/" } + }, + "bin": ["bin/doctrine", "bin/doctrine.php"], + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "archive": { + "exclude": ["!vendor", "tests", "*phpunit.xml", ".travis.yml", "build.xml", "build.properties", "composer.phar", "vendor/satooshi", "lib/vendor", "*.swp", "*coveralls.yml"] + } +} diff --git a/php-doctrine-orm-bin.patch b/php-doctrine-orm-bin.patch index 7cf73e5..31772bb 100644 --- a/php-doctrine-orm-bin.patch +++ b/php-doctrine-orm-bin.patch @@ -3,7 +3,7 @@ index c735562..99014f4 100755 --- a/bin/doctrine.php +++ b/bin/doctrine.php @@ -1,3 +1,4 @@ -+#!/usr/bin/php ++#!/usr/bin/env php <?php /* * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS diff --git a/php-doctrine-orm-get-source.sh b/php-doctrine-orm-get-source.sh index e283587..f8f69e8 100755 --- a/php-doctrine-orm-get-source.sh +++ b/php-doctrine-orm-get-source.sh @@ -37,6 +37,8 @@ print "GIT_REPO = $GIT_REPO" print "GIT_DIR = $GIT_DIR" TEMP_DIR=$(mktemp --dir) +TAR_FILE=$PWD/${NAME}-${VERSION}-${GIT_COMMIT}.tar.gz +CMP_FILE=$PWD/composer.json pushd $TEMP_DIR print "Cloning git repo..." @@ -45,6 +47,7 @@ pushd $TEMP_DIR pushd $GIT_DIR print "Checking out commit..." $GIT checkout $GIT_COMMIT + cp composer.json $CMP_FILE popd TAR_DIR=${GIT_NAME}-${GIT_COMMIT} @@ -52,7 +55,6 @@ pushd $TEMP_DIR mv $GIT_DIR $TAR_DIR - TAR_FILE=`$RPM --eval='%{_sourcedir}'`/${NAME}-${VERSION}-${GIT_COMMIT}.tar.gz print "TAR_FILE = $TAR_FILE" [ -e $TAR_FILE ] && rm -f $TAR_FILE diff --git a/php-doctrine-orm-phpunit54.patch b/php-doctrine-orm-phpunit54.patch new file mode 100644 index 0000000..493c613 --- /dev/null +++ b/php-doctrine-orm-phpunit54.patch @@ -0,0 +1,12 @@ +--- tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2692Test.php.old 2016-06-13 18:09:07.905814745 +0200 ++++ tests/Doctrine/Tests/ORM/Functional/Ticket/DDC2692Test.php 2016-06-13 18:09:59.319090970 +0200 +@@ -29,7 +29,8 @@ + + public function testIsListenerCalledOnlyOnceOnPreFlush() + { +- $listener = $this->getMock('Doctrine\Tests\ORM\Functional\Ticket\DDC2692Listener', array('preFlush')); ++ $listener = $this->getMockObjectGenerator()->getMock('Doctrine\Tests\ORM\Functional\Ticket\DDC2692Listener', array('preFlush')); ++ $this->registerMockObject($listener); + $listener->expects($this->once())->method('preFlush'); + + $this->_em->getEventManager()->addEventSubscriber($listener); diff --git a/php-doctrine-orm.spec b/php-doctrine-orm.spec index 150ae22..f3fa73b 100644 --- a/php-doctrine-orm.spec +++ b/php-doctrine-orm.spec @@ -1,7 +1,8 @@ +# remirepo spec file for php-doctrine-orm, from # -# RPM spec file for php-doctrine-orm +# Fedora spec file for php-doctrine-orm # -# Copyright (c) 2013-2014 Shawn Iwinski <shawn.iwinski@gmail.com> +# Copyright (c) 2013-2016 Shawn Iwinski <shawn.iwinski@gmail.com> # Remi Collet <remi@fedoraproject.org> # # License: MIT @@ -12,68 +13,74 @@ %global github_owner doctrine %global github_name doctrine2 -%global github_version 2.4.7 -%global github_commit 2bc4ff3cab2ae297bcd05f2e619d42e6a7ca9e68 +%global github_version 2.4.8 +%global github_commit 5aedac1e5c5caaeac14798822c70325dc242d467 %global composer_vendor doctrine %global composer_project orm # "php": ">=5.3.2" -%global php_min_ver 5.3.2 +%global php_min_ver 5.3.2 # "doctrine/collections": "~1.1" -%global collections_min_ver 1.1 +# NOTE: Min version not 1.1 because autoloader required +%global collections_min_ver 1.3.0 %global collections_max_ver 2.0 # "doctrine/dbal": "~2.4" -%global dbal_min_ver 2.4 -%global dbal_max_ver 3.0 +# NOTE: Min version not 2.4 because autoloader required +%global dbal_min_ver 2.5.4 +%global dbal_max_ver 3.0 # "symfony/console": "~2.0" # "symfony/yaml": "~2.1" -%global symfony_min_ver 2.1 -%global symfony_max_ver 3.0 +# NOTE: Min version not 2.1 because autoloader required +%global symfony_min_ver 2.7.1 +%global symfony_max_ver 3.0 -%{!?__phpunit: %global __phpunit %{_bindir}/phpunit} +%{!?phpdir: %global phpdir %{_datadir}/php} # Build using "--without tests" to disable tests %global with_tests %{?_without_tests:0}%{!?_without_tests:1} -Name: php-%{composer_vendor}-%{composer_project} -Version: %{github_version} -Release: 4%{?dist} -Summary: Doctrine Object-Relational-Mapper (ORM) +Name: php-%{composer_vendor}-%{composer_project} +Version: %{github_version} +Release: 1%{?dist} +Summary: Doctrine Object-Relational-Mapper (ORM) -Group: Development/Libraries -License: MIT -URL: http://www.doctrine-project.org/projects/orm.html +Group: Development/Libraries +License: MIT +URL: http://www.doctrine-project.org/projects/orm.html # Run "php-doctrine-orm-get-source.sh" to create source -Source0: %{name}-%{version}-%{github_commit}.tar.gz -Source1: %{name}-get-source.sh +Source0: %{name}-%{version}-%{github_commit}.tar.gz +Source1: %{name}-get-source.sh # Update bin script: # 1) Add she-bang # 2) Auto-load using Doctrine\Common\ClassLoader -Patch0: %{name}-bin.patch +Patch0: %{name}-bin.patch + +# Fix test suite using PHPUnit 5.4 +Patch1: %{name}-phpunit54.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch %if %{with_tests} -BuildRequires: php-phpunit-PHPUnit +BuildRequires: php-composer(phpunit/phpunit) # composer.json BuildRequires: php(language) >= %{php_min_ver} -BuildRequires: php-composer(doctrine/collections) >= %{collections_min_ver} BuildRequires: php-composer(doctrine/collections) < %{collections_max_ver} -BuildRequires: php-composer(doctrine/dbal) >= %{dbal_min_ver} +BuildRequires: php-composer(doctrine/collections) >= %{collections_min_ver} BuildRequires: php-composer(doctrine/dbal) < %{dbal_max_ver} -BuildRequires: php-symfony-console >= %{symfony_min_ver} -BuildRequires: php-symfony-console < %{symfony_max_ver} -BuildRequires: php-symfony-yaml >= %{symfony_min_ver} -BuildRequires: php-symfony-yaml < %{symfony_max_ver} -# phpcompatinfo (computed from version 2.4.7) +BuildRequires: php-composer(doctrine/dbal) >= %{dbal_min_ver} +BuildRequires: php-composer(symfony/console) < %{symfony_max_ver} +BuildRequires: php-composer(symfony/console) >= %{symfony_min_ver} +BuildRequires: php-composer(symfony/yaml) < %{symfony_max_ver} +BuildRequires: php-composer(symfony/yaml) >= %{symfony_min_ver} +BuildRequires: php-pdo +# phpcompatinfo (computed from version 2.4.8) BuildRequires: php-ctype BuildRequires: php-date BuildRequires: php-dom BuildRequires: php-pcre -BuildRequires: php-pdo BuildRequires: php-reflection BuildRequires: php-simplexml BuildRequires: php-spl @@ -82,31 +89,40 @@ BuildRequires: php-tokenizer # composer.json Requires: php(language) >= %{php_min_ver} -Requires: php-composer(doctrine/collections) >= %{collections_min_ver} Requires: php-composer(doctrine/collections) < %{collections_max_ver} -Requires: php-composer(doctrine/dbal) >= %{dbal_min_ver} +Requires: php-composer(doctrine/collections) >= %{collections_min_ver} Requires: php-composer(doctrine/dbal) < %{dbal_max_ver} -Requires: php-symfony-console >= %{symfony_min_ver} -Requires: php-symfony-console < %{symfony_max_ver} -Requires: php-symfony-yaml >= %{symfony_min_ver} -Requires: php-symfony-yaml < %{symfony_max_ver} -# phpcompatinfo (computed from version 2.4.7) +Requires: php-composer(doctrine/dbal) >= %{dbal_min_ver} +Requires: php-composer(symfony/console) < %{symfony_max_ver} +Requires: php-composer(symfony/console) >= %{symfony_min_ver} +Requires: php-composer(symfony/yaml) < %{symfony_max_ver} +Requires: php-composer(symfony/yaml) >= %{symfony_min_ver} +Requires: php-pdo +# phpcompatinfo (computed from version 2.4.8) Requires: php-ctype Requires: php-dom Requires: php-pcre -Requires: php-pdo Requires: php-reflection Requires: php-simplexml Requires: php-spl Requires: php-tokenizer +# Weak dependencies +%if 0%{?fedora} >= 21 +## Optional caches (see Doctrine\ORM\Tools\Setup::createConfiguration()) +Suggests: php-pecl(apcu) +Suggests: php-pecl(memcache) +Suggests: php-pecl(redis) +Suggests: php-xcache +%endif + # Composer -Provides: php-composer(%{composer_vendor}/%{composer_project}) = %{version} +Provides: php-composer(%{composer_vendor}/%{composer_project}) = %{version} # PEAR -Provides: php-pear(pear.doctrine-project.org/DoctrineORM) = %{version} +Provides: php-pear(pear.doctrine-project.org/DoctrineORM) = %{version} # Rename -Obsoletes: php-doctrine-DoctrineORM < %{version} -Provides: php-doctrine-DoctrineORM = %{version} +Obsoletes: php-doctrine-DoctrineORM < %{version} +Provides: php-doctrine-DoctrineORM = %{version} %description Object relational mapper (ORM) for PHP that sits on top of a powerful database @@ -116,58 +132,98 @@ Query Language (DQL), inspired by Hibernate's HQL. This provides developers with a powerful alternative to SQL that maintains flexibility without requiring unnecessary code duplication. -Optional caches (see Doctrine\ORM\Tools\Setup::createConfiguration()): -* APC (php-pecl-apc) -* Memcache (php-pecl-memcache) -* Redis (php-pecl-redis) -* XCache (php-xcache) +Autoloader: %{phpdir}/Doctrine/ORM/autoload.php %prep %setup -qn %{github_name}-%{github_commit} -# Patch bin script +: Patch bin script %patch0 -p1 -# Remove empty file +if %{_bindir}/phpunit --atleast-version 5.4; then +: Fix test suite using PHPUnit 5.4 +%patch1 -p0 +fi + +: Remove empty file rm -f lib/Doctrine/ORM/README.markdown -# Remove unnecessary executable bits +: Remove unnecessary executable bits chmod a-x lib/Doctrine/ORM/Tools/Pagination/Paginator.php %build -# Empty build section, nothing required +: Create autoloader +cat <<'AUTOLOAD' | tee lib/Doctrine/ORM/autoload.php +<?php +/** + * Autoloader for %{name} and its' dependencies + * (created by %{name}-%{version}-%{release}). + * + * @return \Symfony\Component\ClassLoader\ClassLoader + */ + +if (!isset($fedoraClassLoader) || !($fedoraClassLoader instanceof \Symfony\Component\ClassLoader\ClassLoader)) { + if (!class_exists('Symfony\\Component\\ClassLoader\\ClassLoader', false)) { + require_once '%{phpdir}/Symfony/Component/ClassLoader/ClassLoader.php'; + } + + $fedoraClassLoader = new \Symfony\Component\ClassLoader\ClassLoader(); + $fedoraClassLoader->register(); +} + +$fedoraClassLoader->addPrefix('Doctrine\\ORM\\', dirname(dirname(__DIR__))); + +// Dependencies (autoloader => required) +foreach(array( + '%{phpdir}/Doctrine/Common/Collections/autoload.php' => true, + '%{phpdir}/Doctrine/DBAL/autoload.php' => true, + '%{phpdir}/Symfony/Component/Console/autoload.php' => true, + '%{phpdir}/Symfony/Component/Yaml/autoload.php' => true, +) as $dependencyAutoloader => $required) { + if ($required || file_exists($dependencyAutoloader)) { + require_once $dependencyAutoloader; + } +} + +return $fedoraClassLoader; +AUTOLOAD %install rm -rf %{buildroot} -# Lib -mkdir -p %{buildroot}/%{_datadir}/php -cp -rp lib/Doctrine %{buildroot}/%{_datadir}/php/ +: Lib +mkdir -p %{buildroot}%{phpdir} +cp -rp lib/Doctrine %{buildroot}%{phpdir}/ -# Bin +: Bin mkdir -p %{buildroot}/%{_bindir} install -pm 0755 bin/doctrine.php %{buildroot}/%{_bindir}/doctrine %check %if %{with_tests} -# Rewrite "tests/Doctrine/Tests/TestInit.php" +: Remove load of TestInit mv tests/Doctrine/Tests/TestInit.php tests/Doctrine/Tests/TestInit.php.dist -cat > tests/Doctrine/Tests/TestInit.php <<'TEST_INIT' +grep -r --files-with-matches 'TestInit' tests \ + | xargs sed '/TestInit/d' -i + +: Load annotation register file from buildroot +sed 's#__DIR__\s*\.\s*"/\(\.\./\)*lib#"%{buildroot}%{phpdir}#' \ + -i tests/Doctrine/Tests/OrmTestCase.php + +: Create tests bootstrap +cat > bootstrap.php <<'BOOTSTRAP' <?php +$fedoraClassLoader = + require_once '%{buildroot}%{phpdir}/Doctrine/ORM/autoload.php'; -spl_autoload_register(function ($class) { - $src = str_replace('\\', '/', $class).'.php'; - @include_once $src; -}); -TEST_INIT +$fedoraClassLoader->addPrefix('Doctrine\\Tests\\', __DIR__.'/tests'); +BOOTSTRAP # Skip test known to fail -sed 's/function testSupportsMoreThanTwoParametersInConcatFunction/function SKIP_testSupportsMoreThanTwoParametersInConcatFunction/' \ - -i tests/Doctrine/Tests/ORM/Query/SelectSqlGenerationTest.php sed -e 's/function testQueryCache_DependsOnHints/function SKIP_testQueryCache_DependsOnHints/' \ -e 's/function testQueryCache_NoHitSaveParserResult/function SKIP_testQueryCache_NoHitSaveParserResult/' \ -i tests/Doctrine/Tests/ORM/Functional/QueryCacheTest.php @@ -175,6 +231,11 @@ sed 's/function testNativeQueryResultCaching/function SKIP_testNativeQueryResult -i tests/Doctrine/Tests/ORM/Functional/ResultCacheTest.php sed 's/function testQueryCache_DependsOnFilters/function SKIP_testQueryCache_DependsOnFilters/' \ -i tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php +%if 1 +# PHP 7 +sed 's/function testReusedSplObjectHashDoesNotConfuseUnitOfWork/function SKIP_testReusedSplObjectHashDoesNotConfuseUnitOfWork/' \ + -i tests/Doctrine/Tests/ORM/Functional/IdentityMapTest.php +%endif # Weird el6 error # TODO: Investigate and submit upstream patch @@ -187,11 +248,20 @@ sed 's#$this->_em->clear();#if (isset($this->_em)) { $this->_em->clear(); }#' \ rm tests/Doctrine/Tests/ORM/Functional/QueryDqlFunctionTest.php %endif -%{__phpunit} --include-path ./lib:./tests -d memory_limit="512M" - -if which php70; then - php70 %{__phpunit} --include-path ./lib:./tests -d memory_limit="512M" || : +ret=0 +run=0 +if which php56; then + php56 %{_bindir}/phpunit -d memory_limit="512M" --bootstrap bootstrap.php || ret=1 + run=1 +fi +if which php71; then + php71 %{_bindir}/phpunit -d memory_limit="512M" --bootstrap bootstrap.php || ret=1 + run=1 fi +if [ $run -eq 0 ]; then + %{_bindir}/phpunit -d memory_limit="512M" --bootstrap bootstrap.php +fi +exit $ret %else : Tests skipped %endif @@ -211,6 +281,13 @@ rm -rf %{buildroot} %changelog +* Sat Jul 09 2016 Shawn Iwinski <shawn.iwinski@gmail.com> - 2.4.8-1 +- Updated to 2.4.8 (RHBZ #1347926 / CVE-2015-5723) +- Added autoloader + +* Mon Jun 13 2016 Remi Collet <remi@fedoraproject.org> - 2.4.7-5 +- add workaround for test suite with PHPUnit 5.4 + * Sun Feb 28 2016 Shawn Iwinski <shawn.iwinski@gmail.com> - 2.4.7-4 - Skip additional tests known to fail (RHBZ #1307857) |