Skip to content

Commit 40c052d

Browse files
committed
debugging ci
1 parent ab47e79 commit 40c052d

File tree

5 files changed

+57
-12
lines changed

5 files changed

+57
-12
lines changed

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: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,38 +47,68 @@ 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 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+
export CC
5663

5764
# Build NSPR
5865
NSPR_BUILD_DIR=$(mktemp -d)
5966
pushd "${NSPR_BUILD_DIR}"
60-
"${NSS_SRC_DIR}"/nspr/configure \
67+
if ! "${NSS_SRC_DIR}"/nspr/configure \
6168
STRIP="${STRIP}" \
6269
RANLIB="${RANLIB}" \
6370
AR="${AR}" \
64-
AS="${AS:-${AR}}" \
65-
LD="${LD:-${AR}}" \
71+
AS="${AS}" \
72+
LD="${LD}" \
6673
CC="${CC}" \
6774
CCC="${CC}" \
68-
CFLAGS="${CFLAGS}" \
69-
LDFLAGS="${LDFLAGS}" \
7075
--target="${NSS_TARGET}" \
7176
--enable-64bit \
7277
--disable-debug \
73-
--enable-optimize
78+
--enable-optimize; then
79+
echo "=== NSPR configure failed, dumping config.log ==="
80+
cat config.log
81+
exit 1
82+
fi
7483
make
7584
popd
7685

7786
# Build NSS using gyp
7887
NSS_BUILD_DIR=$(mktemp -d)
7988
rm -rf "${NSS_SRC_DIR}/nss/out"
8089

81-
gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
90+
# Create a fake xcodebuild script and tool wrappers to allow gyp to use the mac flavor
91+
# This tricks gyp into thinking Xcode is installed so it generates macOS-style build rules
92+
FAKE_XCODE_DIR=$(mktemp -d)
93+
cat > "${FAKE_XCODE_DIR}/xcodebuild" << 'EOF'
94+
#!/bin/bash
95+
# Fake xcodebuild that returns a version for gyp's mac flavor
96+
# Xcode 12.2 corresponds to macOS SDK 11.0 (Big Sur) and adds Apple Silicon support
97+
echo "Xcode 12.2"
98+
echo "Build version 12B45b"
99+
EOF
100+
chmod +x "${FAKE_XCODE_DIR}/xcodebuild"
101+
102+
# Create unprefixed symlinks to cctools binaries that gyp's mac flavor expects
103+
# The mac flavor expects tools like 'otool', 'libtool', 'lipo' without the target prefix
104+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-otool" "${FAKE_XCODE_DIR}/otool"
105+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-libtool" "${FAKE_XCODE_DIR}/libtool"
106+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-lipo" "${FAKE_XCODE_DIR}/lipo"
107+
ln -s "${TOOLCHAIN_BIN}/${NSS_TARGET}-nm" "${FAKE_XCODE_DIR}/nm"
108+
109+
export PATH="${FAKE_XCODE_DIR}:${PATH}"
110+
111+
gyp -f ninja-mac "${NSS_SRC_DIR}/nss/nss.gyp" \
82112
--depth "${NSS_SRC_DIR}/nss/" \
83113
--generator-output=. \
84114
-DOS=mac \
@@ -97,6 +127,11 @@ gyp -f ninja "${NSS_SRC_DIR}/nss/nss.gyp" \
97127
-Dpython=python3
98128

99129
GENERATED_DIR="${NSS_SRC_DIR}/nss/out/Release/"
130+
echo "=== Dumping build.ninja for nss-macos-cross ==="
131+
cat "${GENERATED_DIR}/build.ninja"
132+
133+
# With the mac flavor, we can build all targets including shared libraries
134+
# The generated ninja rules will use macOS-style linker flags (e.g., -install_name instead of -soname)
100135
ninja -C "${GENERATED_DIR}"
101136

102137
# Assemble the DIST_DIR with relevant libraries and headers
@@ -112,3 +147,4 @@ ninja -C "${GENERATED_DIR}"
112147
# Cleanup
113148
rm -rf "${NSS_BUILD_DIR}"
114149
rm -rf "${NSPR_BUILD_DIR}"
150+
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)