本文整理汇总了PHP中PhpBrew\Config::getVersionBuildLogPath方法的典型用法代码示例。如果您正苦于以下问题:PHP Config::getVersionBuildLogPath方法的具体用法?PHP Config::getVersionBuildLogPath怎么用?PHP Config::getVersionBuildLogPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhpBrew\Config
的用法示例。
在下文中一共展示了Config::getVersionBuildLogPath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: configure
public function configure(Build $build, $options)
{
$root = Config::getPhpbrewRoot();
$buildDir = Config::getBuildDir();
$variantBuilder = new VariantBuilder();
$extra = $build->getExtraOptions();
if (!file_exists('configure')) {
$this->debug("configure file not found, running buildconf script...");
system('./buildconf') !== false or die('buildconf error');
}
$prefix = $build->getInstallPrefix();
// append cflags
if ($this->optimizationLevel) {
$o = $this->optimizationLevel;
$cflags = getenv('CFLAGS');
putenv("CFLAGS={$cflags} -O{$o}");
$_ENV['CFLAGS'] = "{$cflags} -O{$o}";
}
$args = array();
$args[] = "--prefix=" . $prefix;
$args[] = "--with-config-file-path={$prefix}/etc";
$args[] = "--with-config-file-scan-dir={$prefix}/var/db";
$args[] = "--with-pear={$prefix}/lib/php";
$variantOptions = $variantBuilder->build($build);
if ($variantOptions) {
$args = array_merge($args, $variantOptions);
}
$this->debug('Enabled variants: ' . join(', ', array_keys($build->getVariants())));
$this->debug('Disabled variants: ' . join(', ', array_keys($build->getDisabledVariants())));
foreach ((array) $options->patch as $patchPath) {
// copy patch file to here
$this->info("===> Applying patch file from {$patchPath} ...");
// Search for strip parameter
for ($i = 0; $i <= 16; $i++) {
ob_start();
system("patch -p{$i} --dry-run < {$patchPath}", $return);
ob_clean();
if ($return === 0) {
system("patch -p{$i} < {$patchPath}");
break;
}
}
}
// let's apply patch for libphp{php version}.so (apxs)
if ($build->isEnabledVariant('apxs2')) {
$apxs2Checker = new \PhpBrew\Tasks\Apxs2CheckTask($this->logger);
$apxs2Checker->check($build, $options);
$apxs2Patch = new \PhpBrew\Tasks\Apxs2PatchTask($this->logger);
$apxs2Patch->patch($build, $options);
}
foreach ($extra as $a) {
$args[] = $a;
}
$cmd = new CommandBuilder('./configure');
$cmd->args($args);
$this->info("===> Configuring {$build->version}...");
$cmd->append = false;
$cmd->stdout = Config::getVersionBuildLogPath($build->name);
echo "\n\n";
echo "Use tail command to see what's going on:\n";
echo " \$ tail -f {$cmd->stdout}\n\n\n";
$this->debug($cmd->getCommand());
if ($options->nice) {
$cmd->nice($options->nice);
}
if (!$options->dryrun) {
$cmd->execute() !== false or die('Configure failed.');
}
$patch64bit = new \PhpBrew\Tasks\Patch64BitSupportTask($this->logger, $options);
$patch64bit->patch($build, $options);
}
示例2: execute
public function execute($version)
{
if (!preg_match('/^php-/', $version)) {
$version = 'php-' . $version;
}
$version = $this->getLatestMinorVersion($version, $this->options->old);
$options = $this->options;
$logger = $this->logger;
// get options and variants for building php
$args = func_get_args();
// the first argument is the target version.
array_shift($args);
$name = $this->options->name ?: $version;
// find inherited variants
$inheritedVariants = array();
if ($this->options->like) {
$inheritedVariants = VariantParser::getInheritedVariants($this->options->like);
}
// ['extra_options'] => the extra options to be passed to ./configure command
// ['enabled_variants'] => enabeld variants
// ['disabled_variants'] => disabled variants
$variantInfo = VariantParser::parseCommandArguments($args, $inheritedVariants);
$info = PhpSource::getVersionInfo($version, $this->options->old);
if (!$info) {
throw new Exception("Version {$version} not found.");
}
$prepare = new PrepareDirectoryTask($this->logger);
$prepare->prepareForVersion($version);
// convert patch to realpath
if ($this->options->patch) {
$patchPaths = array();
foreach ($this->options->patch as $patch) {
/** @var \SplFileInfo $patch */
$patchPath = realpath($patch);
if ($patchPath !== false) {
$patchPaths[(string) $patch] = $patchPath;
}
}
// rewrite patch paths
$this->options->keys['patch']->value = $patchPaths;
}
// Move to to build directory, because we are going to download distribution.
$buildDir = Config::getBuildDir();
chdir($buildDir);
$download = new DownloadTask($this->logger);
$targetDir = $download->downloadByVersionString($version, $this->options->old, $this->options->force);
if (!file_exists($targetDir)) {
throw new Exception("Download failed.");
}
// Change directory to the downloaded source directory.
chdir($targetDir);
$buildPrefix = Config::getVersionBuildPrefix($version);
if (!file_exists($buildPrefix)) {
mkdir($buildPrefix, 0755, true);
}
// write variants info.
$variantInfoFile = $buildPrefix . DIRECTORY_SEPARATOR . 'phpbrew.variants';
$this->logger->debug("Writing variant info to {$variantInfoFile}");
file_put_contents($variantInfoFile, serialize($variantInfo));
// The build object, contains the information to build php.
$build = new Build($version, $name, $buildPrefix);
$build->setInstallPrefix($buildPrefix);
$build->setSourceDirectory($targetDir);
$builder = new Builder($targetDir, $version);
$builder->logger = $this->logger;
$builder->options = $this->options;
$this->logger->debug('Build Directory: ' . realpath($targetDir));
foreach ($variantInfo['enabled_variants'] as $name => $value) {
$build->enableVariant($name, $value);
}
foreach ($variantInfo['disabled_variants'] as $name => $value) {
$build->disableVariant($name);
if ($build->hasVariant($name)) {
$this->logger->warn("Removing variant {$name} since we've disabled it from command.");
$build->removeVariant($name);
}
}
$build->setExtraOptions($variantInfo['extra_options']);
if ($options->clean) {
$clean = new CleanTask($this->logger);
$clean->cleanByVersion($version);
}
$buildLogFile = Config::getVersionBuildLogPath($version);
$configure = new \PhpBrew\Tasks\ConfigureTask($this->logger);
$configure->configure($build, $this->options);
$buildTask = new BuildTask($this->logger);
$buildTask->setLogPath($buildLogFile);
$buildTask->build($build, $this->options);
if ($options->{'test'}) {
$test = new TestTask($this->logger);
$test->setLogPath($buildLogFile);
$test->test($build, $this->options);
}
$install = new InstallTask($this->logger);
$install->setLogPath($buildLogFile);
$install->install($build, $this->options);
if ($options->{'post-clean'}) {
$clean = new CleanTask($this->logger);
$clean->cleanByVersion($version);
}
//.........这里部分代码省略.........