Blame SOURCES/php-pear-metadata.patch

04b387
diff -up PEAR/Command/Install.php.metadata PEAR/Command/Install.php
04b387
--- PEAR/Command/Install.php.metadata	2011-07-07 00:11:24.000000000 +0200
04b387
+++ PEAR/Command/Install.php	2012-09-26 16:02:29.829393773 +0200
04b387
@@ -556,7 +556,13 @@ Run post-installation scripts in package
04b387
             $packrootphp_dir = $this->installer->_prependPath(
04b387
                 $this->config->get('php_dir', null, 'pear.php.net'),
04b387
                 $options['packagingroot']);
04b387
-            $instreg = new PEAR_Registry($packrootphp_dir); // other instreg!
04b387
+            $metadata_dir = $this->config->get('metadata_dir', null, 'pear.php.net');
04b387
+            if ($metadata_dir) {
04b387
+                $metadata_dir = $this->installer->_prependPath(
04b387
+                    $metadata_dir,
04b387
+                    $options['packagingroot']);
04b387
+            }
04b387
+            $instreg = new PEAR_Registry($packrootphp_dir, false, false, $metadata_dir); // other instreg!
04b387
 
04b387
             if ($this->config->get('verbose') > 2) {
04b387
                 $this->ui->outputData('using package root: ' . $options['packagingroot']);
04b387
diff -up PEAR/Config.php.metadata PEAR/Config.php
04b387
--- PEAR/Config.php.metadata	2011-07-07 00:11:24.000000000 +0200
04b387
+++ PEAR/Config.php	2012-09-26 16:02:29.831393779 +0200
04b387
@@ -87,6 +87,13 @@ if (getenv('PHP_PEAR_INSTALL_DIR')) {
04b387
     }
04b387
 }
04b387
 
04b387
+// Default for metadata_dir
04b387
+if (getenv('PHP_PEAR_METADATA_DIR')) {
04b387
+    define('PEAR_CONFIG_DEFAULT_METADATA_DIR', getenv('PHP_PEAR_METADATA_DIR'));
04b387
+} else {
04b387
+    define('PEAR_CONFIG_DEFAULT_METADATA_DIR', '');
04b387
+}
04b387
+
04b387
 // Default for ext_dir
04b387
 if (getenv('PHP_PEAR_EXTENSION_DIR')) {
04b387
     define('PEAR_CONFIG_DEFAULT_EXT_DIR', getenv('PHP_PEAR_EXTENSION_DIR'));
04b387
@@ -398,6 +405,13 @@ class PEAR_Config extends PEAR
04b387
             'prompt' => 'PEAR directory',
04b387
             'group' => 'File Locations',
04b387
             ),
04b387
+        'metadata_dir' => array(
04b387
+            'type' => 'directory',
04b387
+            'default' => PEAR_CONFIG_DEFAULT_METADATA_DIR,
04b387
+            'doc' => 'directory where metadata files are installed (registry, filemap, channels, ...)',
04b387
+            'prompt' => 'PEAR metadata directory',
04b387
+            'group' => 'File Locations',
04b387
+            ),
04b387
         'ext_dir' => array(
04b387
             'type' => 'directory',
04b387
             'default' => PEAR_CONFIG_DEFAULT_EXT_DIR,
04b387
@@ -647,7 +661,9 @@ class PEAR_Config extends PEAR
04b387
             $this->configuration['default'][$key] = $info['default'];
04b387
         }
04b387
 
04b387
-        $this->_registry['default'] = &new PEAR_Registry($this->configuration['default']['php_dir']);
04b387
+        $this->_registry['default'] = &new PEAR_Registry(
04b387
+            $this->configuration['default']['php_dir'], false, false,
04b387
+            $this->configuration['default']['metadata_dir']);
04b387
         $this->_registry['default']->setConfig($this, false);
04b387
         $this->_regInitialized['default'] = false;
04b387
         //$GLOBALS['_PEAR_Config_instance'] = &$this;
04b387
@@ -754,7 +770,9 @@ class PEAR_Config extends PEAR
04b387
         $this->configuration[$layer] = $data;
04b387
         $this->_setupChannels();
