From f29d569cd33a73da5ad675f43a34ad53c5cc9bc6 Mon Sep 17 00:00:00 2001
From: davidovski <david@davidovski.xyz>
Date: Thu, 2 Feb 2023 14:10:02 +0000
Subject: Work

---
 skip/php8/php8.xibuild | 215 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 215 insertions(+)
 create mode 100644 skip/php8/php8.xibuild

(limited to 'skip/php8/php8.xibuild')

diff --git a/skip/php8/php8.xibuild b/skip/php8/php8.xibuild
new file mode 100644
index 0000000..535c340
--- /dev/null
+++ b/skip/php8/php8.xibuild
@@ -0,0 +1,215 @@
+#!/bin/sh
+
+NAME="php8"
+DESC="The PHP8 language runtime engine"
+
+MAKEDEPS="autoconf pcre2 re2c apache2 argon2 aspell bison bzip2 curl enchant2 freetds freetype2 gdbm gettext gmp icu imap krb5 libedit libical libjpeg-turbo libpng libpq lmdb oniguruma libsodium libwebp libxml2 libxpm libxslt libzip net-snmp libldap sqlite3 tidyhtml unixodbc zlib"
+
+PKG_VER=8.1.10
+suffix=8
+SOURCE="https://php.net/distributions/php-$PKG_VER.tar.xz"
+
+ADDITIONAL="
+atomic-lsapi.patch
+disabled-tests.list
+fix-tests-devserver.patch
+includedir.patch
+install-pear.patch
+php8-fpm-version-suffix.patch
+php8-fpm.initd
+php8-fpm.logrotate
+php8-module.conf
+sharedir.patch
+xfail-openssl-1.1-test.patch
+"
+
+prepare() {
+	apply_patches
+
+	# https://bugs.php.net/63362 - Not needed but installed headers.
+	# Drop some Windows specific headers to avoid installation,
+	# before build to ensure they are really not needed.
+	rm -f TSRM/tsrm_win32.h \
+		TSRM/tsrm_config.w32.h \
+		Zend/zend_config.w32.h \
+		ext/mysqlnd/config-win.h \
+		ext/standard/winver.h
+
+	# Fix some bogus permissions.
+	find . -name '*.[ch]' -exec chmod 644 {} \;
+
+	# XXX: Delete failing tests.
+	sed -n '/^[^#]/p' "$BUILD_ROOT"/disabled-tests.list | while read -r item; do
+		rm -r $item  # do it in this way to apply globbing...
+	done
+
+	autoconf
+}
+
+# Notes:
+# * gd-jis-conv breaks any non-latin font rendering (vakartel).
+# * libxml cannot be build as shared.
+# * -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php andypost)
+# * -O2 optimize for apps usage (andypost)
+_build() {
+	export CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+	export CXXFLAGS="$CXXFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+	local without_pcre_jit
+	[ "$CARCH" = "s390x" ] && without_pcre_jit="--without-pcre-jit"
+
+	EXTENSION_DIR=$_extension_dir ./configure \
+
+
+		--prefix=/usr \
+		--program-suffix=$suffix \
+		--libdir=$_libdir \
+		--datadir=/usr/share/php8 \
+		--sysconfdir=/etc/php8 \
+		--localstatedir=/var \
+		--with-layout=GNU \
+		--with-pic \
+		--with-config-file-path=/etc/php8 \
+		--with-config-file-scan-dir=$_extension_confd \
+		--disable-short-tags \
+		\
+		--enable-bcmath=shared \
+		--with-bz2=shared \
+		--enable-calendar=shared \
+		--enable-ctype=shared \
+		--with-curl=shared \
+		--enable-dba=shared \
+			--with-dbmaker=shared \
+			--with-gdbm \
+			--with-lmdb \
+		--enable-dom=shared \
+		--with-enchant=shared \
+		--enable-exif=shared \
+		--with-ffi=shared \
+		--enable-fileinfo=shared \
+		--enable-ftp=shared \
+		--enable-gd=shared \
+			--with-freetype \
+			--with-jpeg \
+			--with-webp \
+			--with-xpm \
+			--disable-gd-jis-conv \
+		--with-gettext=shared \
+		--with-gmp=shared \
+		--with-iconv=shared \
+		--with-imap=shared \
+			--with-imap-ssl \
+		--enable-intl=shared \
+		--with-ldap=shared \
+			--with-ldap-sasl \
+		--with-libedit \
+		--with-libxml \
+		--enable-mbstring=shared \
+		--with-mysqli=shared,mysqlnd \
+			--with-mysql-sock=/run/mysqld/mysqld.sock \
+		--enable-mysqlnd=shared \
+		--enable-opcache=shared \
+		--with-openssl=shared  \
+			--with-kerberos \
+			--with-system-ciphers \
+		--with-password-argon2 \
+		--enable-pcntl=shared \
+		--with-external-pcre \
+			$without_pcre_jit \
+		--enable-pdo=shared \
+			--with-pdo-dblib=shared,/usr \
+			--with-pdo-mysql=shared,mysqlnd \
+			--with-pdo-odbc=shared,unixODBC,/usr \
+			--with-pdo-pgsql=shared \
+			--with-pdo-sqlite=shared \
+		--with-pgsql=shared \
+		--enable-phar=shared \
+		--enable-posix=shared \
+		--with-pspell=shared \
+		--without-readline \
+		--enable-session=shared \
+		--enable-shmop=shared \
+		--enable-simplexml=shared \
+		--with-snmp=shared \
+		--enable-soap=shared \
+		--with-sodium=shared \
+		--enable-sockets=shared \
+		--with-sqlite3=shared \
+		--enable-sysvmsg=shared \
+		--enable-sysvsem=shared \
+		--enable-sysvshm=shared \
+		--with-tidy=shared \
+		--enable-tokenizer=shared \
+		--with-unixODBC=shared,/usr \
+		--enable-xml=shared \
+		--enable-xmlreader=shared \
+		--enable-xmlwriter=shared \
+		--with-xsl=shared \
+		--with-zip=shared \
+		--with-zlib \
+		"$@"
+	make
+}
+
+build() {
+	# build phpcgi and apache2 SAPIs first
+	# because not fixed https://bugs.php.net/bug.php?id=52419
+	# apache2 module
+	_build --disable-phpdbg \
+		--disable-cli \
+		--with-apxs2
+	mv libs/libphp.so sapi/apache2handler/mod_php$suffix.so
+
+	_build --enable-phpdbg \
+		--with-pear=/usr/share/php8 \
+		--enable-fpm \
+        --enable-litespeed \
+		--enable-embed
+}
+
+check() {
+	# PHP is so stupid that it's not able to resolve dependencies
+	# between extensions and load them in correct order, so we must
+	# help it...
+	# opcache is Zend extension, it's handled specially in Makefile
+	local php_modules=$(_extensions_by_load_order \
+		| grep -vx opcache \
+		| xargs -n 1 printf "'$BUILD_ROOT/modules/%s.la' ")
+	sed -i "/^PHP_TEST_SHARED_EXTENSIONS/,/extension=/ \
+		s|in \$(PHP_MODULES)\"*|in $php_modules|" Makefile
+
+	# XXX: Few tests fail on the named platforms.
+	# Ignore it for now and continue build even on test failures.
+	local allow_fail='no'
+	case "$CARCH" in
+		x86 | s390x ) allow_fail='yes'
+	esac
+
+	TESTS="${TESTS:- --show-diff}" NO_INTERACTION=1 REPORT_EXIT_STATUS=1 \
+		SKIP_SLOW_TESTS=1 SKIP_ONLINE_TESTS=1 TEST_TIMEOUT=10 \
+		TZ='' LANG='' LC_ALL='' \
+		TRAVIS=true SKIP_IO_CAPTURE_TESTS=1 \
+		make test || [ "$allow_fail" = yes ]
+
+	echo 'NOTE: We have skipped quite a lot tests, see disabled-tests.list.'
+}
+
+package() {
+	make -j1 INSTALL_ROOT="$PKG_DEST" install
+
+	install -Dm644 php.ini-production "$PKG_DEST"/etc/php8/php.ini
+
+	local file; for file in pear peardev pecl; do
+		sed -i -e "s|/usr/bin/php|/usr/bin/php$suffix|g" \
+			-e "s|PHP=php|PHP=php$suffix|" \
+			"$PKG_DEST"/usr/bin/$file
+	done
+
+	find "$PKG_DEST" -name '.*' -print0 | xargs -0 rm -rf
+	rmdir "$PKG_DEST"/var/run
+
+	if [ "$_default_php" = yes ]; then
+		ln -s php$suffix "$PKG_DEST"/usr/bin/php
+	fi
+}
+
-- 
cgit v1.2.1