php-tokenizer

Source

FROM scratch AS build
ARG VERSION
ARG SOURCE_DATE_EPOCH=1

COPY --from=stagex/core-automake . /
COPY --from=stagex/core-busybox . /
COPY --from=stagex/core-libzstd . /
COPY --from=stagex/core-curl . /
COPY --from=stagex/core-pkgconf . /
COPY --from=stagex/core-autoconf . /
COPY --from=stagex/core-make . /
COPY --from=stagex/core-llvm . /
COPY --from=stagex/core-mold . /
COPY --from=stagex/core-onetbb . /
COPY --from=stagex/core-openssl . /
COPY --from=stagex/core-libxml2 . /
COPY --from=stagex/core-musl . /
COPY --from=stagex/core-perl . /
COPY --from=stagex/core-m4 . /
COPY --from=stagex/core-zlib . /
COPY --from=stagex/core-linux-headers . /
COPY --from=stagex/core-sqlite3 . /
COPY --from=stagex/user-argon2 . /
COPY --from=stagex/user-libsodium . /
COPY --from=stagex/user-libiconv . /
COPY --from=stagex/core-bzip2 . /
COPY --from=stagex/core-libzip . /
COPY --from=stagex/core-icu . /

ADD fetch/php-${VERSION}.tar.gz .

WORKDIR /php-${VERSION}
COPY *.patch .

ENV SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH
ENV PHP_UNAME="Linux StageX"
ENV PHP_BUILD_PROVIDER="StageX"
ENV PHP_BUILD_SYSTEM="${PHP_UNAME}"
ENV CC=clang
ENV CXX=clang++
ENV EXTENSION_DIR=/usr/lib/php-modules
ENV CFLAGS="-march=x86-64 -mtune=generic -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
ENV CXXFLAGS="$CFLAGS"
ENV LDFLAGS="-Wl,-O1, -pie"

RUN --network=none <<-EOF
	set -eux

	patch -p1 < remove-timestamps-from-phar.patch
	patch -p1 < file-order-phar-pack.patch

	export rootfs="rootfs"
	./buildconf --force
	./configure \
		--with-config-file-path=/etc/php \
		--with-config-file-scan-dir=/etc/php/conf.d \
		--enable-option-checking=fatal \
		--libdir=/usr/lib \
		--datadir=/usr/share/php \
		--localstatedir=/var \
		--with-layout=GNU \
		--prefix=/usr \
		--with-pic \
		--disable-all \
		--disable-zend-signals \
		--with-bz2=shared \
		--with-curl=shared \
		--with-password-argon2 \
		--with-sodium=shared \
		--with-iconv=/usr \
		--with-openssl=shared \
		--with-zip=shared \
		--with-zlib=shared \
		--enable-filter=shared \
		--enable-phar=shared \
		--enable-mbstring=shared \
		--disable-mbregex \
		--enable-tokenizer=shared \
		--enable-mysqlnd \
		--enable-embed=shared \
		--enable-bcmath=shared \
		--enable-fileinfo=shared \
		--enable-intl=shared \
		--with-libxml \
		--enable-dom=shared \
		--enable-xml=shared \
		--enable-simplexml=shared \
		--enable-xmlreader=shared \
		--enable-xmlwriter=shared \
		--enable-fpm
	make -j "$(nproc)"
	make INSTALL_ROOT="/${rootfs}" install
	rm -rf "/${rootfs}/var/run"
	rm "/${rootfs}/usr/bin/phar.phar"
	install -vDm644 -t /${rootfs}/usr/share/licenses/php LICENSE

	mkdir -p "/${rootfs}/etc/php/conf.d"
	for path in "/${rootfs}/usr/lib/php-modules/"*.so; do
		name=$(basename "$path" .so)
		printf "extension=%s.so\n" "$name" > "/${rootfs}/etc/php/conf.d/10-$name.ini"
	done

  unset rootfs

	make distclean

	export rootfs="rootfs-zts"
	./buildconf --force
	./configure \
		--with-config-file-path=/etc/php \
		--with-config-file-scan-dir=/etc/php/conf.d \
		--enable-option-checking=fatal \
		--libdir=/usr/lib \
		--datadir=/usr/share/php \
		--localstatedir=/var \
		--with-layout=GNU \
		--prefix=/usr \
		--with-pic \
		--disable-all \
		--disable-zend-signals \
		--with-bz2=shared \
		--with-curl=shared \
		--with-password-argon2 \
		--with-sodium=shared \
		--with-iconv=/usr \
		--with-openssl=shared \
		--with-zip=shared \
		--with-zlib=shared \
		--enable-filter=shared \
		--enable-phar=shared \
		--enable-mbstring=shared \
		--disable-mbregex \
		--enable-tokenizer=shared \
		--enable-mysqlnd \
		--enable-embed=shared \
		--enable-bcmath=shared \
		--enable-fileinfo=shared \
		--enable-intl=shared \
		--with-libxml \
		--enable-dom=shared \
		--enable-xml=shared \
		--enable-simplexml=shared \
		--enable-xmlreader=shared \
		--enable-xmlwriter=shared \
		--enable-zts
	make -j "$(nproc)"
	make INSTALL_ROOT="/${rootfs}" install
	rm -rf "/${rootfs}/var/run"
	rm "/${rootfs}/usr/bin/phar.phar"
	install -vDm644 -t /${rootfs}/usr/share/licenses/php LICENSE
	unset rootfs

