-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add 7.4.0alpha1 #840
Merged
Merged
Add 7.4.0alpha1 #840
Changes from 1 commit
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
# | ||
# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" | ||
# | ||
# PLEASE DO NOT EDIT IT DIRECTLY. | ||
# | ||
|
||
FROM alpine:3.9 | ||
|
||
# dependencies required for running "phpize" | ||
# these get automatically installed and removed by "docker-php-ext-*" (unless they're already installed) | ||
ENV PHPIZE_DEPS \ | ||
autoconf \ | ||
dpkg-dev dpkg \ | ||
file \ | ||
g++ \ | ||
gcc \ | ||
libc-dev \ | ||
make \ | ||
pkgconf \ | ||
re2c | ||
|
||
# persistent / runtime deps | ||
RUN apk add --no-cache \ | ||
ca-certificates \ | ||
curl \ | ||
tar \ | ||
xz \ | ||
# https://github.com/docker-library/php/issues/494 | ||
openssl | ||
|
||
# ensure www-data user exists | ||
RUN set -x \ | ||
&& addgroup -g 82 -S www-data \ | ||
&& adduser -u 82 -D -S -G www-data www-data | ||
# 82 is the standard uid/gid for "www-data" in Alpine | ||
# https://git.alpinelinux.org/aports/tree/main/apache2/apache2.pre-install?h=3.9-stable | ||
# https://git.alpinelinux.org/aports/tree/main/lighttpd/lighttpd.pre-install?h=3.9-stable | ||
# https://git.alpinelinux.org/aports/tree/main/nginx/nginx.pre-install?h=3.9-stable | ||
|
||
ENV PHP_INI_DIR /usr/local/etc/php | ||
RUN set -eux; \ | ||
mkdir -p "$PHP_INI_DIR/conf.d"; \ | ||
# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) | ||
[ ! -d /var/www/html ]; \ | ||
mkdir -p /var/www/html; \ | ||
chown www-data:www-data /var/www/html; \ | ||
chmod 777 /var/www/html | ||
|
||
##<autogenerated>## | ||
##</autogenerated>## | ||
|
||
# Apply stack smash protection to functions using local buffers and alloca() | ||
# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64) | ||
# Enable optimization (-O2) | ||
# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default) | ||
# Adds GNU HASH segments to generated executables (this is used if present, and is much faster than sysv hash; in this configuration, sysv hash is also generated) | ||
# https://github.com/docker-library/php/issues/272 | ||
ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2" | ||
ENV PHP_CPPFLAGS="$PHP_CFLAGS" | ||
ENV PHP_LDFLAGS="-Wl,-O1 -Wl,--hash-style=both -pie" | ||
|
||
ENV GPG_KEYS 42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312 | ||
|
||
ENV PHP_VERSION 7.4.0alpha1 | ||
ENV PHP_URL="https://downloads.php.net/~derick/php-7.4.0alpha1.tar.xz" PHP_ASC_URL="https://downloads.php.net/~derick/php-7.4.0alpha1.tar.xz.asc" | ||
ENV PHP_SHA256="378400b6eced6e358f5db750413a7f9959517b0daef6580b16d640190b7dc364" PHP_MD5="" | ||
|
||
RUN set -xe; \ | ||
\ | ||
apk add --no-cache --virtual .fetch-deps \ | ||
gnupg \ | ||
wget \ | ||
; \ | ||
\ | ||
mkdir -p /usr/src; \ | ||
cd /usr/src; \ | ||
\ | ||
wget -O php.tar.xz "$PHP_URL"; \ | ||
\ | ||
if [ -n "$PHP_SHA256" ]; then \ | ||
echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \ | ||
fi; \ | ||
if [ -n "$PHP_MD5" ]; then \ | ||
echo "$PHP_MD5 *php.tar.xz" | md5sum -c -; \ | ||
fi; \ | ||
\ | ||
if [ -n "$PHP_ASC_URL" ]; then \ | ||
wget -O php.tar.xz.asc "$PHP_ASC_URL"; \ | ||
export GNUPGHOME="$(mktemp -d)"; \ | ||
for key in $GPG_KEYS; do \ | ||
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ | ||
done; \ | ||
gpg --batch --verify php.tar.xz.asc php.tar.xz; \ | ||
command -v gpgconf > /dev/null && gpgconf --kill all; \ | ||
rm -rf "$GNUPGHOME"; \ | ||
fi; \ | ||
\ | ||
apk del --no-network .fetch-deps | ||
|
||
COPY docker-php-source /usr/local/bin/ | ||
|
||
RUN set -xe \ | ||
&& apk add --no-cache --virtual .build-deps \ | ||
$PHPIZE_DEPS \ | ||
argon2-dev \ | ||
coreutils \ | ||
curl-dev \ | ||
libedit-dev \ | ||
libsodium-dev \ | ||
libxml2-dev \ | ||
openssl-dev \ | ||
sqlite-dev \ | ||
\ | ||
&& export CFLAGS="$PHP_CFLAGS" \ | ||
CPPFLAGS="$PHP_CPPFLAGS" \ | ||
LDFLAGS="$PHP_LDFLAGS" \ | ||
&& docker-php-source extract \ | ||
&& cd /usr/src/php \ | ||
&& gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" \ | ||
&& ./configure \ | ||
--build="$gnuArch" \ | ||
--with-config-file-path="$PHP_INI_DIR" \ | ||
--with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ | ||
\ | ||
# make sure invalid --configure-flags are fatal errors intead of just warnings | ||
--enable-option-checking=fatal \ | ||
\ | ||
# https://github.com/docker-library/php/issues/439 | ||
--with-mhash \ | ||
\ | ||
# --enable-ftp is included here because ftp_ssl_connect() needs ftp to be compiled statically (see https://github.com/docker-library/php/issues/236) | ||
--enable-ftp \ | ||
# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195) | ||
--enable-mbstring \ | ||
# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself) | ||
--enable-mysqlnd \ | ||
# https://wiki.php.net/rfc/argon2_password_hash (7.2+) | ||
--with-password-argon2 \ | ||
# https://wiki.php.net/rfc/libsodium | ||
--with-sodium=shared \ | ||
\ | ||
--with-curl \ | ||
--with-libedit \ | ||
--with-openssl \ | ||
--with-zlib \ | ||
\ | ||
# bundled pcre does not support JIT on s390x | ||
# https://manpages.debian.org/stretch/libpcre3-dev/pcrejit.3.en.html#AVAILABILITY_OF_JIT_SUPPORT | ||
$(test "$gnuArch" = 's390x-linux-gnu' && echo '--without-pcre-jit') \ | ||
\ | ||
$PHP_EXTRA_CONFIGURE_ARGS \ | ||
&& make -j "$(nproc)" \ | ||
&& find -type f -name '*.a' -delete \ | ||
&& make install \ | ||
&& { find /usr/local/bin /usr/local/sbin -type f -perm +0111 -exec strip --strip-all '{}' + || true; } \ | ||
&& make clean \ | ||
\ | ||
# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable) | ||
&& cp -v php.ini-* "$PHP_INI_DIR/" \ | ||
\ | ||
&& cd / \ | ||
&& docker-php-source delete \ | ||
\ | ||
&& runDeps="$( \ | ||
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \ | ||
| tr ',' '\n' \ | ||
| sort -u \ | ||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ | ||
)" \ | ||
&& apk add --no-cache $runDeps \ | ||
\ | ||
&& apk del --no-network .build-deps \ | ||
\ | ||
# https://github.com/docker-library/php/issues/443 | ||
&& pecl update-channels \ | ||
&& rm -rf /tmp/pear ~/.pearrc | ||
|
||
COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/ | ||
|
||
# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598) | ||
RUN docker-php-ext-enable sodium | ||
|
||
ENTRYPOINT ["docker-php-entrypoint"] | ||
##<autogenerated>## | ||
CMD ["php", "-a"] | ||
##</autogenerated>## |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/bin/sh | ||
set -e | ||
|
||
# first arg is `-f` or `--some-option` | ||
if [ "${1#-}" != "$1" ]; then | ||
set -- php "$@" | ||
fi | ||
|
||
exec "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/sh | ||
set -e | ||
|
||
# prefer user supplied CFLAGS, but default to our PHP_CFLAGS | ||
: ${CFLAGS:=$PHP_CFLAGS} | ||
: ${CPPFLAGS:=$PHP_CPPFLAGS} | ||
: ${LDFLAGS:=$PHP_LDFLAGS} | ||
export CFLAGS CPPFLAGS LDFLAGS | ||
|
||
srcExists= | ||
if [ -d /usr/src/php ]; then | ||
srcExists=1 | ||
fi | ||
docker-php-source extract | ||
if [ -z "$srcExists" ]; then | ||
touch /usr/src/php/.docker-delete-me | ||
fi | ||
|
||
cd /usr/src/php/ext | ||
|
||
usage() { | ||
echo "usage: $0 ext-name [configure flags]" | ||
echo " ie: $0 gd --with-jpeg-dir=/usr/local/something" | ||
echo | ||
echo 'Possible values for ext-name:' | ||
find . \ | ||
-mindepth 2 \ | ||
-maxdepth 2 \ | ||
-type f \ | ||
-name 'config.m4' \ | ||
| xargs -n1 dirname \ | ||
| xargs -n1 basename \ | ||
| sort \ | ||
| xargs | ||
echo | ||
echo 'Some of the above modules are already compiled into PHP; please check' | ||
echo 'the output of "php -i" to see which modules are already loaded.' | ||
} | ||
|
||
ext="$1" | ||
if [ -z "$ext" ] || [ ! -d "$ext" ]; then | ||
usage >&2 | ||
exit 1 | ||
fi | ||
shift | ||
|
||
pm='unknown' | ||
if [ -e /lib/apk/db/installed ]; then | ||
pm='apk' | ||
fi | ||
|
||
if [ "$pm" = 'apk' ]; then | ||
if \ | ||
[ -n "$PHPIZE_DEPS" ] \ | ||
&& ! apk info --installed .phpize-deps > /dev/null \ | ||
&& ! apk info --installed .phpize-deps-configure > /dev/null \ | ||
; then | ||
apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS | ||
fi | ||
fi | ||
|
||
if command -v dpkg-architecture > /dev/null; then | ||
gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" | ||
set -- --build="$gnuArch" "$@" | ||
fi | ||
|
||
cd "$ext" | ||
phpize | ||
./configure "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
#!/bin/sh | ||
set -e | ||
|
||
extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')" | ||
cd "$extDir" | ||
|
||
usage() { | ||
echo "usage: $0 [options] module-name [module-name ...]" | ||
echo " ie: $0 gd mysqli" | ||
echo " $0 pdo pdo_mysql" | ||
echo " $0 --ini-name 0-apc.ini apcu apc" | ||
echo | ||
echo 'Possible values for module-name:' | ||
find -maxdepth 1 \ | ||
-type f \ | ||
-name '*.so' \ | ||
-exec basename '{}' ';' \ | ||
| sort \ | ||
| xargs | ||
echo | ||
echo 'Some of the above modules are already compiled into PHP; please check' | ||
echo 'the output of "php -i" to see which modules are already loaded.' | ||
} | ||
|
||
opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })" | ||
eval set -- "$opts" | ||
|
||
iniName= | ||
while true; do | ||
flag="$1" | ||
shift | ||
case "$flag" in | ||
--help|-h|'-?') usage && exit 0 ;; | ||
--ini-name) iniName="$1" && shift ;; | ||
--) break ;; | ||
*) | ||
{ | ||
echo "error: unknown flag: $flag" | ||
usage | ||
} >&2 | ||
exit 1 | ||
;; | ||
esac | ||
done | ||
|
||
modules= | ||
for module; do | ||
if [ -z "$module" ]; then | ||
continue | ||
fi | ||
if [ -f "$module.so" ] && ! [ -f "$module" ]; then | ||
# allow ".so" to be optional | ||
module="$module.so" | ||
fi | ||
if ! [ -f "$module" ]; then | ||
echo >&2 "error: '$module' does not exist" | ||
echo >&2 | ||
usage >&2 | ||
exit 1 | ||
fi | ||
modules="$modules $module" | ||
done | ||
|
||
if [ -z "$modules" ]; then | ||
usage >&2 | ||
exit 1 | ||
fi | ||
|
||
pm='unknown' | ||
if [ -e /lib/apk/db/installed ]; then | ||
pm='apk' | ||
fi | ||
|
||
apkDel= | ||
if [ "$pm" = 'apk' ]; then | ||
if \ | ||
[ -n "$PHPIZE_DEPS" ] \ | ||
&& ! apk info --installed .phpize-deps > /dev/null \ | ||
&& ! apk info --installed .phpize-deps-configure > /dev/null \ | ||
; then | ||
apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils | ||
apkDel='.docker-php-ext-enable-deps' | ||
fi | ||
fi | ||
|
||
for module in $modules; do | ||
if readelf --wide --syms "$module" | grep -q ' zend_extension_entry$'; then | ||
# https://wiki.php.net/internals/extensions#loading_zend_extensions | ||
absModule="$(readlink -f "$module")" | ||
line="zend_extension=$absModule" | ||
else | ||
line="extension=$module" | ||
fi | ||
|
||
ext="$(basename "$module")" | ||
ext="${ext%.*}" | ||
if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then | ||
# this isn't perfect, but it's better than nothing | ||
# (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') | ||
echo >&2 | ||
echo >&2 "warning: $ext ($module) is already loaded!" | ||
echo >&2 | ||
continue | ||
fi | ||
|
||
ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}" | ||
if ! grep -q "$line" "$ini" 2>/dev/null; then | ||
echo "$line" >> "$ini" | ||
fi | ||
done | ||
|
||
if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then | ||
apk del --no-network $apkDel | ||
fi |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello, thank you for the PHP 7.4.0 images so soon already in preparation 🎉
Before php/php-src@19e2101 gets fixed more properly there might be an issue with detecting the argon2-dev library using pkgconf tool on Alpine Linux. So until the PHP 7.4.0alpha2 version this might help pass the build step for current PHP 7.4.0alpha1 (if it will get stuck with some pkg-config error about not finding the libargon2...
Other than that I think it looks good. Thank you and have a nice day.