pajoye          Fri Aug 18 12:44:27 2006 UTC

  Added files:                 (Branch: PHP_4_4)
    /php-src/pear       make-pear-bundle.php 

  Modified files:              
    /php-src/pear       go-pear-list.php 
  Log:
  - add this script to the 4.4 branche, may help...
  
  
http://cvs.php.net/viewvc.cgi/php-src/pear/go-pear-list.php?r1=1.12.2.3.2.4&r2=1.12.2.3.2.5&diff_format=u
Index: php-src/pear/go-pear-list.php
diff -u php-src/pear/go-pear-list.php:1.12.2.3.2.4 
php-src/pear/go-pear-list.php:1.12.2.3.2.5
--- php-src/pear/go-pear-list.php:1.12.2.3.2.4  Mon Aug 22 22:13:57 2005
+++ php-src/pear/go-pear-list.php       Fri Aug 18 12:44:27 2006
@@ -3,7 +3,7 @@
  * that will be used to create the PEAR folder
  * in the windows snapshot.
  * See win32/build/mkdist.php for more details
- * $Id: go-pear-list.php,v 1.12.2.3.2.4 2005/08/22 22:13:57 cellog Exp $
+ * $Id: go-pear-list.php,v 1.12.2.3.2.5 2006/08/18 12:44:27 pajoye Exp $
  */
 $packages  = array(
 // required packages for the installer
@@ -17,5 +17,3 @@
 "HTML_Template_IT"      =>    "1.1",
 "Net_UserAgent_Detect"  =>    "2.0.1",
 );
-
-?>

http://cvs.php.net/viewvc.cgi/php-src/pear/make-pear-bundle.php?view=markup&rev=1.1
Index: php-src/pear/make-pear-bundle.php
+++ php-src/pear/make-pear-bundle.php
#!/usr/bin/php
<?php # $Id: make-pear-bundle.php,v 1.1 2005/03/26 21:14:19 edink Exp $
/* piece together a windows pear distro */

if (!$argv[1] || !$argv[2]) {
        echo "Usage: {$argv[0]} dist_dir src_dir\n";
        exit(1);
}

$dist_dir = $argv[1];
$cvs_dir = $argv[2];

/* very light-weight function to extract a single named file from
 * a gzipped tarball.  This makes assumptions about the files
 * based on the PEAR info set in $packages. */
function extract_file_from_tarball($pkg, $filename, $dest_dir) /* {{{ */
{
        global $packages;

        $name = $pkg . '-' . $packages[$pkg];
        $tarball = $dest_dir . "/" . $name . '.tgz';
        $filename = $name . '/' . $filename;
        $destfilename = $dest_dir . "/" . basename($filename);

        $fp = gzopen($tarball, 'rb');

        $done = false;
        do {
                /* read the header */
                $hdr_data = gzread($fp, 512);
                if (strlen($hdr_data) == 0)
                        break;
                $checksum = 0;
                for ($i = 0; $i < 148; $i++)
                        $checksum += ord($hdr_data{$i});
                for ($i = 148; $i < 156; $i++)
                        $checksum += 32;
                for ($i = 156; $i < 512; $i++)
                        $checksum += ord($hdr_data{$i});

                $hdr = 
unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor",
 $hdr_data);

                $hdr['checksum'] = octdec(trim($hdr['checksum']));

                if ($hdr['checksum'] != $checksum) {
                        echo "Checksum for $tarball $hdr[filename] is 
invalid\n";
                        print_r($hdr);
                        return;
                }

                $hdr['size'] = octdec(trim($hdr['size']));
                echo "File: $hdr[filename] $hdr[size]\n";
                
                if ($filename == $hdr['filename']) {
                        echo "Found the file we want\n";
                        $dest = fopen($destfilename, 'wb');
                        $x = stream_copy_to_stream($fp, $dest, $hdr['size']);
                        fclose($dest);
                        echo "Wrote $x bytes into $destfilename\n";
                        break;
                }
                
                /* skip body of the file */
                $size = 512 * ceil((int)$hdr['size'] / 512);
                echo "Skipping $size bytes\n";
                gzseek($fp, gztell($fp) + $size);
                
        } while (!$done);
        
} /* }}} */

echo "Creating PEAR in $dist_dir\n";

/* Let's do a PEAR-less pear setup */
if (!file_exists($dist_dir)) {
    mkdir($dist_dir);
}
if (!file_exists($dist_dir)) {
    die("could not make $dist_dir");
}
mkdir("$dist_dir/PEAR");
mkdir("$dist_dir/PEAR/go-pear-bundle");
        
/* grab the bootstrap script */
echo "Downloading go-pear\n";
copy("http://go-pear.org/";, "$dist_dir/PEAR/go-pear.php");
echo "Downloading go-pear.bat\n";
copy("$cvs_dir/pear/go-pear.bat", "$dist_dir/go-pear.bat");

/* import the package list -- sets $packages variable */
include $cvs_dir . "/pear/go-pear-list.php";

/* download the packages into the destination */
echo "Fetching packages\n";

foreach ($packages as $name => $version) {
        $filename = "$name-$version.tgz";
        $destfilename = "$dist_dir/PEAR/go-pear-bundle/$filename";
        if (file_exists($destfilename))
                continue;
        $url = "http://pear.php.net/get/$filename";;
        echo "Downloading $name from $url\n";
        flush();
        copy($url, $destfilename);
}

echo "Download complete.  Extracting bootstrap files\n";

/* Now, we want PEAR.php, Getopt.php (Console_Getopt) and Tar.php (Archive_Tar)
 * broken out of the tarballs */
extract_file_from_tarball('PEAR', 'PEAR.php', "$dist_dir/PEAR/go-pear-bundle");
extract_file_from_tarball('Archive_Tar', 'Archive/Tar.php', 
"$dist_dir/PEAR/go-pear-bundle");
extract_file_from_tarball('Console_Getopt', 'Console/Getopt.php', 
"$dist_dir/PEAR/go-pear-bundle");
?>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to