按推荐建议,继续执行
结论:记录 LinuxCNC 上游 commit 与本地构建/fixture 基线,新增 upstream baseline 验证并接入 native 验证,确保 vendored 源码同步绑定到明确的 LinuxCNC 源程序版本。
This commit is contained in:
@@ -493,6 +493,10 @@ Current verified progress:
|
||||
`vendor/linuxcnc/`. This keeps G-code group conversion on the vendored
|
||||
LinuxCNC `interp_convert.cc` path instead of allowing the wrapper layer to
|
||||
grow another project-authored conversion implementation.
|
||||
- `docs/scope-and-baseline.md` records the current upstream LinuxCNC commit,
|
||||
local tool versions, and fixture baseline. `tools/verify_upstream_baseline.sh`
|
||||
now runs before vendor sync validation so extraction drift is checked against
|
||||
the intended upstream HEAD, not an accidental checkout change.
|
||||
|
||||
## Phase 4: Port INI Parsing Without Editing Upstream
|
||||
|
||||
|
||||
64
wasm-port/docs/scope-and-baseline.md
Normal file
64
wasm-port/docs/scope-and-baseline.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Scope And Baseline
|
||||
|
||||
## Upstream Source Baseline
|
||||
|
||||
The standalone port currently treats `../linuxcnc/` as the read-only upstream
|
||||
source provider.
|
||||
|
||||
- Upstream repository: `../linuxcnc`
|
||||
- Upstream branch at baseline: `master`
|
||||
- Upstream commit: `60597ee0718873d2449058c824262a275e5e4bad`
|
||||
- Upstream subject: `Merge pull request #4043 from grandixximo/docs-inkscape-rsvg-shim`
|
||||
- Upstream author: `andypugh`
|
||||
- Upstream commit date: `2026-05-19T15:26:50+01:00`
|
||||
|
||||
The upstream working tree is allowed to contain unrelated local files, but the
|
||||
vendored-source validation is tied to the commit above. If upstream HEAD
|
||||
changes, re-run extraction intentionally and update this baseline in the same
|
||||
change.
|
||||
|
||||
## Local Build Assumptions
|
||||
|
||||
- C++ compiler: `g++ (Debian 14.2.0-19) 14.2.0`
|
||||
- C compiler: `gcc (Debian 14.2.0-19) 14.2.0`
|
||||
- Python: `Python 3.13.5`
|
||||
- Node.js: `v20.19.2`
|
||||
- Emscripten: `emcc 3.1.69`
|
||||
|
||||
## Current Fixture Baseline
|
||||
|
||||
The native standalone validation currently uses the fixture set under
|
||||
`tests/fixtures/`.
|
||||
|
||||
G-code fixture coverage includes:
|
||||
|
||||
- linear traverse and feed
|
||||
- arc semantics
|
||||
- modal incremental and absolute distance modes
|
||||
- position parameters
|
||||
- canned cycles
|
||||
- coordinate offsets
|
||||
- feed and motion control modes
|
||||
- probe semantics
|
||||
- spindle-synchronized threading and rigid tap
|
||||
- NURBS G5 and G6
|
||||
- spindle orient
|
||||
- tool semantics and tool table setup
|
||||
- named and numbered parameters
|
||||
- O-word subroutines
|
||||
- program-end modal reset
|
||||
- canonical runtime edge calls
|
||||
|
||||
Negative fixture coverage includes:
|
||||
|
||||
- zero-feed `G1`
|
||||
- arc radius mismatch
|
||||
- zero-radius arc
|
||||
- read-only named parameter writes
|
||||
- read-only numbered parameter writes
|
||||
- missing tool
|
||||
- missing tool length offset
|
||||
|
||||
Machine baseline is still limited to standalone interpreter and trajectory
|
||||
planner probes. Full 3-axis, non-trivial kinematics, and 5-axis machine
|
||||
baselines remain future work.
|
||||
@@ -9,6 +9,7 @@ GCODE_ERROR_FIXTURE_DIR="$ROOT_DIR/tests/fixtures/gcode_errors"
|
||||
CANON_ERROR_FIXTURE_DIR="$ROOT_DIR/tests/fixtures/canon_errors"
|
||||
NAMEDPARAM_INI_FIXTURE="$ROOT_DIR/tests/fixtures/ini/namedparams.ini"
|
||||
|
||||
"$ROOT_DIR/tools/verify_upstream_baseline.sh"
|
||||
"$ROOT_DIR/tools/verify_vendor_sync.sh"
|
||||
"$ROOT_DIR/tools/verify_no_standalone_cnc_semantics.sh"
|
||||
"$ROOT_DIR/tools/build_native_probes.sh"
|
||||
|
||||
1
wasm-port/tools/upstream-baseline.txt
Normal file
1
wasm-port/tools/upstream-baseline.txt
Normal file
@@ -0,0 +1 @@
|
||||
60597ee0718873d2449058c824262a275e5e4bad
|
||||
34
wasm-port/tools/verify_upstream_baseline.sh
Executable file
34
wasm-port/tools/verify_upstream_baseline.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
UPSTREAM_DIR="$ROOT_DIR/../linuxcnc"
|
||||
BASELINE_FILE="$ROOT_DIR/tools/upstream-baseline.txt"
|
||||
|
||||
if [[ ! -d "$UPSTREAM_DIR/.git" ]]; then
|
||||
echo "missing upstream git repository: $UPSTREAM_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$BASELINE_FILE" ]]; then
|
||||
echo "missing upstream baseline file: $BASELINE_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
expected="$(sed -n '1p' "$BASELINE_FILE" | tr -d '[:space:]')"
|
||||
actual="$(git -C "$UPSTREAM_DIR" rev-parse HEAD)"
|
||||
|
||||
if [[ -z "$expected" ]]; then
|
||||
echo "empty upstream baseline file: $BASELINE_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$actual" != "$expected" ]]; then
|
||||
echo "upstream baseline mismatch:" >&2
|
||||
echo " expected: $expected" >&2
|
||||
echo " actual: $actual" >&2
|
||||
echo "Update tools/upstream-baseline.txt and docs/scope-and-baseline.md only after an intentional upstream sync." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "upstream baseline validation complete"
|
||||
Reference in New Issue
Block a user