com web/rmtools: prepared for uploads: client/bin/pecl.bat client/data/config/credentials_ftps.php-dist client/inclu de/PeclExt.php
client/include/Tools.php client/script/p ecl.php
| From: | Stephen A. Zarkos | Date: | Mon, 09 Sep 2013 09:49:39 +0000 |
| Subject: | com web/rmtools: prepared for uploads: client/bin/pecl.bat client/data/config/credentials_ftps.php-dist client/inclu de/PeclExt.php client/include/Tools.php client/script/p ecl.php |
||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-16711@lists.php.net to get a copy of this message | ||
Commit: dc11dd60386737a00a69bea763ec006077e23a2b
Author: Anatol Belski <ab@php.net> Mon, 9 Sep 2013 11:49:39 +0200
Parents: c715de3de9e6cfd77c575b8e39de0c66015824a7
Branches: master
Link: http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=dc11dd60386737a00a69bea763ec006077e23a2b
Log:
prepared for uploads
Changed paths:
M client/bin/pecl.bat
M client/data/config/credentials_ftps.php-dist
M client/include/PeclExt.php
M client/include/Tools.php
M client/script/pecl.php
Diff:
diff --git a/client/bin/pecl.bat b/client/bin/pecl.bat
index 9049072..fe48593 100644
--- a/client/bin/pecl.bat
+++ b/client/bin/pecl.bat
@@ -74,10 +74,10 @@ SET VC11_X64_SHELL=%comspec% /k ""C:\Program Files (x86)\Microsoft
Visual Studio
REM Run pecl.php
SET BISON_SIMPLE=c:\php-sdk\bin\bison.simple
rem XXX iterate the c:\pecl_in_pkg here and delete the packages after successful build
-c:\php-sdk\php\php.exe %BAT_DIR%\..\script\pecl.php --config=pecl55_x64
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
-c:\php-sdk\php\php.exe %BAT_DIR%\..\script\pecl.php --config=pecl55_x86
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
-c:\php-sdk\php\php.exe %BAT_DIR%\..\script\pecl.php --config=pecl54
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
-c:\php-sdk\php\php.exe %BAT_DIR%\..\script\pecl.php --config=pecl53
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
+c:\php-sdk\php\php.exe -d extension_dir=c:\php-sdk\php\ext -d extension=php_openssl.dll -d
extension=php_curl.dll %BAT_DIR%\..\script\pecl.php --config=pecl55_x64
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
+c:\php-sdk\php\php.exe -d extension_dir=c:\php-sdk\php\ext -d extension=php_openssl.dll -d
extension=php_curl.dll %BAT_DIR%\..\script\pecl.php --config=pecl55_x86
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
+c:\php-sdk\php\php.exe -d extension_dir=c:\php-sdk\php\ext -d extension=php_openssl.dll -d
extension=php_curl.dll %BAT_DIR%\..\script\pecl.php --config=pecl54
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
+c:\php-sdk\php\php.exe -d extension_dir=c:\php-sdk\php\ext -d extension=php_openssl.dll -d
extension=php_curl.dll %BAT_DIR%\..\script\pecl.php --config=pecl53
--package=C:\pecl_in_pkg\amqp-1.2.0.tgz
SET PATH=%OLD_PATH%
echo Done.>> %LOG_FILE%
diff --git a/client/data/config/credentials_ftps.php-dist
b/client/data/config/credentials_ftps.php-dist
index fc0faca..be07478 100644
--- a/client/data/config/credentials_ftps.php-dist
+++ b/client/data/config/credentials_ftps.php-dist
@@ -1,4 +1,5 @@
<?php
$ftp_server = 'ftp.example.com';
$user_snaps = 'johndoe';
+$user_downloads = 'johndoe';
$password = '123456';
diff --git a/client/include/PeclExt.php b/client/include/PeclExt.php
index 83c3f5c..e1f9e20 100644
--- a/client/include/PeclExt.php
+++ b/client/include/PeclExt.php
@@ -47,7 +47,7 @@ class PeclExt
$this->version = !$this->version ?: $tmp[1];
if (!$this->name || !$this->version) {
- throw new \Exception("Couldn't parse extension name or version from the
filename");
+ throw new \Exception("Couldn't parse extension name or version neither from
package.xml nor from the filename");
}
}
@@ -415,5 +415,6 @@ class PeclExt
// $to is ext lead from package.xml
//xmail($from, $to, $subject, $text, $logs);
}
+
}
diff --git a/client/include/Tools.php b/client/include/Tools.php
index 3ea98b2..f3bbb53 100644
--- a/client/include/Tools.php
+++ b/client/include/Tools.php
@@ -370,3 +370,103 @@ function xmail($from, $to, $subject, $text, array $attachment = array())
return mail($to, $subject, implode("\r\n", $mail), implode("\r\n", $header));
}
+function upload_pecl_pkg_ftp_curl($files, $target)
+{
+ include __DIR__ . '/../data/config/credentials_ftps.php';
+
+ $ftp = ftp_connect($ftp_server);
+ if (!$ftp) {
+ echo "Cannot connect to $ftp_server\n";
+ return false;
+ }
+ $login_result = ftp_login($ftp, $user_downloads, $password);
+ if (!$login_result) {
+ return false;
+ }
+
+ $try = 0;
+ do {
+ $status = ftp_make_directory($ftp, $target);
+ $try++;
+ } while ( $status === false && $try < 10 );
+ ftp_close($ftp);
+
+ $curl = array();
+
+ $ftp_path = $target;
+ $ftp_user = $user_downloads;
+ $ftp_password = $password;
+
+ if ($ftp_path[0] != '/') {
+ $ftp_path = '/' . $ftp_path;
+ }
+ $mh = \curl_multi_init();
+
+ //$files = glob($src_dir . '/*.{zip,json}', GLOB_BRACE);
+ $files = is_array($files) ? $u : array($files);
+ foreach ($files as $i => $local_file) {
+
+ $curl[$i] = $ch = \curl_init();
+ $fp = fopen($local_file, "rb");
+ $local_file = basename($local_file);
+
+ $remoteurl =
"ftps://${ftp_user}:${ftp_password}@${ftp_server}${ftp_path}/${local_file}";
+
+ \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+ \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+ \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+ \curl_setopt($ch, CURLOPT_INFILE, $fp);
+ \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . $ftp_password);
+
+ \curl_multi_add_handle ($mh, $ch);
+ }
+
+ /*$files = glob($src_dir . '/logs/*.*');
+ $offset = $i + 1;
+ foreach ($files as $i => $local_file) {
+
+ $ch = $curl[$offset + $i] = \curl_init();
+ $fp = fopen($local_file, "rb");
+ $local_file = basename($local_file);
+
+ $remoteurl =
"ftps://${ftp_user}:${ftp_password}@${ftp_server}${ftp_path}/logs/${local_file}";
+
+ \curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
+ \curl_setopt($ch, CURLOPT_URL, $remoteurl);
+ \curl_setopt($ch, CURLOPT_UPLOAD, 1);
+ \curl_setopt($ch, CURLOPT_INFILE, $fp);
+ \curl_setopt($ch , CURLOPT_USERPWD, $ftp_user . ':' . $ftp_password);
+
+ \curl_multi_add_handle ($mh, $ch);
+ }*/
+
+ $retry = 0;
+ do {
+ $err = 0;
+ do {
+ \curl_multi_exec($mh,$active);
+ $info = curl_multi_info_read($mh);
+ if ($info !== false) {
+ curl_multi_remove_handle($mh, $info['handle']);
+ if ($info['result'] != 0) {
+ $err = 1;
+// echo curl_getinfo($info['handle'], CURLINFO_EFFECTIVE_URL) . "\n";
+// echo curl_error($info['handle']) . "\n\n";
+ curl_multi_add_handle($mh, $info['handle']);
+ }
+ }
+ } while ($active);
+ $retry++;
+ } while ($err != 0 && $retry < 10);
+
+ foreach ($curl as $ch) {
+ \curl_multi_remove_handle($mh, $ch);
+ if (\curl_errno($ch) != 0) {
+ echo \curl_error($ch) .. "\n";
+ }
+ \curl_close($ch);
+ }
+ //\curl_multi_close($mh);
+ return true;
+}
+
diff --git a/client/script/pecl.php b/client/script/pecl.php
index 28e328a..cb32e00 100644
--- a/client/script/pecl.php
+++ b/client/script/pecl.php
@@ -152,8 +152,18 @@ foreach ($builds as $build_name) {
$build_error++;
}
- /*rm\upload_build_result_ftp_curl($toupload_dir, $branch_name . '/r' . $last_rev);*/
+ if ($upload) {
+ echo "Uploading '$pkg_file'\n";
+ /* XXX check if the path will be correct with the login */
+ $target = '/pecl/releases/' . $ext->getName() . '/' .
$ext->getVersion();
+ if (rm\upload_pecl_pkg_ftp_curl($pkg_file, $target)) {
+ echo "upload success\n";
+ } else {
+ echo "upload failed\n";
+ }
+ }
+ echo "Mailing logs";
try {
$ext->mailLogs(
array(