Skip to content

Commit 5112736

Browse files
committed
debugging ci
1 parent ab47e79 commit 5112736

5 files changed

Lines changed: 87 additions & 12 deletions

File tree

libs/build-nss-desktop.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ elif [[ "$(uname -s)" == "Darwin" ]] || [[ "$(uname -s)" == "Linux" ]]; then
7878
-Dsign_libs=0 \
7979
-Ddisable_libpkix=1
8080
NSS_DIST_DIR="${NSS_SRC_DIR}/dist"
81+
82+
# Debug output for CI
83+
if [[ -f "${NSS_SRC_DIR}/nss/out/Release/build.ninja" ]]; then
84+
echo "=== Dumping build.ninja for nss-desktop ==="
85+
cat "${NSS_SRC_DIR}/nss/out/Release/build.ninja"
86+
fi
8187
fi
8288

8389
# Assemble the DIST_DIR with relevant libraries and headers

libs/build-nss-ios.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
9393
-Dpython=python3
9494

9595
GENERATED_DIR="${NSS_SRC_DIR}/nss/out/Release-$(echo ${OS_COMPILER} | tr '[:upper:]' '[:lower:]')/"
96+
echo "=== Dumping build.ninja for nss-ios ==="
97+
cat "${GENERATED_DIR}/build.ninja"
9698
ninja -C "${GENERATED_DIR}"
9799

98100
# Assemble the DIST_DIR with relevant libraries and headers

libs/build-nss-macos-cross.sh

Lines changed: 75 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,38 +47,98 @@ if [[ -z "${!nss_dir_var}" ]]; then
4747
fi
4848

4949
# Use toolchain configuration from environment
50-
eval "CC=\$${RUST_ANDROID_PREFIX}_CC"
50+
eval "BASE_CC=\$${RUST_ANDROID_PREFIX}_CC"
5151
eval "AR=\$${RUST_ANDROID_PREFIX}_AR"
52+
eval "AS=\$${RUST_ANDROID_PREFIX}_AS"
5253
eval "RANLIB=\$${RUST_ANDROID_PREFIX}_RANLIB"
54+
eval "LD=\$${RUST_ANDROID_PREFIX}_LD"
5355
eval "STRIP=\$${RUST_ANDROID_PREFIX}_TOOLCHAIN_PREFIX/${NSS_TARGET}-strip"
56+
eval "TOOLCHAIN_BIN=\$${RUST_ANDROID_PREFIX}_TOOLCHAIN_PREFIX"
5457
eval "CFLAGS=\$${RUST_ANDROID_PREFIX}_CFLAGS_${NSS_TARGET//-/_}"
55-
eval "LDFLAGS=\$${RUST_ANDROID_PREFIX}_LDFLAGS_${NSS_TARGET//-/_}"
58+
59+
# Bake all compiler/linker flags into CC and CXX like build-nss-ios.sh does
60+
# This ensures ninja picks up the flags for both compilation and linking
61+
CC="${BASE_CC} ${CFLAGS}"
62+
CXX="${BASE_CC} ${CFLAGS}"
63+
export CC CXX
5664

5765
# Build NSPR
5866
NSPR_BUILD_DIR=$(mktemp -d)
5967
pushd "${NSPR_BUILD_DIR}"
60-
"${NSS_SRC_DIR}"/nspr/configure \
68+
if ! "${NSS_SRC_DIR}"/nspr/configure \
6169
STRIP="${STRIP}" \
6270
RANLIB="${RANLIB}" \
6371
AR="${AR}" \
64-
AS="${AS:-${AR}}" \
65-
LD="${LD:-${AR}}" \
72+
AS="${AS}" \
73+
LD="${LD}" \
6674
CC="${CC}" \
6775
CCC="${CC}" \
68-
CFLAGS="${CFLAGS}" \
69-
LDFLAGS="${LDFLAGS}" \
7076
--target="${NSS_TARGET}" \
7177
--enable-64bit \
7278
--disable-debug \
73-
--enable-optimize
79+
--enable-optimize; then
80+
echo "=== NSPR configure failed, dumping config.log ==="
81+
cat config.log
82+
exit 1
83+
fi
7484
make
7585
popd
7686

7787
# Build NSS using gyp
7888
NSS_BUILD_DIR=$(mktemp -d)
7989
rm -rf "${NSS_SRC_DIR}/nss/out"
8090

