Skip to content

Commit e0d331e

Browse files
committed
Initial commit
1 parent 03a3016 commit e0d331e

File tree

3 files changed

+97
-8
lines changed

3 files changed

+97
-8
lines changed

.github/actions/restore-checkpoint/action.yml

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,16 @@ runs:
5252
MODE_CHECKPOINT_DIR="packages/${PACKAGE_NAME}/build/${BUILD_MODE}/checkpoints"
5353
SHARED_CHECKPOINT_DIR="packages/${PACKAGE_NAME}/build/shared/checkpoints"
5454
OUTPUT_DIR="packages/${PACKAGE_NAME}/build/${BUILD_MODE}/out"
55+
SHARED_SOURCE_DIR="packages/${PACKAGE_NAME}/build/shared/source"
56+
MODE_SOURCE_DIR="packages/${PACKAGE_NAME}/build/${BUILD_MODE}/source"
5557
5658
echo "📦 Package: ${PACKAGE_NAME}"
5759
echo "🔧 Build mode: ${BUILD_MODE}"
5860
echo "📁 Mode checkpoint directory: ${MODE_CHECKPOINT_DIR}"
5961
echo "📁 Shared checkpoint directory: ${SHARED_CHECKPOINT_DIR}"
6062
echo "📤 Output directory: ${OUTPUT_DIR}"
63+
echo "📂 Shared source directory: ${SHARED_SOURCE_DIR}"
64+
echo "📂 Mode source directory: ${MODE_SOURCE_DIR}"
6165
echo ""
6266
6367
# Parse checkpoint chain into array (comma-separated)
@@ -149,10 +153,82 @@ runs:
149153
fi
150154
echo ""
151155
152-
# Extract checkpoint
153-
echo "📦 Extracting checkpoint to ${OUTPUT_DIR}..."
154-
mkdir -p "${OUTPUT_DIR}"
155-
tar -xzf "${CHECKPOINT_FILE}" -C "${OUTPUT_DIR}"
156+
# Extract checkpoint to correct directory based on checkpoint name
157+
# Checkpoint structure varies by package:
158+
#
159+
# node-smol-builder:
160+
# - finalized → build/{mode}/out/Final/
161+
# - binary-compressed → build/{mode}/out/Compressed/
162+
# - binary-stripped → build/{mode}/out/Stripped/
163+
# - binary-released → build/{mode}/out/Release/
164+
# - source-cloned → build/shared/source/
165+
# - source-patched → build/{mode}/source/
166+
#
167+
# onnxruntime-builder, yoga-layout-builder:
168+
# - finalized → build/{mode}/out/Final/
169+
# - wasm-synced → build/{mode}/out/Synced/
170+
# - wasm-released → build/{mode}/out/Released/
171+
# - wasm-optimized → build/{mode}/out/Optimized/
172+
# - wasm-compiled → build/{mode}/out/Compiled/
173+
# - source-configured → build/{mode}/source/ (yoga-layout only)
174+
# - source-cloned → build/shared/source/
175+
#
176+
# models:
177+
# - finalized → build/{mode}/out/Final/
178+
# - quantized → build/{mode}/models/
179+
# - converted → build/{mode}/models/
180+
# - downloaded → build/{mode}/models/
181+
EXTRACT_DIR="${OUTPUT_DIR}"
182+
case "${RESTORED_CHECKPOINT}" in
183+
finalized)
184+
EXTRACT_DIR="${OUTPUT_DIR}/Final"
185+
;;
186+
# node-smol-builder checkpoints
187+
binary-compressed)
188+
EXTRACT_DIR="${OUTPUT_DIR}/Compressed"
189+
;;
190+
binary-stripped)
191+
EXTRACT_DIR="${OUTPUT_DIR}/Stripped"
192+
;;
193+
binary-released)
194+
EXTRACT_DIR="${OUTPUT_DIR}/Release"
195+
;;
196+
# onnxruntime-builder, yoga-layout-builder checkpoints
197+
wasm-synced)
198+
EXTRACT_DIR="${OUTPUT_DIR}/Synced"
199+
;;
200+
wasm-released)
201+
EXTRACT_DIR="${OUTPUT_DIR}/Released"
202+
;;
203+
wasm-optimized)
204+
EXTRACT_DIR="${OUTPUT_DIR}/Optimized"
205+
;;
206+
wasm-compiled)
207+
EXTRACT_DIR="${OUTPUT_DIR}/Compiled"
208+
;;
209+
source-configured)
210+
# yoga-layout-builder specific: extract to mode source directory
211+
EXTRACT_DIR="${MODE_SOURCE_DIR}"
212+
;;
213+
# models checkpoints
214+
quantized|converted|downloaded)
215+
# Models checkpoints extract to build/{mode}/models/
216+
EXTRACT_DIR="packages/${PACKAGE_NAME}/build/${BUILD_MODE}/models"
217+
;;
218+
# Source checkpoints (shared across packages)
219+
source-cloned)
220+
# Shared checkpoint: extract to shared source directory
221+
EXTRACT_DIR="${SHARED_SOURCE_DIR}"
222+
;;
223+
source-patched)
224+
# Mode-specific checkpoint: extract to mode source directory
225+
EXTRACT_DIR="${MODE_SOURCE_DIR}"
226+
;;
227+
esac
228+
229+
echo "📦 Extracting checkpoint to ${EXTRACT_DIR}..."
230+
mkdir -p "${EXTRACT_DIR}"
231+
tar -xzf "${CHECKPOINT_FILE}" -C "${EXTRACT_DIR}"
156232
echo "✅ Checkpoint extracted successfully"
157233
echo ""
158234

