summaryrefslogtreecommitdiffstats
path: root/php-cakephp.spec
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2018-06-11 12:17:54 +0200
committerRemi Collet <remi@remirepo.net>2018-06-11 12:17:54 +0200
commit10e9b83b9934486dd8c50fe0832332cd58fab26d (patch)
tree11b1afedd53d7db3ed8fc952f5ac2b721395afe3 /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.spec447
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