Skip to content

Commit c42f095

Browse files
committed
debug pipeline
1 parent 2b0a386 commit c42f095

File tree

2 files changed

+127
-21
lines changed

2 files changed

+127
-21
lines changed

.github/workflows/build-test.yml

+62-3
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,30 @@ jobs:
9797
else
9898
LIB_EXT=so
9999
fi
100-
cp out.gn/$V8CONFIG/lib*.${LIB_EXT} out.gn/$V8CONFIG/*_blob.bin out.gn/$V8CONFIG/icudtl.dat /opt/v8/self-built/lib/
100+
# Copy all V8 libraries and support files
101+
cp -v out.gn/$V8CONFIG/lib*.${LIB_EXT}* out.gn/$V8CONFIG/*_blob.bin out.gn/$V8CONFIG/icudtl.dat /opt/v8/self-built/lib/
102+
# Copy all V8 static libraries as well
103+
cp -v out.gn/$V8CONFIG/obj/libv8_*.a /opt/v8/self-built/lib/ 2>/dev/null || true
104+
# Copy headers
101105
cp -R include/* /opt/v8/self-built/include/
106+
# Create symlinks for libraries without version numbers
107+
cd /opt/v8/self-built/lib/
108+
for lib in lib*.${LIB_EXT}.*; do
109+
if [[ $lib == *\.${LIB_EXT}.* ]]; then
110+
ln -sf $lib ${lib%%.*} 2>/dev/null || true
111+
fi
112+
done
113+
# Set library search path
114+
if [[ "${{ runner.os }}" == "Linux" ]]; then
115+
echo "/opt/v8/self-built/lib" | sudo tee /etc/ld.so.conf.d/v8.conf
116+
sudo ldconfig
117+
elif [[ "${{ runner.os }}" == "macOS" ]]; then
118+
# On macOS, update DYLD_LIBRARY_PATH for the current session
119+
echo "DYLD_LIBRARY_PATH=/opt/v8/self-built/lib" >> $GITHUB_ENV
120+
# Also create symlinks in /usr/local/lib for system-wide access
121+
sudo mkdir -p /usr/local/lib/v8
122+
sudo ln -sf /opt/v8/self-built/lib/*.dylib* /usr/local/lib/v8/
123+
fi
102124
103125
# Go back to origin
104126
cd "${GITHUB_WORKSPACE}"
@@ -158,9 +180,46 @@ jobs:
158180

159181
- name: Build extension
160182
run: |
183+
# Set library paths based on OS
184+
if [[ "${{ runner.os }}" == "Linux" ]]; then
185+
export LD_LIBRARY_PATH="/opt/v8/self-built/lib:${LD_LIBRARY_PATH:-}"
186+
# Ensure linker can find the libraries
187+
echo "/opt/v8/self-built/lib" | sudo tee /etc/ld.so.conf.d/v8js.conf
188+
sudo ldconfig
189+
echo "=== Library search paths ==="
190+
ldconfig -p | grep v8 || true
191+
elif [[ "${{ runner.os }}" == "macOS" ]]; then
192+
export DYLD_LIBRARY_PATH="/opt/v8/self-built/lib:${DYLD_LIBRARY_PATH:-}"
193+
fi
194+
195+
# List V8 libraries for debugging
196+
echo "=== Available V8 libraries ==="
197+
ls -la /opt/v8/self-built/lib/
198+
199+
# Build the extension
161200
phpize
162-
./configure --with-v8js=/opt/v8/self-built LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX"
163-
make
201+
202+
# Configure with explicit library paths
203+
echo "=== Running configure ==="
204+
./configure \
205+
--with-v8js=/opt/v8/self-built \
206+
LDFLAGS="-L/opt/v8/self-built/lib -Wl,-rpath=/opt/v8/self-built/lib" \
207+
CPPFLAGS="-I/opt/v8/self-built/include -DV8_COMPRESS_POINTERS -DV8_ENABLE_SANDBOX" \
208+
LIBS="-lstdc++" \
209+
V8_LIBS="-L/opt/v8/self-built/lib -lv8 -lv8_libplatform -lv8_libbase -lstdc++ -lpthread -ldl"
210+
211+
# Build with verbose output
212+
echo "=== Building extension ==="
213+
make -j$(nproc) V=1
214+
215+
# Verify the linked libraries
216+
if [[ "${{ runner.os }}" == "Linux" ]]; then
217+
echo "=== Checking linked libraries ==="
218+
ldd modules/v8js.so | grep -i v8 || true
219+
fi
220+
221+
# Run tests
222+
echo "=== Running tests ==="
164223
make test
165224
166225
- name: Archive test results

config.m4

+65-18
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,78 @@ if test "$PHP_V8JS" != "no"; then
2424

2525
AC_MSG_CHECKING([for V8 files in default path])
2626
ARCH=$(uname -m)
27-
27+
28+
AC_MSG_NOTICE([Searching for V8 in: $SEARCH_PATH])
29+
AC_MSG_NOTICE([Looking for library: $SEARCH_FOR])
30+
AC_MSG_NOTICE([System architecture: $ARCH])
31+
AC_MSG_NOTICE([PHP library directory: $PHP_LIBDIR])
32+
33+
found_v8=no
34+
2835
for i in $SEARCH_PATH ; do
29-
if test -r "$i/$PHP_LIBDIR/$SEARCH_FOR" -a -r "$i/include/$libname/v8.h"; then
30-
V8_INCLUDE_DIR="$i/include/$libname"
31-
V8_LIBRARY_DIR="$i/$PHP_LIBDIR"
32-
AC_MSG_RESULT(found in $i)
33-
break 2
36+
AC_MSG_NOTICE([Checking path: $i])
37+
38+
# Check for standard installation
39+
if test -r "$i/$PHP_LIBDIR/$SEARCH_FOR"; then
40+
AC_MSG_NOTICE([ Found library: $i/$PHP_LIBDIR/$SEARCH_FOR])
41+
42+
if test -r "$i/include/$libname/v8.h"; then
43+
AC_MSG_NOTICE([ Found include file: $i/include/$libname/v8.h])
44+
V8_INCLUDE_DIR="$i/include/$libname"
45+
V8_LIBRARY_DIR="$i/$PHP_LIBDIR"
46+
AC_MSG_RESULT([found standard installation in $i])
47+
found_v8=yes
48+
break 2
49+
else
50+
AC_MSG_NOTICE([ Missing include file: $i/include/$libname/v8.h])
51+
fi
52+
else
53+
AC_MSG_NOTICE([ Missing library: $i/$PHP_LIBDIR/$SEARCH_FOR])
3454
fi
3555

36-
# Debian installations
37-
if test -r "$i/$PHP_LIBDIR/$ARCH-linux-gnu/$SEARCH_FOR"; then
38-
V8_INCLUDE_DIR="$i/include/$libname"
39-
V8_LIBRARY_DIR="$i/$PHP_LIBDIR/$ARCH-linux-gnu"
40-
AC_MSG_RESULT(found in $i)
41-
break 2
56+
# Check for Debian installations
57+
DEBIAN_PATH="$i/$PHP_LIBDIR/$ARCH-linux-gnu"
58+
if test -r "$DEBIAN_PATH/$SEARCH_FOR"; then
59+
AC_MSG_NOTICE([ Found Debian library: $DEBIAN_PATH/$SEARCH_FOR])
60+
61+
if test -r "$i/include/$libname/v8.h"; then
62+
AC_MSG_NOTICE([ Found include file: $i/include/$libname/v8.h])
63+
V8_INCLUDE_DIR="$i/include/$libname"
64+
V8_LIBRARY_DIR="$DEBIAN_PATH"
65+
AC_MSG_RESULT([found Debian installation in $i])
66+
found_v8=yes
67+
break 2
68+
else
69+
AC_MSG_NOTICE([ Missing Debian include file: $i/include/$libname/v8.h])
70+
fi
71+
else
72+
AC_MSG_NOTICE([ Missing Debian library: $DEBIAN_PATH/$SEARCH_FOR])
4273
fi
4374

44-
# Manual installations
45-
if test -r "$i/$PHP_LIBDIR/$SEARCH_FOR" -a -r "$i/include/libplatform/libplatform.h"; then
46-
V8_INCLUDE_DIR="$i/include"
47-
V8_LIBRARY_DIR="$i/$PHP_LIBDIR"
48-
AC_MSG_RESULT(found in $i)
49-
break 2
75+
# Check for manual installations
76+
if test -r "$i/$PHP_LIBDIR/$SEARCH_FOR"; then
77+
AC_MSG_NOTICE([ Found manual library: $i/$PHP_LIBDIR/$SEARCH_FOR])
78+
79+
if test -r "$i/include/libplatform/libplatform.h"; then
80+
AC_MSG_NOTICE([ Found manual include file: $i/include/libplatform/libplatform.h])
81+
V8_INCLUDE_DIR="$i/include"
82+
V8_LIBRARY_DIR="$i/$PHP_LIBDIR"
83+
AC_MSG_RESULT([found manual installation in $i])
84+
found_v8=yes
85+
break 2
86+
else
87+
AC_MSG_NOTICE([ Missing manual include file: $i/include/libplatform/libplatform.h])
88+
fi
5089
fi
90+
91+
AC_MSG_NOTICE([No V8 found in $i])
5192
done
93+
94+
if test "$found_v8" = "no"; then
95+
AC_MSG_NOTICE([V8 not found in any search path])
96+
AC_MSG_NOTICE([Searched for library: $SEARCH_FOR])
97+
AC_MSG_NOTICE([Searched paths: $SEARCH_PATH])
98+
fi
5299
done
53100

54101
AC_DEFINE_UNQUOTED([PHP_V8_EXEC_PATH], "$V8_LIBRARY_DIR/$SEARCH_FOR", [Full path to libv8 library file])

0 commit comments

Comments
 (0)