summaryrefslogtreecommitdiffstats
path: root/php-opencloud.spec
blob: e3ccd00c070f2fd4ae3d208d3594eaecd511f706 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
# remirepo spec file for php-opencloud, from
#
# Fedora spec file for php-opencloud
#
# Copyright (c) 2013-2017 Gregor Tätzner <brummbq@fedoraproject.org>
#                         Shawn Iwinski <shawn.iwinski@gmail.com>
#
# License: MIT
# http://opensource.org/licenses/MIT
#
# Please preserve changelog entries
#

%global github_owner   rackspace
%global github_name    php-opencloud
%global github_version 1.16.0
%global github_commit  d6b71feed7f9e7a4b52e0240a79f06473ba69c8c

# Bundled: php-composer(mikemccabe/json-patch-php)
%global mikemccabe_json_patch_php_github_owner   mikemccabe
%global mikemccabe_json_patch_php_github_name    json-patch-php
%global mikemccabe_json_patch_php_github_version 0.1.0
%global mikemccabe_json_patch_php_github_commit  b3af30a6aec7f6467c773cd49b2d974a70f7c0d4

%global composer_vendor  rackspace
%global composer_project php-opencloud

# "php" : ">=5.4"
%global php_min_ver 5.4
# "guzzle/http" : "~3.8"
#     NOTE: Min version not 3.8 because autoloader required
%global guzzle_min_ver 3.9.3
%global guzzle_max_ver 4.0
# "mikemccabe/json-patch-php": "~0.1"
#%%global mikemccabe_json_patch_php_min_ver 0.1
#%%global mikemccabe_json_patch_php_max_ver 1.0
# "phpspec/prophecy": "~1.4"
%global phpspec_prophecy_min_ver 1.4
%global phpspec_prophecy_max_ver 2.0
# "psr/log": "~1.0"
#     NOTE: Min version not 1.0 because autoloader required
%global psr_log_min_ver 1.0.1
%global psr_log_max_ver 2.0

# Build using "--without tests" to disable tests
%global with_tests 0%{!?_without_tests:1}

%{!?phpdir:  %global phpdir  %{_datadir}/php}

Name:          php-opencloud
Version:       %{github_version}
Release:       4%{?github_release}%{?dist}
Summary:       PHP SDK for OpenStack/Rackspace APIs
Group:         Development/Libraries

License:       ASL 2.0
URL:           http://docs.php-opencloud.com/
Source0:       https://github.com/%{github_owner}/%{github_name}/archive/%{github_commit}/%{name}-%{github_version}-%{github_commit}.tar.gz

# Bundled: php-composer(mikemccabe/json-patch-php)
Source1:       https://github.com/%{mikemccabe_json_patch_php_github_owner}/%{mikemccabe_json_patch_php_github_name}/archive/%{mikemccabe_json_patch_php_github_commit}/%{name}-mikemccabe-json-patch-php-%{mikemccabe_json_patch_php_github_version}-%{mikemccabe_json_patch_php_github_commit}.tar.gz

Patch0:        https://patch-diff.githubusercontent.com/raw/mikemccabe/json-patch-php/pull/17.patch

BuildArch:     noarch
# Tests
%if %{with_tests}
## composer.json
BuildRequires: php(language) >= %{php_min_ver}
BuildRequires: php-composer(guzzle/guzzle) <  %{guzzle_max_ver}
BuildRequires: php-composer(guzzle/guzzle) >= %{guzzle_min_ver}
BuildRequires: php-composer(phpspec/prophecy) <  %{phpspec_prophecy_max_ver}
BuildRequires: php-composer(phpspec/prophecy) >= %{phpspec_prophecy_min_ver}
BuildRequires: php-composer(phpunit/phpunit)
BuildRequires: php-composer(psr/log) <  %{psr_log_max_ver}
BuildRequires: php-composer(psr/log) >= %{psr_log_min_ver}
## phpcompatinfo (computed from version 1.16.0 / mikemccabe/json-patch-php 0.1.0)
BuildRequires: php-curl
BuildRequires: php-date
BuildRequires: php-hash
BuildRequires: php-json
BuildRequires: php-pcre
BuildRequires: php-reflection
BuildRequires: php-spl
## Autoloader
BuildRequires: php-composer(fedora/autoloader)
%endif

