Commit:    789ed34cbef5e3a9e0952f829ed17c2c33d0488e
Author:    Anatol Belski <[email protected]>         Fri, 30 Aug 2013 17:12:51 +0200
Parents:   ce71cbbb22052269a88205f74dba709aad30e24d
Branches:  master

Link:       
http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=789ed34cbef5e3a9e0952f829ed17c2c33d0488e

Log:
prepared to copy the ext binaries built

Changed paths:
  M  client/bin/pecl.bat
  M  client/include/PeclBuildVC.php
  M  client/include/PeclExt.php
  M  client/script/pecl.php


Diff:
diff --git a/client/bin/pecl.bat b/client/bin/pecl.bat
index bd6865b..12bb6e6 100644
--- a/client/bin/pecl.bat
+++ b/client/bin/pecl.bat
@@ -86,3 +86,4 @@ del c:\php-sdk\locks\pecl.lock >> %LOG_FILE% 2<&1
 
 :EXIT_LOCKED
 echo .
+
diff --git a/client/include/PeclBuildVC.php b/client/include/PeclBuildVC.php
index 78cc337..e4e670b 100644
--- a/client/include/PeclBuildVC.php
+++ b/client/include/PeclBuildVC.php
@@ -216,4 +216,9 @@ class PeclBuildVC {
        {
 
        }
+
+       function getObjDir()
+       {
+               return $this->obj_dir;
+       }
 }
diff --git a/client/include/PeclExt.php b/client/include/PeclExt.php
index e9ed08a..3a52520 100644
--- a/client/include/PeclExt.php
+++ b/client/include/PeclExt.php
@@ -13,6 +13,10 @@ class PeclExt
        protected $build;
        protected $tar_cmd = 'c:\apps\git\bin\tar.exe';
        protected $gzip_cmd = 'c:\apps\git\bin\gzip.exe';
