From 4da68626714efe7eafb7cb5c5f0a1e2e704efa43 Mon Sep 17 00:00:00 2001 From: Moses Narrow <36607567+0pcom@users.noreply.github.com> Date: Mon, 24 Aug 2026 18:15:07 -0500 Subject: [PATCH] release: compress linux/darwin archives with xz -9e (was gzip), zip Optimal on windows The linux and darwin release archives were plain gzip (level 6) tarballs at ~85 MB each. Switch them to xz -9e, which shrinks a stripped skywire binary's archive by ~13-14% vs gzip with no other change: gzip -6 (old): 89.5 MB xz -9e: 77.3 MB (-13.6%) zstd -19: 80.3 MB (-10.3%) xz -9e wins on ratio and its decompressor is near-universal, so it is preferred over zstd here. The tar is piped through the xz CLI (not tar -J) so the -9e level is honored identically on GNU tar (linux) and bsdtar (macOS). xz-utils is added to the linux job deps. The .sha256 sidecars, artifact globs and release upload lists move to the new .tar.xz extension. Windows Compress-Archive is raised to -CompressionLevel Optimal (smaller win, no new tooling). The rolling develop-latest/master-latest .zst binary-updater channel (publish-binary.yml) and the wasm-visor tinygo module archive are unchanged. --- .github/workflows/release.yml | 28 ++++++++++++++-------------- docs/packaging/aur-packages.md | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d2156be0f8..3052ed0b12 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -68,7 +68,7 @@ jobs: cache: false - name: Install build dependencies - run: sudo apt-get update && sudo apt-get install -y wget tar libusb-1.0-0-dev autoconf automake libtool + run: sudo apt-get update && sudo apt-get install -y wget tar xz-utils libusb-1.0-0-dev autoconf automake libtool - name: Fetch build-libusb-musl.sh run: | @@ -137,16 +137,16 @@ jobs: mkdir -p dist cp bin/skywire dist/ cd dist - tar -czvf "${ARCHIVE_NAME}.tar.gz" skywire - sha256sum "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256" + tar -cvf - skywire | xz -9e -T0 -c > "${ARCHIVE_NAME}.tar.xz" + sha256sum "${ARCHIVE_NAME}.tar.xz" > "${ARCHIVE_NAME}.tar.xz.sha256" - name: Upload to release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release upload "${{ github.ref_name }}" \ - dist/skywire-${{ github.ref_name }}-linux-${{ matrix.arch }}.tar.gz \ - dist/skywire-${{ github.ref_name }}-linux-${{ matrix.arch }}.tar.gz.sha256 \ + dist/skywire-${{ github.ref_name }}-linux-${{ matrix.arch }}.tar.xz \ + dist/skywire-${{ github.ref_name }}-linux-${{ matrix.arch }}.tar.xz.sha256 \ --repo ${{ github.repository }} \ --clobber @@ -186,8 +186,8 @@ jobs: mkdir -p dist cp bin/skywire dist/ cd dist - tar -czvf "${ARCHIVE_NAME}.tar.gz" skywire - shasum -a 256 "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256" + tar -cvf - skywire | xz -9e -T0 -c > "${ARCHIVE_NAME}.tar.xz" + shasum -a 256 "${ARCHIVE_NAME}.tar.xz" > "${ARCHIVE_NAME}.tar.xz.sha256" - name: Create macOS package run: | @@ -206,8 +206,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release upload "${{ github.ref_name }}" \ - dist/skywire-${{ github.ref_name }}-darwin-amd64.tar.gz \ - dist/skywire-${{ github.ref_name }}-darwin-amd64.tar.gz.sha256 \ + dist/skywire-${{ github.ref_name }}-darwin-amd64.tar.xz \ + dist/skywire-${{ github.ref_name }}-darwin-amd64.tar.xz.sha256 \ dist/skywire-${{ github.ref_name }}-darwin-amd64.pkg \ dist/skywire-${{ github.ref_name }}-darwin-amd64.pkg.sha256 \ --repo ${{ github.repository }} \ @@ -249,8 +249,8 @@ jobs: mkdir -p dist cp bin/skywire dist/ cd dist - tar -czvf "${ARCHIVE_NAME}.tar.gz" skywire - shasum -a 256 "${ARCHIVE_NAME}.tar.gz" > "${ARCHIVE_NAME}.tar.gz.sha256" + tar -cvf - skywire | xz -9e -T0 -c > "${ARCHIVE_NAME}.tar.xz" + shasum -a 256 "${ARCHIVE_NAME}.tar.xz" > "${ARCHIVE_NAME}.tar.xz.sha256" - name: Create macOS package run: | @@ -269,8 +269,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release upload "${{ github.ref_name }}" \ - dist/skywire-${{ github.ref_name }}-darwin-arm64.tar.gz \ - dist/skywire-${{ github.ref_name }}-darwin-arm64.tar.gz.sha256 \ + dist/skywire-${{ github.ref_name }}-darwin-arm64.tar.xz \ + dist/skywire-${{ github.ref_name }}-darwin-arm64.tar.xz.sha256 \ dist/skywire-${{ github.ref_name }}-darwin-arm64.pkg \ dist/skywire-${{ github.ref_name }}-darwin-arm64.pkg.sha256 \ --repo ${{ github.repository }} \ @@ -403,7 +403,7 @@ jobs: } } - Compress-Archive -Path "dist\*" -DestinationPath "dist\$ARCHIVE_NAME.zip" + Compress-Archive -Path "dist\*" -DestinationPath "dist\$ARCHIVE_NAME.zip" -CompressionLevel Optimal Get-FileHash "dist\$ARCHIVE_NAME.zip" -Algorithm SHA256 | ForEach-Object { "$($_.Hash) $ARCHIVE_NAME.zip" } > "dist\$ARCHIVE_NAME.zip.sha256" Get-ChildItem "dist\" -Exclude "*.zip","*.sha256" | Remove-Item diff --git a/docs/packaging/aur-packages.md b/docs/packaging/aur-packages.md index d9eefa2b8c..c172428902 100644 --- a/docs/packaging/aur-packages.md +++ b/docs/packaging/aur-packages.md @@ -26,7 +26,7 @@ fork the working tree is checked out from. ## pkgbase `skywire-bin` — prebuilt binary Installs the **prebuilt release binary** downloaded from the GitHub release -(`releases/download/v/skywire-v-linux-.tar.gz`, per-arch +(`releases/download/v/skywire-v-linux-.tar.xz`, per-arch `source_*`). No Go toolchain needed. `provides`/`conflicts` = `skywire`, so it is interchangeable with the from-source package. Binary lands at `/opt/skywire/bin/skywire` with `/usr/bin` symlinks. optdepends: redis,