]> granicus.if.org Git - php/commitdiff
* started work on php file support
authorStig Bakken <ssb@php.net>
Tue, 28 Aug 2001 11:18:08 +0000 (11:18 +0000)
committerStig Bakken <ssb@php.net>
Tue, 28 Aug 2001 11:18:08 +0000 (11:18 +0000)
pear/scripts/pearize.in

index 48ff2d257e104313255c328cf907f5362bb5ca9e..5c971a985ec6fb6243e355fcc535b02577910ba1 100644 (file)
@@ -1,12 +1,14 @@
 #!@prefix@/bin/php -Cq
 <?php // -*- PHP -*-
 
-main($argc, $argv, $HTTP_ENV_VARS);
+main($argc, $argv, $_ENV);
 
 // {{{ main()
 
 function main(&$argc, &$argv, &$env)
 {
+       global $debug;
+       $debug = false;
        $file = check_options($argc, $argv, $env);
        parse_package_file($file);
        make_makefile_in($env);
@@ -15,11 +17,30 @@ function main(&$argc, &$argv, &$env)
 // }}}
 // {{{ check_options()
 
-function check_options(&$argc, &$argv, &$env)
+function check_options($argc, $argv, $env)
 {
-       $file = $argv[1];
+       global $debug;
+       array_shift($argv);
+       while ($argv[0]{0} == '-' && $argv[0] != '-') {
+               $opt = array_shift($argv);
+               switch ($opt) {
+                       case '--': {
+                               break 2;
+                       }
+                       case '-d': {
+                               $debug = true;
+                               break;
+                       }
+                       default: {
+                               die("pearize: unrecognized option `$opt'\n");
+                       }
+               }
+       }
+       $file = array_shift($argv);
        if (empty($file)) {
                $file = "package.xml";
+       } elseif ($file == '-') {
+               $file = "php://stdin";
        }
        return $file;
 }
@@ -29,14 +50,16 @@ function check_options(&$argc, &$argv, &$env)
 
 function make_makefile_in(&$env)
 {
-       global $libdata;
-       if (sizeof($libdata) == 0) {
-               exit;
-       } elseif (sizeof($libdata) > 1) {
+       global $libdata, $debug;
+       if (sizeof($libdata) > 1) {
                die("No support yet for multiple libraries in one package.\n");
        }
 
-       $wp = @fopen("Makefile.in", "w");
+       if ($debug) {
+               $wp = fopen("php://stdout", "w");
+       } else {
+               $wp = @fopen("Makefile.in", "w");
+       }
        if (is_resource($wp)) {
                print "Creating Makefile.in...";
                flush();
@@ -44,17 +67,22 @@ function make_makefile_in(&$env)
                die("Could not create Makefile.in in current directory.\n");
        }
 
+       $who = $env["USER"];
+       $when = gmdate('Y-m-d h:i');
+       fwrite($wp, "# This file was generated by `pearize' by $who at $when GMT\n\n");
+
        foreach ($libdata as $lib => $info) {
                extract($info);
-               $_who = $env["USER"];
-               $_when = gmdate('Y-m-d h:i');
-               fwrite($wp, "# This file was generated by `pearize' by $_who at $_when GMT
+               fwrite($wp, "\
 INCLUDES                               = $includes
 LTLIBRARY_NAME                 = lib{$lib}.la
 LTLIBRARY_SOURCES              = $sources
 LTLIBRARY_SHARED_NAME  = {$lib}.la
 LTLIBRARY_SHARED_LIBADD = $libadd
 ");
+       }
+
+       if (sizeof($libdata) > 0) {
                fwrite($wp, "include \$(top_srcdir)/build/dynlib.mk\n");
        }
        fclose($wp);
@@ -67,12 +95,15 @@ LTLIBRARY_SHARED_LIBADD = $libadd
 function parse_package_file($file)
 {
        global $in_file, $curlib, $curelem, $libdata, $cdata;
+       global $currinstalldir, $baseinstalldir;
        
        $in_file = false;
        $curlib = '';
        $curelem = '';
        $libdata = array();
        $cdata = array();
+       $baseinstalldir = array();
+       $currinstalldir = array();
        
        $xp = xml_parser_create();
        xml_set_element_handler($xp, "start_handler", "end_handler");
@@ -94,10 +125,13 @@ function parse_package_file($file)
 
 function start_handler($xp, $elem, $attrs)
 {
-       global $cdata, $in_file, $curelem;
+       global $cdata, $in_file, $curelem, $curfile, $filerole;
+       global $baseinstalldir, $currinstalldir;
        switch ($elem) {
                case "FILE": {
-                       switch ($attrs['ROLE']) {
+                       $curfile = '';
+                       $filerole = $attrs['ROLE'];
+                       switch ($filerole) {
                                case "ext": {
                                        $in_file = true;
                                        $cdata = array();
@@ -109,6 +143,17 @@ function start_handler($xp, $elem, $attrs)
                        }
                        break;
                }
+               case "DIR": {
+                       $cdir = $currinstalldir[sizeof($currinstalldir)-1];
+                       $bdir = $baseinstalldir[sizeof($baseinstalldir)-1];
+                       array_push($currinstalldir, "$cdir/{$attrs[NAME]}");
+                       if (isset($attrs["BASEINSTALLDIR"])) {
+                               array_push($baseinstalldir, "$bdir/{$attrs[BASEINSTALLDIR]}");
+                       } else {
+                               array_push($baseinstalldir, $bdir);
+                       }
+                       break;
+               }
                case "INCLUDES":
                case "LIBNAME":
                case "LIBADD":
@@ -125,6 +170,7 @@ function start_handler($xp, $elem, $attrs)
 function end_handler($xp, $elem)
 {
        global $in_file, $curlib, $curelem, $libdata, $cdata;
+       global $baseinstalldir, $currinstalldir;
        switch ($elem) {
                case "FILE": {
                        if ($in_file === true) {
@@ -138,6 +184,11 @@ function end_handler($xp, $elem)
                        }
                        break;
                }
+               case "DIR": {
+                       array_pop($currinstalldir);
+                       array_pop($baseinstalldir);
+                       break;
+               }
        }
 }
 
@@ -146,8 +197,12 @@ function end_handler($xp, $elem)
 
 function cdata_handler($xp, $data)
 {
-       global $curelem, $cdata;
+       global $curelem, $cdata, $curfile;
        switch ($curelem) {
+               case "FILE": {
+                       $curfile .= $data;
+                       break;
+               }
                case "INCLUDES":
                case "LIBADD":
                case "LIBNAME":