summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2014-08-24 17:39:38 +0200
committerRemi Collet <fedora@famillecollet.com>2014-08-24 17:39:38 +0200
commitf564b500ca718e735ed72530a52c4fe57d2c3ea6 (patch)
treef0acc2aab644f1eb105bb140d52887f0fdbc24bd
parent9bbb50b3a32511baadb6bfdcb464a4eca526a413 (diff)
php-pear: for SCL
-rw-r--r--php-pear/Makefile4
-rw-r--r--php-pear/install-pear.php333
-rw-r--r--php-pear/macros.pear36
-rw-r--r--php-pear/pear.1271
-rw-r--r--php-pear/pear.conf.550
-rw-r--r--php-pear/pear.sh12
-rw-r--r--php-pear/peardev.12
-rw-r--r--php-pear/peardev.sh13
-rw-r--r--php-pear/pecl.12
-rw-r--r--php-pear/pecl.sh9
-rw-r--r--php-pear/php-pear-1.9.4-restcache.patch21
-rw-r--r--php-pear/php-pear-metadata.patch244
-rw-r--r--php-pear/php-pear.spec565
-rw-r--r--php-pear/strip.php35
14 files changed, 1597 insertions, 0 deletions
diff --git a/php-pear/Makefile b/php-pear/Makefile
new file mode 100644
index 0000000..13af741
--- /dev/null
+++ b/php-pear/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../../../common/Makefile
+
diff --git a/php-pear/install-pear.php b/php-pear/install-pear.php
new file mode 100644
index 0000000..facb6ee
--- /dev/null
+++ b/php-pear/install-pear.php
@@ -0,0 +1,333 @@
+<?php
+while (@ob_end_flush());
+/* $Id$ */
+
+error_reporting(1803);
+
+if (ini_get('date.timezone') === '' && function_exists('date_default_timezone_set')) {
+ date_default_timezone_set('UTC');
+}
+
+$pear_dir = dirname(__FILE__);
+ini_set('include_path', '');
+if (function_exists('mb_internal_encoding')) {
+ mb_internal_encoding('ASCII');
+}
+set_time_limit(0);
+include_once 'PEAR.php';
+include_once 'PEAR/Installer.php';
+include_once 'PEAR/Registry.php';
+include_once 'PEAR/PackageFile.php';
+include_once 'PEAR/Downloader/Package.php';
+include_once 'PEAR/Frontend.php';
+$a = true;
+if (!PEAR::loadExtension('xml')) {
+ $a = false;
+ echo "[PEAR] xml extension is required\n";
+}
+if (!PEAR::loadExtension('pcre')) {
+ $a = false;
+ echo "[PEAR] pcre extension is required\n";
+}
+if (!$a) {
+ return -1;
+}
+
+$force = false;
+$install_files = array();
+array_shift($argv);
+$debug = false;
+for ($i = 0; $i < sizeof($argv); $i++) {
+ $arg = $argv[$i];
+ $bn = basename($arg);
+ if (preg_match('/package-(.*)\.xml$/', $bn, $matches) ||
+ preg_match('/([A-Za-z0-9_:]+)-.*\.(tar|tgz)$/', $bn, $matches)) {
+ $install_files[$matches[1]] = $arg;
+ } elseif ($arg == '-a' || $arg == '--cache') {
+ $cache_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '--force') {
+ $force = true;
+ } elseif ($arg == '-dp') {
+ $prefix = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-ds') {
+ $suffix = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-d' || $arg == '--dir') {
+ $with_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-b' || $arg == '--bin') {
+ $bin_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-c' || $arg == '--config') {
+ $cfg_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-w' || $arg == '--www') {
+ $www_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-p' || $arg == '--php') {
+ $php_bin = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-o' || $arg == '--download') {
+ $download_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-m' || $arg == '--metadata') {
+ $metadata_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-t' || $arg == '--temp') {
+ $temp_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-A' || $arg == '--data') {
+ $data_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-D' || $arg == '--doc') {
+ $doc_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '-T' || $arg == '--test') {
+ $test_dir = $argv[$i+1];
+ $i++;
+ } elseif ($arg == '--debug') {
+ $debug = 1;
+ } elseif ($arg == '--extremedebug') {
+ $debug = 2;
+ }
+}
+
+$config = PEAR_Config::singleton();
+
+if (PEAR::isError($config)) {
+ $locs = PEAR_Config::getDefaultConfigFiles();
+ die("ERROR: One of $locs[user] or $locs[system] is corrupt, please remove them and try again");
+}
+
+// make sure we use only default values
+$config_layers = $config->getLayers();
+foreach ($config_layers as $layer) {
+ if ($layer == 'default') continue;
+ $config->removeLayer($layer);
+}
+$keys = $config->getKeys();
+if ($debug) {
+ $config->set('verbose', 5, 'default');
+} else {
+ $config->set('verbose', 0, 'default');
+}
+// PEAR executables
+if (!empty($bin_dir)) {
+ $config->set('bin_dir', $bin_dir, 'default');
+}
+
+// Cache files
+if (!empty($cache_dir)) {
+ $config->set('cache_dir', $cache_dir, 'default');
+}
+
+// Config files
+if (!empty($cfg_dir)) {
+ $config->set('cfg_dir', $cfg_dir, 'default');
+}
+
+// Web files
+if (!empty($www_dir)) {
+ $config->set('www_dir', $www_dir, 'default');
+}
+
+// Downloaded files
+if (!empty($download_dir)) {
+ $config->set('download_dir', $download_dir, 'default');
+}
+
+// Temporary files
+if (!empty($temp_dir)) {
+ $config->set('temp_dir', $temp_dir, 'default');
+}
+
+// Documentation files
+if (!empty($doc_dir)) {
+ $config->set('doc_dir', $doc_dir, 'default');
+}
+
+// Data files
+if (!empty($data_dir)) {
+ $config->set('data_dir', $data_dir, 'default');
+}
+
+// Unit tests
+if (!empty($test_dir)) {
+ $config->set('test_dir', $test_dir, 'default');
+}
+
+// User supplied a dir prefix
+if (!empty($with_dir)) {
+ $ds = DIRECTORY_SEPARATOR;
+ $config->set('php_dir', $with_dir, 'default');
+ // Metadata
+ if (!empty($metadata_dir)) {
+ $config->set('metadata_dir', $metadata_dir, 'default');
+ }
+ if (empty($doc_dir)) {
+ $config->set('doc_dir', $with_dir . $ds . 'doc', 'default');
+ }
+ if (empty($data_dir)) {
+ $config->set('data_dir', $with_dir . $ds . 'data', 'default');
+ }
+ if (empty($test_dir)) {
+ $config->set('test_dir', $with_dir . $ds . 'test', 'default');
+ }
+ if (empty($www_dir)) {
+ $config->set('www_dir', $with_dir . $ds . 'htdocs', 'default');
+ }
+ if (empty($cfg_dir)) {
+ $config->set('cfg_dir', $with_dir . $ds . 'cfg', 'default');
+ }
+ if (!is_writable($config->get('cache_dir'))) {
+ include_once 'System.php';
+ $cdir = System::mktemp(array('-d', 'pear'));
+ if (PEAR::isError($cdir)) {
+ $ui->outputData("[PEAR] cannot make new temporary directory: " . $cdir);
+ die(1);
+ }
+ $oldcachedir = $config->get('cache_dir');
+ $config->set('cache_dir', $cdir);
+ }
+}
+
+// PHP executable
+if (!empty($php_bin)) {
+ $config->set('php_bin', $php_bin);
+}
+
+// PHP prefix
+if (isset($prefix)) {
+ if ($prefix != 'a') {
+ if ($prefix[0] == 'a') {
+ $prefix = substr($prefix, 1);
+ }
+ $config->set('php_prefix', $prefix, 'system');
+ }
+}
+
+// PHP suffix
+if (isset($suffix)) {
+ if ($suffix != 'a') {
+ if ($suffix[0] == 'a') {
+ $suffix = substr($suffix, 1);
+ }
+ $config->set('php_suffix', $suffix, 'system');
+ }
+}
+
+/* Print PEAR Conf (useful for debuging do NOT REMOVE) */
+if ($debug) {
+ sort($keys);
+ foreach ($keys as $key) {
+ echo $key . ' ' .
+ $config->getPrompt($key) . ": " . $config->get($key, null, 'default') . "\n";
+ }
+ if ($debug == 2) { // extreme debugging
+ exit;
+ }
+}
+// end print
+
+$php_dir = $config->get('php_dir');
+$options = array();
+$options['upgrade'] = true;
+$install_root = getenv('INSTALL_ROOT');
+if (!empty($install_root)) {
+ $options['packagingroot'] = $install_root;
+ $reg = &new PEAR_Registry($options['packagingroot'], false, false, $metadata_dir);
+} else {
+ $reg = $config->getRegistry('default');
+}
+
+$ui = PEAR_Frontend::singleton('PEAR_Frontend_CLI');
+if (PEAR::isError($ui)) {
+ die($ui->getMessage());
+}
+$installer = new PEAR_Installer($ui);
+$pkg = new PEAR_PackageFile($config, $debug);
+
+foreach ($install_files as $package => $instfile) {
+ $info = $pkg->fromAnyFile($instfile, PEAR_VALIDATE_INSTALLING);
+ if (PEAR::isError($info)) {
+ if (is_array($info->getUserInfo())) {
+ foreach ($info->getUserInfo() as $err) {
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $err['message']));
+ }
+ }
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $info->getMessage()));
+ continue;
+ }
+ $new_ver = $info->getVersion();
+ $downloaderpackage = new PEAR_Downloader_Package($installer);
+ $err = $downloaderpackage->initialize($instfile);
+ if (PEAR::isError($err)) {
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $err->getMessage()));
+ continue;
+ }
+ if ($reg->packageExists($package)) {
+ $old_ver = $reg->packageInfo($package, 'version');
+ if (version_compare($new_ver, $old_ver, 'gt')) {
+ $installer->setOptions($options);
+ $dp = array($downloaderpackage);
+ $installer->setDownloadedPackages($dp);
+ $err = $installer->install($downloaderpackage, $options);
+ if (PEAR::isError($err)) {
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $err->getMessage()));
+ continue;
+ }
+ $ui->outputData(sprintf("[PEAR] %-15s- upgraded: %s", $package, $new_ver));
+ } else {
+ if ($force) {
+ $options['force'] = true;
+ $installer->setOptions($options);
+ $dp = array($downloaderpackage);
+ $installer->setDownloadedPackages($dp);
+ $err = $installer->install($downloaderpackage, $options);
+ if (PEAR::isError($err)) {
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $err->getMessage()));
+ continue;
+ }
+ $ui->outputData(sprintf("[PEAR] %-15s- installed: %s", $package, $new_ver));
+ } else {
+ $ui->outputData(sprintf("[PEAR] %-15s- already installed: %s", $package, $old_ver));
+ }
+ }
+ } else {
+ $options['nodeps'] = true;
+ $installer->setOptions($options);
+ $dp = array($downloaderpackage);
+ $installer->setDownloadedPackages($dp);
+ $err = $installer->install($downloaderpackage, $options);
+ if (PEAR::isError($err)) {
+ $ui->outputData(sprintf("[PEAR] %s: %s", $package, $err->getMessage()));
+ continue;
+ }
+ $ui->outputData(sprintf("[PEAR] %-15s- installed: %s", $package, $new_ver));
+ }
+ if ($package == 'PEAR') {
+ if (is_file($ufile = $config->getConfFile('user'))) {
+ $ui->outputData('Warning! a PEAR user config file already exists from ' .
+ 'a previous PEAR installation at ' .
+ "'$ufile'. You may probably want to remove it.");
+ }
+ $config->set('verbose', 1, 'default');
+ if (isset($oldcachedir)) {
+ $config->set('cache_dir', $oldcachedir);
+ }
+ $data = array();
+ foreach ($config->getKeys() as $key) {
+ $data[$key] = $config->get($key);
+ }
+ $cnf_file = $config->getConfFile('system');
+ if (!empty($install_root)) {
+ $cnf_file = $install_root . DIRECTORY_SEPARATOR . $cnf_file;
+ }
+ $config->writeConfigFile($cnf_file, 'system', $data);
+ $ui->outputData('Wrote PEAR system config file at: ' . $cnf_file);
+ $ui->outputData('You may want to add: ' . $config->get('php_dir') . ' to your php.ini include_path');
+ }
+}
+?>
diff --git a/php-pear/macros.pear b/php-pear/macros.pear
new file mode 100644
index 0000000..71aacc6
--- /dev/null
+++ b/php-pear/macros.pear
@@ -0,0 +1,36 @@
+#
+# Define full path to pear/pecl commands to be used in scriptlets:
+#
+%@SCL@__pear @BINDIR@/pear
+%@SCL@__pecl @BINDIR@/pecl
+
+#
+# Define PEAR directories used in php-pear-* spec files
+#
+%pear_phpdir %(%{__pear} config-get php_dir 2> /dev/null || echo undefined)
+%pear_docdir %(%{__pear} config-get doc_dir 2> /dev/null || echo undefined)
+%pear_testdir %(%{__pear} config-get test_dir 2> /dev/null || echo undefined)
+%pear_datadir %(%{__pear} config-get data_dir 2> /dev/null || echo undefined)
+%pear_cfgdir %(%{__pear} config-get cfg_dir 2> /dev/null || echo undefined)
+%pear_wwwdir %(%{__pear} config-get www_dir 2> /dev/null || echo undefined)
+%@SCL@pear_metadir %(%{__pear} config-get metadata_dir 2> /dev/null || echo undefined)
+
+#
+# Define PECL directories used in php-pecl-* spec files:
+#
+%pecl_phpdir %(%{__pecl} config-get php_dir 2> /dev/null || echo undefined)
+%pecl_docdir %(%{__pecl} config-get doc_dir 2> /dev/null || echo undefined)
+%pecl_testdir %(%{__pecl} config-get test_dir 2> /dev/null || echo undefined)
+%pecl_datadir %(%{__pecl} config-get data_dir 2> /dev/null || echo undefined)
+
+#
+# Define XML directories to store package registration information:
+#
+%@SCL@pear_xmldir @VARDIR@/lib/pear/pkgxml
+%@SCL@pecl_xmldir @VARDIR@/lib/pear/pkgxml
+
+#
+# Define macros to be used in scriplets for php-pecl-* spec files:
+#
+%pecl_install %{__pecl} install --nodeps --soft --force --register-only --nobuild
+%pecl_uninstall %{__pecl} uninstall --nodeps --ignore-errors --register-only
diff --git a/php-pear/pear.1 b/php-pear/pear.1
new file mode 100644
index 0000000..ed91290
--- /dev/null
+++ b/php-pear/pear.1
@@ -0,0 +1,271 @@
+.TH PEAR 1 "2013" "The PEAR Group" "User commands"
+.SH NAME
+pear, pecl, peardev \- PEAR installer
+
+.SH SYNOPSIS
+.B pear
+[ options ] command [command-options] <parameters>
+.LP
+.B pecl
+[ options ] command [command-options] <parameters>
+.LP
+.B peardev
+[ options ] command [command-options] <parameters>
+.LP
+
+.SH DESCRIPTION
+\fBPEAR\fP is the PHP Extension and Application Repository, found at
+.B http://pear.php.net.
+.P
+.P
+The \fBpear\fP command is used to install PEAR extensions.
+.P
+The \fBpecl\fP command is used to install PECL extensions.
+.P
+The \fBpeardev\fP command is a wrapper for the \fBpear\fP command which
+removes the normal configured memory limit.
+
+.SH OPTIONS
+.TP 15
+.B \-v
+increase verbosity level (default 1)
+.TP
+.B \-q
+be quiet, decrease verbosity level
+.TP
+.B \-c \fIfile\fP
+find user configuration in \fBfile\fP
+.TP
+.B \-C \fIfile\fP
+find system configuration in \fBfile\fP
+.TP
+.B \-d \fIfoo=bar\fP
+set user config variable \fBfoo\fP to \fBbar\fP
+.TP
+.B \-D \fIfoo=bar\fP
+set system config variable \fBfoo\fP to \fBbar\fP
+.TP
+.B \-G
+start in graphical (Gtk) mode
+.TP
+.B \-S
+store system configuration
+.TP
+.B \-s
+store user configuration
+.TP
+.B \-y \fIfoo\fP
+unset
+.B foo
+in the user configuration
+.TP
+.B \-V
+version information
+.TP
+.PD 0
+.B \-h
+.TP
+.PD 1
+.B \-?
+display help/usage
+
+.SH COMMANDS
+.TP 15
+.B build
+Build an Extension From C Source
+.TP
+.B bundle
+Unpacks a Pecl Package
+.TP
+.B channel-add
+Add a Channel
+.TP
+.B channel-alias
+Specify an alias to a channel name
+.TP
+.B channel-delete
+Remove a Channel From the List
+.TP
+.B channel-discover
+Initialize a Channel from its server
+.TP
+.B channel-info
+Retrieve Information on a Channel
+.TP
+.TP
+.B channel-login
+Connects and authenticates to remote channel server
+.TP
+.B channel-logout
+Logs out from the remote channel server
+.TP
+.B channel-update
+Update an Existing Channel
+.TP
+.B clear-cache
+Clear Web Services Cache
+.TP
+.B config-create
+Create a Default configuration file
+.TP
+.B config-get
+Show One Setting
+.TP
+.B config-help
+Show Information About Setting
+.TP
+.B config-set
+Change Setting
+.TP
+.B config-show
+Show All Settings
+.TP
+.B convert
+Convert a package.xml 1.0 to package.xml 2.0 format
+.TP
+.B cvsdiff
+Run a "cvs diff" for all files in a package
+.TP
+.B cvstag
+Set CVS Release Tag
+.TP
+.B download
+Download Package
+.TP
+.B download-all
+Downloads each available package from the default channel
+.TP
+.B info
+Display information about a package
+.TP
+.B install
+Install Package
+.TP
+.B list
+List Installed Packages In The Default Channel
+.TP
+.B list-all
+List All Packages
+.TP
+.B list-channels
+List Available Channels
+.TP
+.B list-files
+List Files In Installed Package
+.TP
+.B list-upgrades
+List Available Upgrades
+.TP
+.B login
+Connects and authenticates to remote server [Deprecated in favor of channel-login]
+.TP
+.B logout
+Logs out from the remote server [Deprecated in favor of channel-logout]
+.TP
+.B make-rpm-spec
+Builds an RPM spec file from a PEAR package
+.TP
+.B makerpm
+Builds an RPM spec file from a PEAR package
+.TP
+.B package
+Build Package
+.TP
+.B package-dependencies
+Show package dependencies
+.TP
+.B package-validate
+Validate Package Consistency
+.TP
+.B pickle
+Build PECL Package
+.TP
+.B remote-info
+Information About Remote Packages
+.TP
+.B remote-list
+List Remote Packages
+.TP
+.B run-scripts
+Run Post-Install Scripts bundled with a package
+.TP
+.B run-tests
+Run Regression Tests
+.TP
+.B search
+Search remote package database
+.TP
+.B shell-test
+Shell Script Test
+.TP
+.B sign
+Sign a package distribution file
+.TP
+.B svntag
+Set SVN Release Tag
+.TP
+.B uninstall
+Un-install Package
+.TP
+.B update-channels
+Update the Channel List
+.TP
+.B upgrade
+Upgrade Package
+.TP
+.B upgrade-all
+Upgrade All Packages [Deprecated in favor of calling upgrade with no parameters]
+
+.SH FILES
+.TP 15
+.B /etc/pear.conf
+The system configuration file.
+.TP
+.B $HOME/.pearrc
+The user configuration.
+
+.SH SEE ALSO
+.TP
+To list all options, use
+.PS
+pear help options
+.TP
+To list all command shortcuts, use
+.PS
+pear help shortcuts
+.TP
+to get the help for the specified command, use
+.PS
+pear help \fIcommand\fP
+.TP
+Documentation for PEAR can be found at
+.PD 0
+.P
+.B http://pear.php.net/manual/
+
+.SH COPYRIGHT
+Copyright \(co 1997\-2009
+Stig Bakken,
+Gregory Beaver,
+Helgi Þormar Þorbjörnsson,
+Tomas V.V.Cox,
+Martin Jansen.
+.P
+All rights reserved.
+.P
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+.P
+* Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+.P
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+.SH BUGS
+You can view the list of known bugs or report any new bug you found at:
+.PD 0
+.P
+.B http://pear.php.net/bugs/
+
diff --git a/php-pear/pear.conf.5 b/php-pear/pear.conf.5
new file mode 100644
index 0000000..00216e7
--- /dev/null
+++ b/php-pear/pear.conf.5
@@ -0,0 +1,50 @@
+.TH PEAR.CONF 5 "2013" "File Formats"
+.SH NAME
+.B pear.conf
+\- configuration file for \fBPEAR\fR applications.
+
+.SH DESCRIPTION
+The \fBpear.conf\fP is used by \fBPEAR\fR applications
+to store their configuration. This file should not be edited.
+.P
+The \fBpear\fR command provides the \fBconfig-show\fR, \fBconfig-get\fR
+and \fBconfig-set\fR sub-commands needed to change the configuration.
+
+.SH FILES
+.TP 15
+.B /etc/pear.conf
+The system configuration file.
+.TP
+.B $HOME/.pearrc
+The user configuration file.
+
+.SH SEE ALSO
+.B pear(1)
+
+.SH COPYRIGHT
+.PD 0
+Copyright \(co 1997\-2009
+Stig Bakken,
+Gregory Beaver,
+Helgi Þormar Þorbjörnsson,
+Tomas V.V.Cox,
+Martin Jansen.
+.P
+All rights reserved.
+.P
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+.P
+* Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+.P
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+.SH BUGS
+You can view the list of known bugs or report any new bug you found at:
+.PD 0
+.P
+.B http://pear.php.net/bugs/
+
diff --git a/php-pear/pear.sh b/php-pear/pear.sh
new file mode 100644
index 0000000..218014a
--- /dev/null
+++ b/php-pear/pear.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+exec /usr/bin/php -C \
+ -d include_path=/usr/share/pear \
+ -d date.timezone=UTC \
+ -d output_buffering=1 \
+ -d variables_order=EGPCS \
+ -d safe_mode=0 \
+ -d register_argc_argv="On" \
+ -d open_basedir="" \
+ -d auto_prepend_file="" \
+ -d auto_append_file="" \
+ /usr/share/pear/pearcmd.php "$@"
diff --git a/php-pear/peardev.1 b/php-pear/peardev.1
new file mode 100644
index 0000000..62180fe
--- /dev/null
+++ b/php-pear/peardev.1
@@ -0,0 +1,2 @@
+.so man1/pear.1
+
diff --git a/php-pear/peardev.sh b/php-pear/peardev.sh
new file mode 100644
index 0000000..dfc2778
--- /dev/null
+++ b/php-pear/peardev.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+exec /usr/bin/php -C \
+ -d memory_limit="-1" \
+ -d include_path=/usr/share/pear \
+ -d date.timezone=UTC \
+ -d output_buffering=1 \
+ -d variables_order=EGPCS \
+ -d safe_mode=0 \
+ -d register_argc_argv="On" \
+ -d open_basedir="" \
+ -d auto_prepend_file="" \
+ -d auto_append_file="" \
+ /usr/share/pear/pearcmd.php "$@"
diff --git a/php-pear/pecl.1 b/php-pear/pecl.1
new file mode 100644
index 0000000..62180fe
--- /dev/null
+++ b/php-pear/pecl.1
@@ -0,0 +1,2 @@
+.so man1/pear.1
+
diff --git a/php-pear/pecl.sh b/php-pear/pecl.sh
new file mode 100644
index 0000000..f150dd0
--- /dev/null
+++ b/php-pear/pecl.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+exec /usr/bin/php -C \
+ -d include_path=/usr/share/pear \
+ -d date.timezone=UTC \
+ -d output_buffering=1 \
+ -d variables_order=EGPCS \
+ -d safe_mode=0 \
+ -d register_argc_argv="On" \
+ /usr/share/pear/peclcmd.php "$@"
diff --git a/php-pear/php-pear-1.9.4-restcache.patch b/php-pear/php-pear-1.9.4-restcache.patch
new file mode 100644
index 0000000..361309b
--- /dev/null
+++ b/php-pear/php-pear-1.9.4-restcache.patch
@@ -0,0 +1,21 @@
+
+Workaround for:
+
+ https://bugzilla.redhat.com/show_bug.cgi?id=747361
+
+--- REST.php.restcache
++++ REST.php
+@@ -234,6 +234,13 @@
+ }
+ }
+
++ if (!is_writeable($cache_dir)) {
++ // If writing to the cache dir is not going to work, silently do nothing.
++ // An ugly hack, but retains compat with PEAR 1.9.1 where many commands
++ // work fine as non-root user (w/out write access to default cache dir).
++ return true;
++ }
++
+ if ($cacheid === null && $nochange) {
+ $cacheid = unserialize(implode('', file($cacheidfile)));
+ }
diff --git a/php-pear/php-pear-metadata.patch b/php-pear/php-pear-metadata.patch
new file mode 100644
index 0000000..137edcc
--- /dev/null
+++ b/php-pear/php-pear-metadata.patch
@@ -0,0 +1,244 @@
+diff -up PEAR/Command/Install.php.metadata PEAR/Command/Install.php
+--- PEAR/Command/Install.php.metadata 2011-07-07 00:11:24.000000000 +0200
++++ PEAR/Command/Install.php 2012-09-26 16:02:29.829393773 +0200
+@@ -556,7 +556,13 @@ Run post-installation scripts in package
+ $packrootphp_dir = $this->installer->_prependPath(
+ $this->config->get('php_dir', null, 'pear.php.net'),
+ $options['packagingroot']);
+- $instreg = new PEAR_Registry($packrootphp_dir); // other instreg!
++ $metadata_dir = $this->config->get('metadata_dir', null, 'pear.php.net');
++ if ($metadata_dir) {
++ $metadata_dir = $this->installer->_prependPath(
++ $metadata_dir,
++ $options['packagingroot']);
++ }
++ $instreg = new PEAR_Registry($packrootphp_dir, false, false, $metadata_dir); // other instreg!
+
+ if ($this->config->get('verbose') > 2) {
+ $this->ui->outputData('using package root: ' . $options['packagingroot']);
+diff -up PEAR/Config.php.metadata PEAR/Config.php
+--- PEAR/Config.php.metadata 2011-07-07 00:11:24.000000000 +0200
++++ PEAR/Config.php 2012-09-26 16:02:29.831393779 +0200
+@@ -87,6 +87,13 @@ if (getenv('PHP_PEAR_INSTALL_DIR')) {
+ }
+ }
+
++// Default for metadata_dir
++if (getenv('PHP_PEAR_METADATA_DIR')) {
++ define('PEAR_CONFIG_DEFAULT_METADATA_DIR', getenv('PHP_PEAR_METADATA_DIR'));
++} else {
++ define('PEAR_CONFIG_DEFAULT_METADATA_DIR', '');
++}
++
+ // Default for ext_dir
+ if (getenv('PHP_PEAR_EXTENSION_DIR')) {
+ define('PEAR_CONFIG_DEFAULT_EXT_DIR', getenv('PHP_PEAR_EXTENSION_DIR'));
+@@ -398,6 +405,13 @@ class PEAR_Config extends PEAR
+ 'prompt' => 'PEAR directory',
+ 'group' => 'File Locations',
+ ),
++ 'metadata_dir' => array(
++ 'type' => 'directory',
++ 'default' => PEAR_CONFIG_DEFAULT_METADATA_DIR,
++ 'doc' => 'directory where metadata files are installed (registry, filemap, channels, ...)',
++ 'prompt' => 'PEAR metadata directory',
++ 'group' => 'File Locations',
++ ),
+ 'ext_dir' => array(
+ 'type' => 'directory',
+ 'default' => PEAR_CONFIG_DEFAULT_EXT_DIR,
+@@ -647,7 +661,9 @@ class PEAR_Config extends PEAR
+ $this->configuration['default'][$key] = $info['default'];
+ }
+
+- $this->_registry['default'] = &new PEAR_Registry($this->configuration['default']['php_dir']);
++ $this->_registry['default'] = &new PEAR_Registry(
++ $this->configuration['default']['php_dir'], false, false,
++ $this->configuration['default']['metadata_dir']);
+ $this->_registry['default']->setConfig($this, false);
+ $this->_regInitialized['default'] = false;
+ //$GLOBALS['_PEAR_Config_instance'] = &$this;
+@@ -754,7 +770,9 @@ class PEAR_Config extends PEAR
+ $this->configuration[$layer] = $data;
+ $this->_setupChannels();
+ if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) {
+- $this->_registry[$layer] = &new PEAR_Registry($phpdir);
++ $this->_registry[$layer] = &new PEAR_Registry(
++ $phpdir, false, false,
++ $this->get('metadata_dir', $layer, 'pear.php.net'));
+ $this->_registry[$layer]->setConfig($this, false);
+ $this->_regInitialized[$layer] = false;
+ } else {
+@@ -911,7 +929,9 @@ class PEAR_Config extends PEAR
+
+ $this->_setupChannels();
+ if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) {
+- $this->_registry[$layer] = &new PEAR_Registry($phpdir);
++ $this->_registry[$layer] = &new PEAR_Registry(
++ $phpdir, false, false,
++ $this->get('metadata_dir', $layer, 'pear.php.net'));
+ $this->_registry[$layer]->setConfig($this, false);
+ $this->_regInitialized[$layer] = false;
+ } else {
+@@ -1604,7 +1624,9 @@ class PEAR_Config extends PEAR
+
+ if (!is_object($this->_registry[$layer])) {
+ if ($phpdir = $this->get('php_dir', $layer, 'pear.php.net')) {
+- $this->_registry[$layer] = &new PEAR_Registry($phpdir);
++ $this->_registry[$layer] = &new PEAR_Registry(
++ $phpdir, false, false,
++ $this->get('metadata_dir', $layer, 'pear.php.net'));
+ $this->_registry[$layer]->setConfig($this, false);
+ $this->_regInitialized[$layer] = false;
+ } else {
+@@ -2087,8 +2109,9 @@ class PEAR_Config extends PEAR
+ if ($layer == 'ftp' || !isset($this->_registry[$layer])) {
+ continue;
+ }
+- $this->_registry[$layer] =
+- &new PEAR_Registry($this->get('php_dir', $layer, 'pear.php.net'));
++ $this->_registry[$layer] = &new PEAR_Registry(
++ $this->get('php_dir', $layer, 'pear.php.net'), false, false,
++ $this->get('metadata_dir', $layer, 'pear.php.net'));
+ $this->_registry[$layer]->setConfig($this, false);
+ $this->_regInitialized[$layer] = false;
+ }
+diff -up PEAR/DependencyDB.php.metadata PEAR/DependencyDB.php
+--- PEAR/DependencyDB.php.metadata 2011-07-07 00:11:24.000000000 +0200
++++ PEAR/DependencyDB.php 2012-09-26 16:02:29.832393782 +0200
+@@ -122,8 +122,11 @@ class PEAR_DependencyDB
+
+ $this->_registry = &$this->_config->getRegistry();
+ if (!$depdb) {
+- $this->_depdb = $this->_config->get('php_dir', null, 'pear.php.net') .
+- DIRECTORY_SEPARATOR . '.depdb';
++ $dir = $this->_config->get('metadata_dir', null, 'pear.php.net');
++ if (!$dir) {
++ $dir = $this->_config->get('php_dir', null, 'pear.php.net');
++ }
++ $this->_depdb = $dir . DIRECTORY_SEPARATOR . '.depdb';
+ } else {
+ $this->_depdb = $depdb;
+ }
+@@ -766,4 +769,4 @@ class PEAR_DependencyDB
+ );
+ }
+ }
+-}
+\ Pas de fin de ligne à la fin du fichier
++}
+diff -up PEAR/Installer.php.metadata PEAR/Installer.php
+--- PEAR/Installer.php.metadata 2011-07-07 00:11:24.000000000 +0200
++++ PEAR/Installer.php 2012-09-26 16:03:15.079556967 +0200
+@@ -1162,15 +1162,6 @@ class PEAR_Installer extends PEAR_Downlo
+
+ $pkgname = $pkg->getName();
+ $channel = $pkg->getChannel();
+- if (isset($this->_options['packagingroot'])) {
+- $regdir = $this->_prependPath(
+- $this->config->get('php_dir', null, 'pear.php.net'),
+- $this->_options['packagingroot']);
+-
+- $packrootphp_dir = $this->_prependPath(
+- $this->config->get('php_dir', null, $channel),
+- $this->_options['packagingroot']);
+- }
+
+ if (isset($options['installroot'])) {
+ $this->config->setInstallRoot($options['installroot']);
+@@ -1182,7 +1173,21 @@ class PEAR_Installer extends PEAR_Downlo
+ $this->config->setInstallRoot(false);
+ $this->_registry = &$this->config->getRegistry();
+ if (isset($this->_options['packagingroot'])) {
+- $installregistry = &new PEAR_Registry($regdir);
++ $regdir = $this->_prependPath(
++ $this->config->get('php_dir', null, 'pear.php.net'),
++ $this->_options['packagingroot']);
++
++ $metadata_dir = $this->config->get('metadata_dir', null, 'pear.php.net');
++ if ($metadata_dir) {
++ $metadata_dir = $this->_prependPath(
++ $metadata_dir,
++ $this->_options['packagingroot']);
++ }
++ $packrootphp_dir = $this->_prependPath(
++ $this->config->get('php_dir', null, $channel),
++ $this->_options['packagingroot']);
++
++ $installregistry = &new PEAR_Registry($regdir, false, false, $metadata_dir);
+ if (!$installregistry->channelExists($channel, true)) {
+ // we need to fake a channel-discover of this channel
+ $chanobj = $this->_registry->getChannel($channel, true);
+@@ -1820,4 +1825,4 @@ class PEAR_Installer extends PEAR_Downlo
+ }
+
+ // }}}
+-}
+\ Pas de fin de ligne à la fin du fichier
++}
+diff --git a/PEAR/Registry.php b/PEAR/Registry.php
+index 3a7bbb1..17de529 100644
+--- PEAR/Registry.php
++++ PEAR/Registry.php
+@@ -132,23 +132,26 @@ class PEAR_Registry extends PEAR
+ * @access public
+ */
+ function PEAR_Registry($pear_install_dir = PEAR_INSTALL_DIR, $pear_channel = false,
+- $pecl_channel = false)
++ $pecl_channel = false, $pear_metadata_dir = '')
+ {
+ parent::PEAR();
+- $this->setInstallDir($pear_install_dir);
++ $this->setInstallDir($pear_install_dir, $pear_metadata_dir);
+ $this->_pearChannel = $pear_channel;
+ $this->_peclChannel = $pecl_channel;
+ $this->_config = false;
+ }
+
+- function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR)
++ function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR, $pear_metadata_dir = '')
+ {
+ $ds = DIRECTORY_SEPARATOR;
+ $this->install_dir = $pear_install_dir;
+- $this->channelsdir = $pear_install_dir.$ds.'.channels';
+- $this->statedir = $pear_install_dir.$ds.'.registry';
+- $this->filemap = $pear_install_dir.$ds.'.filemap';
+- $this->lockfile = $pear_install_dir.$ds.'.lock';
++ if (!$pear_metadata_dir) {
++ $pear_metadata_dir = $pear_install_dir;
++ }
++ $this->channelsdir = $pear_metadata_dir.$ds.'.channels';
++ $this->statedir = $pear_metadata_dir.$ds.'.registry';
++ $this->filemap = $pear_metadata_dir.$ds.'.filemap';
++ $this->lockfile = $pear_metadata_dir.$ds.'.lock';
+ }
+
+ function hasWriteAccess()
+@@ -181,7 +184,7 @@ class PEAR_Registry extends PEAR
+ {
+ $this->_config = &$config;
+ if ($resetInstallDir) {
+- $this->setInstallDir($config->get('php_dir'));
++ $this->setInstallDir($config->get('php_dir'), $config->get('metadata_dir'));
+ }
+ }
+
+@@ -328,9 +331,9 @@ class PEAR_Registry extends PEAR
+ $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config);
+ if (PEAR::isError($this->_dependencyDB)) {
+ // attempt to recover by removing the dep db
+- if (file_exists($this->_config->get('php_dir', null, 'pear.php.net') .
++ if (file_exists($this->_config->get('metadata_dir', null, 'pear.php.net') .
+ DIRECTORY_SEPARATOR . '.depdb')) {
+- @unlink($this->_config->get('php_dir', null, 'pear.php.net') .
++ @unlink($this->_config->get('metadata_dir', null, 'pear.php.net') .
+ DIRECTORY_SEPARATOR . '.depdb');
+ }
+
+@@ -2328,4 +2331,4 @@ class PEAR_Registry extends PEAR
+ }
+ return $ret;
+ }
+-}
+\ No newline at end of file
++}
diff --git a/php-pear/php-pear.spec b/php-pear/php-pear.spec
new file mode 100644
index 0000000..d73b4ab
--- /dev/null
+++ b/php-pear/php-pear.spec
@@ -0,0 +1,565 @@
+%{?scl:%scl_package php-pear}
+%{!?scl:%global pkg_name %{name}}
+%{!?scl:%global _root_sysconfdir %{_sysconfdir}}
+
+%global peardir %{_datadir}/pear
+%global metadir %{_localstatedir}/lib/pear
+
+%global getoptver 1.3.1
+%global arctarver 1.3.12
+# https://pear.php.net/bugs/bug.php?id=19367
+# Structures_Graph 1.0.4 - incorrect FSF address
+%global structver 1.0.4
+%global xmlutil 1.2.3
+
+%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_root_sysconfdir}/rpm; echo $d)
+
+
+Summary: PHP Extension and Application Repository framework
+Name: %{?scl_prefix}php-pear
+Version: 1.9.5
+Release: 1%{?dist}
+Epoch: 1
+# PEAR, Archive_Tar, XML_Util are BSD
+# Console_Getopt is PHP
+# Structures_Graph is LGPLv2+
+License: BSD and PHP and LGPLv2+
+Group: Development/Languages
+URL: http://pear.php.net/package/PEAR
+Source0: http://download.pear.php.net/package/PEAR-%{version}.tgz
+# wget https://raw.github.com/pear/pear-core/master/install-pear.php
+Source1: install-pear.php
+Source3: strip.php
+Source10: pear.sh
+Source11: pecl.sh
+Source12: peardev.sh
+Source13: macros.pear
+Source21: http://pear.php.net/get/Archive_Tar-%{arctarver}.tgz
+Source22: http://pear.php.net/get/Console_Getopt-%{getoptver}.tgz
+Source23: http://pear.php.net/get/Structures_Graph-%{structver}.tgz
+Source24: http://pear.php.net/get/XML_Util-%{xmlutil}.tgz
+# Man pages
+# https://github.com/pear/pear-core/pull/14
+Source30: pear.1
+Source31: pecl.1
+Source32: peardev.1
+# https://github.com/pear/pear-core/pull/16
+Source33: pear.conf.5
+
+# From RHEL: ignore REST cache creation failures as non-root user (#747361)
+# TODO See https://github.com/pear/pear-core/commit/dfef86e05211d2abc7870209d69064d448ef53b3#PEAR/REST.php
+Patch0: php-pear-1.9.4-restcache.patch
+# Relocate Metadata
+Patch1: php-pear-metadata.patch
+
+BuildArch: noarch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: %{?scl_prefix}php-cli >= 5.1.0-1, %{?scl_prefix}php-xml, gnupg
+
+Provides: %{?scl_prefix}php-pear(Console_Getopt) = %{getoptver}
+Provides: %{?scl_prefix}php-pear(Archive_Tar) = %{arctarver}
+Provides: %{?scl_prefix}php-pear(PEAR) = %{version}
+Provides: %{?scl_prefix}php-pear(Structures_Graph) = %{structver}
+Provides: %{?scl_prefix}php-pear(XML_Util) = %{xmlutil}
+
+Requires: %{?scl_prefix}php-cli
+# phpci detected extension
+# PEAR (date, spl always builtin):
+Requires: %{?scl_prefix}php-ftp
+Requires: %{?scl_prefix}php-pcre
+Requires: %{?scl_prefix}php-posix
+Requires: %{?scl_prefix}php-tokenizer
+Requires: %{?scl_prefix}php-xml
+Requires: %{?scl_prefix}php-zlib
+# Console_Getopt: pcre
+# Archive_Tar: pcre, posix, zlib
+Requires: %{?scl_prefix}php-bz2
+# Structures_Graph: none
+# XML_Util: pcre
+# optional: overload and xdebug
+
+
+%description
+PEAR is a framework and distribution system for reusable PHP
+components. This package contains the basic PEAR components.
+
+%prep
+%setup -cT
+
+# Create a usable PEAR directory (used by install-pear.php)
+for archive in %{SOURCE0} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24}
+do
+ tar xzf $archive --strip-components 1 || tar xzf $archive --strip-path 1
+ file=${archive##*/}
+ [ -f LICENSE ] && mv LICENSE LICENSE-${file%%-*}
+ [ -f README ] && mv README README-${file%%-*}
+
+ tar xzf $archive 'package*xml'
+ [ -f package2.xml ] && mv package2.xml ${file%%-*}.xml \
+ || mv package.xml ${file%%-*}.xml
+done
+cp %{SOURCE1} %{SOURCE30} %{SOURCE31} %{SOURCE32} %{SOURCE33} .
+
+# apply patches on used PEAR during install
+%patch1 -p0 -b .metadata
+
+sed -e 's/@SCL@/%{?scl:%{scl}_}/' \
+ -e 's:@VARDIR@:%{_localstatedir}:' \
+ -e 's:@BINDIR@:%{_bindir}:' \
+ %{SOURCE13} | tee macros.pear
+
+
+%build
+# This is an empty build section.
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+export PHP_PEAR_SYSCONF_DIR=%{_sysconfdir}
+export PHP_PEAR_SIG_KEYDIR=%{_sysconfdir}/pearkeys
+export PHP_PEAR_SIG_BIN=%{_root_bindir}/gpg
+export PHP_PEAR_INSTALL_DIR=%{peardir}
+
+# 1.4.11 tries to write to the cache directory during installation
+# so it's not possible to set a sane default via the environment.
+# The ${PWD} bit will be stripped via relocate.php later.
+export PHP_PEAR_CACHE_DIR=${PWD}%{_localstatedir}/cache/php-pear
+export PHP_PEAR_TEMP_DIR=/var/tmp
+
+install -d $RPM_BUILD_ROOT%{peardir} \
+ $RPM_BUILD_ROOT%{_localstatedir}/cache/php-pear \
+ $RPM_BUILD_ROOT%{_localstatedir}/www/html \
+ $RPM_BUILD_ROOT%{_localstatedir}/lib/pear/pkgxml \
+ $RPM_BUILD_ROOT%{_docdir}/pecl \
+ $RPM_BUILD_ROOT%{_datadir}/tests/pecl \
+ $RPM_BUILD_ROOT%{_sysconfdir}/pear
+
+export INSTALL_ROOT=$RPM_BUILD_ROOT
+
+%{_bindir}/php --version
+
+%{_bindir}/php -dmemory_limit=64M -dshort_open_tag=0 -dsafe_mode=0 \
+ -d 'error_reporting=E_ALL&~E_DEPRECATED' -ddetect_unicode=0 \
+ install-pear.php --force \
+ --dir %{peardir} \
+ --cache %{_localstatedir}/cache/php-pear \
+ --config %{_sysconfdir}/pear \
+ --bin %{_bindir} \
+ --www %{_localstatedir}/www/html \
+ --doc %{_docdir}/pear \
+ --test %{_datadir}/tests/pear \
+ --data %{_datadir}/pear-data \
+ --metadata %{metadir} \
+ %{SOURCE0} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24}
+
+# Replace /usr/bin/* with simple scripts:
+install -m 755 %{SOURCE10} $RPM_BUILD_ROOT%{_bindir}/pear
+install -m 755 %{SOURCE11} $RPM_BUILD_ROOT%{_bindir}/pecl
+install -m 755 %{SOURCE12} $RPM_BUILD_ROOT%{_bindir}/peardev
+for exe in pear pecl peardev; do
+ sed -e 's:/usr:%{_prefix}:' \
+ -i $RPM_BUILD_ROOT%{_bindir}/$exe
+done
+
+# Sanitize the pear.conf
+%{_bindir}/php %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf ext_dir >new-pear.conf
+%{_bindir}/php %{SOURCE3} new-pear.conf http_proxy > $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf
+
+%{_bindir}/php -r "print_r(unserialize(substr(file_get_contents('$RPM_BUILD_ROOT%{_sysconfdir}/pear.conf'),17)));"
+
+install -m 644 -D macros.pear \
+ $RPM_BUILD_ROOT%{macrosdir}/macros.%{name}
+
+# apply patches on installed PEAR tree
+pushd $RPM_BUILD_ROOT%{peardir}
+ pushd PEAR
+ %__patch -s --no-backup --fuzz 0 -p0 < %{PATCH0}
+ popd
+ %__patch -s --no-backup --fuzz 0 -p0 < %{PATCH1}
+popd
+
+# Why this file here ?
+rm -rf $RPM_BUILD_ROOT/.depdb* $RPM_BUILD_ROOT/.lock $RPM_BUILD_ROOT/.channels $RPM_BUILD_ROOT/.filemap
+
+# Need for re-registrying XML_Util
+install -m 644 *.xml $RPM_BUILD_ROOT%{_localstatedir}/lib/pear/pkgxml
+
+# The man pages
+install -d $RPM_BUILD_ROOT%{_mandir}/man1
+install -p -m 644 pear.1 pecl.1 peardev.1 $RPM_BUILD_ROOT%{_mandir}/man1/
+install -d $RPM_BUILD_ROOT%{_mandir}/man5
+install -p -m 644 pear.conf.5 $RPM_BUILD_ROOT%{_mandir}/man5/
+
+# make the cli commands available in standard root for SCL build
+%if 0%{?scl:1}
+install -m 755 -d $RPM_BUILD_ROOT%{_root_bindir}
+ln -s %{_bindir}/pear $RPM_BUILD_ROOT%{_root_bindir}/%{scl_prefix}pear
+%endif
+
+
+%check
+# Check that no bogus paths are left in the configuration, or in
+# the generated registry files.
+grep $RPM_BUILD_ROOT $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf && exit 1
+grep %{_libdir} $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf && exit 1
+grep '"/tmp"' $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf && exit 1
+grep /usr/local $RPM_BUILD_ROOT%{_sysconfdir}/pear.conf && exit 1
+grep -rl $RPM_BUILD_ROOT $RPM_BUILD_ROOT && exit 1
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+rm new-pear.conf
+
+
+%pre
+# Manage relocation of metadata, before update to pear
+if [ -d %{peardir}/.registry -a ! -d %{metadir}/.registry ]; then
+ mkdir -p %{metadir}
+ mv -f %{peardir}/.??* %{metadir}
+fi
+
+
+%post
+# force new value as pear.conf is (noreplace)
+current=$(%{_bindir}/pear config-get test_dir system)
+if [ "$current" != "%{_datadir}/tests/pear" ]; then
+%{_bindir}/pear config-set \
+ test_dir %{_datadir}/tests/pear \
+ system >/dev/null || :
+fi
+
+current=$(%{_bindir}/pear config-get data_dir system)
+if [ "$current" != "%{_datadir}/pear-data" ]; then
+%{_bindir}/pear config-set \
+ data_dir %{_datadir}/pear-data \
+ system >/dev/null || :
+fi
+
+current=$(%{_bindir}/pear config-get metadata_dir system)
+if [ "$current" != "%{metadir}" ]; then
+%{_bindir}/pear config-set \
+ metadata_dir %{metadir} \
+ system >/dev/null || :
+fi
+
+current=$(%{_bindir}/pear config-get -c pecl doc_dir system)
+if [ "$current" != "%{_docdir}/pecl" ]; then
+%{_bindir}/pear config-set \
+ -c pecl \
+ doc_dir %{_docdir}/pecl \
+ system >/dev/null || :
+fi
+
+current=$(%{_bindir}/pear config-get -c pecl test_dir system)
+if [ "$current" != "%{_datadir}/tests/pecl" ]; then
+%{_bindir}/pear config-set \
+ -c pecl \
+ test_dir %{_datadir}/tests/pecl \
+ system >/dev/null || :
+fi
+
+
+%files
+%defattr(-,root,root,-)
+%{peardir}
+%dir %{metadir}
+%{metadir}/.channels
+%verify(not mtime size md5) %{metadir}/.depdb
+%verify(not mtime) %{metadir}/.depdblock
+%verify(not mtime size md5) %{metadir}/.filemap
+%verify(not mtime) %{metadir}/.lock
+%{metadir}/.registry
+%{metadir}/pkgxml
+%{_bindir}/*
+%config(noreplace) %{_sysconfdir}/pear.conf
+%{macrosdir}/macros.%{name}
+%dir %{_localstatedir}/cache/php-pear
+%dir %{_localstatedir}/www/html
+%dir %{_sysconfdir}/pear
+%doc README* LICENSE*
+%dir %{_docdir}/pear
+%doc %{_docdir}/pear/*
+%dir %{_docdir}/pecl
+%dir %{_datadir}/tests
+%dir %{_datadir}/tests/pecl
+%{_datadir}/tests/pear
+%{_datadir}/pear-data
+%if 0%{?scl:1}
+%dir %{_localstatedir}/www
+%{_root_bindir}/%{scl_prefix}pear
+%endif
+%{_mandir}/man1/pear.1*
+%{_mandir}/man1/pecl.1*
+%{_mandir}/man1/peardev.1*
+%{_mandir}/man5/pear.conf.5*
+
+
+%changelog
+* Sun Aug 24 2014 Remi Collet <rcollet@redhat.com> 1:1.9.5-1
+- update PEAR to 1.9.5
+- update Archive_Tar to 1.3.12
+- update XML_Util to 1.2.3
+- add man pages
+- pecl doc in /usr/share/doc/pecl
+- pecl tests in /usr/share/tests/pecl
+
+* Tue Feb 4 2014 Remi Collet <rcollet@redhat.com> 1:1.9.4-10
+- expand all macros #1058639
+
+* Tue Sep 24 2013 Remi Collet <rcollet@redhat.com> 1:1.9.4-8
+- relocate RPM macro #1008846
+
+* Thu May 23 2013 Remi Collet <rcollet@redhat.com> 1:1.9.4-7
+- remove wrappers in /usr/bin (#966509)
+
+* Mon May 6 2013 Remi Collet <rcollet@redhat.com> 1:1.9.4-6
+- don't verify metadata file content (#959425)
+
+* Thu Apr 25 2013 Remi Collet <rcollet@redhat.com> 1:1.9.4-5
+- update Archive_Tar to 1.3.11
+- add explicit requires on all needed extensions (phpci)
+- fix pecl launcher (need ini to be parsed for some
+ extensions going to be build as shared, mainly simplexml)
+- move metadata to /var/lib/pear
+- own %%{_localstatedir}/www (#956529)
+- update config only if needed in %%post
+- remove %%config flag for macros.pear
+
+* Tue Oct 23 2012 Remi Collet <rcollet@redhat.com> 1:1.9.4-3
+- provides pear command in standard root (scl)
+
+* Wed Oct 3 2012 Remi Collet <rcollet@redhat.com> 1:1.9.4-2
+- rename, but don't relocate macros.pear
+
+* Wed Oct 3 2012 Remi Collet <rcollet@redhat.com> 1:1.9.4-1
+- initial spec rewrite for scl build
+
+* Wed Sep 26 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-12
+- drop relocate stuff, no more needed
+
+* Sun Aug 19 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-11
+- move data to /usr/share/pear-data
+- provides all package.xml
+
+* Wed Aug 15 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-10
+- enforce test_dir on update
+
+* Mon Aug 13 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-9
+- move tests to /usr/share/tests/pear
+- move pkgxml to /var/lib/pear
+- remove XML_RPC
+- refresh installer
+
+* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.9.4-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Wed Apr 11 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-7
+- Update Archive_Tar to 1.3.10
+
+* Wed Apr 04 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-6
+- fix Obsoletes version for XML_Util (#226295)
+- add link to upstream bug - please Provides LICENSE file
+ https://pear.php.net/bugs/bug.php?id=19368
+- add link to upstream bug - Incorrect FSF address
+ https://pear.php.net/bugs/bug.php?id=19367
+
+* Mon Feb 27 2012 Remi Collet <remi@fedoraproject.org> 1:1.9.4-5
+- Update Archive_Tar to 1.3.9
+- add patch from RHEL (Joe Orton)
+- fix install-pear.php URL (with our patch for doc_dir applied)
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.9.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Sat Oct 15 2011 Remi Collet <remi@fedoraproject.org> 1:1.9.4-3
+- update Archive_Tar to 1.3.8
+- allow to build with "tests" option
+
+* Sat Aug 27 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.4-2
+- update to XML_RPC-1.5.5
+
+* Thu Jul 07 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.4-1
+- update to 1.9.4
+
+* Fri Jun 10 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.3-2
+- fix pecl launcher
+
+* Fri Jun 10 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.3-1
+- update to 1.9.3
+- sync options in launcher (pecl, pear, peardev) with upstream
+
+* Wed Mar 16 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.2-3
+- move %%{pear_docdir} to %%{_docdir}/pear
+ https://fedorahosted.org/fpc/ticket/69
+
+* Tue Mar 8 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.2-2
+- update Console_Getopt to 1.3.1 (no change)
+
+* Mon Feb 28 2011 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.2-1
+- update to 1.9.2 (bug + security fix)
+ http://pear.php.net/advisory-20110228.txt
+
+* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.9.1-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Sun Dec 12 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.1-6
+- update Console_Getopt to 1.3.0
+- don't require php-devel (#657812)
+- update install-pear.php
+
+* Tue Oct 26 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.1-5
+- update Structures_Graph to 1.0.4
+
+* Fri Sep 10 2010 Joe Orton <jorton@redhat.com> - 1:1.9.1-4
+- ship LICENSE file for XML_RPC
+
+* Fri Sep 10 2010 Joe Orton <jorton@redhat.com> - 1:1.9.1-3
+- require php-devel (without which pecl doesn't work)
+
+* Mon Jul 05 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.1-2
+- update to XML_RPC-1.5.4
+
+* Thu May 27 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.1-1
+- update to 1.9.1
+
+* Thu Apr 29 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.0-5
+- update to Archive_Tar-1.3.7 (only metadata fix)
+
+* Tue Mar 09 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.0-4
+- update to Archive_Tar-1.3.6
+
+* Sat Jan 16 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.0-3
+- update to XML_RPC-1.5.3
+- fix licenses (multiple)
+- provide bundled LICENSE files
+
+* Fri Jan 01 2010 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.0-2
+- update to Archive_Tar-1.3.5, Structures_Graph-1.0.3
+
+* Sat Sep 05 2009 Remi Collet <Fedora@FamilleCollet.com> 1:1.9.0-1
+- update to PEAR 1.9.0, XML_RPC 1.5.2
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.8.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Sat May 30 2009 Remi Collet <Fedora@FamilleCollet.com> 1:1.8.1-1
+- update to 1.8.1
+- Update install-pear.php script (1.39)
+- add XML_Util
+
+* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.7.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sun May 18 2008 Remi Collet <Fedora@FamilleCollet.com> 1:1.7.2-2
+- revert to install-pear.php script 1.31 (for cfg_dir)
+
+* Sun May 18 2008 Remi Collet <Fedora@FamilleCollet.com> 1:1.7.2-1
+- update to 1.7.2
+- Update install-pear.php script (1.32)
+
+* Tue Mar 11 2008 Tim Jackson <rpm@timj.co.uk> 1:1.7.1-2
+- Set cfg_dir to be %%{_sysconfdir}/pear (and own it)
+- Update install-pear.php script
+- Add %%pear_cfgdir and %%pear_wwwdir macros
+
+* Sun Feb 3 2008 Remi Collet <Fedora@FamilleCollet.com> 1:1.7.1-1
+- update to 1.7.1
+
+* Fri Feb 1 2008 Remi Collet <Fedora@FamilleCollet.com> 1:1.7.0-1
+- update to 1.7.0
+
+* Thu Oct 4 2007 Joe Orton <jorton@redhat.com> 1:1.6.2-2
+- require php-cli not php
+
+* Sun Sep 9 2007 Remi Collet <Fedora@FamilleCollet.com> 1:1.6.2-1
+- update to 1.6.2
+- remove patches merged upstream
+- Fix : "pear install" hangs on non default channel (#283401)
+
+* Tue Aug 21 2007 Joe Orton <jorton@redhat.com> 1:1.6.1-2
+- fix License
+
+* Thu Jul 19 2007 Remi Collet <Fedora@FamilleCollet.com> 1:1.6.1-1
+- update to PEAR-1.6.1 and Console_Getopt-1.2.3
+
+* Thu Jul 19 2007 Remi Collet <Fedora@FamilleCollet.com> 1:1.5.4-5
+- new SPEC using install-pear.php instead of install-pear-nozlib-1.5.4.phar
+
+* Mon Jul 16 2007 Remi Collet <Fedora@FamilleCollet.com> 1:1.5.4-4
+- update macros.pear (without define)
+
+* Mon Jul 16 2007 Joe Orton <jorton@redhat.com> 1:1.5.4-3
+- add pecl_{un,}install macros to macros.pear (from Remi)
+
+* Fri May 11 2007 Joe Orton <jorton@redhat.com> 1:1.5.4-2
+- update to 1.5.4
+
+* Tue Mar 6 2007 Joe Orton <jorton@redhat.com> 1:1.5.0-3
+- add redundant build section (#226295)
+- BR php-cli not php (#226295)
+
+* Mon Feb 19 2007 Joe Orton <jorton@redhat.com> 1:1.5.0-2
+- update builtin module provides (Remi Collet, #226295)
+- drop patch 0
+
+* Thu Feb 15 2007 Joe Orton <jorton@redhat.com> 1:1.5.0-1
+- update to 1.5.0
+
+* Mon Feb 5 2007 Joe Orton <jorton@redhat.com> 1:1.4.11-4
+- fix Group, mark pear.conf noreplace (#226295)
+
+* Mon Feb 5 2007 Joe Orton <jorton@redhat.com> 1:1.4.11-3
+- use BuildArch not BuildArchitectures (#226925)
+- fix to use preferred BuildRoot (#226925)
+- strip more buildroot-relative paths from *.reg
+- force correct gpg path in default pear.conf
+
+* Thu Jan 4 2007 Joe Orton <jorton@redhat.com> 1:1.4.11-2
+- update to 1.4.11
+
+* Fri Jul 14 2006 Joe Orton <jorton@redhat.com> 1:1.4.9-4
+- update to XML_RPC-1.5.0
+- really package macros.pear
+
+* Thu Jul 13 2006 Joe Orton <jorton@redhat.com> 1:1.4.9-3
+- require php-cli
+- add /etc/rpm/macros.pear (Christopher Stone)
+
+* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1:1.4.9-2.1
+- rebuild
+
+* Mon May 8 2006 Joe Orton <jorton@redhat.com> 1:1.4.9-2
+- update to 1.4.9 (thanks to Remi Collet, #183359)
+- package /usr/share/pear/.pkgxml (#190252)
+- update to XML_RPC-1.4.8
+- bundle the v3.0 LICENSE file
+
+* Tue Feb 28 2006 Joe Orton <jorton@redhat.com> 1:1.4.6-2
+- set cache_dir directory, own /var/cache/php-pear
+
+* Mon Jan 30 2006 Joe Orton <jorton@redhat.com> 1:1.4.6-1
+- update to 1.4.6
+- require php >= 5.1.0 (#178821)
+
+* Fri Dec 30 2005 Tim Jackson <tim@timj.co.uk> 1:1.4.5-6
+- Patches to fix "pear makerpm"
+
+* Wed Dec 14 2005 Joe Orton <jorton@redhat.com> 1:1.4.5-5
+- set default sig_keydir to /etc/pearkeys
+- remove ext_dir setting from /etc/pear.conf (#175673)
+
+* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
+- rebuilt
+
+* Tue Dec 6 2005 Joe Orton <jorton@redhat.com> 1:1.4.5-4
+- fix virtual provide for PEAR package (#175074)
+
+* Sun Dec 4 2005 Joe Orton <jorton@redhat.com> 1:1.4.5-3
+- fix /usr/bin/{pecl,peardev} (#174882)
+
+* Thu Dec 1 2005 Joe Orton <jorton@redhat.com> 1:1.4.5-2
+- add virtual provides (#173806)
+
+* Wed Nov 23 2005 Joe Orton <jorton@redhat.com> 1.4.5-1
+- initial build (Epoch: 1 to allow upgrade from php-pear-5.x)
diff --git a/php-pear/strip.php b/php-pear/strip.php
new file mode 100644
index 0000000..5c5216b
--- /dev/null
+++ b/php-pear/strip.php
@@ -0,0 +1,35 @@
+<?php
+
+#
+# strip.php /path/to/file key_name
+#
+# Takes a file as input and a string prefix; reads
+# the file as a serialized data blob and removes a
+# key with name key_name from the hash.
+# Serializes again and writes output to stdout.
+#
+
+$file = $_SERVER['argv'][1];
+$key = $_SERVER['argv'][2];
+
+function remove_key($array, $name) {
+ if (array_key_exists($name, $array)) {
+ unset($array[$name]);
+ }
+
+ return $array;
+}
+
+$input = file_get_contents($file);
+
+# Special case for /etc/pear.conf.
+if (strncmp($input, "#PEAR_Config 0.9\n", 17) == 0) {
+ echo substr($input, 0, 17);
+ $s = substr($input, 17);
+} else {
+ $s = $input;
+}
+
+echo serialize(remove_key(unserialize($s), $key));
+
+?> \ No newline at end of file