package.xml checker
authorMichael Wallner <mike@php.net>
Fri, 31 Jul 2015 11:51:28 +0000 (13:51 +0200)
committerMichael Wallner <mike@php.net>
Fri, 31 Jul 2015 11:51:28 +0000 (13:51 +0200)
Makefile
check-packagexml.php [new file with mode: 0755]
php-version.php [changed mode: 0644->0755]

index 20bcbbcf45f8ffe0efcb40305f7675d7bc9c8bf5..54ae0bb35138f374e981cf1de7ff7563d790bb07 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,7 @@ PECL_SONAME ?= $(if $(shell echo $(PECL) | cut -d: -f2),$(shell echo $(PECL) | c
 PECL_VERSION ?= $(shell echo $(PECL) | cut -d: -f3 -s)
 PECL_INI = $(with_config_file_scan_dir)/pecl.ini
 
-PHP_VERSION ?= $(shell test -e $(srcdir)/php-versions.json && cat $(srcdir)/php-versions.json | /usr/bin/php $(srcdir)/php-version.php $(PHP))
+PHP_VERSION ?= $(shell test -e $(srcdir)/php-versions.json && cat $(srcdir)/php-versions.json | $(srcdir)/php-version.php $(PHP))
 
 .PHONY: all php check clean reconf pecl ext test
 .SUFFIXES:
@@ -44,7 +44,7 @@ reconf: check $(srcdir)/php-$(PHP_VERSION)/configure
 php: check $(bindir)/php
 
 $(srcdir)/php-versions.json: $(srcdir)/php-version.php
-       curl -Sso $@ http://php.net/releases/active.php
+       curl -Sso $@ "http://php.net/releases/index.php?json&version=5&max=-1"
 
 $(srcdir)/php-$(PHP_VERSION)/configure: | $(srcdir)/php-versions.json
        curl -Ss $(PHP_MIRROR)/php-$(PHP_VERSION).tar.bz2 | tar xj -C $(srcdir)
@@ -92,6 +92,7 @@ pecl: pecl-check php $(extdir)/$(PECL_SONAME).so | $(PECL_INI)
        grep -q extension=$(PECL_SONAME).so $(PECL_INI) || echo extension=$(PECL_SONAME).so >> $(PECL_INI)
 
 ext: pecl-check $(srcdir)/pecl-$(PECL_EXTENSION) pecl
+       $(srcdir)/check-packagexml.php package.xml
 
 test: php
        REPORT_EXIT_STATUS=1 NO_INTERACTION=1 $(bindir)/php run-tests.php -p $(bindir)/php --show-diff tests
diff --git a/check-packagexml.php b/check-packagexml.php
new file mode 100755 (executable)
index 0000000..d53a44e
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/env php
+<?php
+
+error_reporting(E_ALL & ~(E_DEPRECATED|E_STRICT));
+
+if ($argc < 2) {
+       fprintf(STDERR, "Usage: %s <path/to/package.xml>\n", $argv[0]);
+       exit(1);
+}
+
+require_once "PEAR/Config.php";
+require_once "PEAR/PackageFile.php";
+
+define("PACKAGE_XML", $argv[1]);
+define("PACKAGE_DIR", dirname(PACKAGE_XML));
+
+$factory = new PEAR_PackageFile(PEAR_Config::singleton());
+$pf = $factory->fromPackageFile($argv[1], PEAR_VALIDATE_NORMAL);
+
+if (PEAR::isError($pf)) {
+       fprintf(STDERR, "ERROR: %s\n", $pf->getMessage());
+       exit(1);
+}
+
+foreach ($pf->getValidationWarnings() as $warning) {
+       fprintf(STDERR, "%s: %s\n", strtoupper($warning["level"]), $warning["message"]);
+}
+
+$exit = 0;
+foreach ($pf->getFilelist() as $file => $attr) {
+       if (!file_exists(PACKAGE_DIR."/".$file)) {
+               $exit++;
+               fprintf(STDERR, "File '%s' with role '%s' not found in '%s'\n", 
+                       $file, $attr["role"], PACKAGE_DIR);
+       }
+}
+
+if ($exit) {
+       fprintf(STDERR, "%3d failure(s)\n", $exit);
+       exit(1);
+}
old mode 100644 (file)
new mode 100755 (executable)
index 0df642e..593b579
@@ -1,3 +1,4 @@
+#!/usr/bin/env php
 <?php 
 
 $version = $argv[1];