cvs: php4 /pear package-PEAR.xml package.dtd /pear/PEAR Common.php /pear/PEAR/Command Build.php

From: Date: Mon, 27 May 2002 01:20:13 +0000
Subject: cvs: php4 /pear package-PEAR.xml package.dtd /pear/PEAR Common.php /pear/PEAR/Command Build.php
Groups: php.pear.cvs 
Request: Send a blank email to pear-cvs+get-4126@lists.php.net to get a copy of this message
ssb Sun May 26 21:20:13 2002 EDT Added files: /php4/pear/PEAR/Command Build.php Modified files: /php4/pear package-PEAR.xml package.dtd /php4/pear/PEAR Common.php Log: * first shot at "pear build" command for building extensions from C code

Index: php4/pear/package-PEAR.xml diff -u php4/pear/package-PEAR.xml:1.8 php4/pear/package-PEAR.xml:1.9 --- php4/pear/package-PEAR.xml:1.8 Sun May 26 14:06:04 2002 +++ php4/pear/package-PEAR.xml Sun May 26 21:20:04 2002 @@ -35,6 +35,11 @@ <state>beta</state> <date>YYYY-MM-DD</date> <notes> +* fixed broken "help" command +* new command: "info" +* new command: "config-help" +* un-indent multi-line data from xml description files +* new command: "build" </notes> <filelist> <file role="data" name="package.dtd"/> @@ -45,6 +50,7 @@ <file role="php" name="Command.php"/> <dir name="Command"> <file role="php" name="Auth.php"/> + <file role="php" name="Build.php"/> <file role="php" name="Common.php"/> <file role="php" name="Config.php"/> <file role="php" name="Install.php"/> Index: php4/pear/package.dtd diff -u php4/pear/package.dtd:1.24 php4/pear/package.dtd:1.25 --- php4/pear/package.dtd:1.24 Sun Apr 28 03:58:41 2002 +++ php4/pear/package.dtd Sun May 26 21:20:07 2002 @@ -1,5 +1,5 @@ <!-- - $Id: package.dtd,v 1.24 2002/04/28 07:58:41 ssb Exp $ + $Id: package.dtd,v 1.25 2002/05/27 01:20:07 ssb Exp $ This is the PEAR package description, version 1.0b7. It should be used with the informal public identifier: @@ -43,7 +43,7 @@ <!ELEMENT changelog (release)+> -<!ELEMENT release (version|license|state|date|notes|filelist|deps|provides|script)+> +<!ELEMENT release (version|license|state|date|notes|filelist|deps|provides|script|configureoptions)+> <!ELEMENT version (#PCDATA)> @@ -60,9 +60,11 @@ baseinstalldir CDATA #IMPLIED> <!ELEMENT file (replace*)> -<!ATTLIST file role (php|ext|test|doc|data|script) 'php' +<!ATTLIST file role (php|ext|src|test|doc|data|script) 'php' debug (na|on|off) 'na' - threaded (na|on|off) 'na' + zts (na|on|off) 'na' + phpapi NUMBER #IMPLIED + zendapi NUMBER #IMPLIED format CDATA #IMPLIED baseinstalldir CDATA #IMPLIED platform CDATA #IMPLIED @@ -103,3 +105,11 @@ pre-build |post-build | pre-configure|post-configure| pre-setup |post-setup ) #REQUIRED> + +<!ELEMENT configureoptions (configureoption*)> + +<!ELEMENT configureoption EMPTY> +<!ATTLIST configureoption + name CDATA #REQUIRED + default CDATA #IMPLIED + prompt CDATA #REQUIRED> Index: php4/pear/PEAR/Common.php diff -u php4/pear/PEAR/Common.php:1.65 php4/pear/PEAR/Common.php:1.66 --- php4/pear/PEAR/Common.php:1.65 Sun May 26 19:38:22 2002 +++ php4/pear/PEAR/Common.php Sun May 26 21:20:08 2002 @@ -17,7 +17,7 @@ // | Tomas V.V.Cox <cox@idecnet.com> | // +----------------------------------------------------------------------+ // -// $Id: Common.php,v 1.65 2002/05/26 23:38:22 ssb Exp $ +// $Id: Common.php,v 1.66 2002/05/27 01:20:08 ssb Exp $ require_once 'PEAR.php'; require_once 'Archive/Tar.php'; @@ -61,7 +61,7 @@ * Valid file roles * @var array */ -$GLOBALS['_PEAR_Common_file_roles'] = array('php','ext','test','doc','data','extsrc','script'); +$GLOBALS['_PEAR_Common_file_roles'] = array('php','ext','test','doc','data','src','script'); /** * Valid replacement types @@ -446,6 +446,16 @@ $this->pkginfo['release_deps'][$this->d_i] = $attribs; } break; + case 'configureoptions': + if (!$this->in_changelog) { + $this->pkginfo['configure_options'] = array(); + } + break; + case 'configureoption': + if (!$this->in_changelog) { + $this->pkginfo['configure_options'][] = $attribs; + } + break; } } @@ -868,6 +878,19 @@ } $ret .= "$indent </deps>\n"; } + if (isset($pkginfo['configure_options'])) { + $ret .= "$indent <configureoptions>\n"; + foreach ($pkginfo['configure_options'] as $c) { + $ret .= "$indent <configureoption name=\"". + htmlspecialchars($c['name']) . "\""; + if (isset($c['default'])) { + $ret .= " default=\"" . htmlspecialchars($c['default']) . "\""; + } + $ret .= " prompt=\"" . htmlspecialchars($c['prompt']) . "\""; + $ret .= "/>\n"; + } + $ret .= "$indent </configureoptions>\n"; + } if (isset($pkginfo['filelist'])) { $ret .= "$indent <filelist>\n"; foreach ($pkginfo['filelist'] as $file => $fa) { @@ -1034,6 +1057,17 @@ $errors[] = "dependency $i: missing name"; } $i++; + } + } + if (!empty($info['configure_options'])) { + $i = 1; + foreach ($info['configure_options'] as $c) { + if (empty($c['name'])) { + $errors[] = "configure option $i: missing name"; + } + if (empty($c['prompt'])) { + $errors[] = "configure option $i: missing prompt"; + } } } if (empty($info['filelist'])) { Index: php4/pear/PEAR/Command/Build.php +++ php4/pear/PEAR/Command/Build.php <?php // // +----------------------------------------------------------------------+ // | PHP Version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.02 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Author: Stig Bakken <ssb@fast.no> | // | Tomas V.V.Cox <cox@idecnet.com> | // | | // +----------------------------------------------------------------------+ // // $Id: Build.php,v 1.1 2002/05/27 01:20:10 ssb Exp $ require_once "PEAR/Command/Common.php"; /** * PEAR commands for building extensions. * */ class PEAR_Command_Build extends PEAR_Command_Common { var $commands = array( 'build' => array( 'summary' => 'Build an Extension From C Source', 'function' => 'doBuild', 'shortcut' => 'b', 'options' => array(), 'doc' => '[package.xml] Builds one or more extensions contained in a package.' ), ); /** * PEAR_Command_Build constructor. * * @access public */ function PEAR_Command_Build(&$ui, &$config) { parent::PEAR_Command_Common($ui, $config); } function doBuild($command, $options, $params) { if (sizeof($params) < 1) { $params[0] = 'package.xml'; } $obj = &new PEAR_Common(); if (PEAR::isError($info = $obj->infoFromAny($params[0]))) { return $info; } $configure_command = "./configure"; if (isset($info['configure_options'])) { foreach ($info['configure_options'] as $o) { $r = $this->ui->userDialog($o['prompt'], 'text', @$o['default']); if ($r == 'yes' && substr($o['name'], 0, 5) == 'with-') { $configure_command .= " --$o[name]"; } else { $configure_command .= " --$o[name]=$r"; } } } if (isset($_ENV['MAKE'])) { $make_command = $_ENV['MAKE']; } else { $make_command = 'make'; } $to_run = array( "phpize", $configure_command, $make_command, ); foreach ($to_run as $cmd) { if (PEAR::isError($err = $this->_runCommand($cmd))) { return $err; } } return true; } function _runCommand($command) { $pp = @popen($command, "r"); if (!$pp) { return $this->raiseError("failed to run `$command'"); } while ($line = fgets($pp, 1024)) { $this->ui->displayLine(rtrim($line)); } pclose($pp); } }
« previous php.pear.cvs (#4126) next »