summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStig Bakken <ssb@php.net>2001-08-28 11:18:08 +0000
committerStig Bakken <ssb@php.net>2001-08-28 11:18:08 +0000
commit36c27603b153aedc5bcc36e504fff6164a41158f (patch)
treef1ffd5c32df450acb1b4e341bfb160af947cccd6
parentb392fe4497049e490712bd28079c51e056770f96 (diff)
downloadphp-git-36c27603b153aedc5bcc36e504fff6164a41158f.tar.gz
* started work on php file support
-rw-r--r--pear/scripts/pearize.in83
1 files changed, 69 insertions, 14 deletions
diff --git a/pear/scripts/pearize.in b/pear/scripts/pearize.in
index 48ff2d257e..5c971a985e 100644
--- a/pear/scripts/pearize.in
+++ b/pear/scripts/pearize.in
@@ -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":