39 lines
1.7 KiB
Bash
39 lines
1.7 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Build carrier and bundle the result: carrier.exe plus the GTK runtime
|
||
|
|
# into dist/, then dist/ into carrier-windows-<version>.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" .)
|