v
Зеркало из https://github.com/vlang/v
1name: VC gen
2
3on:
4workflow_dispatch:
5pull_request:
6paths-ignore:
7- '**.vv'
8- '**.out'
9- '**.md'
10- '**.yml'
11- '!**/gen_vc_ci.yml'
12- 'cmd/tools/**'
13- '!cmd/tools/builders/**.v'
14push:
15paths-ignore:
16- '**.vv'
17- '**.out'
18- '**.md'
19- '**.yml'
20- '!**/gen_vc_ci.yml'
21- 'cmd/tools/**'
22- '!cmd/tools/builders/**.v'
23
24# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
25# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
26concurrency:
27group: ${{ github.workflow }}-${{ github.ref }}
28cancel-in-progress: ${{ !contains(github.ref, 'master')}}
29
30jobs:
31build-vc:
32runs-on: ubuntu-latest
33steps:
34- uses: actions/checkout@v4
35- name: Build V
36run: make -j4
37- name: Regenerate v.c and v_win.c
38run: |
39git config --global user.email "vlang-bot@users.noreply.github.com"
40git config --global user.name "vlang-bot"
41
42COMMIT_HASH=$(git rev-parse --short HEAD)
43COMMIT_MSG=$(git log -1 --oneline --pretty='%s' HEAD)
44
45rm -rf vc
46./v retry -- git clone --depth=1 \
47https://vlang-bot:${{ secrets.VLANG_BOT_SECRET }}@github.com/vlang/vc.git
48
49rm -rf vc/v.c vc/v_win.c
50
51./v -o vc/v.c -cross cmd/v
52./v -o vc/v_win.c -os windows -cc msvc cmd/v
53
54sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v.c
55sed -i "1s/^/#define V_COMMIT_HASH \"$COMMIT_HASH\"\n/" vc/v_win.c
56
57# do some sanity checks for the generated v.c file:
58grep 'Turned ON custom defines: no_backtrace,cross' vc/v.c
59grep '#define CUSTOM_DEFINE_cross' vc/v.c
60
61# ensure the C files are over 5000 lines long, as a safety measure
62[ $(wc -l < vc/v.c) -gt 5000 ]
63[ $(wc -l < vc/v_win.c) -gt 5000 ]
64
65git -C vc add v.c v_win.c
66git -C vc commit -m "[v:master] $COMMIT_HASH - $COMMIT_MSG"
67
68# in case there are recent commits:
69./v retry -- git -C vc pull --rebase origin master
70git -C vc log -3
71
72- name: Deploy
73if: github.event_name == 'push' && github.repository == 'vlang/v' && github.ref == 'refs/heads/master'
74run: git -C vc push || true
75