diff options
-rwxr-xr-x | makesrc.sh | 26 | ||||
-rw-r--r-- | php-phpmd-PHP-PMD-autoload.php | 22 | ||||
-rw-r--r-- | php-phpmd-PHP-PMD-rpm.patch | 45 | ||||
-rw-r--r-- | php-phpmd-PHP-PMD.spec | 156 |
4 files changed, 206 insertions, 43 deletions
diff --git a/makesrc.sh b/makesrc.sh new file mode 100755 index 0000000..05a6054 --- /dev/null +++ b/makesrc.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +NAME=$(sed -n '/^Name:/{s/.* //;p}' *.spec) +OWNER=$(sed -n '/^%global gh_owner/{s/.* //;p}' $NAME.spec) +PROJECT=$(sed -n '/^%global gh_project/{s/.* //;p}' $NAME.spec) +VERSION=$(sed -n '/^Version:/{s/.* //;p}' $NAME.spec) +COMMIT=$(sed -n '/^%global gh_commit/{s/.* //;p}' $NAME.spec) +SHORT=${COMMIT:0:7} + +echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION\n" + +echo "Cloning..." +git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT + +echo "Getting commit..." +pushd $PROJECT-$COMMIT +git checkout $COMMIT +popd + +echo "Archiving..." +tar czf $NAME-$VERSION-$SHORT.tgz --exclude .git $PROJECT-$COMMIT + +echo "Cleaning..." +rm -rf $PROJECT-$COMMIT + +echo "Done." diff --git a/php-phpmd-PHP-PMD-autoload.php b/php-phpmd-PHP-PMD-autoload.php new file mode 100644 index 0000000..0d8d87e --- /dev/null +++ b/php-phpmd-PHP-PMD-autoload.php @@ -0,0 +1,22 @@ +<?php +/* Autoloader for pdepend/pdepend and its dependencies */ + +$vendorDir = '/usr/share/php'; +// Use Symfony autoloader +if (!isset($fedoraClassLoader) || !($fedoraClassLoader instanceof \Symfony\Component\ClassLoader\ClassLoader)) { + if (!class_exists('Symfony\\Component\\ClassLoader\\ClassLoader', false)) { + require_once $vendorDir . '/Symfony/Component/ClassLoader/ClassLoader.php'; + } + + $fedoraClassLoader = new \Symfony\Component\ClassLoader\ClassLoader(); + $fedoraClassLoader->register(); +} + +/* PHPMD */ +$fedoraClassLoader->addPrefix('PHPMD\\', dirname(__DIR__)); + +/* for symfony/dependency-injection, filesystem and config */ +$fedoraClassLoader->addPrefix('Symfony\\Component\\', $vendorDir); + +/* PDepend */ +require_once $vendorDir . '/PDepend/autoload.php'; diff --git a/php-phpmd-PHP-PMD-rpm.patch b/php-phpmd-PHP-PMD-rpm.patch new file mode 100644 index 0000000..98be5bc --- /dev/null +++ b/php-phpmd-PHP-PMD-rpm.patch @@ -0,0 +1,45 @@ +diff -up src/bin/phpmd.rpm src/bin/phpmd +--- src/bin/phpmd.rpm 2015-07-02 10:03:08.578182650 +0200 ++++ src/bin/phpmd 2015-07-02 10:04:10.727496791 +0200 +@@ -3,23 +3,7 @@ + + use PHPMD\TextUI\Command; + +-if (file_exists(__DIR__ . '/../../../../autoload.php')) { +- // phpmd is part of a composer installation +- require_once __DIR__ . '/../../../../autoload.php'; +-} else { +- require_once __DIR__ . '/../../vendor/autoload.php'; +- +- // PEAR installation workaround +- if (strpos('@package_version@', '@package_version') === 0) { +- set_include_path( +- dirname(__FILE__) . '/../main/php' . +- PATH_SEPARATOR . +- dirname(__FILE__) . '/../../vendor/pdepend/pdepend/src/main/php' . +- PATH_SEPARATOR . +- '.' +- ); +- } +-} ++require '/usr/share/php/PHPMD/autoload.php'; + + if (!ini_get('date.timezone') && !date_default_timezone_get()) { + date_default_timezone_set('UTC'); +diff -up src/main/php/PHPMD/RuleSetFactory.php.rpm src/main/php/PHPMD/RuleSetFactory.php +--- src/main/php/PHPMD/RuleSetFactory.php.rpm 2015-07-02 10:05:14.076816993 +0200 ++++ src/main/php/PHPMD/RuleSetFactory.php 2015-07-02 10:06:06.854083755 +0200 +@@ -79,12 +79,7 @@ class RuleSetFactory + */ + public function __construct() + { +- // PEAR installer workaround +- if (strpos($this->location, '@data_dir') === 0) { +- $this->location = __DIR__ . '/../../resources'; +- } else { +- $this->location .= '/PHPMD/resources'; +- } ++ $this->location = __DIR__ . '/../../php-phpmd-PHP-PMD/resources'; + } + + /** diff --git a/php-phpmd-PHP-PMD.spec b/php-phpmd-PHP-PMD.spec index 5a37df7..db9e38d 100644 --- a/php-phpmd-PHP-PMD.spec +++ b/php-phpmd-PHP-PMD.spec @@ -1,36 +1,85 @@ +# remirepo spec file for php-phpmd-PHP-PMD +# using git sources, from: +# +# Fedora spec file for php-phpmd-PHP-PMD +# +# License: MIT +# http://opensource.org/licenses/MIT +# +# Please, preserve the changelog entries +# +%global gh_commit 5eeb5a4d39c8304910b33ae49f8813905346cc35 +%global gh_short %(c=%{gh_commit}; echo ${c:0:7}) +%global gh_owner phpmd +%global gh_project phpmd %{!?__pear: %{expand: %%global __pear %{_bindir}/pear}} %global pear_name PHP_PMD %global pear_channel pear.phpmd.org +%global php_home %{_datadir}/php/PHPMD +%global with_tests 0%{!?_without_tests:1} Name: php-phpmd-PHP-PMD -Version: 1.5.0 +Version: 2.2.3 Release: 1%{?dist} Summary: PHPMD - PHP Mess Detector Group: Development/Libraries License: BSD -URL: http://www.phpmd.org/ -Source0: http://pear.phpmd.org/get/%{pear_name}-%{version}.tgz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +URL: http://phpmd.org/ +# git snashop to get upstream test suite +Source0: %{name}-%{version}-%{gh_short}.tgz +Source1: makesrc.sh +# Autoloader +Source2: %{name}-autoload.php +Patch0: %{name}-rpm.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch -BuildRequires: php-pear -BuildRequires: php-channel(%{pear_channel}) - -Requires: php-channel(%{pear_channel}) -Requires: php(language) >= 5.2.3 -Requires: php-dom +%if %{with_tests} +# For tests +BuildRequires: %{_bindir}/phpunit +BuildRequires: php(language) >= 5.3 +BuildRequires: php-composer(pdepend/pdepend) >= 2.0 +BuildRequires: php-composer(symfony/dependency-injection) >= 2.4 +BuildRequires: php-composer(symfony/filesystem) >= 2.4 +BuildRequires: php-composer(symfony/config) >= 2.4 +BuildRequires: php-date +BuildRequires: php-libxml +BuildRequires: php-pcre +BuildRequires: php-simplexml +BuildRequires: php-spl +BuildRequires: php-composer(symfony/class-loader) +%endif + +# From composer.json, "require": { +# "php": ">=5.3.0", +# "pdepend/pdepend": "~2.0", +# "symfony/dependency-injection": ">=2.4", +# "symfony/filesystem": ">=2.4", +# "symfony/config": ">=2.4" +Requires: php(language) >= 5.3 +Requires: php-composer(pdepend/pdepend) >= 2.0 +Requires: php-composer(pdepend/pdepend) < 3 +Requires: php-composer(symfony/dependency-injection) >= 2.4 +Requires: php-composer(symfony/dependency-injection) < 3 +Requires: php-composer(symfony/filesystem) >= 2.4 +Requires: php-composer(symfony/filesystem) < 3 +Requires: php-composer(symfony/config) >= 2.4 +Requires: php-composer(symfony/config) < 3 +# From phpcompatinfo report for version 2.2.3 +Requires: php-date +Requires: php-libxml Requires: php-pcre Requires: php-simplexml Requires: php-spl -# phpcompatinfo detected -Requires: php-date -Requires: php-libxml -Requires: php-pear(pear.pdepend.org/PHP_Depend) >= 1.1.1 -Requires(post): %{__pear} -Requires(postun): %{__pear} +# Autoloader +Requires: php-composer(symfony/class-loader) + +# Single package in this channel +Obsoletes: php-channel-phpmd <= 1.3 Provides: php-pear(%{pear_channel}/%{pear_name}) = %{version} +Provides: php-composer(%{gh_owner}/%{gh_project}) = %{version} %description @@ -41,55 +90,76 @@ stream measured by PHP Depend. %prep -%setup -q -c -cd %{pear_name}-%{version} -mv ../package.xml %{name}.xml +%setup -q -n %{gh_project}-%{gh_commit} + +%patch0 -p0 +cp %{SOURCE2} src/main/php/PHPMD/autoload.php + +find src/main/php -name \*php -exec sed -e 's:@package_version@:%{version}:' -i {} \; +find src/test -type f -exec sed -e 's:@package_version@:%{version}:' -i {} \; %build -cd %{pear_name}-%{version} # Empty build section, most likely nothing required. %install rm -rf %{buildroot} -cd %{pear_name}-%{version} -%{__pear} install --nodeps --packagingroot %{buildroot} %{name}.xml -# Clean up unnecessary files -rm -rf %{buildroot}%{pear_metadir}/.??* +: Library +mkdir -p $(dirname %{buildroot}%{php_home}) +cp -pr src/main/php/PHPMD %{buildroot}%{php_home} -# Install XML package description -mkdir -p %{buildroot}%{pear_xmldir} -install -pm 644 %{name}.xml %{buildroot}%{pear_xmldir} +: Resources +mkdir -p %{buildroot}%{_datadir}/%{name} +cp -pr src/main/resources %{buildroot}%{_datadir}/%{name}/resources +: Command +install -Dpm 0755 src/bin/phpmd %{buildroot}%{_bindir}/phpmd -%clean -rm -rf %{buildroot} +%check +%if %{with_tests} +cat <<EOF | tee src/test/php/bootstrap.php +<?php +require '%{buildroot}%{php_home}/autoload.php'; +\$fedoraClassLoader->addPrefix('PHPMD\\\\', __DIR__); +EOF -%post -%{__pear} install --nodeps --soft --force --register-only \ - %{pear_xmldir}/%{name}.xml >/dev/null || : +%{_bindir}/phpunit --verbose +%else +: Test suite disabled +%endif -%postun -if [ $1 -eq 0 ] ; then - %{__pear} uninstall --nodeps --ignore-errors --register-only \ - %{pear_channel}/%{pear_name} >/dev/null || : +%pre +if [ -x %{_bindir}/pear ]; then + %{_bindir}/pear uninstall --nodeps --ignore-errors --register-only \ + %{pear_channel}/%{pear_name} >/dev/null || : fi +%clean +rm -rf %{buildroot} + + %files %defattr(-,root,root,-) -%doc %{pear_docdir}/%{pear_name} -%{pear_xmldir}/%{name}.xml -%{pear_phpdir}/PHP/PMD.php -%{pear_phpdir}/PHP/PMD -%{pear_datadir}/PHP_PMD +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc composer.json +%doc CONTRIBUTING.md README.rst AUTHORS.rst +%{php_home} +%{_datadir}/%{name} %{_bindir}/phpmd + %changelog +* Thu Jul 2 2015 Remi Collet <remi@fedoraproject.org> - 2.2.3-1 +- update to 2.2.3 +- switch from pear channel to git snapshot sources +- run upstream test suite during build + * Fri Jul 26 2013 Remi Collet <remi@fedoraproject.org> - 1.5.0-1 - Update to 1.5.0 @@ -170,7 +240,7 @@ fi * Sun Apr 4 2010 Christof Damian <christof@damian.net> - 0.2.5-1 - upsteam 0.2.5: bugfixes -* Thu Mar 9 2010 Remi Collet <RPMS@FamilleCollet.com> - 0.2.4-1 +* Tue Mar 9 2010 Remi Collet <RPMS@FamilleCollet.com> - 0.2.4-1 - rebuild for remi repository * Tue Mar 9 2010 Christof Damian <christof@damian.net> - 0.2.4-1 @@ -198,6 +268,6 @@ fi * Tue Jan 12 2010 Christof Damian <christof@damian.net> - 0.2.1-1 - upstream 0.2.1 -* Fri Jan 1 2010 Christof Damian <christof@damian.net> 0.2.0-1 +* Fri Jan 1 2010 Christof Damian <christof@damian.net> 0.2.0-1 - initial release |