compareVersion() public method

public compareVersion ( $version )
Beispiel #1
0
 public function run(Build $build, $variantOptions)
 {
     $extra = $build->getExtraOptions();
     $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();
     if (!$this->options->{'no-config-cache'}) {
         // $args[] = "-C"; // project wise cache (--config-cache)
         $args[] = '--cache-file=' . escapeshellarg(Config::getCacheDir() . DIRECTORY_SEPARATOR . 'config.cache');
     }
     $args[] = '--prefix=' . $prefix;
     if ($this->options->{'user-config'}) {
         $args[] = "--with-config-file-path={$prefix}/etc";
         $args[] = "--with-config-file-scan-dir={$prefix}/var/db";
     } else {
         $args[] = "--with-config-file-path={$prefix}/etc";
         $args[] = "--with-config-file-scan-dir={$prefix}/var/db";
     }
     if ($variantOptions) {
         $args = array_merge($args, $variantOptions);
     }
     $this->debug('Enabled variants: [' . implode(', ', array_keys($build->getVariants())) . ']');
     $this->debug('Disabled variants: [' . implode(', ', array_keys($build->getDisabledVariants())) . ']');
     // todo: move to pear variant
     $args[] = "--with-pear={$prefix}/lib/php";
     // Options for specific versions
     // todo: extract to BuildPlan class: PHP53 BuildPlan, PHP54 BuildPlan, PHP55 BuildPlan ?
     if ($build->compareVersion('5.4') == -1) {
         // copied from https://github.com/Homebrew/homebrew-php/blob/master/Formula/php53.rb
         $args[] = '--enable-sqlite-utf8';
         $args[] = '--enable-zend-multibyte';
     } elseif ($build->compareVersion('5.6') == -1) {
         $args[] = '--enable-zend-signals';
     }
     foreach ($extra as $a) {
         $args[] = $a;
     }
     $cmd = new CommandBuilder('./configure');
     $cmd->args($args);
     $buildLogPath = $build->getBuildLogPath();
     if (file_exists($buildLogPath)) {
         $newPath = $buildLogPath . '.' . filemtime($buildLogPath);
         $this->info("Found existing build.log, renaming it to {$newPath}");
         rename($buildLogPath, $newPath);
     }
     $this->info("===> Configuring {$build->version}...");
     $cmd->setAppendLog(true);
     $cmd->setLogPath($buildLogPath);
     $cmd->setStdout($this->options->{'stdout'});
     if (!$this->options->{'stdout'}) {
         $this->logger->info("\n");
         $this->logger->info("Use tail command to see what's going on:");
         $this->logger->info("   \$ tail -F {$buildLogPath}\n\n");
     }
     $this->debug($cmd->buildCommand());
     if ($this->options->nice) {
         $cmd->nice($this->options->nice);
     }
     if (!$this->options->dryrun) {
         $code = $cmd->execute($lastline);
         if ($code !== 0) {
             throw new SystemCommandException("Configure failed: {$lastline}", $build, $buildLogPath);
         }
     }
     $build->setState(Build::STATE_CONFIGURE);
 }
Beispiel #2
0
 /**
  * Build variants to configure options from php build object.
  *
  * @param Build $build The build object, contains version information
  *
  * @return array|void
  *
  * @throws \Exception
  */
 public function build(Build $build)
 {
     $customVirtualVariants = Config::getConfigParam('variants');
     foreach (array_keys($build->getVariants()) as $variantName) {
         if (isset($customVirtualVariants[$variantName])) {
             foreach ($customVirtualVariants[$variantName] as $lib => $params) {
                 if (is_array($params)) {
                     $this->variants[$lib] = $params;
                 }
             }
         }
     }
     // reset builtList
     $this->builtList = array();
     // reset built options
     if ($build->hasVariant('all') || $build->hasVariant('neutral')) {
         $this->options = array();
     } else {
         // build common options
         $this->options = array('--disable-all', '--enable-phar', '--enable-session', '--enable-short-tags', '--enable-tokenizer', '--with-pcre-regex');
         if ($prefix = Utils::findIncludePrefix('zlib.h')) {
             $this->addOptions('--with-zlib=' . $prefix);
         }
     }
     if ($prefix = Utils::findLibPrefix('x86_64-linux-gnu')) {
         $this->addOptions('--with-libdir=lib/x86_64-linux-gnu');
     } elseif ($prefix = Utils::findLibPrefix('i386-linux-gnu')) {
         $this->addOptions('--with-libdir=lib/i386-linux-gnu');
     }
     if ($build->compareVersion('5.6') >= 0) {
         $build->enableVariant('opcache');
     }
     // enable/expand virtual variants
     foreach ($this->virtualVariants as $name => $variantNames) {
         if ($build->isEnabledVariant($name)) {
             foreach ($variantNames as $subVariantName) {
                 // enable the sub-variant only if it's not already enabled
                 // in order to not override a non-default value with the default
                 if (!$build->isEnabledVariant($subVariantName)) {
                     $build->enableVariant($subVariantName);
                 }
             }
             // it's a virtual variant, can not be built by buildVariant
             // method.
             $build->removeVariant($name);
         }
     }
     // Remove these enabled variant for disabled variants.
     $build->resolveVariants();
     // before we build these options from variants,
     // we need to check the enabled and disabled variants
     $this->checkConflicts($build);
     foreach ($build->getVariants() as $feature => $userValue) {
         if ($options = $this->buildVariant($build, $feature, $userValue)) {
             $this->addOptions($options);
         }
     }
     foreach ($build->getDisabledVariants() as $feature => $true) {
         if ($options = $this->buildDisableVariant($build, $feature)) {
             $this->addOptions($options);
         }
     }
     /*
     $opts = array_merge( $opts ,
         $this->getVersionSpecificOptions($version) );
     */
     $options = array_merge(array(), $this->options);
     // reset options
     $this->options = array();
     return $options;
 }