+       protected $zip_cmd = 'c:\php-sdk\bin\zip.exe';
+       protected $tmp_extract = NULL;
+       protected $tmp_package_xml = NULL;
+       protected $ext_dir_in_src_path = NULL;
 
        public function __construct($tgz_path, $build)
        {
@@ -48,14 +52,13 @@ class PeclExt
 
        public function unpack()
        {
-               $tmp_path =  TMP_DIR . '/' . $this->getPackageName();
+               $tmp_path =  TMP_DIR . '/' . $this->getPackageName() . 
'-unpack';
                if (!file_exists($tmp_path) && !mkdir($tmp_path)) {
                        throw new \Exception("Couldn't create temporary dir");
                }
 
-
                $tmp_name =  $tmp_path . '/' . basename($this->tgz_path);
-               if (!rename($this->tgz_path, $tmp_name)) {
+               if (!copy($this->tgz_path, $tmp_name)) {
                        throw new \Exception("Couldn't move the tarball to 
'$tmp_name'");
                }
 
@@ -82,26 +85,65 @@ class PeclExt
 
                chdir($old_cwd);
 
-               $ret = realpath($tmp_path . '/' .  basename($this->tgz_path, 
'.tgz'));
+               $this->tmp_extract = realpath($tmp_path . '/' .  
basename($this->tgz_path, '.tgz'));
+
+               if (file_exists($tmp_path . DIRECTORY_SEPARATOR . 
'package.xml')) {
+                       $this->tmp_package_xml = $tmp_path . 
DIRECTORY_SEPARATOR . 'package.xml';
+               }
 
                $this->tgz_path = NULL;
 
-               return $ret;
+               return $this->tmp_extract;
        }
 
        public function putSourcesIntoBranch()
        {
-               $tmp_path = $this->unpack();
+               if (!$this->tmp_extract) {
+                       $this->tmp_extract = $this->unpack();
+               }
                $ext_dir = $this->build->getSourceDir() . DIRECTORY_SEPARATOR . 
'ext';
 
-               $this_ext_dir_path = $ext_dir . DIRECTORY_SEPARATOR . 
$this->name;
-               $res = copy_r($tmp_path, $this_ext_dir_path);
+               $this->ext_dir_in_src_path = $ext_dir . DIRECTORY_SEPARATOR . 
$this->name;
+               $res = copy_r($this->tmp_extract, $this->ext_dir_in_src_path);
                if (!$res) {
-                       throw new \Exception("Failed to copy to 
'$this_ext_dir_path'");
+                       throw new \Exception("Failed to copy to 
'{$this->ext_dir_in_src_path}'");
                }
-               rmdir_rf($tmp_path);
 
-               return $this_ext_dir_path;
+               return $this->ext_dir_in_src_path;
+       }
+
+       public function getConfigureLine()
+       {
+               /* XXX check if it's enable or with,
+                       what deps it has
+                       what additional options it has
+                       what non core exts it deps on 
+               */
+
+               $ret = '';
+
+               $ret = ' "--enable-' . $this->name . '=shared" ';
+
+
+               return $ret;
+       }
+
+       public function preparePackage()
+       {
+               /* XXX check if there are any dep dll/pdb to put together */
+               $sub = $this->build->thread_safe ? 'Release_TS' : 'Release';
+               $base = $this->build->getObjDir() . DIRECTORY_SEPARATOR . $sub;
+               $target = TMP_DIR . DIRECTORY_SEPARATOR . 
$this->getPackageName();
+
+               $dll_name = 'php_' . $this->name . '.dll';
+               if (!copy($base . DIRECTORY_SEPARATOR . $dll_name, $target . 
DIRECTORY_SEPARATOR . $dll_name)) {
+                       throw new \Exception("Couldn't copy '$dll_name' into 
'$target'");
+               }
+               
+               $pdb_name = 'php_' . $this->name . '.pdb';
+               if (!copy($base . DIRECTORY_SEPARATOR . $pdb_name, $target . 
DIRECTORY_SEPARATOR . $pdb_name)) {
+                       throw new \Exception("Couldn't copy '$pdb_name' into 
'$target'");
+               }
        }
 
        public function __call($name, $args)
@@ -117,4 +159,29 @@ class PeclExt
 
                throw new \Exception("Unknown dynamic method called");
        }
+
+       public function cleanup()
+       {
+               if ($this->tmp_extract) {
+                       rmdir_rf(dirname($this->tmp_extract));
+               }
+               /*if ($this->tmp_package_xml) {
+                       unlink($this->tmp_package_xml);
+               }*/
+               if ($this->ext_dir_in_src_path) {
+                       rmdir_rf($this->ext_dir_in_src_path);
+               }
+       }
+
+       public function check()
+       {
+               if (!$this->tmp_extract) {
+                       throw new \Exception("Tarball isn't yet extracted");
+               }
+
+               if (!file_exists($this->tmp_extract . DIRECTORY_SEPARATOR . 
'config.w32')) {
+                       throw new \Exception("config.w32 not found");
+               }
+       }
 }
+
diff --git a/client/script/pecl.php b/client/script/pecl.php
index 98e775e..4124b9c 100644
--- a/client/script/pecl.php
+++ b/client/script/pecl.php
@@ -32,7 +32,6 @@ if (!is_dir($build_dir_parent)) {
 
 $builds = $branch->getBuildList('windows');
 
-$has_build_errors = false;
 $build_errors = array();
 
 /* Each windows configuration from the ini for the given PHP version will be 
built */
@@ -67,37 +66,59 @@ foreach ($builds as $build_name) {
 
        try {
                $build->setSourceDir($build_src_path);
-               $ext->putSourcesIntoBranch();exit();
+
+               $ext->unpack();
+               $ext->check();
+               $ext->putSourcesIntoBranch();
+
+       } catch (Exception $e) {
+               echo $e->getMessage() . "\n";
+               $ext->cleanup();
+               exit(3);
+       }
+
+       try {
                $build->buildconf();
                if ($branch->config->getPGO() == 1)  {
                        echo "Creating PGI build\n";
-                       $build->configure(' "--enable-pgi" ');
+                       $build->configure(' "--enable-pgi" ' . 
$ext->getConfigureLine());
                }
                else {
-                       $build->configure();
+                       $build->configure($ext->getConfigureLine());
                }
                $build->make();
                $html_make_log = $build->getMakeLogParsed();
-               //$build->makeArchive();
        } catch (Exception $e) {
                echo $e->getMessage() . "\n";
                echo $build->log_buildconf;
        }
-       continue;
 
        /* PGO stuff would come here */
 
-       /*$stats = $build->getStats();
+       $log_base = $toupload_dir . '/logs';
+       file_put_contents($log_base . '/buildconf-' . $ext->getPackageName() . 
'.txt', $build->log_buildconf);
+       file_put_contents($log_base . '/configure-' . $ext->getPackageName() . 
'.txt', $build->log_configure);
+       file_put_contents($log_base . '/make-' . $ext->getPackageName() . 
'.txt', $build->log_make);
+
+       $stats = $build->getStats();
 
        if ($stats['error'] > 0) {
-               $has_build_errors = true;
+               file_put_contents($log_base . '/error-' . 
$ext->getPackageName() . '.txt', $build->compiler_log_parser->getErrors());
+       }
+
+       try {
+               $ext->preparePackage();
+       } catch (Exception $e) {
+               echo $e->getMessage() . "\n";
        }
 
-       rm\upload_build_result_ftp_curl($toupload_dir, $branch_name . '/r' . 
$last_rev);*/
+       /*rm\upload_build_result_ftp_curl($toupload_dir, $branch_name . '/r' . 
$last_rev);*/
+
        $build->clean();
-       //rmdir($build_src_path);
+       $ext->cleanup();
 }
 
+
 /*Upload the branch DB */
 /*$try = 0;
 do {


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to