Skip to content
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

Heroku-24 support #722

Merged
merged 21 commits into from
May 31, 2024
Merged

Heroku-24 support #722

merged 21 commits into from
May 31, 2024

Conversation

dzuelke
Copy link
Contributor

@dzuelke dzuelke commented May 30, 2024

Heroku-24's base images are published as both amd64 and arm64 variants (primarily for CNB multi-arch support), so the buildpack now checks the architecture where necessary to ensure it continues to operate should it be run against the arm64 image outside of Heroku (for example, on an ARM M1/M2/M3 CPU MacBook, when using the PHP CNB, which uses the same binaries, or when testing other things locally, see e.g. #717).

However, when run on Heroku, this buildpack is still only ever run on amd64.

Bumped the minimal PHP for bootstrapping to 8.3, since the new stack has 8.2 and 8.3 only.

GUS-W-14667548
GUS-W-15886497
GUS-W-15158300

@dzuelke dzuelke requested a review from a team as a code owner May 30, 2024 14:07
@dzuelke
Copy link
Contributor Author

dzuelke commented May 30, 2024

Diff of php -i between heroku-22 and heroku-24, with all built-in and third-party extensions enabled:

--- phpinfo-22.txt	2024-05-30 16:39:47.994348851 +0200
+++ phpinfo-24.txt	2024-05-30 16:40:01.831456538 +0200
@@ -86,9 +86,9 @@
 amqp
 
 Version => 2.1.2
-Compiled => Jan 23 2024 @ 16:25:11
+Compiled => May 30 2024 @ 02:33:59
 AMQP protocol version => 0-9-1
-librabbitmq version => 0.10.0
+librabbitmq version => 0.11.0
 Default max channels per connection => 256
 Default max frame size => 131072
 Default heartbeats interval => 0
@@ -318,8 +318,8 @@
 curl
 
 cURL support => enabled
-cURL Information => 7.81.0
-Age => 9
+cURL Information => 8.5.0
+Age => 10
 Features
 AsynchDNS => Yes
 CharConv => No
@@ -331,7 +331,7 @@
 Largefile => Yes
 libz => Yes
 NTLM => Yes
-NTLMWB => Yes
+NTLMWB => No
 SPNEGO => Yes
 SSL => Yes
 SSPI => No
@@ -350,11 +350,11 @@
 ZSTD => Yes
 HSTS => Yes
 GSASL => No
-Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
+Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtmpe, rtmps, rtmpt, rtmpte, rtmpts, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
 Host => x86_64-pc-linux-gnu
-SSL Version => OpenSSL/3.0.2
-ZLib Version => 1.2.11
-libSSH Version => libssh/0.9.6/openssl/zlib
+SSL Version => OpenSSL/3.0.13
+ZLib Version => 1.3
+libSSH Version => libssh/0.10.6/openssl/zlib
 
 Directive => Local Value => Master Value
 curl.cainfo => no value => no value
@@ -378,7 +378,7 @@
 
 DOM/XML => enabled
 DOM/XML API Version => 20031129
-libxml Version => 2.9.13
+libxml Version => 2.9.14
 HTML Support => enabled
 XPath Support => enabled
 XPointer Support => enabled
@@ -431,13 +431,13 @@
 GD Version => bundled (2.1.0 compatible)
 FreeType Support => enabled
 FreeType Linkage => with freetype
-FreeType Version => 2.11.1
+FreeType Version => 2.13.2
 GIF Read Support => enabled
 GIF Create Support => enabled
 JPEG Support => enabled
 libJPEG Version => 8
 PNG Support => enabled
-libPNG Version => 1.6.37
+libPNG Version => 1.6.43
 WBMP Support => enabled
 XBM Support => enabled
 WebP Support => enabled
@@ -454,7 +454,7 @@
 gmp
 
 gmp support => enabled
-GMP version => 6.2.1
+GMP version => 6.3.0
 
 hash
 
@@ -465,7 +465,7 @@
 
 iconv support => enabled
 iconv implementation => glibc
-iconv library version => 2.35
+iconv library version => 2.39
 
 Directive => Local Value => Master Value
 iconv.input_encoding => no value => no value
@@ -477,12 +477,12 @@
 imagick module => enabled
 imagick module version => 3.7.0
 imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
-Imagick compiled with ImageMagick version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
-Imagick using ImageMagick library version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
-ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
-ImageMagick release date => 2021-01-25
-ImageMagick number of supported formats:  => 247
-ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
+Imagick compiled with ImageMagick version => ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
+Imagick using ImageMagick library version => ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
+ImageMagick copyright => (C) 1999 ImageMagick Studio LLC
+ImageMagick release date => 2024-03-31
+ImageMagick number of supported formats:  => 250
+ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FLV, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HEIF, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
 
 Directive => Local Value => Master Value
 imagick.allow_zero_dimension_images => 0 => 0
@@ -504,10 +504,10 @@
 intl
 
 Internationalization support => enabled
-ICU version => 70.1
-ICU Data version => 70.1
-ICU TZData version => 2024a
-ICU Unicode version => 14.0
+ICU version => 74.2
+ICU Data version => 74.2
+ICU TZData version => 2023c
+ICU Unicode version => 15.1
 
 Directive => Local Value => Master Value
 intl.default_locale => no value => no value
@@ -524,7 +524,7 @@
 Total Links => 0/unlimited
 API Version => 3001
 Vendor Name => OpenLDAP
-Vendor Version => 20512
+Vendor Version => 20607
 SASL Support => Enabled
 
 Directive => Local Value => Master Value
@@ -533,8 +533,8 @@
 libxml
 
 libXML support => active
-libXML Compiled Version => 2.9.13
-libXML Loaded Version => 20913
+libXML Compiled Version => 2.9.14
+libXML Loaded Version => 20914
 libXML streams => enabled
 
 mbstring
