chore: cleanup build artifacts and add .gitignore
This commit is contained in:
175
Makefile
175
Makefile
@@ -5,6 +5,26 @@
|
||||
# - Create host venv and install from wheelhouse or vendor/
|
||||
# - Optionally run inside a warm container
|
||||
|
||||
# ---------- Platform Detection ----------
|
||||
UNAME_S := $(shell uname -s)
|
||||
UNAME_M := $(shell uname -m)
|
||||
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
PLATFORM := macos
|
||||
ifeq ($(UNAME_M),arm64)
|
||||
ARCH := arm64
|
||||
else
|
||||
$(error Unsupported macOS architecture: $(UNAME_M))
|
||||
endif
|
||||
else ifeq ($(UNAME_S),Linux)
|
||||
PLATFORM := linux
|
||||
ARCH := x86_64
|
||||
else
|
||||
$(error Unsupported OS: $(UNAME_S))
|
||||
endif
|
||||
|
||||
VENDOR_DIR := vendor/$(PLATFORM)-$(ARCH)
|
||||
|
||||
# ---------- Config ----------
|
||||
IMAGE := hdwallet-build:3.12
|
||||
CONTAINER := hdwallet-dev
|
||||
@@ -20,13 +40,27 @@ VENDOR_LINUX := vendor/linux-x86_64
|
||||
# ---------- Help ----------
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo "Vendoring (for offline/air-gapped use):"
|
||||
@echo " make vendor-macos - Build macOS ARM64 wheels (native)"
|
||||
@echo " make vendor-linux - Build Linux x86_64 wheels (Docker)"
|
||||
@echo " make vendor-all - Build wheels for both platforms"
|
||||
@echo "pyhdwallet build system (macOS + Linux compatible)"
|
||||
@echo ""
|
||||
@echo "📦 Vendoring (for offline/air-gapped use):"
|
||||
@echo " make vendor-macos - Build macOS ARM64 wheels (requires macOS native)"
|
||||
@echo " make vendor-linux - Build Linux x86_64 wheels (Docker - any OS)"
|
||||
@echo " make vendor-all - Build wheels for both platforms (macOS native + Docker)"
|
||||
@echo " make verify-vendor - Test offline installation from vendor/"
|
||||
@echo ""
|
||||
@echo "Development workflow:"
|
||||
@echo "🔨 Binary Distribution:"
|
||||
@echo " make binary - Build standalone binary for current platform"
|
||||
@echo " make binary-linux - Build Linux binary via Docker (any OS)"
|
||||
@echo " make binary-all - Build binaries for all platforms"
|
||||
@echo ""
|
||||
@echo "🚀 Release Management:"
|
||||
@echo " make release - Build complete release (binaries + vendors + checksums)"
|
||||
@echo " make release-binaries - Copy binaries to releases/vX.Y.Z/"
|
||||
@echo " make release-checksums - Generate SHA256SUMS for binaries"
|
||||
@echo " make release-test - Test release binaries"
|
||||
@echo " make clean-release - Remove all release artifacts"
|
||||
@echo ""
|
||||
@echo "🛠️ Development workflow (works on macOS + Linux):"
|
||||
@echo " make build-image - Build Docker image (Python 3.12)"
|
||||
@echo " make wheels - Build wheels into ./$(WHEELHOUSE)"
|
||||
@echo " make install - Create venv and install dependencies"
|
||||
@@ -35,9 +69,20 @@ help:
|
||||
@echo " make shell - Open shell in warm container"
|
||||
@echo " make down - Stop and remove dev container"
|
||||
@echo ""
|
||||
@echo "Cleanup:"
|
||||
@echo "🧹 Cleanup:"
|
||||
@echo " make clean - Remove venv, wheelhouse, vendor/"
|
||||
@echo " make clean-vendor - Remove vendor/ only"
|
||||
@echo " make clean-release - Remove releases/ only"
|
||||
@echo ""
|
||||
@echo "ℹ️ Platform Info:"
|
||||
@echo " make info - Show platform detection info"
|
||||
@echo ""
|
||||
@echo "Platform notes:"
|
||||
@echo " • vendor-macos requires native macOS (uses .venv312 with ARM64 Python)"
|
||||
@echo " • vendor-linux works on any platform with Docker"
|
||||
@echo " • binary-linux works on any platform with Docker"
|
||||
@echo " • All other targets work on macOS and Linux"
|
||||
|
||||
|
||||
# ---------- Build reusable image ----------
|
||||
.PHONY: build-image
|
||||
@@ -105,6 +150,38 @@ verify-vendor:
|
||||
rm -rf .venv-verify \
|
||||
'
|
||||
|
||||
# ---------- Binary Building ----------
|
||||
.PHONY: binary
|
||||
binary:
|
||||
@echo "🔨 Building binary for current platform: $(PLATFORM)-$(ARCH)..."
|
||||
ifeq ($(PLATFORM),macos)
|
||||
@if [ ! -f "build_binary.sh" ]; then \
|
||||
echo "❌ build_binary.sh not found!"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@bash build_binary.sh
|
||||
else
|
||||
@echo "⚠️ For Linux native builds, use build_binary.sh directly"
|
||||
@echo " Or use: make binary-linux (builds via Docker)"
|
||||
endif
|
||||
|
||||
.PHONY: binary-linux
|
||||
binary-linux:
|
||||
@./build_binary_linux.sh
|
||||
|
||||
.PHONY: binary-all
|
||||
binary-all:
|
||||
@echo "🏗️ Building binaries for all platforms..."
|
||||
@echo ""
|
||||
@echo "1️⃣ Building native binary..."
|
||||
@$(MAKE) binary
|
||||
@echo ""
|
||||
@echo "2️⃣ Building Linux binary via Docker..."
|
||||
@$(MAKE) binary-linux
|
||||
@echo ""
|
||||
@echo "✅ All binaries built:"
|
||||
@ls -lh dist/pyhdwallet* 2>/dev/null | awk '{print " " $$9 " (" $$5 ")"}' || echo " No binaries found"
|
||||
|
||||
# ---------- Development Workflow ----------
|
||||
.PHONY: wheels
|
||||
wheels: requirements.txt build-image
|
||||
@@ -165,5 +242,91 @@ clean-vendor:
|
||||
.PHONY: clean
|
||||
clean: down
|
||||
rm -rf $(VENV_HOST) $(WHEELHOUSE) vendor/ .venv-verify .venv-offline-test
|
||||
rm -rf dist/ build/ *.spec src/pyhdwallet_frozen.py
|
||||
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
# ---------- Platform-Aware Operations ----------
|
||||
.PHONY: info
|
||||
info:
|
||||
@echo "Platform Information:"
|
||||
@echo " OS: $(PLATFORM)"
|
||||
@echo " Architecture: $(ARCH)"
|
||||
@echo " Vendor dir: $(VENDOR_DIR)"
|
||||
@echo " Python: $(shell python3 --version 2>/dev/null || echo 'not found')"
|
||||
@echo " Docker: $(shell docker --version 2>/dev/null || echo 'not found')"
|
||||
|
||||
# ---------- Release Management ----------
|
||||
VERSION := $(shell grep -oP "VERSION = \"\K[^\"]+" src/pyhdwallet.py || echo "v1.1.0")
|
||||
RELEASE_DIR := releases/$(VERSION)
|
||||
|
||||
.PHONY: release-prep
|
||||
release-prep:
|
||||
@echo "📦 Preparing release $(VERSION)..."
|
||||
@mkdir -p $(RELEASE_DIR)
|
||||
|
||||
.PHONY: release-binaries
|
||||
release-binaries: release-prep binary binary-linux
|
||||
@echo "📦 Copying binaries to $(RELEASE_DIR)..."
|
||||
@cp dist/pyhdwallet $(RELEASE_DIR)/pyhdwallet-macos-arm64
|
||||
@cp dist/pyhdwallet-linux $(RELEASE_DIR)/pyhdwallet-linux-x86_64
|
||||
@echo "✅ Binaries copied"
|
||||
|
||||
.PHONY: release-checksums
|
||||
release-checksums: release-binaries
|
||||
@echo "🔐 Generating checksums..."
|
||||
@cd $(RELEASE_DIR) && shasum -a 256 pyhdwallet-* > SHA256SUMS
|
||||
@echo "✅ Checksums generated:"
|
||||
@cat $(RELEASE_DIR)/SHA256SUMS
|
||||
|
||||
.PHONY: release-vendors
|
||||
release-vendors: release-prep vendor-all
|
||||
@echo "📦 Copying vendor wheels to $(RELEASE_DIR)..."
|
||||
@mkdir -p $(RELEASE_DIR)/vendor
|
||||
@cp -r vendor/macos-arm64 $(RELEASE_DIR)/vendor/
|
||||
@cp -r vendor/linux-x86_64 $(RELEASE_DIR)/vendor/
|
||||
@echo "✅ Vendor wheels copied"
|
||||
|
||||
.PHONY: release
|
||||
release: release-checksums
|
||||
@echo ""
|
||||
@echo "🎉 Release $(VERSION) binaries ready!"
|
||||
@echo ""
|
||||
@if [ -d ".venv312" ]; then \
|
||||
echo "📦 Building vendor wheels..."; \
|
||||
$(MAKE) release-vendors; \
|
||||
else \
|
||||
echo "⚠️ Skipping vendor wheels (.venv312 not found)"; \
|
||||
echo " To include vendors: python3.12 -m venv .venv312 && make release-vendors"; \
|
||||
fi
|
||||
@echo ""
|
||||
@echo "Contents:"
|
||||
@ls -lh $(RELEASE_DIR)/ | tail -n +2
|
||||
@echo ""
|
||||
@cat $(RELEASE_DIR)/SHA256SUMS
|
||||
@echo ""
|
||||
@echo "Next steps:"
|
||||
@echo " 1. Test: make release-test"
|
||||
@echo " 2. Tag: git tag -a $(VERSION) -m 'Release $(VERSION)'"
|
||||
@echo " 3. Push: git push origin $(VERSION)"
|
||||
|
||||
|
||||
|
||||
.PHONY: release-test
|
||||
release-test:
|
||||
@echo "🧪 Testing release binaries..."
|
||||
@echo ""
|
||||
@echo "Testing macOS binary:"
|
||||
@$(RELEASE_DIR)/pyhdwallet-macos-arm64 test || echo "⚠️ macOS binary test skipped (wrong platform)"
|
||||
@echo ""
|
||||
@echo "Testing Linux binary (via Docker):"
|
||||
@docker run --rm --platform linux/amd64 \
|
||||
-v "$$PWD/$(RELEASE_DIR)":/binaries \
|
||||
ubuntu:22.04 \
|
||||
/binaries/pyhdwallet-linux-x86_64 test
|
||||
|
||||
.PHONY: clean-release
|
||||
clean-release:
|
||||
@echo "🧹 Cleaning release artifacts..."
|
||||
@rm -rf releases/
|
||||
@echo "✅ Release artifacts cleaned"
|
||||
|
||||
Reference in New Issue
Block a user