135 lines
5.6 KiB
Bash
Executable File
135 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build Montana v3.18.0 — NTS Anchor — 36 Global Atomic Time Servers (RFC 8915)
|
|
set -e
|
|
|
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
APP="$DIR/Montana.app"
|
|
|
|
echo "Building Montana v3.18.0..."
|
|
|
|
# Clean
|
|
rm -rf "$APP"
|
|
rm -rf "$DIR/MontanaPresence.app"
|
|
|
|
# ═══════════════════════════════════════════════════════════════
|
|
# Compile libargon2 (reference C implementation)
|
|
# ═══════════════════════════════════════════════════════════════
|
|
echo " Building libargon2..."
|
|
ARGON2_DIR="$DIR/Crypto/argon2"
|
|
ARGON2_BUILD="$ARGON2_DIR/build"
|
|
mkdir -p "$ARGON2_BUILD"
|
|
|
|
ARGON2_CFLAGS="-O2 -target arm64-apple-macos14.0 -I$ARGON2_DIR/include -I$ARGON2_DIR/src"
|
|
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/argon2.c" -o "$ARGON2_BUILD/argon2.o"
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/core.c" -o "$ARGON2_BUILD/core.o"
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/thread.c" -o "$ARGON2_BUILD/thread.o"
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/encoding.c" -o "$ARGON2_BUILD/encoding.o"
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/ref.c" -o "$ARGON2_BUILD/ref.o"
|
|
cc $ARGON2_CFLAGS -c "$ARGON2_DIR/src/blake2/blake2b.c" -o "$ARGON2_BUILD/blake2b.o"
|
|
|
|
ar rcs "$ARGON2_BUILD/libargon2.a" \
|
|
"$ARGON2_BUILD/argon2.o" \
|
|
"$ARGON2_BUILD/core.o" \
|
|
"$ARGON2_BUILD/thread.o" \
|
|
"$ARGON2_BUILD/encoding.o" \
|
|
"$ARGON2_BUILD/ref.o" \
|
|
"$ARGON2_BUILD/blake2b.o"
|
|
|
|
echo " libargon2 built: $ARGON2_BUILD/libargon2.a"
|
|
|
|
# ═══════════════════════════════════════════════════════════════
|
|
# Compile Swift + link liboqs + libargon2
|
|
# ═══════════════════════════════════════════════════════════════
|
|
swiftc \
|
|
-o "$DIR/MontanaPresence" \
|
|
-import-objc-header "$DIR/Crypto/Montana-Bridging-Header.h" \
|
|
-I "$DIR/Crypto/liboqs/include" \
|
|
-L "$DIR/Crypto/liboqs/lib" \
|
|
-loqs \
|
|
-I "$DIR/Crypto/argon2/include" \
|
|
-L "$DIR/Crypto/argon2/build" \
|
|
-largon2 \
|
|
-framework SwiftUI \
|
|
-framework Security \
|
|
-framework ServiceManagement \
|
|
-framework CoreImage \
|
|
-framework Network \
|
|
-framework NetworkExtension \
|
|
-framework WebKit \
|
|
-target arm64-apple-macos14.0 \
|
|
-parse-as-library \
|
|
"$DIR/Crypto/BIP39Wordlist.swift" \
|
|
"$DIR/Crypto/MontanaSeed.swift" \
|
|
"$DIR/Crypto/MLDSA65.swift" \
|
|
"$DIR/KeychainManager.swift" \
|
|
"$DIR/CryptoManager.swift" \
|
|
"$DIR/LanguageManager.swift" \
|
|
"$DIR/MontanaAPIClient.swift" \
|
|
"$DIR/PresenceEngine.swift" \
|
|
"$DIR/VPNManager.swift" \
|
|
"$DIR/SharedSidebar.swift" \
|
|
"$DIR/SendView.swift" \
|
|
"$DIR/ReceiveView.swift" \
|
|
"$DIR/TimeChainExplorerView.swift" \
|
|
"$DIR/UpdateManager.swift" \
|
|
"$DIR/JunonaView.swift" \
|
|
"$DIR/MainWindowView.swift" \
|
|
"$DIR/WalletTabView.swift" \
|
|
"$DIR/MenuBarView.swift" \
|
|
"$DIR/HistoryView.swift" \
|
|
"$DIR/NTSAnchorView.swift" \
|
|
"$DIR/SettingsView.swift" \
|
|
"$DIR/MontanaPresenceApp.swift"
|
|
|
|
# Create .app bundle
|
|
mkdir -p "$APP/Contents/MacOS"
|
|
mkdir -p "$APP/Contents/Resources"
|
|
mv "$DIR/MontanaPresence" "$APP/Contents/MacOS/"
|
|
cp "$DIR/Info.plist" "$APP/Contents/"
|
|
cp "$DIR/Montana.icns" "$APP/Contents/Resources/" 2>/dev/null || true
|
|
|
|
# Copy logo images to Resources
|
|
cp "$DIR/JunonaLogo.jpg" "$APP/Contents/Resources/" 2>/dev/null || true
|
|
cp "$DIR/JunonaReverse.jpg" "$APP/Contents/Resources/" 2>/dev/null || true
|
|
cp "$DIR/NetworkLogo.png" "$APP/Contents/Resources/" 2>/dev/null || true
|
|
cp "$DIR/TimeCoin.png" "$APP/Contents/Resources/" 2>/dev/null || true
|
|
|
|
# Sign with entitlements (ad-hoc)
|
|
codesign --force --sign - --entitlements "$DIR/Entitlements.plist" "$APP"
|
|
|
|
# Create zip for distribution
|
|
cd "$DIR"
|
|
rm -f Montana.app.zip
|
|
zip -r -q Montana.app.zip Montana.app
|
|
|
|
# ═══════════════════════════════════════════════════════════════
|
|
# AUTO-DEPLOY to /Applications/ — единственная точка запуска
|
|
# Это предотвращает запуск старых версий из Launchpad/Spotlight
|
|
# ═══════════════════════════════════════════════════════════════
|
|
|
|
# Kill old Montana process (if running)
|
|
pkill -f "Montana.app/Contents/MacOS/MontanaPresence" 2>/dev/null || true
|
|
sleep 1
|
|
|
|
# Remove old copy from /Applications/
|
|
rm -rf "/Applications/Montana.app"
|
|
|
|
# Install fresh build to /Applications/
|
|
cp -R "$APP" "/Applications/Montana.app"
|
|
|
|
# Reset Launchpad cache so only /Applications/ copy shows
|
|
defaults write com.apple.dock ResetLaunchPad -bool true
|
|
killall Dock 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "═══════════════════════════════════════════════════════"
|
|
echo " Montana v3.18.0 — BUILD + DEPLOY COMPLETE"
|
|
echo "═══════════════════════════════════════════════════════"
|
|
echo " Built: $APP"
|
|
echo " Installed: /Applications/Montana.app"
|
|
echo " Package: $DIR/Montana.app.zip"
|
|
echo ""
|
|
echo " Launching..."
|
|
open "/Applications/Montana.app"
|