04b387
         if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) {
04b387
-            $this->_registry[$layer] = &new PEAR_Registry($phpdir);
04b387
+            $this->_registry[$layer] = &new PEAR_Registry(
04b387
+                $phpdir, false, false,
04b387
+                $this->get('metadata_dir', $layer, 'pear.php.net'));
04b387
             $this->_registry[$layer]->setConfig($this, false);
04b387
             $this->_regInitialized[$layer] = false;
04b387
         } else {
04b387
@@ -911,7 +929,9 @@ class PEAR_Config extends PEAR
04b387
 
04b387
         $this->_setupChannels();
04b387
         if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) {
04b387
-            $this->_registry[$layer] = &new PEAR_Registry($phpdir);
04b387
+            $this->_registry[$layer] = &new PEAR_Registry(
04b387
+                $phpdir, false, false,
04b387
+                $this->get('metadata_dir', $layer, 'pear.php.net'));
04b387
             $this->_registry[$layer]->setConfig($this, false);
04b387
             $this->_regInitialized[$layer] = false;
04b387
         } else {
04b387
@@ -1604,7 +1624,9 @@ class PEAR_Config extends PEAR
04b387
 
04b387
                 if (!is_object($this->_registry[$layer])) {
04b387
                     if ($phpdir = $this->get('php_dir', $layer, 'pear.php.net')) {
04b387
-                        $this->_registry[$layer] = &new PEAR_Registry($phpdir);
04b387
+                        $this->_registry[$layer] = &new PEAR_Registry(
04b387
+                            $phpdir, false, false,
04b387
+                            $this->get('metadata_dir', $layer, 'pear.php.net'));
04b387
                         $this->_registry[$layer]->setConfig($this, false);
04b387
                         $this->_regInitialized[$layer] = false;
04b387
                     } else {
04b387
@@ -2087,8 +2109,9 @@ class PEAR_Config extends PEAR
04b387
                 if ($layer == 'ftp' || !isset($this->_registry[$layer])) {
04b387
                     continue;
04b387
                 }
04b387
-                $this->_registry[$layer] =
04b387
-                    &new PEAR_Registry($this->get('php_dir', $layer, 'pear.php.net'));
04b387
+                $this->_registry[$layer] = &new PEAR_Registry(
04b387
+                    $this->get('php_dir', $layer, 'pear.php.net'), false, false,
04b387
+                    $this->get('metadata_dir', $layer, 'pear.php.net'));
04b387
                 $this->_registry[$layer]->setConfig($this, false);
04b387
                 $this->_regInitialized[$layer] = false;
04b387
             }
04b387
diff -up PEAR/DependencyDB.php.metadata PEAR/DependencyDB.php
04b387
--- PEAR/DependencyDB.php.metadata	2011-07-07 00:11:24.000000000 +0200
04b387
+++ PEAR/DependencyDB.php	2012-09-26 16:02:29.832393782 +0200
04b387
@@ -122,8 +122,11 @@ class PEAR_DependencyDB
04b387
 
04b387
         $this->_registry = &$this->_config->getRegistry();
04b387
         if (!$depdb) {
04b387
-            $this->_depdb = $this->_config->get('php_dir', null, 'pear.php.net') .
04b387
-                DIRECTORY_SEPARATOR . '.depdb';
04b387
+            $dir = $this->_config->get('metadata_dir', null, 'pear.php.net');
04b387
+            if (!$dir) {
04b387
+                $dir = $this->_config->get('php_dir', null, 'pear.php.net');
04b387
+            }
04b387
+            $this->_depdb =  $dir . DIRECTORY_SEPARATOR . '.depdb';
04b387
         } else {
04b387
             $this->_depdb = $depdb;
04b387
         }
04b387
@@ -766,4 +769,4 @@ class PEAR_DependencyDB
04b387
             );
04b387
         }
04b387
     }
04b387
-}
04b387
\ Pas de fin de ligne à la fin du fichier
04b387
+}
04b387
diff -up PEAR/Installer.php.metadata PEAR/Installer.php
04b387
--- PEAR/Installer.php.metadata	2011-07-07 00:11:24.000000000 +0200
04b387
+++ PEAR/Installer.php	2012-09-26 16:03:15.079556967 +0200
04b387
@@ -1162,15 +1162,6 @@ class PEAR_Installer extends PEAR_Downlo
04b387
 
04b387
         $pkgname = $pkg->getName();
04b387
         $channel = $pkg->getChannel();
04b387
-        if (isset($this->_options['packagingroot'])) {
04b387
-            $regdir = $this->_prependPath(
04b387
-                $this->config->get('php_dir', null, 'pear.php.net'),
04b387
-                $this->_options['packagingroot']);
04b387
-
04b387
-            $packrootphp_dir = $this->_prependPath(
04b387
-                $this->config->get('php_dir', null, $channel),
04b387
-                $this->_options['packagingroot']);
04b387
-        }
04b387
 