# composer.json
Requires:      php(language) >= %{php_min_ver}
Requires:      php-composer(guzzle/guzzle) <  %{guzzle_max_ver}
Requires:      php-composer(guzzle/guzzle) >= %{guzzle_min_ver}
Requires:      php-composer(psr/log) <  %{psr_log_max_ver}
Requires:      php-composer(psr/log) >= %{psr_log_min_ver}
# phpcompatinfo (computed from version 1.16.0 / mikemccabe/json-patch-php 0.1.0)
Requires:      php-date
Requires:      php-hash
Requires:      php-json
Requires:      php-pcre
Requires:      php-spl
# Autoloader
Requires:      php-composer(fedora/autoloader)

# Composer
Provides:      php-composer(%{composer_vendor}/%{composer_project}) = %{version}

# Bundled: php-composer(mikemccabe/json-patch-php)
Provides:      bundled(php-mikemccabe-json-patch-php) = %{mikemccabe_json_patch_php_github_version}

%description
The PHP SDK should work with most OpenStack-based cloud deployments, though
it specifically targets the Rackspace public cloud. In general, whenever a
Rackspace deployment is substantially different than a pure OpenStack one,
a separate Rackspace subclass is provided so that you can still use the SDK
with a pure OpenStack instance (for example, see the OpenStack class (for
OpenStack) and the Rackspace subclass).

Autoloader: %{phpdir}/OpenCloud/autoload.php


%package doc
Summary: Documentation for PHP SDK for OpenStack/Rackspace APIs
Group:   Development/Libraries


%description doc
Documentation for PHP SDK for OpenStack/Rackspace APIs.


%prep
%setup -qn %{github_name}-%{github_commit} -a 1

cd %{mikemccabe_json_patch_php_github_name}-%{mikemccabe_json_patch_php_github_commit}
%patch0 -p1


%build
: Create autoloader
cat <<'AUTOLOAD' | tee lib/OpenCloud/autoload.php
<?php
/**
 * Autoloader for %{name} and its' dependencies
 * (created by %{name}-%{version}-%{release}).
 */
require_once '%{phpdir}/Fedora/Autoloader/autoload.php';

\Fedora\Autoloader\Autoload::addPsr4('OpenCloud\\', __DIR__);
\Fedora\Autoloader\Autoload::addPsr4('mikemccabe\\JsonPatch\\', __DIR__.'/mikemccabe/JsonPatch');

\Fedora\Autoloader\Dependencies::required(array(
    '%{phpdir}/Guzzle/autoload.php',
    '%{phpdir}/Psr/Log/autoload.php',
));
AUTOLOAD


%install
mkdir -p %{buildroot}%{phpdir}
cp -rp lib/OpenCloud %{buildroot}%{phpdir}/

