com web/rmtools: implemented packaging the "doc" files: client/include/PeclExt.php client/script/pecl.php
| From: | Anatol Belski | Date: | Thu, 10 Oct 2013 14:38:47 +0000 |
| Subject: | com web/rmtools: implemented packaging the "doc" files: client/include/PeclExt.php client/script/pecl.php | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-19122@lists.php.net to get a copy of this message | ||
Commit: 06011f14f67a6c4fd66d7232a791289d46432dbf
Author: Anatol Belski <ab@php.net> Thu, 10 Oct 2013 16:38:47 +0200
Parents: 6b5e1892c4e30814d34164cc2560d6018987b671
Branches: master
Link: http://git.php.net/?p=web/rmtools.git;a=commitdiff;h=06011f14f67a6c4fd66d7232a791289d46432dbf
Log:
implemented packaging the "doc" files
this actually replaces any search for LICENSE
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 f492885..0ddc2b9 100644
--- a/client/include/PeclExt.php
+++ b/client/include/PeclExt.php
@@ -530,6 +530,7 @@ if (!function_exists('rmtools\combinations')) {
return $this->buildConfigureLine($config);
}
+ /* No errors here, the license presence should be done by PECL site */
public function prepareLicenseSimple($source, $target, $suffix = NULL)
{
$ret = array();
@@ -717,17 +718,71 @@ if (!function_exists('rmtools\combinations')) {
}
/* care about extension license */
- $files_to_zip = array_merge(
+ /* lack of license s not an error for us, this has to be checked on pecl pkg upload */
+ /* The ext license will be copied based on the info from package.xml, but let these lines stay */
+ /*$files_to_zip = array_merge(
$files_to_zip,
$this->prepareExtLicense($this->tmp_extract_path, $target, "php." .
$this->name)
- );
+ );*/
+
+ /* care about the files marked as "doc" in the package.xml */
+ $dirs = $this->getPackageXmlProperty("contents", "dir");
+ if ($dirs) {
+ $root = NULL;
+ foreach ($dirs as $dir) {
+ if (isset($dir["name"]) && "/" == (string)$dir["name"]) {
+ $root = $dir;
+ break;
+ }
+ }
+
+ if (!$root || !isset($root->file)) {
+ goto nodoc;
+ }
+
+ foreach ($root->file as $file) {
+ if (!isset($file["role"]) || "doc" != (string)$file["role"]) {
+ continue;
+ }
+
+ if (!isset($file["name"])) {
+ continue;
+ }
+
+ $src_fl = $this->tmp_extract_path
+ . DIRECTORY_SEPARATOR
+ . (string)$file["name"];
+
+ if (!file_exists($src_fl)) {
+ continue;
+ }
+
+ $tgt_fl = $target
+ . DIRECTORY_SEPARATOR
+ . basename((string)$file["name"]);
+
+ /* this could already done while checking license */
+ if (in_array($tgt_fl, $files_to_zip)) {
+ continue;
+ }
+
+ if (!copy($src_fl, $tgt_fl)) {
+ /* XXX actually it's not fatal, lets observe */
+ throw new \Exception("Failed to copy doc file '$src_fl' "
+ . "from the distribution into '$tgt_fl'");
+ }
+
+ $files_to_zip[] = $tgt_fl;
+ }
+ }
+nodoc:
/* pack */
$zip_file = TMP_DIR . DIRECTORY_SEPARATOR . $this->getPackageName() . '.zip';
$zip_cmd = $this->zip_cmd . ' -9 -D -j ' . $zip_file . ' ' .
implode(' ', $files_to_zip);
system($zip_cmd, $status);
if ($status) {
- throw new \Exception("Couldn't zip files for $zip_file");
+ throw new \Exception("Couldn't zip files for '$zip_file'");
}
return $zip_file;
diff --git a/client/script/pecl.php b/client/script/pecl.php
index 0c68e15..bf6cefa 100644
--- a/client/script/pecl.php
+++ b/client/script/pecl.php
@@ -171,7 +171,9 @@ foreach ($builds as $build_name) {
}
$build->clean();
- $ext->cleanup();
+ if (isset($ext)) {
+ $ext->cleanup();
+ }
$was_errors = true;
unset($ext);