--- go-pear.orig	2017-08-03 16:38:00 UTC
+++ go-pear
@@ -57,6 +57,8 @@ define('GO_PEAR_VER', '1.1.2');
 
 define('WIN32GUI', !WEBINSTALLER && WINDOWS && $sapi_name=='cli' && which('cscript'));
 
+$destdir = getenv('DESTDIR');
+
 /*
  * See bug #23069
  */
@@ -116,7 +118,7 @@ $bootstrap_pkgs = array( // uses URL like http://pear.
 );
 
 $installer_packages = array(
-    'PEAR',
+    'PEAR-stable',
     'Structures_Graph-stable',
     'Archive_Tar-stable',
     'Console_Getopt-stable',
@@ -250,7 +252,7 @@ if (WEBINSTALLER) {
     }
     // Anything past this step has something to do with the installation    
 }
-
+/*
 if (!WEBINSTALLER) {
     $tty = WINDOWS ? @fopen('\con', 'r') : @fopen('/dev/tty', 'r');
 
@@ -294,7 +296,7 @@ If you wish to abort, press Control-C now, or press En
         $http_proxy = $tmp;
     }
 }
-
+*/
 $origpwd = getcwd();
 
 $config_vars = array_keys($config_desc);
@@ -345,7 +347,7 @@ we strongly recommand to use it.
         break;
     }
 }
-
+/*
 while (!WEBINSTALLER) {
     print "
 Below is a suggested file layout for your new PEAR installation.  To
@@ -428,7 +430,7 @@ If you have a CLI (or CGI) php.exe available, we stron
         }
     }
 }
-
+*/
 ####
 # Installation stuff
 ####
@@ -488,7 +490,7 @@ full write access to this directory and the install di
             continue;
         }
 
