From 8b7efa3deb0215c2af0de4a990dc97be952f7f53 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Thu, 30 Jul 2015 17:37:28 +0200 Subject: [PATCH] now we're brave! --- .travis.yml | 86 +++++++++++++------------------- gen_travis_yml.php | 36 ++++++++++++++ tests/_setup.inc | 2 +- tests/lob001.phpt | 4 +- tests/lob002.phpt | 4 +- tests/lob004.phpt | 6 +-- travis/pecl/Makefile | 97 +++++++++++++++++++++++++++++++++++++ travis/pecl/gen-matrix.php | 26 ++++++++++ travis/pecl/php-version.php | 10 ++++ 9 files changed, 211 insertions(+), 60 deletions(-) create mode 100755 gen_travis_yml.php create mode 100644 travis/pecl/Makefile create mode 100644 travis/pecl/gen-matrix.php create mode 100644 travis/pecl/php-version.php diff --git a/.travis.yml b/.travis.yml index 2843f3c..0f5f740 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,62 +1,44 @@ # autogenerated file; do not edit language: c -env: - global: - - BUILD_SRC_DIR=/src - - BUILD_INSTALL_DIR=/install - - PHP_EXTENSIONS="--enable-json --with-mhash" - - PG_TEST_DB_NAME=pq_test - - PG_TEST_DB_USER=postgres - - REPORT_EXIT_STATUS=1 +addons: + postgresql: 9.4 -matrix: - include: - - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-debug" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-maintainer-zts" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.4" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-debug" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-maintainer-zts" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.5" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-debug" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-maintainer-zts" - addons: - postgresql: 9.4 - - env: PHP_TARGET_REF="PHP-5.6" PHP_CONFIGURE_OPTS="--enable-debug --enable-maintainer-zts" - addons: - postgresql: 9.4 +env: + global: + - PQ_DSN="postgres://postgres@localhost/test" + matrix: + - PHP=5.4 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.5 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.6 enable_debug=no enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.4 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.5 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.6 enable_debug=yes enable_maintainer_zts=no enable_json=no enable_hash=yes + - PHP=5.4 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.5 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.6 enable_debug=no enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.4 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.5 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.6 enable_debug=yes enable_maintainer_zts=yes enable_json=no enable_hash=yes + - PHP=5.4 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.5 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.6 enable_debug=no enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.4 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.5 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.6 enable_debug=yes enable_maintainer_zts=no enable_json=yes enable_hash=yes + - PHP=5.4 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes + - PHP=5.5 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes + - PHP=5.6 enable_debug=no enable_maintainer_zts=yes enable_json=yes enable_hash=yes + - PHP=5.4 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes + - PHP=5.5 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes + - PHP=5.6 enable_debug=yes enable_maintainer_zts=yes enable_json=yes enable_hash=yes before_script: - - ./travis/compile-php.sh - - ./travis/compile-ext-raphf.sh - - ./travis/compile-ext-pq.sh - - ./travis/configure-postgres.sh - - $HOME$BUILD_INSTALL_DIR/bin/php --ri pq + - make -f travis/pecl/Makefile php + - make -f travis/pecl/Makefile pecl PECL=raphf + - make -f travis/pecl/Makefile ext PECL=pq script: - - $HOME$BUILD_INSTALL_DIR/bin/php ./run-tests.php -q -p $HOME$BUILD_INSTALL_DIR/bin/php --show-diff + - make -f travis/pecl/Makefile test sudo: false diff --git a/gen_travis_yml.php b/gen_travis_yml.php new file mode 100755 index 0000000..8473159 --- /dev/null +++ b/gen_travis_yml.php @@ -0,0 +1,36 @@ +#!/usr/bin/env php +# autogenerated file; do not edit +language: c + +addons: + postgresql: 9.4 + +env: + global: + - PQ_DSN="postgres://postgres@localhost/test" + matrix: + ["5.4", "5.5", "5.6"], + "enable_debug", + "enable_maintainer_zts", + "enable_json", + "enable_hash" => ["yes"], +]); +foreach ($env as $e) { + printf(" - %s\n", $e); +} + +?> + +before_script: + - make -f travis/pecl/Makefile php + - make -f travis/pecl/Makefile pecl PECL=raphf + - make -f travis/pecl/Makefile ext PECL=pq + +script: + - make -f travis/pecl/Makefile test + +sudo: false diff --git a/tests/_setup.inc b/tests/_setup.inc index d4b5c11..53a17e3 100644 --- a/tests/_setup.inc +++ b/tests/_setup.inc @@ -1,2 +1,2 @@ tell()); $lob->seek(0, SEEK_SET); $dat = $lob->read(filesize(__FILE__)); -var_dump(hash("md5", $dat)==hash_file("md5", __FILE__)); +var_dump(md5($dat)===md5_file(__FILE__)); $lob->truncate(5); @@ -35,7 +35,7 @@ DONE --EXPECTF-- Test bool(true) -int(489) +int(474) bool(true) string(5) "%c?php" DONE diff --git a/tests/lob002.phpt b/tests/lob002.phpt index e2fd056..3625d89 100644 --- a/tests/lob002.phpt +++ b/tests/lob002.phpt @@ -17,7 +17,7 @@ var_dump(ftell($lob->stream)); fseek($lob->stream, 0, SEEK_SET); $dat = fread($lob->stream, filesize(__FILE__)); -var_dump(hash("md5", $dat)==hash_file("md5", __FILE__)); +var_dump(md5($dat)===md5_file(__FILE__)); ftruncate($lob->stream, 5); @@ -31,7 +31,7 @@ $t->unlinkLOB($lob->oid); DONE --EXPECTF-- Test -int(503) +int(488) bool(true) Warning: ftruncate(): Can't truncate this stream! in %s on line %d diff --git a/tests/lob004.phpt b/tests/lob004.phpt index df0d385..bfa4a57 100644 --- a/tests/lob004.phpt +++ b/tests/lob004.phpt @@ -2,8 +2,8 @@ large object import/export --SKIPIF-- ---CLEANUP-- -rm lob004.tmp +--CLEAN-- + --FILE-- importLOB(__FILE__); var_dump($oid); $t->exportLOB($oid, "lob004.tmp"); -var_dump(hash_file("md5",__FILE__)===hash_file("md5","lob004.tmp")); +var_dump(md5_file(__FILE__)===md5_file("lob004.tmp")); ?> DONE diff --git a/travis/pecl/Makefile b/travis/pecl/Makefile new file mode 100644 index 0000000..a338a5d --- /dev/null +++ b/travis/pecl/Makefile @@ -0,0 +1,97 @@ +export + +PHP = 5.6 +JOBS ?= 2 +PHP_MIRROR ?= http://us1.php.net/distributions/ + +prefix ?= $(HOME) +exec_prefix ?= $(prefix) +bindir = $(exec_prefix)/bin +srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))) + +enable_maintainer_zts ?= no +enable_debug ?= no +enable_all ?= no +with_config_file_scan_dir ?= $(prefix)/etc/php.d + +with_php_config ?= $(bindir)/php-config +extdir = $(shell $(with_php_config) --extension-dir 2>/dev/null) + +PECL_MIRROR ?= http://pecl.php.net/get/ +PECL_EXTENSION ?= $(shell cut -d: -f1 <<<"$(PECL)") +PECL_SONAME ?= $(if $(shell cut -d: -f2 <<<"$(PECL)"),$(shell cut -d: -f2 <<<"$(PECL)"),$(PECL_EXTENSION)) +PECL_VERSION ?= $(shell cut -d: -f3 -s <<<"$(PECL)") +PECL_INI = $(with_config_file_scan_dir)/pecl.ini + +PHP_VERSION ?= $(shell php $(srcdir)/php-version.php $(PHP) < php-versions.json) + +.PHONY: all php check clean reconf pecl ext test +.SUFFIXES: + +all: php + +## -- PHP + +clean: + @if test -d $(srcdir)/php-$(PHP_VERSION); then cd $(srcdir)/php-$(PHP_VERSION); make distclean || true; done + +check: $(srcdir)/php-versions.json + @if test -z "$(PHP)"; then echo "No php version specified, e.g. PHP=5.6"; exit 1; fi + +reconf: check $(srcdir)/php-$(PHP_VERSION)/configure + cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix) + +php: check $(bindir)/php + +$(srcdir)/php-versions.json: $(srcdir)/php-version.php + curl -Sso $@ http://php.net/releases/active.php + +$(srcdir)/php-$(PHP_VERSION)/configure: | $(srcdir)/php-versions.json + curl -Ss $(PHP_MIRROR)/php-$(PHP_VERSION).tar.bz2 | tar xj -C $(srcdir) + +$(srcdir)/php-$(PHP_VERSION)/Makefile: $(srcdir)/php-$(PHP_VERSION)/configure | $(srcdir)/php-versions.json + cd $(srcdir)/php-$(PHP_VERSION) && ./configure -C --prefix=$(prefix) + +$(srcdir)/php-$(PHP_VERSION)/sapi/cli/php: $(srcdir)/php-$(PHP_VERSION)/Makefile | $(srcdir)/php-versions.json + cd $(srcdir)/php-$(PHP_VERSION) && make -s -j $(JOBS) V=0 || make + +$(bindir)/php: $(srcdir)/php-$(PHP_VERSION)/sapi/cli/php | $(srcdir)/php-versions.json + cd $(srcdir)/php-$(PHP_VERSION) && make -s install V=0 + +$(with_config_file_scan_dir): + mkdir -p $@ + +## -- PECL + +pecl-check: + @if test -z "$(PECL)"; then echo "No pecl extension specified, e.g. PECL=pecl_http:http"; exit 1; fi + +$(PECL_INI): | $(with_config_file_scan_dir) + touch $@ + +$(srcdir)/pecl-$(PECL_EXTENSION): + test -e $@ || ln -s $(CURDIR) $@ + +$(srcdir)/pecl-$(PECL_EXTENSION)/config.m4: + mkdir -p $(srcdir)/pecl-$(PECL_EXTENSION) + curl -Ss $(PECL_MIRROR)/$(PECL_EXTENSION)$(if $(PECL_VERSION),/$(PECL_VERSION)) | tar xz --strip-components 1 -C $(srcdir)/pecl-$(PECL_EXTENSION) + +$(srcdir)/pecl-$(PECL_EXTENSION)/configure: $(srcdir)/pecl-$(PECL_EXTENSION)/config.m4 + cd $(srcdir)/pecl-$(PECL_EXTENSION) && $(bindir)/phpize + +$(srcdir)/pecl-$(PECL_EXTENSION)/Makefile: $(srcdir)/pecl-$(PECL_EXTENSION)/configure + cd $(srcdir)/pecl-$(PECL_EXTENSION) && ./configure -C + +$(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/Makefile + cd $(srcdir)/pecl-$(PECL_EXTENSION) && make -s -j $(JOBS) V=0 || make + +$(extdir)/$(PECL_SONAME).so: $(srcdir)/pecl-$(PECL_EXTENSION)/.libs/$(PECL_SONAME).so + cd $(srcdir)/pecl-$(PECL_EXTENSION) && make -s install V=0 + +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 + +test: php + REPORT_EXIT_STATUS=1 NO_INTERACTION=1 $(bindir)/php run-tests.php -p $(bindir)/php --show-diff tests diff --git a/travis/pecl/gen-matrix.php b/travis/pecl/gen-matrix.php new file mode 100644 index 0000000..90e0011 --- /dev/null +++ b/travis/pecl/gen-matrix.php @@ -0,0 +1,26 @@ + $values) { + if (is_numeric($key) && is_string($values)) { + $key = $values; + $values = ["no","yes"]; + } + if (empty($apc)) { + // seed + foreach ($values as $val) { + $apc[] = "$key=$val"; + } + } else { + // combine + $cpc = $apc; + $apc = []; + foreach ($values as $val) { + foreach ($cpc as $e) { + $apc[] = "$e $key=$val"; + } + } + } + } + return $apc; +}; diff --git a/travis/pecl/php-version.php b/travis/pecl/php-version.php new file mode 100644 index 0000000..761f09a --- /dev/null +++ b/travis/pecl/php-version.php @@ -0,0 +1,10 @@ +