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);
}