summaryrefslogtreecommitdiffstats
path: root/php-mtdowling-transducers.spec
blob: a17ecd6d57826703ba714fe82221e0fe631cff10 (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
#
# RPM spec file for php-mtdowling-transducers
#
# Copyright (c) 2015 Shawn Iwinski <shawn.iwinski@gmail.com>
#
# License: MIT
# http://opensource.org/licenses/MIT
#
# Please preserve changelog entries
#

%global github_owner     mtdowling
%global github_name      transducers.php
%global github_version   0.3.0
%global github_commit    32ff6a67b5d5d1930533277a505b4f9d360dbe6c

%global composer_vendor  mtdowling
%global composer_project transducers

# "php": ">=5.5.0"
%global php_min_ver 5.5.0

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

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

Name:          php-%{composer_vendor}-%{composer_project}
Version:       %{github_version}
Release:       1%{?github_release}%{?dist}
Summary:       Composable algorithmic transformations

Group:         Development/Libraries
License:       MIT
URL:           https://github.com/%{github_owner}/%{github_name}

# GitHub download/export does not include tests
# Run "php-mtdowling-transducers-get-source.sh" to create source
Source0:       %{name}-%{version}-%{github_commit}.tar.gz
Source1:       %{name}-get-source.sh

BuildArch:     noarch
%if %{with_tests}
# For tests
## composer.json
BuildRequires: %{_bindir}/phpunit
BuildRequires: php(language) >= %{php_min_ver}
## phpcompatinfo (computed from version 0.3.0)
BuildRequires: php-ereg
BuildRequires: php-json
BuildRequires: php-spl
%endif

# composer.json
Requires:      php(language) >= %{php_min_ver}
# phpcompatinfo (computed from version 0.3.0)
Requires:      php-ereg
Requires:      php-json
Requires:      php-spl

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

%description
Transducers [1] are composable algorithmic transformations. They are independent
from the context of their input and output sources and specify only the essence
of the transformation in terms of an individual element. Because transducers are
decoupled from input or output sources, they can be used in many different
processes - collections, streams, channels, observables, etc. Transducers
compose directly, without awareness of input or creation of intermediate
aggregates.

[1] http://clojure.org/transducers


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


%build
: Generate autoloader
cat > src/autoload.php <<'AUTOLOAD'
<?php
/**
 * While an autoloader is not really necessary for this (currently) single-file
 * library, it is provided for future-proofing the loading of this library.
 */

require __DIR__ . '/transducers.php';
AUTOLOAD


%install
mkdir -p %{buildroot}%{phpdir}/%{composer_project}
cp -rp src/* %{buildroot}%{phpdir}/%{composer_project}/


%check
%if %{with_tests}
: Temporarily skip failing tests
: See https://github.com/mtdowling/transducers.php/issues/4
sed -e 's/function testToTraversableReturnsStreamsIter/function SKIP_testToTraversableReturnsStreamsIter/' \
    -e 's/function testCanStepInClosing/function SKIP_testCanStepInClosing/' \
    -i tests/transducersTest.php

%{_bindir}/phpunit \
    --bootstrap %{buildroot}%{phpdir}/%{composer_project}/autoload.php
%else
: Tests skipped
%endif


%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc CHANGELOG.md
%doc README.rst
%doc composer.json
%{phpdir}/%{composer_project}


%changelog
* Sat May 16 2015 Shawn Iwinski <shawn.iwinski@gmail.com> - 0.3.0-1
- Initial package