forked from github-such-software/hash-wallet
dev #31
56
.github/workflows/build-windows.yml
vendored
56
.github/workflows/build-windows.yml
vendored
@@ -146,10 +146,53 @@ jobs:
|
|||||||
set -x
|
set -x
|
||||||
MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags)
|
MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags)
|
||||||
BUNDLE_DIR="scripts/monero_c/release/$MONERO_C_TAG"
|
BUNDLE_DIR="scripts/monero_c/release/$MONERO_C_TAG"
|
||||||
echo "=== windows-ish subdirs ==="
|
echo "=== full mingw32 dir contents ==="
|
||||||
find "$BUNDLE_DIR" -maxdepth 1 -type d \( -name '*mingw*' -o -name '*windows*' -o -name '*-win-*' -o -name '*-pc-windows*' \) 2>/dev/null
|
ls -la "$BUNDLE_DIR/x86_64-w64-mingw32" 2>/dev/null || true
|
||||||
echo "=== any DLL anywhere? ==="
|
|
||||||
find "$BUNDLE_DIR" -name '*.dll' 2>/dev/null | head -20 || true
|
# ---- Stage monero_c DLLs into the layout windows/CMakeLists.txt expects
|
||||||
|
# Upstream Cake's Windows build cross-compiles monero_c on Linux via
|
||||||
|
# scripts/windows/build_all.sh, which lays files out as:
|
||||||
|
# scripts/monero_c/release/<coin>/<triple>_<basename>.dll
|
||||||
|
# The CMakeLists.txt at windows/CMakeLists.txt:84-94 hardcodes those
|
||||||
|
# paths in install(FILES ...) rules — it copies + RENAMEs them to the
|
||||||
|
# final names (monero_libwallet2_api_c.dll etc.) in the Release dir.
|
||||||
|
#
|
||||||
|
# We're using the prebuilt bundle from MrCyjaneK's release, which has
|
||||||
|
# a different layout:
|
||||||
|
# scripts/monero_c/release/<TAG>/<triple>/lib<coin>_wallet2_api_c.dll
|
||||||
|
# So we restage the bundle's files into the upstream-build-all-style
|
||||||
|
# layout before flutter build windows runs.
|
||||||
|
- name: Stage monero_c bundle into upstream cross-compile layout
|
||||||
|
run: |
|
||||||
|
set -x -e
|
||||||
|
MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags)
|
||||||
|
SRC="scripts/monero_c/release/$MONERO_C_TAG/x86_64-w64-mingw32"
|
||||||
|
MONERO_DST="scripts/monero_c/release/monero"
|
||||||
|
WOWNERO_DST="scripts/monero_c/release/wownero"
|
||||||
|
mkdir -p "$MONERO_DST" "$WOWNERO_DST"
|
||||||
|
|
||||||
|
# The wallet C-API DLLs, one per coin
|
||||||
|
cp -v "$SRC/libmonero_wallet2_api_c.dll" "$MONERO_DST/x86_64-w64-mingw32_libwallet2_api_c.dll"
|
||||||
|
cp -v "$SRC/libwownero_wallet2_api_c.dll" "$WOWNERO_DST/x86_64-w64-mingw32_libwallet2_api_c.dll"
|
||||||
|
|
||||||
|
# MinGW runtime DLLs the wallet libs depend on. CMakeLists.txt
|
||||||
|
# references both under release/monero/, so single-source under
|
||||||
|
# monero/ is enough. Source file may or may not have a `lib` prefix.
|
||||||
|
for runtime in libssp-0.dll libwinpthread-1.dll; do
|
||||||
|
src=""
|
||||||
|
for candidate in "$SRC/$runtime" "$SRC/${runtime#lib}"; do
|
||||||
|
if [[ -f "$candidate" ]]; then src="$candidate"; break; fi
|
||||||
|
done
|
||||||
|
if [[ -z "$src" ]]; then
|
||||||
|
echo "FATAL: $runtime not in bundle (looked at $SRC)"
|
||||||
|
ls "$SRC"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cp -v "$src" "$MONERO_DST/x86_64-w64-mingw32_${runtime}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "=== final staged layout ==="
|
||||||
|
ls -la "$MONERO_DST/" "$WOWNERO_DST/"
|
||||||
|
|
||||||
# ---- Configure: pubspec.yaml + per-coin enablement -------------------
|
# ---- Configure: pubspec.yaml + per-coin enablement -------------------
|
||||||
# Mirror of hashwallet.bat — drives tool/configure.dart with the same
|
# Mirror of hashwallet.bat — drives tool/configure.dart with the same
|
||||||
@@ -207,6 +250,11 @@ jobs:
|
|||||||
flutter config --enable-windows-desktop
|
flutter config --enable-windows-desktop
|
||||||
flutter build windows --dart-define-from-file=env.json --release --verbose
|
flutter build windows --dart-define-from-file=env.json --release --verbose
|
||||||
|
|
||||||
|
# NOTE: monero/wownero DLLs land in Release dir automatically via
|
||||||
|
# CMake's install(FILES ... RENAME ...) rules in windows/CMakeLists.txt
|
||||||
|
# — the staging step above puts them at the source paths CMake reads.
|
||||||
|
# No post-build copy needed.
|
||||||
|
|
||||||
# ---- Bundle MSVC runtime DLLs with the .exe --------------------------
|
# ---- Bundle MSVC runtime DLLs with the .exe --------------------------
|
||||||
# Standalone Windows builds need msvcp140.dll + vcruntime140.dll +
|
# Standalone Windows builds need msvcp140.dll + vcruntime140.dll +
|
||||||
# vcruntime140_1.dll next to the .exe (or installed via vc_redist on
|
# vcruntime140_1.dll next to the .exe (or installed via vc_redist on
|
||||||
|
|||||||
Reference in New Issue
Block a user