summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xphp-mtdowling-transducers-get-source.sh69
-rw-r--r--php-mtdowling-transducers.spec124
2 files changed, 193 insertions, 0 deletions
diff --git a/php-mtdowling-transducers-get-source.sh b/php-mtdowling-transducers-get-source.sh
new file mode 100755
index 0000000..ba71f5d
--- /dev/null
+++ b/php-mtdowling-transducers-get-source.sh
@@ -0,0 +1,69 @@
+#/bin/sh
+
+GIT=`which git`
+RPM=`which rpm`
+
+if [ -z "$GIT" ]
+then
+ echo "ERROR: 'git' command not found" 1>&2
+ exit 1
+elif [ -z "$RPM" ]
+then
+ echo "ERROR: 'rpm' command not found" 1>&2
+ exit 1
+fi
+
+function print {
+ echo -e "\e[0;33m>>>>> ${1}\e[0m"
+}
+
+if [ -x "$1" ]
+then
+ SPEC=$1
+else
+ SPEC=`ls *.spec | head -1`
+fi
+
+NAME=`echo $SPEC | sed 's#\.spec##'`
+VERSION=`egrep '%global\s*github_version' $SPEC | awk '{print $3}'`
+
+print "SPEC = $SPEC"
+print "NAME = $NAME"
+
+GIT_OWNER=`egrep '%global\s*github_owner' $SPEC | awk '{print $3}'`
+GIT_NAME=`egrep '%global\s*github_name' $SPEC | awk '{print $3}'`
+GIT_COMMIT=`egrep '%global\s*github_commit' $SPEC | awk '{print $3}'`
+GIT_REPO=https://github.com/${GIT_OWNER}/${GIT_NAME}
+GIT_DIR=`echo $GIT_REPO | sed 's#.*/##'`
+
+print "GIT_OWNER = $GIT_OWNER"
+print "GIT_NAME = $GIT_NAME"
+print "GIT_COMMIT = $GIT_COMMIT"
+print "GIT_REPO = $GIT_REPO"
+print "GIT_DIR = $GIT_DIR"
+
+TEMP_DIR=$(mktemp --dir)
+
+pushd $TEMP_DIR
+ print "Cloning git repo..."
+ $GIT clone $GIT_REPO
+
+ pushd $GIT_DIR
+ print "Checking out commit..."
+ $GIT checkout $GIT_COMMIT
+ popd
+
+ TAR_DIR=${GIT_NAME}-${GIT_COMMIT}
+ print "TAR_DIR = $TAR_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
+ tar --exclude-vcs -czf $TAR_FILE $TAR_DIR
+ chmod 0644 $TAR_FILE
+popd
+
+rm -rf $TEMP_DIR
diff --git a/php-mtdowling-transducers.spec b/php-mtdowling-transducers.spec
new file mode 100644
index 0000000..a17ecd6
--- /dev/null
+++ b/php-mtdowling-transducers.spec
@@ -0,0 +1,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