1
1
name : bundle ucm
2
2
3
3
# build optimized ucm
4
- # package racket lib
5
4
# build/dist unison-runtime
6
5
7
6
on :
12
11
type : string
13
12
required : true
14
13
15
- env :
16
- racket_version : " 8.17"
17
-
18
14
defaults :
19
15
run :
20
16
shell : bash
@@ -99,115 +95,9 @@ jobs:
99
95
payload : |
100
96
text: "build-ucm failed on ${{ github.ref }}. See details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} cc <@UF924D5S7>"
101
97
102
- package-racket-lib :
103
- strategy :
104
- matrix :
105
- os : [ubuntu-24.04]
106
- needs : build-ucm
107
- name : package racket lib
108
- runs-on : ${{matrix.os}}
109
- steps :
110
- - name : set up environment
111
- run : |
112
- echo "ucm=${{ runner.temp }}/unison" >> $GITHUB_ENV
113
- - name : download racket `unison` source
114
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
115
- with :
116
- ref : ${{inputs.ref}}
117
- - name : download ucm artifact
118
- uses : actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4
119
- with :
120
- name : unison-${{matrix.os}}
121
- path : ${{ runner.temp }}
122
- - name : generate source
123
- run : |
124
- chmod +x ${{ env.ucm }}
125
- ${{ env.ucm }} transcript unison-src/transcripts-manual/gen-racket-libs.md
126
- - name : install racket
127
- uses : unisonweb/actions/racket/install@main
128
- with :
129
- version : ${{env.racket_version}}
130
- - name : create racket lib
131
- run : |
132
- raco pkg create scheme-libs/racket/unison
133
- ls -l scheme-libs/racket/unison.zip{,.CHECKSUM}
134
- - name : upload racket lib
135
- uses : actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4
136
- with :
137
- name : racket-lib
138
- path : |
139
- scheme-libs/racket/unison.zip
140
- scheme-libs/racket/unison.zip.CHECKSUM
141
- if-no-files-found : error
142
- - name : report errors
143
- if : github.ref == 'refs/heads/trunk' && failure()
144
- uses : slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # https://github.com/slackapi/slack-github-action/releases/tag/v2.0.0
145
- with :
146
- webhook : ${{ secrets.SLACK_WEBHOOK_URL }}
147
- webhook-type : incoming-webhook
148
- payload : |
149
- text: "package-racket-lib failed on ${{ github.ref }}. See details: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} cc <@UF924D5S7>"
150
-
151
- build-dist-unison-runtime :
152
- needs : package-racket-lib
153
- name : build unison-runtime
154
- strategy :
155
- fail-fast : false
156
- matrix :
157
- os :
158
- - ubuntu-24.04
159
- # - ubuntu-24.04-arm # no racket for arm linux
160
- - macos-13 # intel
161
- - macos-14 # apple silicon
162
- - windows-2025
163
- # - windows-11-arm
164
- runs-on : ${{matrix.os}}
165
- steps :
166
- - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
167
- with :
168
- ref : ${{inputs.ref}}
169
- - name : download racket lib
170
- uses : actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4
171
- with :
172
- name : racket-lib
173
- path : scheme-libs/racket/
174
- - name : Cache Racket dependencies
175
- id : cache-racket-deps
176
- uses : actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4
177
- with :
178
- path : |
179
- ~/.cache/racket
180
- ~/.local/share/racket
181
- ~/Library/Racket/${{env.racket_version}}
182
- # This isn't right because unison.zip is going to include different dates each time.
183
- # Maybe we can unpack it and hash the contents.
184
- key : ${{matrix.os}}-racket-${{env.racket_version}}-${{hashFiles('scheme-libs/racket/unison.zip')}}
185
- - name : install racket
186
- uses : unisonweb/actions/racket/install@main
187
- with :
188
- version : ${{env.racket_version}}
189
- - name : install unison racket lib
190
- if : steps.cache-racket-deps.outputs.cache-hit != 'true'
191
- run : |
192
- raco pkg install --auto --skip-installed scheme-libs/racket/unison.zip && \
193
- raco pkg update --auto scheme-libs/racket/unison.zip
194
- - name : build unison-runtime
195
- run : |
196
- raco exe --embed-dlls --orig-exe scheme-libs/racket/unison-runtime.rkt
197
- mkdir runtime
198
- if [[ ${{runner.os}} = 'Windows' ]]; then exe=".exe"; else exe=""; fi
199
- raco distribute runtime scheme-libs/racket/unison-runtime$exe
200
- ls -l runtime/
201
- - name : upload unison-runtime
202
- uses : actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4
203
- with :
204
- name : unison-runtime-${{matrix.os}}
205
- path : runtime/
206
- if-no-files-found : error
207
-
208
98
bundle :
209
- name : bundle ucm, jit, and ui
210
- needs : [build-ucm, package-racket-lib, build-dist-unison-runtime ]
99
+ name : bundle ucm and ui
100
+ needs : [build-ucm]
211
101
runs-on : ${{matrix.os}}
212
102
strategy :
213
103
fail-fast : false
@@ -219,9 +109,6 @@ jobs:
219
109
- macos-14
220
110
- windows-2025
221
111
# - windows-11-arm
222
- include :
223
- - os : ubuntu-24.04-arm
224
- nojit : true
225
112
steps :
226
113
- name : set up environment
227
114
run : |
@@ -236,24 +123,6 @@ jobs:
236
123
path : ${{env.staging_dir}}/unison/
237
124
- name : restore permissions on ucm
238
125
run : chmod +x ${{env.staging_dir}}/unison/unison
239
- - name : download racket lib
240
- if : (!matrix.nojit)
241
- uses : actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4
242
- with :
243
- name : racket-lib
244
- path : ${{env.staging_dir}}/racket/
245
- - name : download unison-runtime
246
- if : (!matrix.nojit)
247
- uses : actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # v4
248
- with :
249
- name : unison-runtime-${{matrix.os}}
250
- path : ${{env.staging_dir}}/runtime
251
- - name : restore permissions on unison-runtime
252
- # here we have the `if:` not because of the missing .exe on Windows,
253
- # nor the lack of need to chmod, but because /runtime/bin/ probably doesn't exist
254
- # due to differences in `raco distribute` on Windows vs macOS and Linux.
255
- if : runner.os != 'Windows' && !matrix.nojit
256
- run : chmod +x ${{env.staging_dir}}/runtime/bin/unison-runtime
257
126
- name : download latest unison-local-ui
258
127
run : |
259
128
curl -L -o /tmp/unisonLocal.zip \
@@ -269,7 +138,7 @@ jobs:
269
138
#!/bin/bash
270
139
unison_root="$(dirname "$(readlink -f "$0")")"
271
140
export UCM_WEB_UI="${unison_root}/ui"
272
- "${unison_root}/unison/unison" --runtime-path "${unison_root}/runtime/bin/unison-runtime" "$@"
141
+ "${unison_root}/unison/unison" "$@"
273
142
- name : create startup script (Windows)
274
143
if : runner.os == 'Windows'
275
144
uses : 1arp/create-a-file-action@29bab1af4675373aad48a2157c09f1917f85f008 # 0.4.4
@@ -279,7 +148,7 @@ jobs:
279
148
content : |
280
149
@echo off
281
150
SET UCM_WEB_UI=%~dp0ui
282
- "%~dp0unison\unison.exe" --runtime-path "%~dp0runtime\unison-runtime.exe" %*
151
+ "%~dp0unison\unison.exe" %*
283
152
- name : package everything together
284
153
run : |
285
154
if [[ ${{runner.os}} = 'Windows' ]]; then
0 commit comments