EOF


FROM stagex/core-filesystem AS package-php
COPY --from=build /rootfs/usr/bin/php /usr/bin/php
COPY --from=build /rootfs/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

FROM stagex/core-filesystem AS package-php-dev
COPY --from=build /rootfs/usr/bin /usr/bin
COPY --from=build /rootfs/usr/lib /usr/lib
COPY --from=build /rootfs/usr/include/php /usr/include/php
COPY --from=build /rootfs/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

FROM stagex/core-filesystem AS package-php-embed
COPY --from=build /rootfs/usr/lib/libphp.so /usr/lib/libphp.so
COPY --from=build /rootfs/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

FROM stagex/core-filesystem AS package-php-fpm
COPY --from=build /rootfs/usr/sbin/php-fpm /usr/bin/php-fpm

FROM stagex/core-filesystem AS package-php-zts
COPY --from=build /rootfs-zts/usr/bin/php /usr/bin/php
COPY --from=build /rootfs-zts/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

FROM stagex/core-filesystem AS package-php-zts-dev
COPY --from=build /rootfs-zts/usr/bin /usr/bin
COPY --from=build /rootfs-zts/usr/include/php /usr/include/php
COPY --from=build /rootfs-zts/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

FROM stagex/core-filesystem AS package-php-zts-embed
COPY --from=build /rootfs-zts/usr/lib/libphp.so /usr/lib/libphp.so
COPY --from=build /rootfs-zts/usr/share/licenses/php/LICENSE /usr/share/licenses/php/LICENSE

##############################
####### PHP Extensions #######
##############################

FROM stagex/core-filesystem AS package-php-bcmath
COPY --from=build /rootfs/usr/lib/php-modules/bcmath.so /usr/lib/php-modules/bcmath.so
COPY --from=build /rootfs/etc/php/conf.d/10-bcmath.ini /etc/php/conf.d/10-bcmath.ini

FROM stagex/core-filesystem AS package-php-curl
COPY --from=build /rootfs/usr/lib/php-modules/curl.so /usr/lib/php-modules/curl.so
COPY --from=build /rootfs/etc/php/conf.d/10-curl.ini /etc/php/conf.d/10-curl.ini

FROM stagex/core-filesystem AS package-php-dom
COPY --from=build /rootfs/usr/lib/php-modules/dom.so /usr/lib/php-modules/dom.so
COPY --from=build /rootfs/etc/php/conf.d/10-dom.ini /etc/php/conf.d/10-dom.ini

FROM stagex/core-filesystem AS package-php-fileinfo
COPY --from=build /rootfs/usr/lib/php-modules/fileinfo.so /usr/lib/php-modules/fileinfo.so
COPY --from=build /rootfs/etc/php/conf.d/10-fileinfo.ini /etc/php/conf.d/10-fileinfo.ini

FROM stagex/core-filesystem AS package-php-filter
COPY --from=build /rootfs/usr/lib/php-modules/filter.so /usr/lib/php-modules/filter.so
COPY --from=build /rootfs/etc/php/conf.d/10-filter.ini /etc/php/conf.d/10-filter.ini

FROM stagex/core-filesystem AS package-php-intl
COPY --from=build /rootfs/usr/lib/php-modules/intl.so /usr/lib/php-modules/intl.so
COPY --from=build /rootfs/etc/php/conf.d/10-intl.ini /etc/php/conf.d/10-intl.ini

FROM stagex/core-filesystem AS package-php-mbstring
COPY --from=build /rootfs/usr/lib/php-modules/mbstring.so /usr/lib/php-modules/mbstring.so
COPY --from=build /rootfs/etc/php/conf.d/10-mbstring.ini /etc/php/conf.d/10-mbstring.ini

FROM stagex/core-filesystem AS package-php-openssl
COPY --from=build /rootfs/usr/lib/php-modules/openssl.so /usr/lib/php-modules/openssl.so
COPY --from=build /rootfs/etc/php/conf.d/10-openssl.ini /etc/php/conf.d/10-openssl.ini

FROM stagex/core-filesystem AS package-php-phar
COPY --from=build /rootfs/usr/lib/php-modules/phar.so /usr/lib/php-modules/phar.so
COPY --from=build /rootfs/etc/php/conf.d/10-phar.ini /etc/php/conf.d/10-phar.ini

FROM stagex/core-filesystem AS package-php-sodium
COPY --from=build /rootfs/usr/lib/php-modules/sodium.so /usr/lib/php-modules/sodium.so
COPY --from=build /rootfs/etc/php/conf.d/10-sodium.ini /etc/php/conf.d/10-sodium.ini