04b387
         if (isset($options['installroot'])) {
04b387
             $this->config->setInstallRoot($options['installroot']);
04b387
@@ -1182,7 +1173,21 @@ class PEAR_Installer extends PEAR_Downlo
04b387
             $this->config->setInstallRoot(false);
04b387
             $this->_registry = &$this->config->getRegistry();
04b387
             if (isset($this->_options['packagingroot'])) {
04b387
-                $installregistry = &new PEAR_Registry($regdir);
04b387
+                $regdir = $this->_prependPath(
04b387
+                    $this->config->get('php_dir', null, 'pear.php.net'),
04b387
+                    $this->_options['packagingroot']);
04b387
+
04b387
+                $metadata_dir = $this->config->get('metadata_dir', null, 'pear.php.net');
04b387
+                if ($metadata_dir) {
04b387
+                    $metadata_dir = $this->_prependPath(
04b387
+                        $metadata_dir,
04b387
+                        $this->_options['packagingroot']);
04b387
+                }
04b387
+                $packrootphp_dir = $this->_prependPath(
04b387
+                    $this->config->get('php_dir', null, $channel),
04b387
+                    $this->_options['packagingroot']);
04b387
+
04b387
+                $installregistry = &new PEAR_Registry($regdir, false, false, $metadata_dir);
04b387
                 if (!$installregistry->channelExists($channel, true)) {
04b387
                     // we need to fake a channel-discover of this channel
04b387
                     $chanobj = $this->_registry->getChannel($channel, true);
04b387
@@ -1820,4 +1825,4 @@ class PEAR_Installer extends PEAR_Downlo
04b387
     }
04b387
 
04b387
     // }}}
04b387
-}
04b387
\ Pas de fin de ligne à la fin du fichier
04b387
+}
04b387
diff --git a/PEAR/Registry.php b/PEAR/Registry.php
04b387
index 3a7bbb1..17de529 100644
04b387
--- PEAR/Registry.php
04b387
+++ PEAR/Registry.php
04b387
@@ -132,23 +132,26 @@ class PEAR_Registry extends PEAR
04b387
      * @access public
04b387
      */
04b387
     function PEAR_Registry($pear_install_dir = PEAR_INSTALL_DIR, $pear_channel = false,
04b387
-                           $pecl_channel = false)
04b387
+                           $pecl_channel = false, $pear_metadata_dir = '')
04b387
     {
04b387
         parent::PEAR();
04b387
-        $this->setInstallDir($pear_install_dir);
04b387
+        $this->setInstallDir($pear_install_dir, $pear_metadata_dir);
04b387
         $this->_pearChannel = $pear_channel;
04b387
         $this->_peclChannel = $pecl_channel;
04b387
         $this->_config      = false;
04b387
     }
04b387
 
04b387
-    function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR)
04b387
+    function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR, $pear_metadata_dir = '')
04b387
     {
04b387
         $ds = DIRECTORY_SEPARATOR;
04b387
         $this->install_dir = $pear_install_dir;
04b387
-        $this->channelsdir = $pear_install_dir.$ds.'.channels';
04b387
-        $this->statedir    = $pear_install_dir.$ds.'.registry';
04b387
-        $this->filemap     = $pear_install_dir.$ds.'.filemap';
04b387
-        $this->lockfile    = $pear_install_dir.$ds.'.lock';
04b387
+        if (!$pear_metadata_dir) {
04b387
+            $pear_metadata_dir = $pear_install_dir;
04b387
+        }
04b387
+        $this->channelsdir = $pear_metadata_dir.$ds.'.channels';
04b387
+        $this->statedir    = $pear_metadata_dir.$ds.'.registry';
04b387
+        $this->filemap     = $pear_metadata_dir.$ds.'.filemap';
04b387
+        $this->lockfile    = $pear_metadata_dir.$ds.'.lock';
04b387
     }
04b387
 
04b387
     function hasWriteAccess()
04b387
@@ -181,7 +184,7 @@ class PEAR_Registry extends PEAR
04b387
     {
04b387
         $this->_config = &$config;
04b387
         if ($resetInstallDir) {
04b387
-            $this->setInstallDir($config->get('php_dir'));
04b387
+            $this->setInstallDir($config->get('php_dir'), $config->get('metadata_dir'));
04b387
         }
04b387
     }
04b387
 
04b387
@@ -328,9 +331,9 @@ class PEAR_Registry extends PEAR
04b387
                 $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config);
04b387
                 if (PEAR::isError($this->_dependencyDB)) {
04b387
                     // attempt to recover by removing the dep db
04b387
-                    if (file_exists($this->_config->get('php_dir', null, 'pear.php.net') .
04b387
+                    if (file_exists($this->_config->get('metadata_dir', null, 'pear.php.net') .
04b387
                         DIRECTORY_SEPARATOR . '.depdb')) {
04b387
-                        @unlink($this->_config->get('php_dir', null, 'pear.php.net') .
04b387
+                        @unlink($this->_config->get('metadata_dir', null, 'pear.php.net') .
04b387
                             DIRECTORY_SEPARATOR . '.depdb');
04b387
                     }
04b387
 
04b387
@@ -2328,4 +2331,4 @@ class PEAR_Registry extends PEAR
04b387
         }
04b387
         return $ret;
04b387
     }
04b387
-}
04b387
\ No newline at end of file
04b387
+}