@@ -45,16 +45,21 @@ generated_warning() {
45
45
EOH
46
46
}
47
47
48
+ # Equivalent to PHP's PHP_VERSION_ID:
49
+ # 5.6.10 => 50610, 7.1.0 => 70100
50
+ as_version_id () {
51
+ local fullVersion=" $1 "
52
+ # strip prelease suffix
53
+ fullVersion=" ${fullVersion%% [a-z]* } "
54
+ local IFS=' .'
55
+ local components=( $fullVersion )
56
+ printf ' %d%02d%02d' " ${components[0]} " " ${components[1]:- 0} " " ${components[2]:- 0} "
57
+ }
58
+
48
59
travisEnv=
49
60
for version in " ${versions[@]} " ; do
50
61
rcVersion=" ${version% -rc} "
51
62
52
- # "7", "5", etc
53
- majorVersion=" ${rcVersion%% .* } "
54
- # "2", "1", "6", etc
55
- minorVersion=" ${rcVersion# $majorVersion .} "
56
- minorVersion=" ${minorVersion%% .* } "
57
-
58
63
# scrape the relevant API based on whether we're looking for pre-releases
59
64
apiUrl=" https://www.php.net/releases/index.php?json&max=100&version=${rcVersion%% .* } "
60
65
apiJqExpr='
@@ -107,6 +112,8 @@ for version in "${versions[@]}"; do
107
112
sha256=" ${possi[3]} "
108
113
md5=" ${possi[4]} "
109
114
115
+ versionId=" $( as_version_id " $fullVersion " ) "
116
+
110
117
gpgKey=" ${gpgKeys[$rcVersion]} "
111
118
if [ -z " $gpgKey " ]; then
112
119
echo >&2 " ERROR: missing GPG key fingerprint for $version "
@@ -151,7 +158,7 @@ for version in "${versions[@]}"; do
151
158
if [ " $variant " = ' apache' ]; then
152
159
cp -a apache2-foreground " $version /$suite /$variant /"
153
160
fi
154
- if [ " $majorVersion " = ' 7 ' -a " $minorVersion " -lt ' 2 ' ]; then
161
+ if [ " $versionId " -lt " $( as_version_id 7.2 ) " ]; then
155
162
# argon2 password hashing is only supported in 7.2+
156
163
sed -ri \
157
164
-e ' /##<argon2-stretch>##/,/##<\/argon2-stretch>##/d' \
@@ -163,36 +170,36 @@ for version in "${versions[@]}"; do
163
170
-e ' /##<argon2-stretch>##/,/##<\/argon2-stretch>##/d' \
164
171
" $version /$suite /$variant /Dockerfile"
165
172
fi
166
- if [ " $majorVersion " = ' 7 ' -a " $minorVersion " -lt ' 4 ' ]; then
173
+ if [ " $versionId " -lt " $( as_version_id 7.4 ) " ]; then
167
174
# oniguruma is part of mbstring in php 7.4+
168
175
sed -ri \
169
176
-e ' /oniguruma-dev|libonig-dev/d' \
170
177
" $version /$suite /$variant /Dockerfile"
171
178
fi
172
- if [ " $majorVersion " -ge ' 8 ' ]; then
179
+ if [ " $versionId " -ge " $( as_version_id 8.0 ) " ]; then
173
180
# 8 and above no longer include pecl/pear (see https://github.com/docker-library/php/issues/846#issuecomment-505638494)
174
181
sed -ri \
175
182
-e ' /pear |pearrc|pecl.*channel/d' \
176
183
" $version /$suite /$variant /Dockerfile"
177
184
fi
178
- if [ " $majorVersion " != ' 7 ' ] || [ " $minorVersion " -lt ' 4 ' ]; then
179
- # --with-pear is only relevant on PHP 7, and specifically only 7 .4+ (see https://github.com/docker-library/php/issues/846#issuecomment-505638494)
185
+ if [ " $versionId " -lt " $( as_version_id 7.4 ) " ]; then
186
+ # --with-pear is only relevant on PHP 7.4+ (see https://github.com/docker-library/php/issues/846#issuecomment-505638494)
180
187
sed -ri \
181
188
-e ' /--with-pear/d' \
182
189
" $version /$suite /$variant /Dockerfile"
183
190
fi
184
- if [ " $majorVersion " = ' 7 ' -a " $minorVersion " -lt ' 2 ' ]; then
191
+ if [ " $versionId " -lt " $( as_version_id 7.2 ) " ]; then
185
192
# sodium is part of php core 7.2+ https://wiki.php.net/rfc/libsodium
186
193
sed -ri ' /sodium/d' " $version /$suite /$variant /Dockerfile"
187
194
fi
188
- if [ " $variant " = ' fpm' -a " $majorVersion " = ' 7 ' -a " $minorVersion " -lt ' 3 ' ]; then
195
+ if [ " $variant " = ' fpm' -a " $versionId " -lt " $( as_version_id 7.3 ) " ]; then
189
196
# php-fpm "decorate_workers_output" is only available in 7.3+
190
197
sed -ri \
191
198
-e ' /decorate_workers_output/d' \
192
199
-e ' /log_limit/d' \
193
200
" $version /$suite /$variant /Dockerfile"
194
201
fi
195
- if [ " $suite " = ' stretch' ] || [ " $majorVersion " -gt ' 7 ' ] || { [ " $majorVersion " = ' 7 ' ] && [ " $minorVersion " -ge ' 4 ' ] ; } ; then
202
+ if [ " $suite " = ' stretch' ] || [ " $versionId " -ge " $( as_version_id 7.4 ) " ] ; then
196
203
# https://github.com/docker-library/php/issues/865
197
204
# https://bugs.php.net/bug.php?id=76324
198
205
# https://github.com/php/php-src/pull/3632
@@ -201,13 +208,13 @@ for version in "${versions[@]}"; do
201
208
-e ' /freetype-config/d' \
202
209
" $version /$suite /$variant /Dockerfile"
203
210
fi
204
- if [[ " $suite " == alpine* ]] && [ " $majorVersion " = ' 7 ' ] && [ " $minorVersion " -lt ' 4 ' ]; then
211
+ if [[ " $suite " == alpine* ]] && [ " $versionId " -lt " $( as_version_id 7.4 ) " ]; then
205
212
# https://github.com/docker-library/php/issues/888
206
213
sed -ri \
207
214
-e ' /linux-headers/d' \
208
215
" $version /$suite /$variant /Dockerfile"
209
216
fi
210
- if [ " $majorVersion " -lt ' 8 ' ]; then
217
+ if [ " $versionId " -lt " $( as_version_id 8.0 ) " ]; then
211
218
# https://github.com/php/php-src/commit/161adfff3f437bf9370e037a9e2bf593c784ccff
212
219
sed -ri \
213
220
-e ' s/--enable-zts/--enable-maintainer-zts/g' \
0 commit comments