# Bundled: php-composer(mikemccabe/json-patch-php)
mkdir -p %{buildroot}%{phpdir}/OpenCloud/mikemccabe/JsonPatch
cp -rp \
    %{mikemccabe_json_patch_php_github_name}-%{mikemccabe_json_patch_php_github_commit}/src/* \
    %{buildroot}%{phpdir}/OpenCloud/mikemccabe/JsonPatch/


%check
%if %{with_tests}
: Create mock Composer autoloader
mkdir vendor
cat <<'AUTOLOAD' | tee vendor/autoload.php
<?php
require '%{buildroot}%{phpdir}/OpenCloud/autoload.php';
\Fedora\Autoloader\Autoload::addPsr4('OpenCloud\\', dirname(__DIR__).'/tests/OpenCloud');
\Fedora\Autoloader\Dependencies::required(array(
    '%{phpdir}/Prophecy/autoload.php',
));
AUTOLOAD

: Remove coverage-clover logging from PHPUnit config
sed -e '/coverage-clover/d' phpunit.xml.dist > phpunit.xml

: Skip tests known to fail
sed 's/function testGetConnection/function SKIP_testGetConnection/' \
    -i tests/OpenCloud/Tests/CloudMonitoring/Resource/AgentTest.php
sed 's/function test_Create_User/function SKIP_test_Create_User/' \
    -i tests/OpenCloud/Tests/Identity/ServiceTest.php
sed 's/function test_Get_Member/function SKIP_test_Get_Member/' \
    -i tests/OpenCloud/Tests/Image/Resource/ImageTest.php
sed \
    -e 's/function test_Get_Image/function SKIP_test_Get_Image/' \
    -e 's/function test_Images_Schema/function SKIP_test_Images_Schema/' \
    -e 's/function test_Image_Schema/function SKIP_test_Image_Schema/' \
    -e 's/function test_Members_Schema/function SKIP_test_Members_Schema/' \
    -e 's/function test_Member_Schema/function SKIP_test_Member_Schema/' \
    -i tests/OpenCloud/Tests/Image/ServiceTest.php

: Upstream tests
RETURN_CODE=0
PHPUNIT=$(which phpunit)
for PHP_EXEC in "" %{?rhel:php55} php56 php70 php71 php72; do
    if [ -z "$PHP_EXEC" ] || which $PHP_EXEC; then
        $PHP_EXEC $PHPUNIT --verbose || RETURN_CODE=1
    fi
done
exit $RETURN_CODE
%else
: Tests skipped
%endif


%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc *.md
%doc composer.json
%{phpdir}/OpenCloud


%files doc
%doc docs
%doc samples


%changelog
* Thu Nov  2 2017 Remi Collet <remi@remimrepo.net> - 1.16.0-4
- fix FTBFS from Koschei, add patch for PHP 7.2 from
  https://github.com/mikemccabe/json-patch-php/pull/17

* Mon May 29 2017 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.16.0-2
- Fix autoloader dependency

* Sun Feb 26 2017 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.16.0-1
- Update to 1.16.0 (RHBZ #1312624)
- Fix FTBFS (skip tests known to fail)
- Add bundled dependency php-composer(mikemccabe/json-patch-php)
- Use php-composer(fedora/autoloader)

* Sat Mar 26 2016 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.12.2-1
- Updated to 1.12.2
- Updated URL
- Updated dependencies to use php-composer(*)
- Added autoloader (and bumped dependency versions for their autoloaders)

* Fri Jan 02 2015 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.12.1-1
- Updated to 1.12.1 (BZ #1172637)
- Added php-composer(rackspace/php-opencloud) virtual provide

* Sat Nov 22 2014 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.11.0-3
- Removed obsolete of php-cloudfiles

* Sun Nov 02 2014 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.11.0-2
- No BuildRequires unless with tests

* Sun Nov 02 2014 Shawn Iwinski <shawn.iwinski@gmail.com> - 1.11.0-1
- Updated to 1.11.0 (BZ #1159522)
- Spec cleanup

* Thu Jul 31 2014 Remi Collet <rpms@famillecollet.com> - 1.6.0-5
- don't obsolete php-cloudfiles

* Thu Jan 30 2014 Remi Collet <rpms@famillecollet.com> - 1.6.0-4
- backport 1.6.0 for remi repo

* Thu Jan 30 2014 Gregor Tätzner <brummbq@fedoraproject.org> - 1.6.0-4
- obsolete php-cloudfiles

* Sat Jan 25 2014 Gregor Tätzner <brummbq@fedoraproject.org> - 1.6.0-3
- use commit revision in source url

* Fri Jan 03 2014 Gregor Tätzner <brummbq@fedoraproject.org> - 1.6.0-2
- move lib to psr-0 compliant location
- drop autoloader

* Tue Dec 31 2013 Gregor Tätzner <brummbq@fedoraproject.org> - 1.6.0-1
- initial packaging