mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
73 lines
2.4 KiB
YAML
73 lines
2.4 KiB
YAML
name: VC gen
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.vv'
|
|
- '**.out'
|
|
- '**.md'
|
|
- '**.yml'
|
|
- '!**/gen_vc_ci.yml'
|
|
- 'cmd/tools/**'
|
|
- '!cmd/tools/builders/**.v'
|
|
push:
|
|
paths-ignore:
|
|
- '**.vv'
|
|
- '**.out'
|
|
- '**.md'
|
|
- '**.yml'
|
|
- '!**/gen_vc_ci.yml'
|
|
- 'cmd/tools/**'
|
|
- '!cmd/tools/builders/**.v'
|
|
|
|
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
concurrency:
|
|
group: gen_vc-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: ${{ !contains(github.ref, 'master')}}
|
|
|
|
jobs:
|
|
build-vc:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Build V
|
|
run: make -j4
|
|
- name: Regenerate v.c and v_win.c
|
|
run: |
|
|
git config --global user.email "vlang-bot@users.noreply.github.com"
|
|
git config --global user.name "vlang-bot"
|
|
|
|
COMMIT_HASH="$(git rev-parse HEAD)"
|
|
COMMIT_MSG="$(git log -1 --oneline --pretty='%s' HEAD)"
|
|
|
|
rm -rf vc
|
|
./v retry -- git clone --depth=1 "https://vlang-bot:${{ secrets.VLANG_BOT_SECRET }}@github.com/vlang/vc.git"
|
|
|
|
rm -rf vc/v.c vc/v_win.c
|
|
./v -o vc/v.c -cross cmd/v
|
|
./v -o vc/v_win.c -os windows -cc msvc cmd/v
|
|
|
|
sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v.c
|
|
sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v_win.c
|
|
|
|
# do some sanity checks for the generated v.c file:
|
|
grep 'Turned ON custom defines: no_backtrace,cross' vc/v.c
|
|
grep '#define CUSTOM_DEFINE_cross' vc/v.c
|
|
|
|
# ensure the generated C files for the compiler, are over 5000 lines long, as a safety measure
|
|
[ "$(wc -l < vc/v.c)" -gt 5000 ]
|
|
[ "$(wc -l < vc/v_win.c)" -gt 5000 ]
|
|
|
|
git -C vc add v.c v_win.c
|
|
git -C vc commit -m "[v:master] $COMMIT_HASH - $COMMIT_MSG"
|
|
|
|
# in case there are recent commits:
|
|
./v retry -- git -C vc pull --rebase origin master
|
|
git -C vc log -3
|
|
|
|
- name: Deploy
|
|
if: github.event_name == 'push' && github.repository == 'vlang/v' && github.ref == 'refs/heads/master'
|
|
run: git -C vc push || true
|