From e20bd7365fe784bd06b21bd4f19bca6dda8b9ac9 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 24 Nov 2016 16:42:23 +0100 Subject: phan: 0.6, new package --- Makefile | 3 ++ composer.json | 33 ++++++++++++ phan-autoload.patch | 88 +++++++++++++++++++++++++++++++ phan-autoload.php | 9 ++++ phan.spec | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 278 insertions(+) create mode 100644 Makefile create mode 100644 composer.json create mode 100644 phan-autoload.patch create mode 100644 phan-autoload.php create mode 100644 phan.spec diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cd3c95f --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../common/Makefile diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..926f961 --- /dev/null +++ b/composer.json @@ -0,0 +1,33 @@ +{ + "name": "etsy/phan", + "description": "A static analyzer for PHP", + "keywords": ["php", "static", "analyzer"], + "type": "project", + "license": "MIT", + "authors": [ + { + "name": "Rasmus Lerdorf" + }, + { + "name": "Andrew S. Morrison" + } + ], + "require": { + "php": ">=7.0", + "ext-ast": "*", + "ext-sqlite3": "0.7-dev", + "symfony/console": "~2.3|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~5", + "phpdocumentor/phpdocumentor": "dev-master", + "squizlabs/php_codesniffer": "^2.5" + }, + "autoload": { + "psr-4": {"Phan\\": "src/Phan"} + }, + "autoload-dev": { + "psr-4": {"Phan\\Tests\\": "tests/Phan"} + }, + "bin": ["phan", "tocheckstyle"] +} diff --git a/phan-autoload.patch b/phan-autoload.patch new file mode 100644 index 0000000..4eb8753 --- /dev/null +++ b/phan-autoload.patch @@ -0,0 +1,88 @@ +diff -up ./src/codebase.php.rpm ./src/codebase.php +--- ./src/codebase.php.rpm 2016-11-24 16:15:15.615092571 +0100 ++++ ./src/codebase.php 2016-11-24 16:15:23.848136345 +0100 +@@ -7,14 +7,8 @@ $internal_trait_name_list = get_declared + $internal_function_name_list = get_defined_functions()['internal']; + + +-if (file_exists(__DIR__ . '/../vendor/autoload.php')) { +- // This is the normal path when Phan is installed only in the scope of a project. +- require_once __DIR__ . '/../vendor/autoload.php'; +-} +-else { +- // This is the path to autoload.php when Phan is installed globally. +- require_once __DIR__ . '/../../../autoload.php'; +-} ++// Use the fedora autoloader ++require_once __DIR__ . '/autoload.php'; + + use Phan\CodeBase; + +diff -up ./src/Phan/Bootstrap.php.rpm ./src/Phan/Bootstrap.php +--- ./src/Phan/Bootstrap.php.rpm 2016-11-24 16:12:00.366054438 +0100 ++++ ./src/Phan/Bootstrap.php 2016-11-24 16:16:28.316479122 +0100 +@@ -11,16 +11,8 @@ ini_set("memory_limit", '-1'); + define('CLASS_DIR', __DIR__ . '/../'); + set_include_path(get_include_path().PATH_SEPARATOR.CLASS_DIR); + +-// Use the composer autoloader +-foreach ([ +- __DIR__.'/../../vendor/autoload.php', // autoloader is in this project +- __DIR__.'/../../../../../vendor/autoload.php', // autoloader is in parent project +- ] as $file) { +- if (file_exists($file)) { +- require_once($file); +- break; +- } +-} ++// Use the fedora autoloader ++require_once __DIR__ . '/autoload.php'; + + define('EXIT_SUCCESS', 0); + define('EXIT_FAILURE', 1); +diff -up ./src/phan.php.rpm ./src/phan.php +--- ./src/phan.php.rpm 2016-11-24 16:08:41.223995606 +0100 ++++ ./src/phan.php 2016-11-24 16:11:41.311953128 +0100 +@@ -1,3 +1,4 @@ ++#!/usr/bin/env php + = 7.0 +BuildRequires: php-ast +BuildRequires: php-sqlite3 +BuildRequires: php-composer(symfony/console) >= 2.8 +BuildRequires: php-reflection +BuildRequires: php-pcntl +BuildRequires: php-pcre +BuildRequires: php-posix +BuildRequires: php-spl +BuildRequires: php-sysvmsg +BuildRequires: php-sysvsem +# For tests, from composer.json "require-dev": { +# "phpunit/phpunit": "~5", +# "phpdocumentor/phpdocumentor": "dev-master", +# "squizlabs/php_codesniffer": "^2.5" +BuildRequires: php-composer(phpunit/phpunit) >= 5 +%endif +# For autoloader +BuildRequires: php-composer(fedora/autoloader) + +# From composer.json, "require": { +# "php": ">=7.0", +# "ext-ast": "*", +# "ext-sqlite3": "0.7-dev", +# "symfony/console": "~2.3|~3.0" +Requires: php(language) >= 7.0 +Requires: php-ast +Requires: php-sqlite3 +Requires: php-composer(symfony/console) >= 2.3 +# From phpcompatinfo report for 0.6 +Requires: php-cli +Requires: php-reflection +Requires: php-pcntl +Requires: php-pcre +Requires: php-posix +Requires: php-spl +Requires: php-sysvmsg +Requires: php-sysvsem +# For autoloader +Requires: php-composer(fedora/autoloader) + +# Composer +Provides: php-composer(%{gh_owner}/%{gh_project}) = %{version} + + +%description +Phan is a static analyzer that looks for common issues and will verify type +compatibility on various operations when type information is available or can +be deduced. Phan does not make any serious attempt to understand flow control +and narrow types based on conditionals. + + +%prep +%setup -q -n %{gh_project}-%{gh_commit} + +%patch0 -p1 + +cp %{SOURCE1} src/%{psr0}/autoload.php + + +%build +: Nothing to build + + +%install +: Library +mkdir -p %{buildroot}%{_datadir}/php +cp -pr src/%{psr0} %{buildroot}%{_datadir}/php/%{psr0} + +: Relocated tools +cp -pr src/*php %{buildroot}%{_datadir}/php/%{psr0}/ +install -Dpm 755 src/phan.php %{buildroot}%{_datadir}/php/%{psr0}/phan.php +install -Dpm 755 src/prep.php %{buildroot}%{_datadir}/php/%{psr0}/prep.php + +: Commands +mkdir -p %{buildroot}%{_bindir} +ln -s ../share/php/%{psr0}/phan.php %{buildroot}%{_bindir}/phan +ln -s ../share/php/%{psr0}/prep.php %{buildroot}%{_bindir}/phan-prep + + +%check +%if %{with_tests} +mkdir vendor +cat << 'EOF' | tee vendor/autoload.php + - 0.6-1 +- initial package + -- cgit