81-
gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
91+
# Create a fake xcodebuild script and tool wrappers to allow gyp to use the mac flavor
92+
# This tricks gyp into thinking Xcode is installed so it generates macOS-style build rules
93+
FAKE_XCODE_DIR=$(mktemp -d)
94+
cat > "${FAKE_XCODE_DIR}/xcodebuild" << 'EOF'
95+
#!/usr/bin/env bash
96+
# Fake xcodebuild that returns a version for gyp's mac flavor
97+
# Xcode 12.2 corresponds to macOS SDK 11.0 (Big Sur) and adds Apple Silicon support
98+
echo "Xcode 12.2"
99+
echo "Build version 12B45b"
100+
EOF
101+
chmod +x "${FAKE_XCODE_DIR}/xcodebuild"
102+
103+
# Create unprefixed symlinks to cctools binaries that gyp's mac flavor expects
104+
# The mac flavor expects tools like 'otool', 'libtool', 'lipo' without the target prefix
105+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-otool" "${FAKE_XCODE_DIR}/otool"
106+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-libtool" "${FAKE_XCODE_DIR}/libtool"
107+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-lipo" "${FAKE_XCODE_DIR}/lipo"
108+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-nm" "${FAKE_XCODE_DIR}/nm"
109+
110+
export PATH="${FAKE_XCODE_DIR}:${PATH}"
111+
112+
# Work around Python3 bug in Ubuntu 22.04 gyp package
113+
GYP_WRAPPER=$(mktemp)
114+
cat > "${GYP_WRAPPER}" << 'EOFGYP'
115+
#!/usr/bin/env python3
116+
import sys
117+
import gyp.xcode_emulation
118+
119+
# Monkey-patch GetStdoutQuiet to fix Python 3 bytes/str bug
120+
original_GetStdoutQuiet = gyp.xcode_emulation.GetStdoutQuiet
121+
def patched_GetStdoutQuiet(cmdlist):
122+
import subprocess
123+
job = subprocess.Popen(cmdlist, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
124+
out = job.communicate()[0]
125+
if job.returncode != 0:
126+
return None
127+
return out.rstrip(b'\n').decode('utf-8')
128+
gyp.xcode_emulation.GetStdoutQuiet = patched_GetStdoutQuiet
129+
130+
# Now run gyp normally
131+
import gyp
132+
sys.exit(gyp.script_main())
133+
EOFGYP
134+
chmod +x "${GYP_WRAPPER}"
135+
136+
# Disable Apple-specific compiler flags that don't work with non-Apple clang
137+
# These environment variables are read by gyp's xcode_emulation.py
138+
export GCC_CW_ASM_SYNTAX=NO
139+
export GCC_ENABLE_PASCAL_STRINGS=NO
140+
141+
"${GYP_WRAPPER}" -f ninja-mac "${NSS_SRC_DIR}/nss/nss.gyp" \
82142
--depth "${NSS_SRC_DIR}/nss/" \
83143
--generator-output=. \
84144
-DOS=mac \
@@ -97,6 +157,11 @@ gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
97157
-Dpython=python3
98158

99159
GENERATED_DIR="${NSS_SRC_DIR}/nss/out/Release/"
160+
echo "=== Dumping build.ninja for nss-macos-cross ==="
161+
cat "${GENERATED_DIR}/build.ninja"
162+
163+
# With the mac flavor, we can build all targets including shared libraries
164+
# The generated ninja rules will use macOS-style linker flags (e.g., -install_name instead of -soname)
100165
ninja -C "${GENERATED_DIR}"
101166

102167
# Assemble the DIST_DIR with relevant libraries and headers
@@ -112,3 +177,4 @@ ninja -C "${GENERATED_DIR}"
112177
# Cleanup
113178
rm -rf "${NSS_BUILD_DIR}"
114179
rm -rf "${NSPR_BUILD_DIR}"
180+
rm -rf "${FAKE_XCODE_DIR}"

taskcluster/scripts/toolchain/cross-compile-setup.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ for TARGET in x86_64-apple-darwin aarch64-apple-darwin; do
2929
export ${RUST_ANDROID_PREFIX}_CC=${CLANG_BIN}/clang-20
3030
export ${RUST_ANDROID_PREFIX}_TOOLCHAIN_PREFIX=${CCTOOL_BIN}
3131
export ${RUST_ANDROID_PREFIX}_AR=${CCTOOL_BIN}/${TARGET}-ar
32+
export ${RUST_ANDROID_PREFIX}_AS=${CCTOOL_BIN}/${TARGET}-as
3233
export ${RUST_ANDROID_PREFIX}_RANLIB=${CCTOOL_BIN}/${TARGET}-ranlib
34+
export ${RUST_ANDROID_PREFIX}_LD=${CCTOOL_BIN}/${TARGET}-ld
3335
export ${RUST_ANDROID_PREFIX}_LD_LIBRARY_PATH=${CLANG_LIB}
3436
export ${RUST_ANDROID_PREFIX}_RUSTFLAGS="-C linker=${CLANG_BIN}/clang-20 -C link-arg=-fuse-ld=${CCTOOL_BIN}/${TARGET}-ld -C link-arg=-B -C link-arg=${CCTOOL_BIN} -C link-arg=-target -C link-arg=${TARGET} -C link-arg=-isysroot -C link-arg=${SYSROOT} -C link-arg=-Wl,-syslibroot,${SYSROOT} -C link-arg=-Wl,-dead_strip"
35-
export ${RUST_ANDROID_PREFIX}_CFLAGS_${TARGET//-/_}="-B ${CCTOOL_BIN} -target ${TARGET} -isysroot ${SYSROOT}"
36-
export ${RUST_ANDROID_PREFIX}_LDFLAGS_${TARGET//-/_}="-B ${CCTOOL_BIN} -target ${TARGET} -isysroot ${SYSROOT} -Wl,-syslibroot,${SYSROOT} -Wl,-dead_strip"
37+
export ${RUST_ANDROID_PREFIX}_CFLAGS_${TARGET//-/_}="-B ${CCTOOL_BIN} -target ${TARGET} -isysroot ${SYSROOT} -fuse-ld=${CCTOOL_BIN}/${TARGET}-ld"
3738
export ${RUST_ANDROID_PREFIX}_BINDGEN_EXTRA_CLANG_ARGS="--sysroot ${SYSROOT}"
3839
done
3940

taskcluster/scripts/toolchain/desktop-macos.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ git submodule update --init
55
./taskcluster/scripts/toolchain/setup-fetched-rust-toolchain.sh
66
. ./taskcluster/scripts/toolchain/cross-compile-setup.sh
77
pushd libs
8-
./build-all.sh darwin-x86-64
98
./build-all.sh darwin-aarch64
9+
./build-all.sh darwin-x86-64
1010
popd
1111
mkdir -p "$UPLOAD_DIR"
1212
tar -czf "$UPLOAD_DIR"/macos.tar.gz libs/desktop

0 commit comments

Comments
 (0)