X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=rpm-php-requires.php;fp=rpm-php-requires.php;h=0000000000000000000000000000000000000000;hb=51da5f32a8ba2fd2557459cc6bf048525be5872c;hp=b39802993bc09d5d25656eb32939a69a054b101e;hpb=485bd119065fc121065fa0b9c9986b1e9a3b44c0;p=packages%2Frpm.git diff --git a/rpm-php-requires.php b/rpm-php-requires.php deleted file mode 100644 index b398029..0000000 --- a/rpm-php-requires.php +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/php - (Perl version) - * Michał Moskal (Perl version) - * Elan Ruusamäe - * - * URL: - * - * Requires: php-pear-PHP_CompatInfo - * Requires: php-pcre - */ - -/** - * Produce pear(Path/To/File.php) deps - * Ported to PHP from Perl version of rpm-php-requires. - * - * @TODO: use tokenizer to parse php files. - */ -function peardeps($files) { - // files inside php_pear_dir have this prefix - $prefix = RPM_BUILD_ROOT. PHP_PEAR_DIR . DIRECTORY_SEPARATOR; - $length = strlen($prefix); - - $req = array(); - foreach ($files as $f) { - // skip non-php files - if (substr($f, -4) != '.php') { - continue; - } - - // subdir inside php_pear_dir - if (substr($f, 0, $length) == $prefix) { - $file_dir = dirname(substr($f, $length)); - } else { - $file_dir = null; - } - - foreach (file($f) as $line) { - // skip comments -- not perfect, matches "*" at start of line (very rare altho) - if (preg_match('/^\s*(#|\/\/|\*|\/\*)/', $line)) { - continue; - } - - if (preg_match("/(\W|^)(require|include)(_once)? - \s* \(? \s* - (\"([^\"]*)\"|'([^']*)') - \s* \)? \s* ;/x", $line, $m)) { - - if ($m[5]) { - $x = $m[5]; - } else if ($m[6]) { - $x = $m[6]; - } else { - continue 2; - } - - if (substr($x, 0, 2) == './' || substr($x, -1) == '$') { # XXX must be: CONTAINS DOLLAR - continue 2; - } - - if (substr($x, -4) != '.php') { - continue 2; - } - $req[$x] = 1; - continue 2; - } - - if (is_null($file_dir)) { - continue; - } - - if (preg_match("/(\W|^)(require|include)(_once)? - \s* \(? \s* dirname \s* \( \s* __FILE__ \s* \) \s* \. \s* - (\"([^\"]*)\"|'([^']*)') - \s* \)? \s* ;/x", $line, $m)) { - - if ($m[5]) { - $x = $m[5]; - } else if ($m[6]) { - $x = $m[6]; - } else { - continue 2; - } - - if (substr($x, -1) == '$') { # XXX must be: CONTAINS DOLLAR - continue 2; - } - if (substr($x, -4) != '.php') { - continue 2; - } - - $x = "$file_dir/$x"; - // remove double slashes - // TODO: resolve simpletest/test/../socket.php -> simpletest/socket.php - $x = str_replace("//", "/", $x); - $req[$x] = 1; - continue; - } - } - } - - foreach (array_keys($req) as $f) { - // skip self deps - if (array_key_exists($f, $files)) { - continue; - } - echo "pear($f)\n"; - } -} - -/** - * Produce dependencies for extensions using PEAR PHP_CompatInfo package. - */ -function extdeps($files) { - require_once 'PHP/CompatInfo.php'; - - $info = new PHP_CompatInfo('null'); - $res = $info->parseData($files); - - // minimum php version we accept - // "%define php_min_version 5.1.2" in spec to minimum version to be 5.1.2 - $version = max(PHP_MIN_VERSION, $res['version']); - - if (version_compare($version, '5.0.0', 'ge')) { - # force php- only deps when php5 - # XXX what about php-pecl- virtual provides? - $fmt = 'php-%s'; - $epoch = 4; - } else { - $fmt = 'php(%s)'; - $epoch = 3; - } - echo "php-common >= ", $epoch, ":", $version, "\n"; - - // process extensions - foreach ($res['extensions'] as $ext) { - // bz2 ext is in php-bzip2 package - if ($ext == 'bz2') { - $ext = 'bzip2'; - } - // libxml ext is in php-xml package - if ($ext == 'libxml') { - $ext = 'xml'; - } - - // these need to be lowercased - if (in_array($ext, array('SPL', 'PDO', 'SQLite', 'Reflection', 'SimpleXML'))) { - $ext = strtolower($ext); - } - - printf("$fmt\n", $ext); - } -} - -define('RPM_BUILD_ROOT', getenv('RPM_BUILD_ROOT')); -define('PHP_PEAR_DIR', '/usr/share/pear'); -define('PHP_MIN_VERSION', getenv('PHP_MIN_VERSION')); - -if ($argc > 1) { - $files = array_splice($argv, 1); -} else { - $files = explode(PHP_EOL, trim(file_get_contents('php://stdin'))); -} - -peardeps($files); -extdeps($files);