@@ -547,7 +547,7 @@
 mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
 
 Multibyte (japanese) regex support => enabled
-Multibyte regex (oniguruma) version => 6.9.7
+Multibyte regex (oniguruma) version => 6.9.9
 
 Directive => Local Value => Master Value
 mbstring.detect_order => no value => no value
@@ -566,7 +566,7 @@
 
 memcached support => enabled
 Version => 3.2.0
-libmemcached version => 1.0.18
+libmemcached-awesome version => 1.1.4
 SASL support => yes
 Session support => yes
 igbinary support => no
@@ -809,8 +809,8 @@
 openssl
 
 OpenSSL support => enabled
-OpenSSL Library Version => OpenSSL 3.0.2 15 Mar 2022
-OpenSSL Header Version => OpenSSL 3.0.2 15 Mar 2022
+OpenSSL Library Version => OpenSSL 3.0.13 30 Jan 2024
+OpenSSL Header Version => OpenSSL 3.0.13 30 Jan 2024
 Openssl default config => /usr/lib/ssl/openssl.cnf
 
 Directive => Local Value => Master Value
@@ -864,7 +864,7 @@
 pdo_sqlite
 
 PDO Driver for SQLite 3.x => enabled
-SQLite Library => 3.37.2
+SQLite Library => 3.45.1
 
 pgsql
 
@@ -889,7 +889,7 @@
 phalcon => enabled
 Author => Phalcon Team and contributors
 Version => 5.7.0
-Build Date => May 28 2024 10:51:14
+Build Date => May 30 2024 02:38:59
 Powered by Zephir => Version 0.18.0-$Id$
 
 Directive => Local Value => Master Value
@@ -945,7 +945,7 @@
 Extension Version => 2.2.3
 
 Used Library => Compiled => Linked
-libpq => 14.4 (Ubuntu 14.4-1.pgdg22.04+1) => 16.3
+libpq => 16.3 (Ubuntu 16.3-1.pgdg24.04+1) => 16.3
 
 psr
 
@@ -983,14 +983,14 @@
 
 rdkafka support => enabled
 version => 6.0.3
-build date => Nov 29 2023 14:35:40
-librdkafka version (runtime) => 1.9.2
-librdkafka version (build) => 1.9.2.255
+build date => May 30 2024 02:38:26
+librdkafka version (runtime) => 2.4.0
+librdkafka version (build) => 2.4.0.255
 
 readline
 
 Readline Support => enabled
-Readline library => 8.1
+Readline library => 8.2
 
 Directive => Local Value => Master Value
 cli.pager => no value => no value
@@ -1120,7 +1120,7 @@
 sqlite3
 
 SQLite3 support => enabled
-SQLite Library => 3.37.2
+SQLite Library => 3.45.1
 
 Directive => Local Value => Master Value
 sqlite3.defensive => On => On
@@ -1162,7 +1162,7 @@
 
 XML Support => active
 XML Namespace Support => active
-libxml2 Version => 2.9.13
+libxml2 Version => 2.9.14
 
 xmlreader
 
@@ -1175,10 +1175,10 @@
 xsl
 
 XSL => enabled
-libxslt Version => 1.1.34
-libxslt compiled against libxml Version => 2.9.13
+libxslt Version => 1.1.39
+libxslt compiled against libxml Version => 2.9.14
 EXSLT => enabled
-libexslt Version => 1.1.34
+libexslt Version => 0.8.21
 
 Zend OPcache
 
@@ -1278,8 +1278,8 @@
 ZLib Support => enabled
 Stream Wrapper => compress.zlib://
 Stream Filter => zlib.inflate, zlib.deflate
-Compiled Version => 1.2.11
-Linked Version => 1.2.11
+Compiled Version => 1.3
+Linked Version => 1.3
 
 Directive => Local Value => Master Value
 zlib.output_compression => Off => Off

The libexslt version change is correct, it used to not be reported right until libxslt 1.1.35, see GNOME/libxslt@4045ed4 / GNOME/libxslt@e68b39e

dzuelke added 21 commits May 31, 2024 00:37
That new stack will only support 8.2 and 8.3.
Fixed in configure since version 2.0.5
The configure script checks for `pcre.h` (from `libpcre3-dev`), but the extension does not actually use PCRE, so we can just touch the file in case it's not there.

If 2.0.8 ever gets released to PECL (php/pecl-web_services-oauth#28), we can drop it again, since it contains the relevant fix: php/pecl-web_services-oauth@2e02631

GUS-W-14667548
ABI version is still 1, but there are behavior changes, so we are coupling 2.x to a stack upgrade: https://github.com/confluentinc/librdkafka/releases/tag/v2.0.0

GUS-W-15886497
As always, the new stack gets the PHP version series with "active support" status as listed on https://www.php.net/supported-versions.php (heroku-22 was an exception, as the at-the-time-in-active-support-status PHP 8.0 did not support OpenSSL 3, so that stack only got PHP 8.1 support upon release).

GUS-W-14667548
One more job than the number of CPU cores is a widely used reasonable default (since there is always some I/O wait etc)
Small is enough for most tasks, except compiling, where we want chunky boxes!
@dzuelke
Copy link
Contributor Author

dzuelke commented May 30, 2024

@dzuelke
Copy link
Contributor Author

dzuelke commented May 30, 2024

@dzuelke
Copy link
Contributor Author

dzuelke commented May 31, 2024

@dzuelke
Copy link
Contributor Author

dzuelke commented May 31, 2024

@dzuelke dzuelke merged commit a963d8c into main May 31, 2024
64 of 72 checks passed
@dzuelke dzuelke deleted the heroku-24 branch May 31, 2024 05:21
This was referenced May 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants