|
96 | 96 | # O8 / D19: the Android app sandbox (SELinux) on an emulator, through the |
97 | 97 | # debuggable Termux APK and `run-as`. |
98 | 98 | termux-emulator: |
| 99 | + if: false |
99 | 100 | name: termux app sandbox on an x86_64 emulator |
100 | 101 | runs-on: ubuntu-24.04 |
101 | 102 | timeout-minutes: 120 |
@@ -123,3 +124,111 @@ jobs: |
123 | 124 | with: |
124 | 125 | name: termux-emulator |
125 | 126 | path: ${{ runner.temp }}/termux-emu-logs |
| 127 | + |
| 128 | + # Round 8: the release candidate (mcpp release/2026.10.10.1 + xlings |
| 129 | + # 2026.10.10.2) through the fresh-install script the release adds (D27). |
| 130 | + candidate: |
| 131 | + name: candidate tarballs (release/2026.10.10.1) |
| 132 | + runs-on: ubuntu-24.04 |
| 133 | + timeout-minutes: 120 |
| 134 | + steps: |
| 135 | + - uses: actions/checkout@v4 |
| 136 | + with: |
| 137 | + ref: release/2026.10.10.1 |
| 138 | + - name: Bootstrap |
| 139 | + env: |
| 140 | + XLINGS_NON_INTERACTIVE: '1' |
| 141 | + run: | |
| 142 | + sudo apt-get install -y qemu-user-static >/dev/null |
| 143 | + XV=2026.10.10.2 |
| 144 | + curl -fsSL -o /tmp/xl.tgz "https://github.com/openxlings/xlings/releases/download/v$XV/xlings-$XV-linux-x86_64.tar.gz" |
| 145 | + tar -xzf /tmp/xl.tgz -C /tmp |
| 146 | + "/tmp/xlings-$XV-linux-x86_64/subos/default/bin/xlings" self install |
| 147 | + echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH" |
| 148 | + echo "$HOME/.xlings/bin" >> "$GITHUB_PATH" |
| 149 | + echo "XLINGS_BIN=$HOME/.xlings/subos/default/bin/xlings" >> "$GITHUB_ENV" |
| 150 | + - name: Build both static binaries |
| 151 | + run: | |
| 152 | + xlings config --mirror GLOBAL 2>/dev/null || true |
| 153 | + xlings update -y 2>/dev/null || true |
| 154 | + MCPP=$(bash .github/tools/install_pinned_mcpp.sh "$GITHUB_WORKSPACE") |
| 155 | + export MCPP_VENDORED_XLINGS="$XLINGS_BIN" |
| 156 | + "$MCPP" build --target x86_64-linux-musl |
| 157 | + X=$(find target/x86_64-linux-musl -type f -name mcpp | head -1) |
| 158 | + "$X" build --target aarch64-linux-musl |
| 159 | + A=$(find target/aarch64-linux-musl -type f -name mcpp | head -1) |
| 160 | + file "$X" "$A" |
| 161 | + echo "X=$GITHUB_WORKSPACE/$X" >> "$GITHUB_ENV" |
| 162 | + echo "A=$GITHUB_WORKSPACE/$A" >> "$GITHUB_ENV" |
| 163 | + - name: Assemble the candidates on the 2026.10.8.1 layout |
| 164 | + run: | |
| 165 | + mkdir -p cand && cd cand |
| 166 | + for arch in x86_64 aarch64; do |
| 167 | + curl -fsSL -o base.tgz "https://github.com/mcpp-community/mcpp/releases/download/v2026.10.8.1/mcpp-2026.10.8.1-linux-$arch.tar.gz" |
| 168 | + curl -fsSL -o xl.tgz "https://github.com/openxlings/xlings/releases/download/v2026.10.10.2/xlings-2026.10.10.2-linux-$arch.tar.gz" |
| 169 | + rm -rf w xl && mkdir w xl && tar -xzf base.tgz -C w && tar -xzf xl.tgz -C xl |
| 170 | + D=$(ls -d w/mcpp-*) |
| 171 | + if [ "$arch" = x86_64 ]; then cp "$X" "$D/bin/mcpp"; else cp "$A" "$D/bin/mcpp"; fi |
| 172 | + cp "$(find xl -path '*/bin/xlings' -type f | head -1)" "$D/registry/bin/xlings" |
| 173 | + mv "$D" "w/mcpp-2026.10.10.1-linux-$arch" |
| 174 | + tar -czf "mcpp-candidate-linux-$arch.tar.gz" -C w "mcpp-2026.10.10.1-linux-$arch" |
| 175 | + done |
| 176 | + ls -la |
| 177 | + - uses: actions/upload-artifact@v4 |
| 178 | + with: |
| 179 | + name: candidates |
| 180 | + path: cand/mcpp-candidate-linux-*.tar.gz |
| 181 | + |
| 182 | + candidate-termux-docker: |
| 183 | + needs: [candidate] |
| 184 | + name: candidate in termux-docker aarch64 |
| 185 | + runs-on: ubuntu-24.04-arm |
| 186 | + timeout-minutes: 150 |
| 187 | + steps: |
| 188 | + - uses: actions/checkout@v4 |
| 189 | + with: |
| 190 | + ref: release/2026.10.10.1 |
| 191 | + - uses: actions/download-artifact@v4 |
| 192 | + with: |
| 193 | + name: candidates |
| 194 | + path: cand |
| 195 | + - run: bash .github/tools/termux_fresh_install.sh docker "$GITHUB_WORKSPACE/cand/mcpp-candidate-linux-aarch64.tar.gz" |
| 196 | + - uses: actions/upload-artifact@v4 |
| 197 | + if: always() |
| 198 | + with: |
| 199 | + name: candidate-termux-docker |
| 200 | + path: ${{ runner.temp }}/termux-fresh/logs |
| 201 | + |
| 202 | + candidate-termux-emulator: |
| 203 | + needs: [candidate] |
| 204 | + name: candidate in the Termux app sandbox (x86_64 emulator) |
| 205 | + runs-on: ubuntu-24.04 |
| 206 | + timeout-minutes: 150 |
| 207 | + steps: |
| 208 | + - uses: actions/checkout@v4 |
| 209 | + with: |
| 210 | + ref: release/2026.10.10.1 |
| 211 | + - uses: actions/download-artifact@v4 |
| 212 | + with: |
| 213 | + name: candidates |
| 214 | + path: cand |
| 215 | + - name: Enable KVM |
| 216 | + run: | |
| 217 | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules |
| 218 | + sudo udevadm control --reload-rules |
| 219 | + sudo udevadm trigger --name-match=kvm |
| 220 | + - run: bash .github/tools/termux_fresh_install.sh emulator-download "$GITHUB_WORKSPACE/cand/mcpp-candidate-linux-x86_64.tar.gz" |
| 221 | + - uses: reactivecircus/android-emulator-runner@v2 |
| 222 | + with: |
| 223 | + api-level: 34 |
| 224 | + arch: x86_64 |
| 225 | + target: google_apis |
| 226 | + disk-size: 14G |
| 227 | + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none |
| 228 | + disable-animations: true |
| 229 | + script: bash .github/tools/termux_fresh_install.sh emulator-run |
| 230 | + - uses: actions/upload-artifact@v4 |
| 231 | + if: always() |
| 232 | + with: |
| 233 | + name: candidate-termux-emulator |
| 234 | + path: ${{ runner.temp }}/termux-fresh/logs |
0 commit comments