@@ -54,6 +54,24 @@ if [ -n "${VENDOR}" ]; then
54
54
echo " Setting packager: $VENDOR "
55
55
fi
56
56
57
+ function update_version {
58
+ local tag=$1
59
+ local major
60
+ local minor
61
+ local patch
62
+
63
+ # Extract major, minor, and patch from the tag
64
+ # We need to make sure to remove the "v" prefix from the tag and any characters after the patch version
65
+ tag=$( echo " $tag " | sed ' s/^v//g' | sed ' s/-.*//g' )
66
+ major=$( echo " $tag " | cut -d. -f1)
67
+ minor=$( echo " $tag " | cut -d. -f2)
68
+ patch=$( echo " $tag " | cut -d. -f3)
69
+
70
+ echo " Major: $major , Minor: $minor , Patch: $patch "
71
+
72
+ " ${SCRIPTS_DIR} /update-version.sh" " $major " " $minor " " $patch "
73
+ }
74
+
57
75
function get_file_size {
58
76
local file=" $1 "
59
77
if [[ " $OSTYPE " == " darwin" * ]]; then
@@ -199,8 +217,28 @@ set -e
199
217
# #
200
218
201
219
mkdir -p " $OUTPUT_DIR "
202
- PKG_DIR=" $OUTPUT_DIR /$PACKAGE_NAME "
220
+ PKG_DIR=" ${ OUTPUT_DIR:? } /$PACKAGE_NAME "
203
221
PACKAGE_ZIP=" $PACKAGE_NAME .zip"
222
+ PACKAGE_XZ=" $PACKAGE_NAME .tar.xz"
223
+ LIBS_ZIP=" $PACKAGE_NAME -libs.zip"
224
+ LIBS_XZ=" $PACKAGE_NAME -libs.tar.xz"
225
+
226
+ echo " Updating version..."
227
+ update_version " $RELEASE_TAG "
228
+ git config --global github.user " github-actions[bot]"
229
+ git config --global user.name " github-actions[bot]"
230
+ git config --global user.email " 41898282+github-actions[bot]@users.noreply.github.com"
231
+ git add .
232
+
233
+ # We should only commit if there are changes
234
+ need_update_commit=true
235
+ if git diff --cached --quiet; then
236
+ echo " Version already updated"
237
+ need_update_commit=false
238
+ else
239
+ echo " Creating version update commit..."
240
+ git commit -m " change(version): Update core version to $RELEASE_TAG "
241
+ fi
204
242
205
243
echo " Updating submodules ..."
206
244
git -C " $GITHUB_WORKSPACE " submodule update --init --recursive > /dev/null 2>&1
@@ -283,7 +321,7 @@ echo \#define ARDUINO_ESP32_GIT_DESC "$(git -C "$GITHUB_WORKSPACE" describe --ta
283
321
echo \# define ARDUINO_ESP32_RELEASE_" $ver_define " >> " $PKG_DIR /cores/esp32/core_version.h"
284
322
echo \# define ARDUINO_ESP32_RELEASE \" " $ver_define " \" >> " $PKG_DIR /cores/esp32/core_version.h"
285
323
286
- # Compress package folder
324
+ # Compress ZIP package folder
287
325
echo " Creating ZIP ..."
288
326
pushd " $OUTPUT_DIR " > /dev/null
289
327
zip -qr " $PACKAGE_ZIP " " $PACKAGE_NAME "
@@ -293,22 +331,99 @@ if [ $? -ne 0 ]; then
293
331
fi
294
332
295
333
# Calculate SHA-256
296
- echo " Calculating SHA sum ..."
297
- PACKAGE_PATH=" $OUTPUT_DIR /$PACKAGE_ZIP "
334
+ echo " Calculating ZIP SHA sum ..."
335
+ PACKAGE_PATH=" ${ OUTPUT_DIR:? } /$PACKAGE_ZIP "
298
336
PACKAGE_SHA=$( shasum -a 256 " $PACKAGE_ZIP " | cut -f 1 -d ' ' )
299
337
PACKAGE_SIZE=$( get_file_size " $PACKAGE_ZIP " )
300
338
popd > /dev/null
301
- rm -rf " $PKG_DIR "
302
339
echo " '$PACKAGE_ZIP ' Created! Size: $PACKAGE_SIZE , SHA-256: $PACKAGE_SHA "
303
340
echo
304
341
305
- # Upload package to release page
306
- echo " Uploading package to release page ..."
342
+ # Compress XZ package folder
343
+ echo " Creating XZ ..."
344
+ pushd " $OUTPUT_DIR " > /dev/null
345
+ tar -cJf " $PACKAGE_XZ " " $PACKAGE_NAME "
346
+ if [ $? -ne 0 ]; then
347
+ echo " ERROR: Failed to create $PACKAGE_XZ ($? )"
348
+ exit 1
349
+ fi
350
+
351
+ # Calculate SHA-256
352
+ echo " Calculating XZ SHA sum ..."
353
+ PACKAGE_XZ_PATH=" ${OUTPUT_DIR:? } /$PACKAGE_XZ "
354
+ PACKAGE_XZ_SHA=$( shasum -a 256 " $PACKAGE_XZ " | cut -f 1 -d ' ' )
355
+ PACKAGE_XZ_SIZE=$( get_file_size " $PACKAGE_XZ " )
356
+ popd > /dev/null
357
+ echo " '$PACKAGE_XZ ' Created! Size: $PACKAGE_XZ_SIZE , SHA-256: $PACKAGE_XZ_SHA "
358
+ echo
359
+
360
+ # Upload ZIP package to release page
361
+ echo " Uploading ZIP package to release page ..."
307
362
PACKAGE_URL=$( git_safe_upload_asset " $PACKAGE_PATH " )
308
363
echo " Package Uploaded"
309
364
echo " Download URL: $PACKAGE_URL "
310
365
echo
311
366
367
+ # Upload XZ package to release page
368
+ echo " Uploading XZ package to release page ..."
369
+ PACKAGE_XZ_URL=$( git_safe_upload_asset " $PACKAGE_XZ_PATH " )
370
+ echo " Package Uploaded"
371
+ echo " Download URL: $PACKAGE_XZ_URL "
372
+ echo
373
+
374
+ # Remove package folder
375
+ rm -rf " $PKG_DIR "
376
+
377
+ # Copy Libs from lib-builder to release in ZIP and XZ
378
+
379
+ libs_url=$( cat " $PACKAGE_JSON_TEMPLATE " | jq -r " .packages[0].tools[] | select(.name == \" esp32-arduino-libs\" ) | .systems[0].url" )
380
+ libs_sha=$( cat " $PACKAGE_JSON_TEMPLATE " | jq -r " .packages[0].tools[] | select(.name == \" esp32-arduino-libs\" ) | .systems[0].checksum" | sed ' s/^SHA-256://' )
381
+ libs_size=$( cat " $PACKAGE_JSON_TEMPLATE " | jq -r " .packages[0].tools[] | select(.name == \" esp32-arduino-libs\" ) | .systems[0].size" )
382
+ echo " Downloading libs from lib-builder ..."
383
+ echo " URL: $libs_url "
384
+ echo " Expected SHA: $libs_sha "
385
+ echo " Expected Size: $libs_size "
386
+ echo
387
+
388
+ echo " Downloading libs from lib-builder ..."
389
+ curl -L -o " $OUTPUT_DIR /$LIBS_ZIP " " $libs_url "
390
+
391
+ # Check SHA and Size
392
+ zip_sha=$( sha256sum " $OUTPUT_DIR /$LIBS_ZIP " | awk ' {print $1}' )
393
+ zip_size=$( stat -c%s " $OUTPUT_DIR /$LIBS_ZIP " )
394
+ echo " Downloaded SHA: $zip_sha "
395
+ echo " Downloaded Size: $zip_size "
396
+ if [ " $zip_sha " != " $libs_sha " ] || [ " $zip_size " != " $libs_size " ]; then
397
+ echo " ERROR: ZIP SHA and Size do not match"
398
+ exit 1
399
+ fi
400
+
401
+ # Extract ZIP
402
+
403
+ echo " Repacking libs to XZ ..."
404
+ mkdir -p " ${OUTPUT_DIR:? } /tmp-libs"
405
+ unzip " $OUTPUT_DIR /$LIBS_ZIP " -d " $OUTPUT_DIR /tmp-libs"
406
+ tar -cJf " $OUTPUT_DIR /$LIBS_XZ " " $OUTPUT_DIR /tmp-libs"
407
+
408
+ # Upload ZIP and XZ libs to release page
409
+
410
+ echo " Uploading ZIP libs to release page ..."
411
+ LIBS_ZIP_URL=$( git_safe_upload_asset " $OUTPUT_DIR /$LIBS_ZIP " )
412
+ echo " ZIP libs Uploaded"
413
+ echo " Download URL: $LIBS_ZIP_URL "
414
+ echo
415
+
416
+ echo " Uploading XZ libs to release page ..."
417
+ LIBS_XZ_URL=$( git_safe_upload_asset " $OUTPUT_DIR /$LIBS_XZ " )
418
+ echo " XZ libs Uploaded"
419
+ echo " Download URL: $LIBS_XZ_URL "
420
+ echo
421
+
422
+ # Clean up
423
+ rm -rf " ${OUTPUT_DIR:? } /tmp-libs"
424
+ rm -rf " ${OUTPUT_DIR:? } /$LIBS_ZIP "
425
+ rm -rf " ${OUTPUT_DIR:? } /$LIBS_XZ "
426
+
312
427
# #
313
428
# # TEMP WORKAROUND FOR RV32 LONG PATH ON WINDOWS
314
429
# #
@@ -469,6 +584,17 @@ if [ "$RELEASE_PRE" == "false" ]; then
469
584
echo
470
585
fi
471
586
587
+ if [ " $need_update_commit " == " true" ]; then
588
+ echo " Pushing version update commit..."
589
+ git push
590
+ new_tag_commit=$( git rev-parse HEAD)
591
+ echo " New commit: $new_tag_commit "
592
+
593
+ echo " Moving tag $RELEASE_TAG to $new_tag_commit ..."
594
+ git tag -f " $RELEASE_TAG " " $new_tag_commit "
595
+ git push --force origin " $RELEASE_TAG "
596
+ fi
597
+
472
598
set +e
473
599
474
600
# #
0 commit comments