From 3f32c9f45f15e329d1751cdb58cd411a3a5adfcd Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Thu, 30 Jul 2015 20:49:32 +0200 Subject: [PATCH] split off ext-pq --- LICENSE | 22 +++++++++++ Makefile | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ gen-matrix.php | 26 +++++++++++++ php-version.php | 10 +++++ 4 files changed, 155 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 gen-matrix.php create mode 100644 php-version.php diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..34859a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2015, Michael Wallner . +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..201d530 --- /dev/null +++ b/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 test -x $(with_php_config) && $(with_php_config) --extension-dir) + +PECL_MIRROR ?= http://pecl.php.net/get/ +PECL_EXTENSION ?= $(shell echo $(PECL) | cut -d: -f1) +PECL_SONAME ?= $(if $(shell echo $(PECL) | cut -d: -f2),$(shell echo $(PECL) | cut -d: -f2),$(PECL_EXTENSION)) +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)) + +.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/gen-matrix.php b/gen-matrix.php new file mode 100644 index 0000000..90e0011 --- /dev/null +++ b/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/php-version.php b/php-version.php new file mode 100644 index 0000000..761f09a --- /dev/null +++ b/php-version.php @@ -0,0 +1,10 @@ +