diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 2a6ed8f0a4..422513442e 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -74,12 +74,26 @@ jobs: set +e ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_system.log exit ${PIPESTATUS[0]} + # The validator above is the nightly build of main, so it cannot slice profiles that use + # settings a PR adds to the engine: it reports their placeholders as undefined. A PR that + # changes src/ also runs Build all, whose Slice check runs this same sweep with the + # validator built from the PR, so the sweep below only runs for the other PRs. + - name: Detect engine changes + id: engine_changes + if: ${{ github.event_name == 'pull_request' }} + run: | + base=${{ github.event.pull_request.base.sha }} + if git fetch --no-tags --depth=1 origin "$base" && ! git diff --quiet "$base" HEAD -- src/; then + echo "changed=true" >> "$GITHUB_OUTPUT" + echo "::notice::This PR changes src/, so Build all's Slice check slices the profiles with the PR-built validator." + fi # Slice a two-colour cube through every printer, and through every system process/filament whose # templates no printer's own slice reaches, so every custom g-code and filename_format shipped is # expanded (names in {if} branches not taken included) - catches undefined-placeholder / # invalid-flow bugs the static checks above cannot see. - name: validate slice (expand custom g-code) id: validate_slice + if: ${{ steps.engine_changes.outputs.changed != 'true' }} continue-on-error: true run: | set +e