130 lines
4.9 KiB
YAML
130 lines
4.9 KiB
YAML
name: CI Termux
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '**.yml'
|
|
- '!**/termux_ci.yml'
|
|
- 'cmd/tools/**'
|
|
- '!cmd/tools/builders/**.v'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '**.yml'
|
|
- '!**/termux_ci.yml'
|
|
- 'cmd/tools/**'
|
|
- '!cmd/tools/builders/**.v'
|
|
|
|
jobs:
|
|
termux-build:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Build and test in Termux
|
|
run: |
|
|
set -o xtrace
|
|
echo "$PWD"
|
|
whoami
|
|
touch outside_docker.txt
|
|
git log -n4
|
|
echo "running docker ..."
|
|
docker run --rm --mount type=bind,source=/home/runner/work/v/v,destination=/src -w /src termux/termux-docker:latest bash -c '
|
|
set -o xtrace
|
|
echo "running inside docker"
|
|
whoami
|
|
cp -r /src ~/vproject; cd ~/vproject
|
|
touch inside_docker.txt
|
|
ls -la
|
|
echo "previous TERMUX_VERSION: $TERMUX_VERSION"
|
|
export TERMUX_VERSION=0.118.3
|
|
echo "explicit TERMUX_VERSION: $TERMUX_VERSION"
|
|
bash .github/workflows/retry.sh pkg update -y
|
|
bash .github/workflows/retry.sh pkg install -y clang libexecinfo libgc libgc-static make git
|
|
git log -n4
|
|
VFLAGS="-cc cc" make
|
|
./v symlink
|
|
export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"
|
|
v run examples/hello_world.v
|
|
v run examples/primes.v
|
|
v -e "import os; dump( os.user_os() )"
|
|
'
|
|
|
|
termux-build-arm64-tcc:
|
|
# Diagnostic job for vlang/v#27207: reproduces the Termux/AArch64 tcc
|
|
# bootstrap failure on a real arm64 runner so we can collect logs without
|
|
# local hardware. Allowed to fail until the upstream tcc AArch64 bug is
|
|
# resolved.
|
|
runs-on: ubuntu-24.04-arm
|
|
continue-on-error: true
|
|
timeout-minutes: 45
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
- name: Build in Termux (arm64, default tcc)
|
|
run: |
|
|
set -o xtrace
|
|
uname -a
|
|
docker run --rm --platform=linux/arm64 --mount type=bind,source=/home/runner/work/v/v,destination=/src -w /src termux/termux-docker:aarch64 bash -c '
|
|
set -o xtrace
|
|
uname -a
|
|
cp -r /src ~/vproject; cd ~/vproject
|
|
export TERMUX_VERSION=0.118.3
|
|
bash .github/workflows/retry.sh pkg update -y
|
|
bash .github/workflows/retry.sh pkg install -y clang libexecinfo libgc libgc-static make git gdb file
|
|
git log -n4
|
|
ulimit -c unlimited || true
|
|
# Explicit `-cc tcc` is required: on Linux arm64 the Makefile
|
|
# otherwise injects `-cc "$(CC)"` (see GNUmakefile:149-155) and
|
|
# the bundled tcc path would never run — defeating the purpose
|
|
# of this diagnostic job for #27207. Capture every invocation
|
|
# via -showcc and the full build output to build.log.
|
|
set +e
|
|
VFLAGS="-cc tcc -showcc -stats" make 2>&1 | tee build.log
|
|
rc=${PIPESTATUS[0]}
|
|
set -e
|
|
echo "make exit code: $rc"
|
|
# Always copy the log back to the bind-mounted dir so the runner
|
|
# step that uploads the artifact can find it.
|
|
cp build.log /src/build.log || true
|
|
if [ "$rc" -ne 0 ] || [ ! -x ./v ]; then
|
|
echo "===== bootstrap failed; collecting diagnostics ====="
|
|
echo "--- tcc binary ---"
|
|
ls -la thirdparty/tcc/ 2>/dev/null || true
|
|
for t in thirdparty/tcc/tcc.exe thirdparty/tcc/tcc; do
|
|
if [ -x "$t" ]; then "$t" -v || true; fi
|
|
done
|
|
echo "--- last 120 lines of build.log ---"
|
|
tail -n 120 build.log || true
|
|
echo "--- v1/v2/v file info ---"
|
|
file v1 v2 v 2>/dev/null || true
|
|
echo "--- last tcc invocations from build.log ---"
|
|
grep -E "tcc(\.exe)? " build.log | tail -n10 || true
|
|
echo "--- core files (if any) ---"
|
|
ls -la core* 2>/dev/null || true
|
|
for c in core core.*; do
|
|
if [ -f "$c" ] && [ -x ./v2 ]; then
|
|
echo "--- gdb backtrace from $c against v2 ---"
|
|
gdb --batch --ex bt --ex "info registers" ./v2 "$c" || true
|
|
fi
|
|
done
|
|
# If make exited 0 but ./v is missing, force a nonzero exit so
|
|
# the diagnostic job does not go green without a usable compiler.
|
|
if [ "$rc" -eq 0 ]; then rc=1; fi
|
|
exit "$rc"
|
|
fi
|
|
echo "===== bootstrap succeeded ====="
|
|
./v -version
|
|
./v run examples/hello_world.v
|
|
'
|
|
- name: Upload build log
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: termux-arm64-build-log
|
|
path: build.log
|
|
if-no-files-found: ignore
|