packages/node-smol-builder/scripts/binary-released/shared/build-release.mjs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,13 @@ const logger = getDefaultLogger()
9494
* @param {boolean} options.autoYes - Auto-yes to prompts
9595
* @param {boolean} options.isCI - Whether running in CI
9696
* @param {boolean} options.isProdBuild - Whether this is a production build
97+
* @param {boolean} options.allowCross - Allow cross-compilation (experimental)
9798
* @param {function} options.collectBuildSourceFiles - Function to collect build source files
9899
* @param {string} options.packageRoot - Package root directory
99100
*/
100101
export async function buildRelease(options) {
101102
const {
103+
allowCross,
102104
arch,
103105
autoYes,
104106
bootstrapFile,
@@ -900,18 +902,27 @@ export async function buildRelease(options) {
900902
}
901903
}
902904

903-
// Cross-compilation support (Windows only).
905+
// Cross-compilation support (Windows only, or with --allow-cross flag).
904906
const hostArch = process.arch
905907
const isArchMismatch = arch !== hostArch
906-
const isCrossCompiling = isArchMismatch && IS_WINDOWS
908+
const isCrossCompiling = isArchMismatch && (IS_WINDOWS || allowCross)
907909
if (isCrossCompiling) {
908-
logger.log(`Cross-compiling for Windows ${arch} on ${hostArch} host`)
910+
if (IS_WINDOWS) {
911+
logger.log(`Cross-compiling for Windows ${arch} on ${hostArch} host`)
912+
} else {
913+
logger.warn(
914+
`Cross-compiling for ${platform} ${arch} on ${hostArch} host (experimental)`,
915+
)
916+
logger.warn(
917+
' This may cause build errors. Use a native runner if possible.',
918+
)
919+
}
909920
configureFlags.push(`--dest-cpu=${arch}`)
910921
} else if (isArchMismatch) {
911922
logger.fail(
912923
`Cross-compilation not supported: building ${arch} on ${hostArch} host`,
913924
)
914-
logger.log(` Use a native ${arch} runner instead.`)
925+
logger.log(` Use a native ${arch} runner or add --allow-cross flag.`)
915926
process.exit(1)
916927
}
917928

packages/node-smol-builder/scripts/common/shared/build.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ const logger = getDefaultLogger()
108108
// Parse arguments.
109109
const { values } = parseArgs({
110110
options: {
111+
'allow-cross': { type: 'boolean', short: 'X' },
111112
arch: { type: 'string' },
112113
clean: { type: 'boolean' },
113114
dev: { type: 'boolean' },
@@ -323,6 +324,7 @@ async function main() {
323324
autoYes: AUTO_YES,
324325
isCI: IS_CI,
325326
isProdBuild: IS_PROD_BUILD,
327+
allowCross: !!values['allow-cross'],
326328
collectBuildSourceFiles: () => collectBuildSourceFiles('binary-released'),
327329
packageRoot: PACKAGE_ROOT,
328330
})

0 commit comments

Comments
 (0)