name: Real offline binary layout on: workflow_dispatch: inputs: large_mcp: description: "Also verify the complete 65,281-section result over MCP (slow)" type: boolean default: false workflow_call: permissions: contents: read concurrency: group: real-binary-layout-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: NODE_OPTIONS: --max-old-space-size=768 HUSKY: "0" REA_VERIFY_LARGE_ELF_MCP: ${{ inputs.large_mcp && '1' || '0' }} jobs: real-binary-layout: runs-on: ubuntu-24.04 timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: .nvmrc cache: npm - run: npm ci - uses: ./.github/actions/portable-build-cache - name: Acquire exact upstream libraries in an isolated runner environment shell: bash run: | layout_python_root="${RUNNER_TEMP}/rea-pwntools-layout" python3 -m venv "${layout_python_root}" "${layout_python_root}/bin/python" -m pip install --disable-pip-version-check \ 'pwntools==4.15.0' 'pyelftools==0.33' 'unicorn==2.1.2' command -v gcc command -v ld command -v strip command -v strace echo "REA_PWNTOOLS_PYTHON=${layout_python_root}/bin/python" >> "${GITHUB_ENV}" echo "REA_VERIFY_STRACE_COMMAND=$(command -v strace)" >> "${GITHUB_ENV}" - name: Verify source-owned fixtures through public CLI and MCP run: npm run verify:binary:layout