Commit: e9e65b6fc5294fcf65c4176dac249a53b65edc27 Author: Anatol Belski <[email protected]> Tue, 1 Oct 2013 09:58:48 +0200 Parents: 2c2853af16306e57f77898f7c8f6ee35ea511b0e Branches: master
Link: http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=e9e65b6fc5294fcf65c4176dac249a53b65edc27 Log: support xz and bz2 tarballs Changed paths: M client/include/PeclExt.php M client/script/pecl.php Diff: diff --git a/client/include/PeclExt.php b/client/include/PeclExt.php index 140fbca..5ac8b1e 100644 --- a/client/include/PeclExt.php +++ b/client/include/PeclExt.php @@ -15,6 +15,8 @@ class PeclExt protected $build; protected $tar_cmd = 'c:\apps\git\bin\tar.exe'; protected $gzip_cmd = 'c:\apps\git\bin\gzip.exe'; + protected $bzip2_cmd = 'c:\apps\git\bin\bzip2.exe'; + protected $xz_cmd = 'c:\apps\xzutils\xz.exe'; protected $zip_cmd = 'c:\php-sdk\bin\zip.exe'; protected $unzip_cmd = 'c:\php-sdk\bin\unzip.exe'; protected $deplister_cmd = 'c:\apps\bin\deplister.exe'; @@ -37,6 +39,18 @@ class PeclExt } else if ('.tar.gz' == substr($pkg_path, -7)) { $this->pkg_basename = basename($pkg_path, '.tar.gz'); $this->pkg_comp = 'tgz'; + } else if ('.tbz' == substr($pkg_path, -4)) { + $this->pkg_basename = basename($pkg_path, '.tbz'); + $this->pkg_comp = 'tbz'; + } else if ('.tar.bz2' == substr($pkg_path, -8)) { + $this->pkg_basename = basename($pkg_path, '.tar.bz2'); + $this->pkg_comp = 'tbz'; + } else if ('.txz' == substr($pkg_path, -4)) { + $this->pkg_basename = basename($pkg_path, '.txz'); + $this->pkg_comp = 'txz'; + } else if ('.tar.xz' == substr($pkg_path, -7)) { + $this->pkg_basename = basename($pkg_path, '.tar.xz'); + $this->pkg_comp = 'txz'; } else if ('.zip' == substr($pkg_path, -4)) { $this->pkg_basename = basename($pkg_path, '.zip'); $this->pkg_comp = 'zip'; @@ -122,7 +136,7 @@ class PeclExt . '-' . $this->build->architecture; } - public function uncompressTgz() + protected function createTmpUnpackDir() { $tmp_path = tempnam(TMP_DIR, 'pecl'); unlink($tmp_path); @@ -130,6 +144,13 @@ class PeclExt throw new \Exception("Couldn't create temporary dir"); } + return $tmp_path; + } + + public function uncompressTarball($format) + { + $tmp_path = $this->createTmpUnpackDir(); + $tmp_name = $tmp_path . DIRECTORY_SEPARATOR . basename($this->pkg_path); if (!copy($this->pkg_path, $tmp_name)) { throw new \Exception("Couldn't copy the tarball to '$tmp_name'"); @@ -143,16 +164,35 @@ class PeclExt chdir($tmp_path); - $gzip_cmd = $this->gzip_cmd . ' -df ' . escapeshellarg(basename($this->pkg_path)); - system($gzip_cmd, $ret); + switch ($format) { + case 'tgz': + $uncmd = $this->gzip_cmd; + $unopts = "-df"; + break; + + case 'tbz': + $uncmd = $this->bzip2_cmd; + $unopts = "-df"; + break; + + case 'txz': + $uncmd = $this->xz_cmd; + $unopts = "-df"; + break; + + default: + throw new \Exception("Unsupported compression format '$format'"); + } + $uncompress_cmd = $uncmd . ' ' . $unopts . ' ' . escapeshellarg(basename($this->pkg_path)); + system($uncompress_cmd, $ret); if ($ret) { - throw new \Exception("Failed to guzip the tarball"); + throw new \Exception("Failed to gunzip the tarball"); } $tar_cmd = $this->tar_cmd . ' -xf ' . escapeshellarg($tar_name); system($tar_cmd, $ret); if ($ret) { - throw new \Exception("Failed to guzip the tarball"); + throw new \Exception("Failed to untar the tarball"); } unlink($tar_name); @@ -163,11 +203,7 @@ class PeclExt public function uncompressZip() { - $tmp_path = tempnam(TMP_DIR, 'pecl'); - unlink($tmp_path); - if (!file_exists($tmp_path) && !mkdir($tmp_path)) { - throw new \Exception("Couldn't create temporary dir"); - } + $tmp_path = $this->createTmpUnpackDir(); $unzip_cmd = $this->unzip_cmd . ' ' . escapeshellarg($this->pkg_path) . ' -d ' . $tmp_path; system($unzip_cmd, $ret); @@ -182,7 +218,7 @@ class PeclExt { switch ($this->pkg_comp) { case 'tgz': - $tmp_path = $this->uncompressTgz(); + $tmp_path = $this->uncompressTarball($this->pkg_comp); break; case 'zip': @@ -190,7 +226,7 @@ class PeclExt break; default: - throw new \Exception("Unsupported compression"); + throw new \Exception("Unsupported package format"); } /* XXX what if we would look for subdirs containing config.w32? The subdir diff --git a/client/script/pecl.php b/client/script/pecl.php index 992b9ae..9bbfa32 100644 --- a/client/script/pecl.php +++ b/client/script/pecl.php @@ -149,6 +149,7 @@ foreach ($builds as $build_name) { if (!$aggregate_mail) { echo "Mailing info to <$maintainer_mailto>" . PHP_EOL; } + /* Not initialized yet, so no ->getPackageName() */ if ($mailer) { $mailer->xmail( MAIL_FROM, @@ -169,6 +170,7 @@ foreach ($builds as $build_name) { } $build->clean(); + $ext->cleanup(); $was_errors = true; unset($ext); -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
