#!/usr/bin/env bash # Build carrier and bundle the result: carrier.exe plus the GTK runtime # into dist/, then dist/ into carrier-windows-.zip. # # Run from the carrier checkout inside the MSYS2 MINGW64 shell (or with # the MINGW64 toolchain on PATH — windows/setup.sh installs the deps, # and the forgejo Windows runner host already carries them). set -euo pipefail say() { printf '\n==> %s\n' "$*"; } die() { printf '\n!! %s\n' "$*" >&2; exit 1; } say "building carrier (release; the first build takes a while)" cargo build --release --locked || die "cargo build failed" say "bundling the runtime" rm -rf dist mkdir -p dist/share/glib-2.0/schemas \ dist/share/icons/hicolor/512x512/apps \ dist/share/icons/hicolor/256x256/apps \ dist/share/icons/hicolor/128x128/apps cp target/release/carrier.exe dist/ for dll in $(ldd target/release/carrier.exe | awk '/mingw64/ {print $3}'); do cp "$dll" dist/ || die "copying $dll failed" done [ "$(ls dist/*.dll | wc -l)" -gt 0 ] || die "no DLLs collected — ldd found none under /mingw64" cp /mingw64/share/glib-2.0/schemas/* dist/share/glib-2.0/schemas/ glib-compile-schemas dist/share/glib-2.0/schemas/ cp -r /mingw64/share/icons/Adwaita dist/share/icons/ cp -r /mingw64/share/icons/hicolor dist/share/icons/ cp data/icons/com.randogoth.carrier.png dist/share/icons/hicolor/512x512/apps/ cp data/icons/com.randogoth.carrier-256.png dist/share/icons/hicolor/256x256/apps/ cp data/icons/com.randogoth.carrier-128.png dist/share/icons/hicolor/128x128/apps/ say "zipping" version=$(sed -n 's/^version = "\(.*\)"$/\1/p' Cargo.toml | head -1) rm -f "carrier-windows-$version.zip" (cd dist && zip -qr "../carrier-windows-$version.zip" .)