按推荐建议,继续执行

结论:记录 LinuxCNC 上游 commit 与本地构建/fixture 基线,新增 upstream baseline 验证并接入 native 验证,确保 vendored 源码同步绑定到明确的 LinuxCNC 源程序版本。
This commit is contained in:
2026-06-07 18:36:09 +08:00
parent c3157ee3f8
commit facffaab89
5 changed files with 104 additions and 0 deletions

View File

@@ -493,6 +493,10 @@ Current verified progress:
`vendor/linuxcnc/`. This keeps G-code group conversion on the vendored `vendor/linuxcnc/`. This keeps G-code group conversion on the vendored
LinuxCNC `interp_convert.cc` path instead of allowing the wrapper layer to LinuxCNC `interp_convert.cc` path instead of allowing the wrapper layer to
grow another project-authored conversion implementation. 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 ## Phase 4: Port INI Parsing Without Editing Upstream

View 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.

View File

@@ -9,6 +9,7 @@ GCODE_ERROR_FIXTURE_DIR="$ROOT_DIR/tests/fixtures/gcode_errors"
CANON_ERROR_FIXTURE_DIR="$ROOT_DIR/tests/fixtures/canon_errors" CANON_ERROR_FIXTURE_DIR="$ROOT_DIR/tests/fixtures/canon_errors"
NAMEDPARAM_INI_FIXTURE="$ROOT_DIR/tests/fixtures/ini/namedparams.ini" 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_vendor_sync.sh"
"$ROOT_DIR/tools/verify_no_standalone_cnc_semantics.sh" "$ROOT_DIR/tools/verify_no_standalone_cnc_semantics.sh"
"$ROOT_DIR/tools/build_native_probes.sh" "$ROOT_DIR/tools/build_native_probes.sh"

View File

@@ -0,0 +1 @@
60597ee0718873d2449058c824262a275e5e4bad

View 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"