FROM stagex/core-filesystem AS package-php-tokenizer
COPY --from=build /rootfs/usr/lib/php-modules/tokenizer.so /usr/lib/php-modules/tokenizer.so
COPY --from=build /rootfs/etc/php/conf.d/10-tokenizer.ini /etc/php/conf.d/10-tokenizer.ini

FROM stagex/core-filesystem AS package-php-zip
COPY --from=build /rootfs/usr/lib/php-modules/zip.so /usr/lib/php-modules/zip.so
COPY --from=build /rootfs/etc/php/conf.d/10-zip.ini /etc/php/conf.d/10-zip.ini

FROM stagex/core-filesystem AS package-php-zlib
COPY --from=build /rootfs/usr/lib/php-modules/zlib.so /usr/lib/php-modules/zlib.so
COPY --from=build /rootfs/etc/php/conf.d/10-zlib.ini /etc/php/conf.d/10-zlib.ini

##############################
### PHP Extensions w. ZTS ####
##############################

FROM stagex/core-filesystem AS package-php-zts-bcmath
COPY --from=build /rootfs-zts/usr/lib/php-modules/bcmath.so /usr/lib/php-modules/bcmath.so
COPY --from=build /rootfs/etc/php/conf.d/10-bcmath.ini /etc/php/conf.d/10-bcmath.ini

FROM stagex/core-filesystem AS package-php-zts-curl
COPY --from=build /rootfs-zts/usr/lib/php-modules/curl.so /usr/lib/php-modules/curl.so
COPY --from=build /rootfs/etc/php/conf.d/10-curl.ini /etc/php/conf.d/10-curl.ini

FROM stagex/core-filesystem AS package-php-zts-dom
COPY --from=build /rootfs-zts/usr/lib/php-modules/dom.so /usr/lib/php-modules/dom.so
COPY --from=build /rootfs/etc/php/conf.d/10-dom.ini /etc/php/conf.d/10-dom.ini

FROM stagex/core-filesystem AS package-php-zts-fileinfo
COPY --from=build /rootfs-zts/usr/lib/php-modules/fileinfo.so /usr/lib/php-modules/fileinfo.so
COPY --from=build /rootfs/etc/php/conf.d/10-fileinfo.ini /etc/php/conf.d/10-fileinfo.ini

FROM stagex/core-filesystem AS package-php-zts-filter
COPY --from=build /rootfs-zts/usr/lib/php-modules/filter.so /usr/lib/php-modules/filter.so
COPY --from=build /rootfs/etc/php/conf.d/10-filter.ini /etc/php/conf.d/10-filter.ini

FROM stagex/core-filesystem AS package-php-zts-intl
COPY --from=build /rootfs-zts/usr/lib/php-modules/intl.so /usr/lib/php-modules/intl.so
COPY --from=build /rootfs/etc/php/conf.d/10-intl.ini /etc/php/conf.d/10-intl.ini

FROM stagex/core-filesystem AS package-php-zts-mbstring
COPY --from=build /rootfs-zts/usr/lib/php-modules/mbstring.so /usr/lib/php-modules/mbstring.so
COPY --from=build /rootfs/etc/php/conf.d/10-mbstring.ini /etc/php/conf.d/10-mbstring.ini

FROM stagex/core-filesystem AS package-php-zts-openssl
COPY --from=build /rootfs-zts/usr/lib/php-modules/openssl.so /usr/lib/php-modules/openssl.so
COPY --from=build /rootfs/etc/php/conf.d/10-openssl.ini /etc/php/conf.d/10-openssl.ini

FROM stagex/core-filesystem AS package-php-zts-phar
COPY --from=build /rootfs-zts/usr/lib/php-modules/phar.so /usr/lib/php-modules/phar.so
COPY --from=build /rootfs/etc/php/conf.d/10-phar.ini /etc/php/conf.d/10-phar.ini

FROM stagex/core-filesystem AS package-php-zts-sodium
COPY --from=build /rootfs-zts/usr/lib/php-modules/sodium.so /usr/lib/php-modules/sodium.so
COPY --from=build /rootfs/etc/php/conf.d/10-sodium.ini /etc/php/conf.d/10-sodium.ini

FROM stagex/core-filesystem AS package-php-zts-tokenizer
COPY --from=build /rootfs-zts/usr/lib/php-modules/tokenizer.so /usr/lib/php-modules/tokenizer.so
COPY --from=build /rootfs/etc/php/conf.d/10-tokenizer.ini /etc/php/conf.d/10-tokenizer.ini

FROM stagex/core-filesystem AS package-php-zts-zip
COPY --from=build /rootfs-zts/usr/lib/php-modules/zip.so /usr/lib/php-modules/zip.so
COPY --from=build /rootfs/etc/php/conf.d/10-zip.ini /etc/php/conf.d/10-zip.ini

FROM stagex/core-filesystem AS package-php-zts-zlib
COPY --from=build /rootfs-zts/usr/lib/php-modules/zlib.so /usr/lib/php-modules/zlib.so
COPY --from=build /rootfs/etc/php/conf.d/10-zlib.ini /etc/php/conf.d/10-zlib.ini
Copied to clipboard!