%global revision_date 20190308
%global git_short_version_hash 833574d
%global git_full_version_hash 833574d0b668ab8992619d9183124022668bd6cc

Summary:    A collection of PHP utility classes
Name:       libphutil

# copr isn't purging older builds, even though they are deleted
Epoch:      1

Version:    0.%{revision_date}.git%{git_short_version_hash}
Release:    1%{?dist}
License:    ASL 2.0
URL:        http://www.phabricator.com/docs/libphutil/
Source0:    https://github.com/phacility/libphutil/archive/%{git_full_version_hash}.tar.gz#/libphutil-%{git_full_version_hash}.tar.gz

# Document what's in the phabricator subpackage, so that RPM will
# be able to build the actual subpackage.
Source999:  README.phabricator

##
## Packaging fixes
##

# https://github.com/kanarip/libphutil/tree/packaging/stable/0001-unvendorize-jsonlint
Patch0001:  0001-Unvendorize-jsonlint.patch
# https://github.com/kanarip/libphutil/tree/packaging/stable/0002-remove-deprecated-xhprof-dependency
# No longer needed in the next promotion of master to stable
Patch0002:  0002-Remove-xhprof-dependency.patch
# https://github.com/kanarip/libphutil/tree/packaging/stable/0003-unvendorize-porter-stemmer
Patch0003:  0003-Unvendorize-porter-stemmer.patch
# https://github.com/kanarip/libphutil/tree/packaging/stable/0004-Strip-deprecated-MySQL
Patch0004:  0004-Strip-dependency-on-deprecated-MySQL-PHP-extension.patch

##
## Feature enhancements (arguably)
##

# https://github.com/kanarip/libphutil/tree/feature/stable/0001-fix-from-address-parsing
Patch0005:  0005-Parse-From-lines-in-the-format-user-domain.com-user-.patch

BuildArch:  noarch

# Virtual provides to silence rpmlint on requiring an explicit
# library for arcanist and phabricator.
Provides:   arcanist(libphutil) = %{?epoch:%{epoch}:}%{version}-%{release}

Requires:   php(language) >= 5
Requires:   php-curl
Requires:   php-date
Requires:   php-fileinfo
Requires:   php-jsonlint
Requires:   php-mbstring
Requires:   php-pecl(json)
Requires:   php-xml

%description
A collection of PHP utility classes used with phabricator

%package phabricator
Summary:    A collection of dependencies optimized for Phabricator
Requires:   php-composer(camspiers/porter-stemmer) >= 1.0.0
Requires:   php-gd
Requires:   php-ldap
Requires:   php-mysqli
Requires:   php-opcache
Requires:   php-pecl(APC)

# Virtual provides to silence rpmlint on requiring an explicit
# library for arcanist and phabricator.
Provides:   phabricator(libphutil) = %{?epoch:%{epoch}:}%{version}-%{release}

%description phabricator
A meta-package to pull in optimization and server-side dependencies for
Phabricator.

%prep
%setup -q -n libphutil-%{git_full_version_hash}

%patch0001 -p1
# Also remove the externals/jsonlint/ directory.
rm -rf externals/jsonlint/

%patch0002 -p1
%patch0003 -p1
%patch0004 -p1

# Also remove the files associated with it, keeps things clean for review
find src/ -type f -name "*MySQL*" -a ! -name "*BaseMySQL*" -a ! -name "*MySQLi*" -delete

%patch0005 -p1

cp -a %{SOURCE999} .

%build

%install
# copy libphutil to the buildroot
mkdir -p %{buildroot}%{_datadir}/%{name}

cp -a scripts/ src/ %{buildroot}%{_datadir}/%{name}/.

find %{buildroot}%{_datadir}/%{name}/ -type d -name test -exec rm -rvf {} \; 2>/dev/null || :
find %{buildroot}%{_datadir}/%{name}/ -type d -name __tests__ -exec rm -rvf {} \; 2>/dev/null || :

# Fix shebangs
find %{buildroot}%{_datadir}/%{name}/ -type f -exec sed -i -r -e 's"^#!(.*)/usr/bin/env php"#!%{_bindir}/php"' {} \;
find %{buildroot}%{_datadir}/%{name}/ -type f -exec sed -i -r -e 's"^#!(.*)/usr/local/bin/php"#!%{_bindir}/php"' {} \;

