diff options
author | Remi Collet <remi@remirepo.net> | 2018-06-11 12:17:54 +0200 |
---|---|---|
committer | Remi Collet <remi@remirepo.net> | 2018-06-11 12:17:54 +0200 |
commit | 10e9b83b9934486dd8c50fe0832332cd58fab26d (patch) | |
tree | 11b1afedd53d7db3ed8fc952f5ac2b721395afe3 /php-cakephp.spec |
Initial packaging with cache, collection, core, database, database and utility sub-packages
Diffstat (limited to 'php-cakephp.spec')
-rw-r--r-- | php-cakephp.spec | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/php-cakephp.spec b/php-cakephp.spec new file mode 100644 index 0000000..dbb5cd6 --- /dev/null +++ b/php-cakephp.spec @@ -0,0 +1,447 @@ +# remirepo/fedora spec file for php-cakephp +# +# Copyright (c) 2018 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ +# +# Please, preserve the changelog entries +# + +# https://github.com/cakephp/cakephp/releases +%global gh_commit 9d26dcaa80739d24674062604bb3796e72023580 +%global gh_short %(c=%{gh_commit}; echo ${c:0:7}) +%global gh_owner cakephp +%global gh_project cakephp +%global pk_vendor cakephp +%global ns_vendor Cake +%global php_home %{_datadir}/php +%global with_tests 0%{!?_without_tests:1} + +# https://github.com/cakephp/chronos/releases +%global chronos_commit 85bcaea6a832684b32ef54b2487b0c14a172e9e6 +%global chronos_short %(c=%{chronos_commit}; echo ${c:0:7}) +%global chronos_version 1.1.4 + +Name: php-%{pk_vendor} +Version: 3.6.5 +Release: 1%{?dist} +Summary: The CakePHP framework + +License: MIT +URL: https://cakephp.org/ +Source0: %{name}-%{version}-%{gh_short}.tgz +Source1: makesrc.sh +Source2: %{name}-chronos-%{chronos_version}-%{chronos_short}.tgz +Source3: makesrc2.sh + +BuildArch: noarch +%if %{with_tests} +# For tests +BuildRequires: php(language) >= 5.6 +BuildRequires: php-ctype +BuildRequires: php-date +BuildRequires: php-dom +BuildRequires: php-hash +BuildRequires: php-intl +BuildRequires: php-json +BuildRequires: php-libxml +BuildRequires: php-mbstring +BuildRequires: php-pcre +BuildRequires: php-pdo +BuildRequires: php-reflection +BuildRequires: php-simplexml +BuildRequires: php-spl +# From composer.json, "require-dev": { +# "phpunit/phpunit": "<6.0", +# "athletic/athletic": "~0.1", +# "cakephp/cakephp-codesniffer": "~2.3", +# "phpbench/phpbench": "@dev", +# "phpstan/phpstan": "^0.6.4" +BuildRequires: php-composer(phpunit/phpunit) +%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 +BuildRequires: (php-composer(aura/intl) >= 3.0.0 with php-composer(aura/intl) < 4) +BuildRequires: (php-composer(psr/log) >= 1.0.0 with php-composer(psr/log) < 2) +BuildRequires: (php-composer(zendframework/zend-diactoros) >= 1.4.0 with php-composer(zendframework/zend-diactoros) < 2) +%else +BuildRequires: php-aura-intl >= 3.0.0 +BuildRequires: php-PsrLog >= 1.0.0 +BuildRequires: php-zendframework-zend-diactoros >= 1.4.0 +%endif +%endif + + +%description +CakePHP is a rapid development framework for PHP which uses commonly known +design patterns like Associative Data Mapping, Front Controller, and MVC. +Our primary goal is to provide a structured framework that enables PHP users +at all levels to rapidly develop robust web applications, without any loss +to flexibility. + + +%package cache +Summary: CakePHP Collection Library +# From composer.json "require": { +# "php": ">=5.6.0", +# "cakephp/core": "^3.6.0" +Requires: php(language) >= 5.6 +Requires: php-composer(%{pk_vendor}/core) = %{version} +# From phpcompatinfo report +Requires: php-date +Requires: php-pcre +Requires: php-spl +Provides: php-composer(%{pk_vendor}/cache) = %{version} + +%description cache +CakePHP Caching Library: + +The Cache library provides a Cache service locator for interfacing with +multiple caching backends using a simple to use interface. + +The caching backends supported are: +* Files +* APC +* Memcached +* Redis +* Wincache +* Xcache + + +%package collection +Summary: CakePHP Collection Library +# From composer.json "require": { +# "php": ">=5.6.0", +Requires: php(language) >= 5.6 +# From phpcompatinfo report +Requires: php-spl +Provides: php-composer(%{pk_vendor}/collection) = %{version} + +%description collection +CakePHP Collection Library: + +The collection classes provide a set of tools to manipulate arrays or +Traversable objects. If you have ever used underscore.js, you have an +idea of what you can expect from the collection classes. + + +%package core +Summary: CakePHP Framework Core classes +# From composer.json "require": { +# "php": ">=5.6.0", +# "cakephp/utility": "^3.6.0" +Requires: php(language) >= 5.6 +Requires: php-composer(%{pk_vendor}/utility) = %{version} +# From phpcompatinfo report +Requires: php-reflection +Requires: php-json +Requires: php-mbstring +Requires: php-pcre +Requires: php-spl +Provides: php-composer(%{pk_vendor}/core) = %{version} + +%description core +CakePHP Framework Core classes: + +A set of classes used for configuration files reading and storing. +This library contains the classes that are used as glue for creating the +CakePHP framework. + + +%package database +Summary: CakePHP Database Library +# From composer.json "require": { +# "php": ">=5.6.0", +# "cakephp/cache": "^3.6.0", +# "cakephp/core": "^3.6.0", +# "cakephp/datasource": "^3.6.0" +Requires: php(language) >= 5.6 +Requires: php-composer(%{pk_vendor}/cache) = %{version} +Requires: php-composer(%{pk_vendor}/core) = %{version} +Requires: php-composer(%{pk_vendor}/datasource) = %{version} +# From phpcompatinfo report +Requires: php-pdo +Requires: php-ctype +Requires: php-date +Requires: php-json +Requires: php-pcre +Requires: php-spl +Provides: php-composer(%{pk_vendor}/database) = %{version} + +%description database +A flexible and lightweight Database Library for PHP: + +This library abstracts and provides help with most aspects of dealing with +relational databases such as keeping connections to the server, building +queries, preventing SQL injections, inspecting and altering schemas, and +with debugging and profiling queries sent to the database. + +It adopts the API from the native PDO extension in PHP for familiarity, +but solves many of the inconsistencies PDO has, while also providing +several features that extend PDO's capabilities. + +A distinguishing factor of this library when compared to similar database +connection packages, is that it takes the concept of "data types" to its core. +It lets you work with complex PHP objects or structures that can be passed as +query conditions or to be inserted in the database. + +The typing system will intelligently convert the PHP structures when passing +them to the database, and convert them back when retrieving. + + +%package datasource +Summary: CakePHP Datasource Library +# From composer.json "require": { +# "php": ">=5.6.0", +# "cakephp/core": "^3.6.0" +Requires: php(language) >= 5.6 +Requires: php-composer(%{pk_vendor}/core) = %{version} +# From phpcompatinfo report +Requires: php-json +Requires: php-spl +Provides: php-composer(%{pk_vendor}/datasource) = %{version} + +%description datasource +CakePHP Datasource Library: + +This library contains interfaces for implementing Repositories and +Entities using any data source, a class for managing connections to +datasources and traits to help you quickly implement the interfaces +provided by this package. + + +%package utility +Summary: CakePHP Utility Classes +# From composer.json "require": { +# "php": ">=5.6.0", +# "cakephp/core": "^3.6.0" +Requires: php(language) >= 5.6 +Requires: php-composer(%{pk_vendor}/core) = %{version} +# From phpcompatinfo report +Requires: php-simplexml +Requires: php-ctype +Requires: php-dom +Requires: php-hash +Requires: php-intl +Requires: php-json +Requires: php-libxml +Requires: php-mbstring +Requires: php-pcre +Requires: php-spl +Provides: php-composer(%{pk_vendor}/utility) = %{version} + +%description utility +CakePHP Utility Classes: + +This library provides a range of utility classes that are used throughout +the CakePHP framework. + + +%prep +%setup -q -n %{gh_project}-%{gh_commit} -a 2 +mv chronos-*/src src/Chronos + + +%build +: ===== Generate test autoloader for full framework +mkdir vendor +cat << 'EOF' | tee vendor/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\', dirname(__DIR__).'/src'); +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Test\\', dirname(__DIR__).'/tests'); +\Fedora\Autoloader\Autoload::addPsr4('TestApp\\', dirname(__DIR__).'/tests/test_app/TestApp'); +\Fedora\Autoloader\Autoload::addPsr4('TestPlugin\\', dirname(__DIR__).'/tests/test_app/Plugin/TestPlugin/src'); +\Fedora\Autoloader\Autoload::addPsr4('TestPlugin\\Test\\', dirname(__DIR__).'/tests/test_app/Plugin/TestPlugin/tests'); +\Fedora\Autoloader\Autoload::addPsr4('TestPluginTwo\\', dirname(__DIR__).'/tests/test_app/Plugin/TestPluginTwo/src'); +\Fedora\Autoloader\Autoload::addPsr4('Company\\TestPluginThree\\', dirname(__DIR__).'/tests/test_app/Plugin/Company/TestPluginThree/src'); +\Fedora\Autoloader\Autoload::addPsr4('TCompany\\TestPluginThree\\Test\\', dirname(__DIR__).'/tests/test_app/Plugin/Company/TestPluginThree/tests'); +\Fedora\Autoloader\Autoload::addPsr4('ParentPlugin\\', dirname(__DIR__).'/tests/test_app/Plugin/ParentPlugin/src'); +\Fedora\Autoloader\Autoload::addPsr4('PluginJs\\', dirname(__DIR__).'/tests/test_app/Plugin/PluginJs/src'); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__).'/src/Core/functions.php', + dirname(__DIR__).'/src/Collection/functions.php', + dirname(__DIR__).'/src/I18n/functions.php', + dirname(__DIR__).'/src/Utility/bootstrap.php', + '%{php_home}/Aura/Intl/autoload.php', + '%{php_home}/Psr/Log/autoload.php', + '%{php_home}/Zend/Diactoros/autoload.php', +]); +EOF + +: ===== Generate "cache" autoloader +cat << 'EOF' | tee src/Cache/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Cache\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__) . '/Core/autoload.php', +]); +EOF + +: ===== Generate "collection" autoloader +cat << 'EOF' | tee src/Collection/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Collection\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + __DIR__ . '/functions.php', +]); +EOF + +: ===== Generate "core" autoloader +cat << 'EOF' | tee src/Core/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Core\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__) . '/Utility/autoload.php', + __DIR__ . '/functions.php', +]); +EOF + +: ===== Generate "database" autoloader +cat << 'EOF' | tee src/Database/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Database\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__) . '/Cache/autoload.php', + dirname(__DIR__) . '/Core/autoload.php', + dirname(__DIR__) . '/Datasource/autoload.php', +]); +EOF + +: ===== Generate "datasource" autoloader +cat << 'EOF' | tee src/Datasource/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Datasource\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__) . '/Core/autoload.php', +]); +EOF + +: ===== Generate "utility" autoloader +cat << 'EOF' | tee src/Utility/autoload.php +<?php +require_once '%{php_home}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Cake\\Utility\\', __DIR__); +\Fedora\Autoloader\Dependencies::required([ + dirname(__DIR__) . '/Core/autoload.php', + __DIR__ . '/bootstrap.php', +]); +EOF + + +%install +#: Library +mkdir -p %{buildroot}%{php_home}/%{ns_vendor} +cp -pr src/Cache %{buildroot}%{php_home}/%{ns_vendor}/ +cp -pr src/Collection %{buildroot}%{php_home}/%{ns_vendor}/ +cp -pr src/Core %{buildroot}%{php_home}/%{ns_vendor}/ +cp -pr src/Database %{buildroot}%{php_home}/%{ns_vendor}/ +cp -pr src/Datasource %{buildroot}%{php_home}/%{ns_vendor}/ +cp -pr src/Utility %{buildroot}%{php_home}/%{ns_vendor}/ + + +%check +%if %{with_tests} +: Check our autoloaders +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Cache/autoload.php"; +exit (class_exists("Cake\\Cache\\Cache") ? 0 : 1); +' +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Collection/autoload.php"; +exit (class_exists("Cake\\Collection\\Collection") ? 0 : 1); +' +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Core/autoload.php"; +exit (class_exists("Cake\\Core\\App") ? 0 : 1); +' +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Database/autoload.php"; +exit (class_exists("Cake\\Database\\Connection") ? 0 : 1); +' +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Datasource/autoload.php"; +exit (class_exists("Cake\\Datasource\\RulesChecker") ? 0 : 1); +' +php -r ' +require "%{buildroot}%{php_home}/%{ns_vendor}/Utility/autoload.php"; +exit (class_exists("Cake\\Utility\\Hash") ? 0 : 1); +' + +: Run upstream test suites +ret=0 +phpunit tests/TestCase/Cache --verbose || ret=1 +phpunit tests/TestCase/Core --verbose || ret=1 +phpunit tests/TestCase/Collection --verbose || ret=1 +%if 0%{?rhel} == 6 +: skip suite as sqlite is too old +%else +phpunit tests/TestCase/Database --verbose || ret=1 +phpunit tests/TestCase/Datasource --verbose || ret=1 +%endif +phpunit tests/TestCase/Utility --verbose || ret=1 +exit $ret +%else +: Test suite disabled +%endif + + +%files cache +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc src/Cache/composer.json +%doc src/Cache/*md +%{php_home}/%{ns_vendor}/Cache + +%files collection +%{!?_licensedir:%global license %%doc} +%license src/Collection/LICENSE.txt +%doc src/Collection/composer.json +%doc src/Collection/*md +%dir %{php_home}/%{ns_vendor} + %{php_home}/%{ns_vendor}/Collection + +%files core +%{!?_licensedir:%global license %%doc} +%license src/Core/LICENSE.txt +%doc src/Core/composer.json +%doc src/Core/*md +%dir %{php_home}/%{ns_vendor} + %{php_home}/%{ns_vendor}/Core + +%files database +%{!?_licensedir:%global license %%doc} +%license src/Database/LICENSE.txt +%doc src/Database/composer.json +%doc src/Database/*md +%{php_home}/%{ns_vendor}/Database + +%files datasource +%{!?_licensedir:%global license %%doc} +%license src/Datasource/LICENSE.txt +%doc src/Datasource/composer.json +%doc src/Datasource/*md +%{php_home}/%{ns_vendor}/Datasource + +%files utility +%{!?_licensedir:%global license %%doc} +%license src/Utility/LICENSE.txt +%doc src/Utility/composer.json +%doc src/Utility/*md +%{php_home}/%{ns_vendor}/Utility + + +%changelog +* Mon Jun 11 2018 Remi Collet <remi@remirepo.net> - 3.6.5-1 +- Initial packaging with cache, collection, core, database, + database and utility sub-packages |