-        $dir = $$var;
+        $dir = ($destdir ? $destdir : '').$$var;
         if (!@is_dir($dir)) {
             if (!mkdir_p($dir)) {
                 if (!WEBINSTALLER) {
@@ -561,7 +563,7 @@ if (WEBINSTALLER) {
         ob_start();
     }
 }
-
+/*
 if (!WEBINSTALLER) {
     $msg = "The following PEAR packages are bundled with PHP: " .
         implode(', ', array_keys($pfc_packages));
@@ -571,17 +573,19 @@ if (!WEBINSTALLER) {
     $install_optional_packages = array();
     print "\n";
 }
-
+*/
 ####
 # Download
 ####
 
+dl('xml.so');
+
 if (function_exists('set_include_path')) {
-   set_include_path($ptmp);
+   set_include_path($ptmp . PATH_SEPARATOR . "%%BUNDLEDIR%%");
 } else {
-   ini_set('include_path', $ptmp);
+   ini_set('include_path', $ptmp . PATH_SEPARATOR . "%%BUNDLEDIR%%");
 }
-
+/*
 if (!extension_loaded('zlib') && !WEBINSTALLER) { // In Web context we could be in multithread env which makes dl() end up with a fatal error.
     if (WINDOWS) {
         @dl('php_zlib.dll');
@@ -606,18 +610,19 @@ print "Loading zlib: ".($have_gzip ? 'ok' : 'failed').
 if (!$have_gzip) {
     print "Downloading uncompressed packages\n";
 };
-
+*/
 if ($install_pfc) {
     $to_install = array_merge($installer_packages, array_keys($pfc_packages));
 } else {
     $to_install = $installer_packages;
-
+/*
     // webinstaller allows to choose pfc packages individually
     foreach ($pfc_packages as $pkg => $desc) {
         if (in_array($pkg, $install_optional_packages)) {
             array_push($to_install, $pkg);
         }
     }
+*/
 }
 
 // gopear_bundle usage
@@ -645,19 +650,21 @@ displayHTMLProgress($progress = 5);
 
 // Bootstrap needed ?
 $nobootstrap = false;
+/*
 if (is_dir($php_dir)) {
     $nobootstrap = true;
     foreach ($bootstrap_files as $file => $url) {
         $nobootstrap &= is_file($php_dir.'/'.$file);
     }
 }
+*/
 
 if ($nobootstrap) {
     print('Using previously install ... ');
     if (function_exists('set_include_path')) {
-        set_include_path($php_dir);
+        set_include_path($php_dir . PATH_SEPARATOR . "%%BUNDLEDIR%%");
     } else {
-        ini_set('include_path', $php_dir);
+        ini_set('include_path', $php_dir . PATH_SEPARATOR . "%%BUNDLEDIR%%");
     }
     include_once 'PEAR.php';
     print "ok\n";
@@ -691,6 +698,7 @@ displayHTMLProgress($progress = 20);
 
 // Extract needed ?
 $noextract = false;
+/*
 if (is_dir($php_dir)) {
     $noextract = @include_once 'PEAR/Registry.php';
     
@@ -701,6 +709,7 @@ if (is_dir($php_dir)) {
         }
     }
 }
+*/
 
 if ($noextract) {
     print('Using previously installed installer ... ');
@@ -722,7 +731,7 @@ if ($noextract) {
         displayHTMLProgress($progress += round(19 / count($bootstrap_pkgs)));
 
         $fullpkg = substr($tarball, 0, strrpos($tarball, '.'));
-        $tar = &new Archive_Tar($tarball, $have_gzip);
+        $tar = new Archive_Tar($tarball, $have_gzip);
         if (!$tar->extractModify($ptmp, $fullpkg)) {
             bail("Extraction for $fullpkg failed!\n");
         }
@@ -747,13 +756,8 @@ include_once "PEAR/Config.php";
 include_once "PEAR/Command.php";
 include_once "PEAR/Registry.php";
 
-if (WEBINSTALLER || isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == 'local') {
-    $config = &PEAR_Config::singleton($prefix."/pear.conf", '');
-} else {
-    $config = &PEAR_Config::singleton();
-}
+$config = &PEAR_Config::singleton(($destdir ? $destdir : '').$prefix."/etc/pear.conf.sample", '');
 
-
 $config->set('preferred_state', 'stable');
 foreach ($config_vars as $var) {
     if (isset($$var) && $$var != '') {
@@ -765,7 +769,7 @@ $config->set('temp_dir', $temp_dir);
 $config->set('http_proxy', $http_proxy);
 $config->store();
 
-$registry = new PEAR_Registry($php_dir);
+$registry = new PEAR_Registry(($destdir ? $destdir : '').$php_dir);
 PEAR_Command::setFrontendType('CLI');
 
 PEAR::staticPushErrorHandling(PEAR_ERROR_DIE); //fail silently
@@ -787,6 +791,11 @@ foreach ($to_install as $pkg) {
     } else {
         $options = array('onlyreqdeps' => true);
     }
+    if ($destdir) {
+        $options['packagingroot'] = $destdir;
+        $options['force'] = true;
+        $options['nodeps'] = true;
+    }
     if ($registry->packageExists($pkg) || $registry->packageExists($pkg_basename)) {
         print(str_pad("Package: $pkg", max(50,9+strlen($pkg)+4), '.').' already installed ... ok'."\n");
         displayHTMLProgress($progress += round(50 / count($to_install)));
@@ -821,7 +830,7 @@ displayHTMLProgress($progress = 99);
 
 
 // Base installation finished
-
+/*
 ini_restore("include_path");
 
 if (!WEBINSTALLER) {
@@ -980,6 +989,7 @@ if ( WINDOWS ) {
 if (WINDOWS && !WEBINSTALLER) {
     win32CreateRegEnv();
 }
+*/
 // Set of functions following
 /**
  * Parse the given dirname
@@ -1134,7 +1144,7 @@ function which($program, $dont_search_in = false)
             if (!strlen($dir)) {
                 continue;
             }
-            if ($dir{strlen($dir) - 1} != '\\') {
+            if ($dir[strlen($dir) - 1] != '\\') {
                 $dir .= '\\';
             }
             $tmp = $dir . $program;
@@ -1418,19 +1428,17 @@ function detect_install_dirs($_prefix = null) {
         }
     } else {
         if ($_prefix === null) {
-            #$prefix    = dirname(PHP_BINDIR);
-            $prefix    = dirname(__FILE__);
+           $prefix    = '%%PREFIX%%';
         } else {
             $prefix = $_prefix;
         }
         $bin_dir   = '$prefix/bin';
-        #$php_dir   = '$prefix/share/pear';
-        $php_dir   = '$prefix/PEAR';
-        $doc_dir   = '$php_dir/docs';
+        $php_dir   = '$prefix/share/pear';
+        $doc_dir   = '$prefix/share/doc/pear';
         $data_dir  = '$php_dir/data';
         $test_dir  = '$php_dir/tests';
-        $temp_dir   = '$prefix/temp';
-
+  	$temp_dir   = '%%TMPDIR%%';
+/*
         // check if the user has installed PHP with PHP or GNU layout
         if (@is_dir("$prefix/lib/php/.registry")) {
             $php_dir = '$prefix/lib/php';
@@ -1442,6 +1450,7 @@ function detect_install_dirs($_prefix = null) {
         } elseif (@is_dir("$prefix/share/php/.registry")) {
             $php_dir = '$prefix/share/php';
         }
+*/
     }
 }
 