%files
%{!?_licensedir:%global license %doc}
%license LICENSE
%doc README.md
%doc NOTICE
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/scripts
%{_datadir}/%{name}/src

%files phabricator
%doc README.phabricator

%changelog
* Fri Mar 15 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1:0.20190308.git833574d-1
- Promote Week #10 2019

* Mon Oct 16 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1:0.20171013.git7a90825-3
- Rebuild

* Mon Oct 16 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1:0.20171013.git7a90825-2
- Rebuild

* Mon Oct 16 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1:0.20171013.git7a90825-1
- Promote Week #41 2017

* Sun May 28 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1:0.20170429.gitd02cc05-2
- Rebuild

* Tue Mar 14 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20170305.git796cb1c-1
- Promote Week #09 2017

* Thu Feb 23 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20170218.gitd0ebdaf-1
- Promote Week #07 2017

* Thu Feb 09 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20170113.git10963f7-3
- Rebuild

* Sun Jan 22 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20170113.git10963f7-2
- Rebuild

* Wed Jan 18 2017 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20170113.git10963f7-1
- Promote Week #02 2017

* Fri Dec 30 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161210.git0ae0cc0-4
- Rebuild

* Sun Dec 18 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161210.git0ae0cc0-3
- Rebuild

* Tue Dec 13 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161210.git0ae0cc0-2
- Rebuild

* Mon Dec 12 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161210.git0ae0cc0-1
- Promote Week #49 2016

* Sun Dec 04 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161203.git3230179-3
- Rebuild

* Sun Dec 04 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161203.git3230179-2
- Rebuild

* Sat Dec 03 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161203.git3230179-1
- Promote Week #48 2016

* Sat Dec 03 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-6
- Rebuild

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-5
- Rebuild

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-4
- Rebuild

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-3
- Rebuild

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-2
- Rebuild

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.20161126.git89984ac-1
- Promote Week #47 2016

* Thu Dec 01 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161126.git89984ac-2
- Rebuild

* Tue Nov 29 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161126.git89984ac-1
- Promote Week #47 2016

* Tue Nov 29 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161126.git89984ac-1
- Promote Week #47

* Thu Nov 10 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161105.git40e473e-1
- Promote Week #44

* Sat Nov 05 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161028.git1961d55-1
- Promote Week #43

* Mon Oct 24 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20161022.git20841d2-1
- Promote Week #42

* Sat Sep 24 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20160924.git518dacd-1
- Promote week #38

* Thu Sep  8 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20160905.gitc14343e-1
- Promote week #36

* Wed Aug 10 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20160806.git8f8e02d-1
- Correct NEVRA

* Tue Aug  9 2016 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 20160727.git8f8e02d-2
- Adjust dependency on php-opcache
- Adjust dependency on php-pecl-apcu
- Remove dependency on XHProf (strip references to it as well)
- Taking in some of the packaging review recommendations

* Wed Feb 25 2015 Tim Flink <tflink@fedoraproject.org> - 20150211.git9e0ea2c-2
- un-removing bundled jsonlint because the bundled version isn't compatible with upstream

* Wed Feb 11 2015 Tim Flink <tflink@fedoraproject.org> - 20150211.git9e0ea2c-1
- Updating to latest upstream git

* Sat Jan 17 2015 Vladimir Rusinov <vladimir@greenmice.info> - 20141204.git549aa1b-2
- remove bundled jsonlint

* Thu Dec 04 2014 Tim Flink <tflink@fedoraproject.org> - 20141204.git549aa1b-1
- updating to latest upstream git

* Tue Sep 02 2014 Tim Flink <tflink@fedoraproject.org> - 20140902.git2de6440-1
- updating to latest upstream git

* Mon Jul 21 2014 Tim Flink <tflink@fedoraproject.org> - 20140721.gitefc2cc5-1
- updating to latest upstream git

* Sun May 18 2014 Tim Flink <tflink@fedoraproject.org> - 20140518.git1add454-1
- updating to latest upstream git

* Thu Jan 23 2014 Tim Flink <tflink@fedoraproject.org> - 20140123.git86d651f-1
- updating to latest git

* Tue Dec 10 2013 Tim Flink <tflink@fedoraproject.org> - 20131210.git69490c5-1
- updating to latest git

* Wed Oct 30 2013 Tim Flink <tflink@fedoraproject.org> - 20131030.gitba9c942-1
- Initial package