@@ -204,12 +204,15 @@ jobs:
204
204
- name : Install build dependencies (macOS)
205
205
if : matrix.platform == 'darwin'
206
206
run : |
207
- # Install PHP dependencies via Homebrew (alternative to launchpad)
207
+ # Install PHP dependencies via Homebrew but use specific ICU version for compatibility
208
208
echo "🔧 Installing PHP dependencies via Homebrew..."
209
209
echo "🔍 Debug info:"
210
210
echo " - Platform: darwin"
211
211
echo " - Architecture: $(uname -m)"
212
212
213
+ # Update Homebrew to ensure we get the latest packages
214
+ brew update
215
+
213
216
# Install dependencies with quiet output to reduce warnings
214
217
brew install --quiet \
215
218
autoconf \
@@ -239,6 +242,22 @@ jobs:
239
242
libiconv \
240
243
gettext
241
244
245
+ # Get ICU version info
246
+ echo "🔧 ICU installation complete"
247
+
248
+ # Get the actual installed version
249
+ ICU_VER=$(brew list --versions icu4c | grep -o '[0-9]\+\.[0-9]\+' | head -1 | cut -d. -f1)
250
+ ICU_FULL_VER=$(brew list --versions icu4c | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -1)
251
+
252
+ echo "✅ Using ICU v$ICU_VER (full version: $ICU_FULL_VER) - latest from Homebrew"
253
+ echo "ICU_VERSION=$ICU_VER" >> $GITHUB_ENV
254
+ echo "ICU_FULL_VERSION=$ICU_FULL_VER" >> $GITHUB_ENV
255
+
256
+ # Verify ICU installation
257
+ echo "🔍 ICU installation details:"
258
+ brew --prefix icu4c
259
+ ls -la $(brew --prefix icu4c)/lib/libicu*.dylib | head -5
260
+
242
261
# Verify readline installation
243
262
echo "Checking readline installation:"
244
263
ls -la $(brew --prefix readline)/include/readline/readline.h || echo "readline.h not found in expected location"
@@ -352,11 +371,14 @@ jobs:
352
371
run : |
353
372
# Set paths for Homebrew dependencies including keg-only packages
354
373
# Use a more organized approach to avoid duplicates
374
+ ICU_PREFIX="$(brew --prefix icu4c)"
375
+ echo "🔍 Using ICU from: $ICU_PREFIX"
376
+
355
377
PKG_CONFIG_PATHS=(
356
378
"$(brew --prefix)/lib/pkgconfig"
357
379
"$(brew --prefix openssl@3)/lib/pkgconfig"
358
380
"$(brew --prefix libxml2)/lib/pkgconfig"
359
- "$(brew --prefix icu4c) /lib/pkgconfig"
381
+ "$ICU_PREFIX /lib/pkgconfig"
360
382
"$(brew --prefix zlib)/lib/pkgconfig"
361
383
"$(brew --prefix postgresql@17)/lib/pkgconfig"
362
384
"$(brew --prefix libpq)/lib/pkgconfig"
@@ -388,6 +410,7 @@ jobs:
388
410
"-L$(brew --prefix bzip2)/lib"
389
411
"-L$(brew --prefix gettext)/lib"
390
412
"-L$(brew --prefix openldap)/lib"
413
+ "-L$ICU_PREFIX/lib"
391
414
)
392
415
LDFLAGS_JOINED=$(IFS=' '; echo "${LDFLAGS_PATHS[*]}")
393
416
echo "LDFLAGS=$LDFLAGS_JOINED" >> $GITHUB_ENV
@@ -402,6 +425,7 @@ jobs:
402
425
"-I$(brew --prefix bzip2)/include"
403
426
"-I$(brew --prefix gettext)/include"
404
427
"-I$(brew --prefix openldap)/include"
428
+ "-I$ICU_PREFIX/include"
405
429
)
406
430
CPPFLAGS_JOINED=$(IFS=' '; echo "${CPPFLAGS_PATHS[*]}")
407
431
echo "CPPFLAGS=$CPPFLAGS_JOINED" >> $GITHUB_ENV
@@ -585,11 +609,14 @@ jobs:
585
609
READLINE_PATH=$(brew --prefix readline)
586
610
if [[ -f "$READLINE_PATH/include/readline/readline.h" ]]; then
587
611
echo "Found readline.h at $READLINE_PATH/include/readline/readline.h"
588
- EXTRA_CONFIG="--with-iconv=$(brew --prefix libiconv) --with-readline=$READLINE_PATH"
612
+ EXTRA_CONFIG="--with-iconv=$(brew --prefix libiconv) --with-readline=$READLINE_PATH --with-icu-dir=$ICU_PREFIX "
589
613
else
590
614
echo "readline.h not found, disabling readline support"
591
- EXTRA_CONFIG="--with-iconv=$(brew --prefix libiconv) --disable-readline"
615
+ EXTRA_CONFIG="--with-iconv=$(brew --prefix libiconv) --disable-readline --with-icu-dir=$ICU_PREFIX "
592
616
fi
617
+
618
+ echo "🔍 ICU configuration: --with-icu-dir=$ICU_PREFIX"
619
+ echo "🔍 ICU version being used: $ICU_VERSION"
593
620
594
621
# Check if PostgreSQL is available and working
595
622
echo "Debug: POSTGRESQL_AVAILABLE=$POSTGRESQL_AVAILABLE"
@@ -966,16 +993,30 @@ jobs:
966
993
run : |
967
994
cd ${{ env.OUTPUT_DIR }}
968
995
969
- # Create metadata file
996
+ # Create metadata file with ICU version info
997
+ ICU_VER="unknown"
998
+ ICU_FULL_VER="unknown"
999
+ if [[ "${{ matrix.platform }}" == "darwin" ]]; then
1000
+ ICU_VER="${ICU_VERSION:-unknown}"
1001
+ ICU_FULL_VER="${ICU_FULL_VERSION:-unknown}"
1002
+ elif [[ "${{ matrix.platform }}" == "linux" ]]; then
1003
+ # Get ICU version on Linux
1004
+ ICU_VER=$(pkg-config --modversion icu-uc 2>/dev/null | cut -d. -f1 || echo "unknown")
1005
+ ICU_FULL_VER=$(pkg-config --modversion icu-uc 2>/dev/null || echo "unknown")
1006
+ fi
1007
+
970
1008
cat > ${{ env.BINARY_NAME }}/metadata.json << EOF
971
1009
{
972
1010
"php_version": "${{ matrix.php_version }}",
973
1011
"platform": "${{ matrix.platform }}",
974
1012
"architecture": "${{ matrix.arch }}",
975
1013
"configuration": "${{ matrix.config }}",
1014
+ "icu_version": "$ICU_VER",
1015
+ "icu_full_version": "$ICU_FULL_VER",
976
1016
"built_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
977
1017
"built_by": "GitHub Actions",
978
1018
"commit": "${{ github.sha }}",
1019
+ "runner_os": "${{ runner.os }}",
979
1020
"extensions": "$(echo '${{ env.CONFIGURE_EXTENSIONS }}' | tr ' ' '\n' | grep -E '^--(enable|with)-' | sed 's/^--[^-]*-//' | sort | tr '\n' ',' | sed 's/,$//')"
980
1021
}
981
1022
EOF
0 commit comments