From 40ebc2a27bb90129899fd7758376dc897121ee5c Mon Sep 17 00:00:00 2001 From: Stig Bakken Date: Fri, 13 Dec 2002 02:14:26 +0000 Subject: [PATCH] MFH --- pear/PEAR/Command/Remote.php | 8 +- pear/PEAR/Config.php | 228 +++++++++++++++++++++++++---------- pear/System.php | 2 +- pear/package-PEAR.xml | 17 ++- pear/package.dtd | 2 +- pear/scripts/pear.bat | 9 +- pear/scripts/pear.in | 9 +- pear/scripts/phpize.in | 6 +- 8 files changed, 198 insertions(+), 83 deletions(-) diff --git a/pear/PEAR/Command/Remote.php b/pear/PEAR/Command/Remote.php index deb0139596..ac4c17f216 100644 --- a/pear/PEAR/Command/Remote.php +++ b/pear/PEAR/Command/Remote.php @@ -200,10 +200,10 @@ version of DB is 1.2, the downloaded file will be DB-1.2.tgz.', $data['data'][$info['category']][] = array( $name, - $info['stable'], - $installed['version'], - $desc, - $info['deps'], + @$info['stable'], + @$installed['version'], + @$desc, + @$info['deps'], ); } $this->ui->outputData($data, $command); diff --git a/pear/PEAR/Config.php b/pear/PEAR/Config.php index 194674f658..0432fccfa9 100644 --- a/pear/PEAR/Config.php +++ b/pear/PEAR/Config.php @@ -27,60 +27,154 @@ require_once 'System.php'; */ $GLOBALS['_PEAR_Config_instance'] = null; -// in case a --without-pear PHP installation is used -if (!defined('PEAR_INSTALL_DIR')) { - define('PEAR_INSTALL_DIR', PHP_LIBDIR); -} -if (!defined('PEAR_EXTENSION_DIR')) { - define('PEAR_EXTENSION_DIR', PHP_EXTENSION_DIR); +// Below we define constants with default values for all configuration +// parameters except username/password. All of them can have their +// defaults set through environment variables. The reason we use the +// PHP_ prefix is for some security, PHP protects environment +// variables starting with PHP_*. + +if (isset($_ENV['PHP_PEAR_SYSCONF_DIR'])) { + define('PEAR_CONFIG_SYSCONFDIR', $_ENV['PHP_PEAR_SYSCONF_DIR']); +} elseif (isset($_ENV['SystemRoot'])) { + define('PEAR_CONFIG_SYSCONFDIR', $_ENV['SystemRoot']); +} elseif (@is_dir(PHP_SYSCONFDIR)) { + define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); } -define('PEAR_CONFIG_DEFAULT_BINDIR', - PHP_BINDIR); -define('PEAR_CONFIG_DEFAULT_DOCDIR', - PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'docs'); -if (@is_dir(PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'lib')) { - define('PEAR_CONFIG_DEFAULT_PHPDIR', - PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'lib'); +// Default for master_server +if (isset($_ENV['PHP_PEAR_MASTER_SERVER'])) { + define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', $_ENV['PHP_PEAR_MASTER_SERVER']); } else { - define('PEAR_CONFIG_DEFAULT_PHPDIR', - PEAR_INSTALL_DIR); + define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', 'pear.php.net'); } -define('PEAR_CONFIG_DEFAULT_DATADIR', - PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'data'); -define('PEAR_CONFIG_DEFAULT_TESTDIR', - PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'tests'); -define('PEAR_CONFIG_DEFAULT_CACHEDIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . DIRECTORY_SEPARATOR . 'cache'); +// Default for http_proxy +if (isset($_ENV['PHP_PEAR_HTTP_PROXY'])) { + define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', $_ENV['PHP_PEAR_HTTP_PROXY']); +} elseif (isset($_ENV['http_proxy'])) { + define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', $_ENV['http_proxy']); +} else { + define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', ''); +} -if (@is_dir(PHP_SYSCONFDIR)) { - define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); +// Default for php_dir +if (isset($_ENV['PHP_PEAR_INSTALL_DIR'])) { + define('PEAR_CONFIG_DEFAULT_PHP_DIR', $_ENV['PHP_PEAR_INSTALL_DIR']); } else { - // real bootstrapping nightmare - if (OS_WINDOWS) { - if (@is_dir(PHP_CONFIG_FILE_PATH)) { - define('PEAR_CONFIG_SYSCONFDIR', PHP_CONFIG_FILE_PATH); - } elseif (@is_dir('c:\winnt') && @file_exists('c:\winnt\php.ini')) { - define('PEAR_CONFIG_SYSCONFDIR', 'c:\winnt'); - } elseif (@is_dir('c:\windows') && @file_exists('c:\windows\php.ini')) { - define('PEAR_CONFIG_SYSCONFDIR', 'c:\windows'); - } - } - if (!defined('PEAR_CONFIG_SYSCONFDIR')) { - define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); + if (@is_dir(PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'lib')) { + define('PEAR_CONFIG_DEFAULT_PHP_DIR', + PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'lib'); + } else { + define('PEAR_CONFIG_DEFAULT_PHP_DIR', PEAR_INSTALL_DIR); } } -define('PEAR_DEFAULT_UMASK', umask()); -if (OS_WINDOWS) { - define('PEAR_DEFAULT_GPG_BIN', System::which('gpg', 'c:\gnupg\gpg.exe')); +// Default for ext_dir +if (isset($_ENV['PHP_PEAR_EXTENSION_DIR'])) { + define('PEAR_CONFIG_DEFAULT_EXT_DIR', $_ENV['PHP_PEAR_EXTENSION_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_EXT_DIR', ini_get('extension_dir')); +} + +// Default for doc_dir +if (isset($_ENV['PHP_PEAR_DOC_DIR'])) { + define('PEAR_CONFIG_DEFAULT_DOC_DIR', $_ENV['PHP_PEAR_DOC_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_DOC_DIR', + PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'docs'); +} + +// Default for bin_dir +if (isset($_ENV['PHP_PEAR_BIN_DIR'])) { + define('PEAR_CONFIG_DEFAULT_BIN_DIR', $_ENV['PHP_PEAR_BIN_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_BIN_DIR', PHP_BINDIR); +} + +// Default for data_dir +if (isset($_ENV['PHP_PEAR_DATA_DIR'])) { + define('PEAR_CONFIG_DEFAULT_DATA_DIR', $_ENV['PHP_PEAR_DATA_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_DATA_DIR', + PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'data'); +} + +// Default for test_dir +if (isset($_ENV['PHP_PEAR_TEST_DIR'])) { + define('PEAR_CONFIG_DEFAULT_TEST_DIR', $_ENV['PHP_PEAR_TEST_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_TEST_DIR', + PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'tests'); +} + +// Default for cache_dir +if (isset($_ENV['PHP_PEAR_CACHE_DIR'])) { + define('PEAR_CONFIG_DEFAULT_CACHE_DIR', $_ENV['PHP_PEAR_CACHE_DIR']); +} else { + define('PEAR_CONFIG_DEFAULT_CACHE_DIR', + System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . + DIRECTORY_SEPARATOR . 'cache'); +} + +// Default for php_bin +if (isset($_ENV['PHP_PEAR_PHP_BIN'])) { + define('PEAR_CONFIG_DEFAULT_PHP_BIN', $_ENV['PHP_PEAR_PHP_BIN']); +} else { + define('PEAR_CONFIG_DEFAULT_PHP_BIN', PEAR_CONFIG_DEFAULT_BIN_DIR. + DIRECTORY_SEPARATOR.'php'.(OS_WINDOWS ? '.exe' : '')); +} + +// Default for verbose +if (isset($_ENV['PHP_PEAR_VERBOSE'])) { + define('PEAR_CONFIG_DEFAULT_VERBOSE', $_ENV['PHP_PEAR_VERBOSE']); +} else { + define('PEAR_CONFIG_DEFAULT_VERBOSE', 1); +} + +// Default for preferred_state +if (isset($_ENV['PHP_PEAR_PREFERRED_STATE'])) { + define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', $_ENV['PHP_PEAR_PREFERRED_STATE']); +} else { + define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', 'stable'); +} + +// Default for umask +if (isset($_ENV['PHP_PEAR_UMASK'])) { + define('PEAR_CONFIG_DEFAULT_UMASK', $_ENV['PHP_PEAR_UMASK']); } else { - define('PEAR_DEFAULT_GPG_BIN', System::which('gpg', '/usr/local/bin/gpg')); + define('PEAR_CONFIG_DEFAULT_UMASK', umask()); } -define('PEAR_DEFAULT_SIG_KEYDIR', - PEAR_CONFIG_SYSCONFDIR . DIRECTORY_SEPARATOR . 'pearkeys'); +// Default for cache_ttl +if (isset($_ENV['PHP_PEAR_CACHE_TTL'])) { + define('PEAR_CONFIG_DEFAULT_CACHE_TTL', $_ENV['PHP_PEAR_CACHE_TTL']); +} else { + define('PEAR_CONFIG_DEFAULT_CACHE_TTL', 0); +} + +// Default for sig_type +if (isset($_ENV['PHP_PEAR_SIG_TYPE'])) { + define('PEAR_CONFIG_DEFAULT_SIG_TYPE', $_ENV['PHP_PEAR_SIG_TYPE']); +} else { + define('PEAR_CONFIG_DEFAULT_SIG_TYPE', 'gpg'); +} + +// Default for sig_bin +if (isset($_ENV['PHP_PEAR_SIG_BIN'])) { + define('PEAR_CONFIG_DEFAULT_SIG_BIN', $_ENV['PHP_PEAR_SIG_BIN']); +} else { + define('PEAR_CONFIG_DEFAULT_SIG_BIN', + System::which( + 'gpg', OS_WINDOWS ? 'c:\gnupg\gpg.exe' : '/usr/local/bin/gpg')); +} + +// Default for sig_keydir +if (isset($_ENV['PHP_PEAR_SIG_KEYDIR'])) { + define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', $_ENV['PHP_PEAR_SIG_KEYDIR']); +} else { + define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', + PEAR_CONFIG_SYSCONFDIR . DIRECTORY_SEPARATOR . 'pearkeys'); +} /** * This is a class for storing configuration data, keeping track of @@ -138,7 +232,7 @@ class PEAR_Config extends PEAR ), 'http_proxy' => array( 'type' => 'string', - 'default' => '', + 'default' => PEAR_CONFIG_DEFAULT_HTTP_PROXY, 'doc' => 'HTTP proxy (host:port) to use when downloading packages', 'prompt' => 'HTTP Proxy Server Address', 'group' => 'Internet Access', @@ -146,53 +240,60 @@ class PEAR_Config extends PEAR // File Locations 'php_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_PHPDIR, + 'default' => PEAR_CONFIG_DEFAULT_PHP_DIR, 'doc' => 'directory where .php files are installed', 'prompt' => 'PEAR directory', 'group' => 'File Locations', ), 'ext_dir' => array( 'type' => 'directory', - 'default' => PEAR_EXTENSION_DIR, + 'default' => PEAR_CONFIG_DEFAULT_EXT_DIR, 'doc' => 'directory where loadable extensions are installed', 'prompt' => 'PHP extension directory', 'group' => 'File Locations', ), 'doc_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DOCDIR, + 'default' => PEAR_CONFIG_DEFAULT_DOC_DIR, 'doc' => 'directory where documentation is installed', 'prompt' => 'PEAR documentation directory', 'group' => 'File Locations', ), 'bin_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_BINDIR, + 'default' => PEAR_CONFIG_DEFAULT_BIN_DIR, 'doc' => 'directory where executables are installed', 'prompt' => 'PEAR executables directory', 'group' => 'File Locations', ), 'data_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DATADIR, + 'default' => PEAR_CONFIG_DEFAULT_DATA_DIR, 'doc' => 'directory where data files are installed', 'prompt' => 'PEAR data directory', 'group' => 'File Locations (Advanced)', ), 'test_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_TESTDIR, + 'default' => PEAR_CONFIG_DEFAULT_TEST_DIR, 'doc' => 'directory where regression tests are installed', 'prompt' => 'PEAR test directory', 'group' => 'File Locations (Advanced)', ), 'cache_dir' => array( 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_CACHEDIR, + 'default' => PEAR_CONFIG_DEFAULT_CACHE_DIR, 'doc' => 'directory which is used for XMLRPC cache', 'prompt' => 'PEAR Installer cache directory', 'group' => 'File Locations (Advanced)', ), + 'php_bin' => array( + 'type' => 'file', + 'default' => PEAR_CONFIG_DEFAULT_PHP_BIN, + 'doc' => 'PHP CLI/CGI binary for executing scripts', + 'prompt' => 'PHP CLI/CGI binary', + 'group' => 'File Locations (Advanced)', + ), // Maintainers 'username' => array( 'type' => 'string', @@ -211,7 +312,7 @@ class PEAR_Config extends PEAR // Advanced 'verbose' => array( 'type' => 'integer', - 'default' => 1, + 'default' => PEAR_CONFIG_DEFAULT_VERBOSE, 'doc' => 'verbosity level 0: really quiet 1: somewhat quiet @@ -222,7 +323,7 @@ class PEAR_Config extends PEAR ), 'preferred_state' => array( 'type' => 'set', - 'default' => 'stable', + 'default' => PEAR_CONFIG_DEFAULT_PREFERRED_STATE, 'doc' => 'the installer will prefer releases with this state when installing packages without a version or state specified', 'valid_set' => array( 'stable', 'beta', 'alpha', 'devel', 'snapshot'), @@ -231,21 +332,21 @@ class PEAR_Config extends PEAR ), 'umask' => array( 'type' => 'mask', - 'default' => PEAR_DEFAULT_UMASK, + 'default' => PEAR_CONFIG_DEFAULT_UMASK, 'doc' => 'umask used when creating files (Unix-like systems only)', 'prompt' => 'Unix file mask', 'group' => 'Advanced', ), 'cache_ttl' => array( 'type' => 'integer', - 'default' => 0, + 'default' => PEAR_CONFIG_DEFAULT_CACHE_TTL, 'doc' => 'amount of secs where the local cache is used and not updated', 'prompt' => 'Cache TimeToLive', 'group' => 'Advanced', ), 'sig_type' => array( 'type' => 'set', - 'default' => 'gpg', + 'default' => PEAR_CONFIG_DEFAULT_SIG_TYPE, 'doc' => 'which package signature mechanism to use', 'valid_set' => array('gpg'), 'prompt' => 'Package Signature Type', @@ -253,26 +354,25 @@ class PEAR_Config extends PEAR ), 'sig_bin' => array( 'type' => 'string', - 'default' => PEAR_DEFAULT_GPG_BIN, + 'default' => PEAR_CONFIG_DEFAULT_SIG_BIN, 'doc' => 'which package signature mechanism to use', 'prompt' => 'Signature Handling Program', 'group' => 'Maintainers', ), + 'sig_keyid' => array( + 'type' => 'string', + 'default' => '', + 'doc' => 'which key to use for signing with', + 'prompt' => 'Signature Key Id', + 'group' => 'Maintainers', + ), 'sig_keydir' => array( 'type' => 'string', - 'default' => PEAR_DEFAULT_SIG_KEYDIR, + 'default' => PEAR_CONFIG_DEFAULT_SIG_KEYDIR, 'doc' => 'which package signature mechanism to use', 'prompt' => 'Signature Key Directory', 'group' => 'Maintainers', ), -/* - 'testset1' => array( - 'type' => 'set', - 'default' => 'foo', - 'doc' => 'test set', - 'valid_set' => array('foo', 'bar'), - ), -*/ ); // }}} diff --git a/pear/System.php b/pear/System.php index 712819d059..fb2ecac674 100644 --- a/pear/System.php +++ b/pear/System.php @@ -61,7 +61,7 @@ class System function _parseArgs($argv, $short_options, $long_options = null) { if (!is_array($argv) && $argv !== null) { - $argv = preg_split('/\s+/', $argv); + $argv = preg_split('/\s+/', ': '.$argv); } return Console_Getopt::getopt($argv, $short_options); } diff --git a/pear/package-PEAR.xml b/pear/package-PEAR.xml index 5532498a14..52f228868e 100644 --- a/pear/package-PEAR.xml +++ b/pear/package-PEAR.xml @@ -31,9 +31,9 @@ - 1.0b3-dev + 1.0b3 stable - 2002-12-01 + 2002-12-13 * fixed "info" shortcut (conflicted with "install") @@ -72,13 +72,22 @@ - + - + + + + + +If you are upgrading to 1.0b3 or newer from 1.0b2 or older, your "pear" +command will probably stop working. To fix, either use go-pear, +or edit the first line of your installed "pear" and replace "@php_bin@" +with the path to your PHP CLI or CGI binary. + Archive_Tar diff --git a/pear/package.dtd b/pear/package.dtd index 7d1f469d8f..340c22a08e 100644 --- a/pear/package.dtd +++ b/pear/package.dtd @@ -1,5 +1,5 @@