@@ -65,56 +65,87 @@ jobs:
6565 run : |
6666 brew update
6767 brew install ninja boost qt@5 miniupnpc qrencode icu4c
68+
69+ # Set environment variables for Boost and ICU
6870 echo "BOOST_ROOT=$(brew --prefix boost)" >> $GITHUB_ENV
69- echo "ICU_ROOT=$(brew --prefix icu4c@77)" >> $GITHUB_ENV
70- echo "PATH=$(brew --prefix icu4c@77)/bin:$PATH" >> $GITHUB_ENV
71- echo "PKG_CONFIG_PATH=$(brew --prefix icu4c@77)/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV
72- echo "LDFLAGS=-L$(brew --prefix icu4c@77)/lib" >> $GITHUB_ENV
73- echo "CPPFLAGS=-I$(brew --prefix icu4c@77)/include" >> $GITHUB_ENV
71+
72+ # Try different ICU versions
73+ if [ -d "$(brew --prefix)/opt/icu4c" ]; then
74+ ICU_PREFIX="$(brew --prefix)/opt/icu4c"
75+ elif [ -d "$(brew --prefix)/opt/icu4c@77" ]; then
76+ ICU_PREFIX="$(brew --prefix)/opt/icu4c@77"
77+ elif [ -d "$(brew --prefix)/opt/icu4c@76" ]; then
78+ ICU_PREFIX="$(brew --prefix)/opt/icu4c@76"
79+ else
80+ ICU_PREFIX="$(brew --prefix icu4c)"
81+ fi
82+
83+ echo "ICU_ROOT=$ICU_PREFIX" >> $GITHUB_ENV
84+ echo "PATH=$ICU_PREFIX/bin:$PATH" >> $GITHUB_ENV
85+ echo "PKG_CONFIG_PATH=$ICU_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV
86+ echo "LDFLAGS=-L$ICU_PREFIX/lib" >> $GITHUB_ENV
87+ echo "CPPFLAGS=-I$ICU_PREFIX/include" >> $GITHUB_ENV
7488
7589 - name : Install dependencies (Windows)
7690 if : matrix.os == 'windows-2022'
7791 shell : pwsh
7892 run : |
79- choco install -y ninja vcpkg miniupnpc qrencode qt5-default
80- vcpkg install --triplet x64-windows boost-filesystem boost-thread boost-date-time `
81- boost-chrono boost-regex boost-serialization boost-program-options `
82- boost-multi-index boost-uuid boost-asio boost-scope-exit boost-format `
83- icu openssl
93+ # Install basic tools
94+ choco install -y ninja
95+
96+ # Initialize vcpkg if not already done
97+ if (-not (Test-Path "C:/vcpkg/vcpkg.exe")) {
98+ git clone https://github.com/Microsoft/vcpkg.git C:/vcpkg
99+ cd C:/vcpkg
100+ .\bootstrap-vcpkg.bat
101+ .\vcpkg integrate install
102+ }
103+
104+ # Install packages via vcpkg
105+ C:/vcpkg/vcpkg.exe install --triplet x64-windows `
106+ boost-filesystem boost-thread boost-date-time boost-chrono `
107+ boost-regex boost-serialization boost-program-options `
108+ boost-multi-index boost-uuid boost-asio boost-scope-exit `
109+ boost-format icu openssl miniupnpc
84110
85111 # -------------------- Configure & Build --------------------
86112 - name : Configure
87113 shell : bash
88114 run : |
89115 if [ "${{ matrix.os }}" = "macos-14" ]; then
90- export ICU_ROOT=$(brew --prefix icu4c@77)
116+ # ICU_ROOT should be set from previous step
91117 export PATH="$ICU_ROOT/bin:$PATH"
92118 export PKG_CONFIG_PATH="$ICU_ROOT/lib/pkgconfig:$PKG_CONFIG_PATH"
93119 export LDFLAGS="-L$ICU_ROOT/lib $LDFLAGS"
94120 export CPPFLAGS="-I$ICU_ROOT/include $CPPFLAGS"
95121
122+ echo "Using ICU_ROOT: $ICU_ROOT"
123+ echo "Available ICU libraries:"
124+ ls -la "$ICU_ROOT/lib/" | grep -E "libicu.*\.(dylib|a)$" || echo "No ICU libraries found"
125+
96126 # Check for ICU library files and use versioned names if needed
97127 ICU_DATA_LIB=""
98128 ICU_I18N_LIB=""
99129 ICU_UC_LIB=""
100130
101- if [ -f "$ICU_ROOT/lib/libicudata.77.dylib" ]; then
102- ICU_DATA_LIB="$ICU_ROOT/lib/libicudata.77.dylib"
103- elif [ -f "$ICU_ROOT/lib/libicudata.dylib" ]; then
104- ICU_DATA_LIB="$ICU_ROOT/lib/libicudata.dylib"
105- fi
106-
107- if [ -f "$ICU_ROOT/lib/libicui18n.77.dylib" ]; then
108- ICU_I18N_LIB="$ICU_ROOT/lib/libicui18n.77.dylib"
109- elif [ -f "$ICU_ROOT/lib/libicui18n.dylib" ]; then
110- ICU_I18N_LIB="$ICU_ROOT/lib/libicui18n.dylib"
111- fi
112-
113- if [ -f "$ICU_ROOT/lib/libicuuc.77.dylib" ]; then
114- ICU_UC_LIB="$ICU_ROOT/lib/libicuuc.77.dylib"
115- elif [ -f "$ICU_ROOT/lib/libicuuc.dylib" ]; then
116- ICU_UC_LIB="$ICU_ROOT/lib/libicuuc.dylib"
117- fi
131+ # Try to find ICU libraries with different version patterns
132+ for version in 77 76 75 74 ""; do
133+ if [ -n "$version" ]; then
134+ suffix=".$version.dylib"
135+ else
136+ suffix=".dylib"
137+ fi
138+
139+ if [ -z "$ICU_DATA_LIB" ] && [ -f "$ICU_ROOT/lib/libicudata$suffix" ]; then
140+ ICU_DATA_LIB="$ICU_ROOT/lib/libicudata$suffix"
141+ fi
142+ if [ -z "$ICU_I18N_LIB" ] && [ -f "$ICU_ROOT/lib/libicui18n$suffix" ]; then
143+ ICU_I18N_LIB="$ICU_ROOT/lib/libicui18n$suffix"
144+ fi
145+ if [ -z "$ICU_UC_LIB" ] && [ -f "$ICU_ROOT/lib/libicuuc$suffix" ]; then
146+ ICU_UC_LIB="$ICU_ROOT/lib/libicuuc$suffix"
147+ fi
148+ done
118149
119150 echo "ICU Data Library: $ICU_DATA_LIB"
120151 echo "ICU I18N Library: $ICU_I18N_LIB"
@@ -125,7 +156,7 @@ jobs:
125156 -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
126157 -DCMAKE_OSX_ARCHITECTURES=arm64 \
127158 -DBOOST_ROOT="$BOOST_ROOT" \
128- -DBUILD_TESTS=ON
159+ -DBUILD_TESTS=ON \
129160 -DICU_ROOT="$ICU_ROOT" \
130161 -DICU_INCLUDE_DIR="$ICU_ROOT/include" \
131162 -DICU_DATA_LIBRARY="$ICU_DATA_LIB" \
@@ -148,7 +179,7 @@ jobs:
148179 cmake -S . -B build \
149180 -G Ninja \
150181 -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
151- -DBUILD_TESTS=ON
182+ -DBUILD_TESTS=ON \
152183 -DCMAKE_POLICY_DEFAULT_CMP0167=OLD
153184 fi
154185
@@ -158,11 +189,19 @@ jobs:
158189 # -------------------- Run Tests --------------------
159190 - name : Run tests
160191 if : success()
192+ shell : bash
161193 run : |
162- if [ -f "build/CTestTestfile.cmake" ]; then
163- ctest --test-dir build --output-on-failure
194+ cd build
195+ if [ -f "CTestTestfile.cmake" ]; then
196+ echo "Running tests..."
197+ ctest --output-on-failure --verbose
198+ elif [ -f "test/CTestTestfile.cmake" ]; then
199+ echo "Running tests from test directory..."
200+ ctest --test-dir test --output-on-failure --verbose
164201 else
165202 echo "No tests configured, skipping ctest"
203+ echo "Available files in build directory:"
204+ find . -name "CTestTestfile.cmake" -o -name "*test*" -type f | head -10
166205 fi
167206
168207 # -------------------- Upload Artifacts --------------------
0 commit comments